From 3ffe49c436d0ecf0b3e278bb6af801b082693c34 Mon Sep 17 00:00:00 2001 From: TuDatTr Date: Sat, 13 Jan 2018 15:29:33 +0100 Subject: [PATCH] Removed elpa packages, need to find a way to auto install --- .gitignore | 1 + .../EGG-INFO/DESCRIPTION.rst | 305 + .../EGG-INFO/PKG-INFO | 332 + .../EGG-INFO/RECORD | 7 + .../EGG-INFO/WHEEL | 5 + .../EGG-INFO/metadata.json | 1 + .../EGG-INFO/requires.txt | 2 + .../EGG-INFO/top_level.txt | 1 + .../__pycache__/anaconda_mode.cpython-36.pyc | Bin 0 -> 3058 bytes .../anaconda_mode.py | 110 + .../anaconda-mode/0.1.9/easy-install.pth | 4 + .../EGG-INFO/DESCRIPTION.rst | 306 + .../jedi-0.11.1-py3.6.egg/EGG-INFO/PKG-INFO | 337 + .../jedi-0.11.1-py3.6.egg/EGG-INFO/RECORD | 211 + .../jedi-0.11.1-py3.6.egg/EGG-INFO/WHEEL | 6 + .../EGG-INFO/metadata.json | 1 + .../EGG-INFO/requires.txt | 4 + .../EGG-INFO/top_level.txt | 2 + .../jedi-0.11.1-py3.6.egg/jedi/__init__.py | 43 + .../jedi-0.11.1-py3.6.egg/jedi/__main__.py | 48 + .../jedi/_compatibility.py | 291 + .../jedi/api/__init__.py | 431 + .../jedi-0.11.1-py3.6.egg/jedi/api/classes.py | 678 + .../jedi/api/completion.py | 291 + .../jedi-0.11.1-py3.6.egg/jedi/api/helpers.py | 316 + .../jedi/api/interpreter.py | 47 + .../jedi/api/keywords.py | 144 + .../jedi/api/replstartup.py | 27 + .../0.1.9/jedi-0.11.1-py3.6.egg/jedi/cache.py | 121 + .../jedi/common/__init__.py | 1 + .../jedi/common/context.py | 67 + .../0.1.9/jedi-0.11.1-py3.6.egg/jedi/debug.py | 128 + .../jedi/evaluate/__init__.py | 359 + .../jedi/evaluate/analysis.py | 214 + .../jedi/evaluate/arguments.py | 245 + .../jedi/evaluate/base_context.py | 260 + .../jedi/evaluate/cache.py | 77 + .../jedi/evaluate/compiled/__init__.py | 638 + .../jedi/evaluate/compiled/fake.py | 213 + .../evaluate/compiled/fake/_functools.pym | 9 + .../jedi/evaluate/compiled/fake/_sqlite3.pym | 26 + .../jedi/evaluate/compiled/fake/_sre.pym | 99 + .../jedi/evaluate/compiled/fake/_weakref.pym | 9 + .../jedi/evaluate/compiled/fake/builtins.pym | 274 + .../jedi/evaluate/compiled/fake/datetime.pym | 4 + .../jedi/evaluate/compiled/fake/io.pym | 12 + .../jedi/evaluate/compiled/fake/operator.pym | 33 + .../jedi/evaluate/compiled/fake/posix.pym | 5 + .../jedi/evaluate/compiled/getattr_static.py | 175 + .../jedi/evaluate/compiled/mixed.py | 231 + .../jedi/evaluate/context/__init__.py | 5 + .../jedi/evaluate/context/function.py | 226 + .../jedi/evaluate/context/instance.py | 435 + .../jedi/evaluate/context/iterable.py | 691 + .../jedi/evaluate/context/klass.py | 197 + .../jedi/evaluate/context/module.py | 213 + .../jedi/evaluate/context/namespace.py | 74 + .../jedi/evaluate/docstrings.py | 289 + .../jedi/evaluate/dynamic.py | 203 + .../jedi/evaluate/filters.py | 434 + .../jedi/evaluate/finder.py | 258 + .../jedi/evaluate/flow_analysis.py | 112 + .../jedi/evaluate/helpers.py | 201 + .../jedi/evaluate/imports.py | 570 + .../jedi/evaluate/jedi_typing.py | 100 + .../jedi/evaluate/lazy_context.py | 61 + .../jedi/evaluate/param.py | 195 + .../jedi/evaluate/parser_cache.py | 6 + .../jedi/evaluate/pep0484.py | 222 + .../jedi/evaluate/project.py | 40 + .../jedi/evaluate/recursion.py | 135 + .../jedi/evaluate/site.py | 110 + .../jedi/evaluate/stdlib.py | 325 + .../jedi/evaluate/syntax_tree.py | 588 + .../jedi/evaluate/sys_path.py | 308 + .../jedi/evaluate/usages.py | 62 + .../jedi/evaluate/utils.py | 110 + .../jedi/parser_utils.py | 241 + .../jedi-0.11.1-py3.6.egg/jedi/refactoring.py | 200 + .../jedi-0.11.1-py3.6.egg/jedi/settings.py | 163 + .../0.1.9/jedi-0.11.1-py3.6.egg/jedi/utils.py | 136 + .../test/completion/__init__.py | 3 + .../test/completion/arrays.py | 436 + .../test/completion/async_.py | 36 + .../test/completion/basic.py | 295 + .../test/completion/classes.py | 535 + .../test/completion/completion.py | 50 + .../test/completion/complex.py | 14 + .../test/completion/comprehensions.py | 215 + .../test/completion/context.py | 45 + .../test/completion/decorators.py | 318 + .../test/completion/definition.py | 68 + .../test/completion/descriptors.py | 221 + .../test/completion/docstring.py | 246 + .../test/completion/dynamic_arrays.py | 310 + .../test/completion/dynamic_params.py | 134 + .../test/completion/flow_analysis.py | 298 + .../test/completion/functions.py | 481 + .../test/completion/generators.py | 231 + .../test/completion/goto.py | 231 + .../test/completion/import_tree/__init__.py | 7 + .../test/completion/import_tree/classes.py | 10 + .../completion/import_tree/flow_import.py | 4 + .../completion/import_tree/invisible_pkg.py | 7 + .../test/completion/import_tree/mod1.py | 4 + .../test/completion/import_tree/mod2.py | 1 + .../completion/import_tree/pkg/__init__.py | 3 + .../test/completion/import_tree/pkg/mod1.py | 3 + .../test/completion/import_tree/random.py | 6 + .../completion/import_tree/recurse_class1.py | 5 + .../completion/import_tree/recurse_class2.py | 4 + .../test/completion/import_tree/rename1.py | 3 + .../test/completion/import_tree/rename2.py | 6 + .../test/completion/imports.py | 295 + .../test/completion/invalid.py | 214 + .../test/completion/isinstance.py | 101 + .../test/completion/keywords.py | 59 + .../test/completion/lambdas.py | 113 + .../test/completion/named_param.py | 62 + .../test/completion/on_import.py | 110 + .../test/completion/ordering.py | 195 + .../test/completion/parser.py | 43 + .../test/completion/pep0484_basic.py | 167 + .../test/completion/pep0484_comments.py | 109 + .../test/completion/pep0484_typing.py | 263 + .../test/completion/pep0526_variables.py | 22 + .../test/completion/precedence.py | 138 + .../test/completion/recursion.py | 78 + .../test/completion/stdlib.py | 249 + .../test/completion/sys_path.py | 24 + .../test/completion/thirdparty/PyQt4_.py | 19 + .../test/completion/thirdparty/django_.py | 11 + .../test/completion/thirdparty/jedi_.py | 52 + .../test/completion/thirdparty/psycopg2_.py | 11 + .../test/completion/thirdparty/pylab_.py | 36 + .../test/completion/types.py | 129 + .../test/completion/usages.py | 316 + .../test/test_api/__init__.py} | 0 .../import_tree_for_usages/__init__.py | 4 + .../test/test_api/import_tree_for_usages/a.py | 4 + .../test/test_api/import_tree_for_usages/b.py | 2 + .../test/test_api/simple_import/__init__.py | 5 + .../test/test_api/simple_import/module.py | 0 .../test/test_api/simple_import/module2.py | 0 .../test/test_api/test_analysis.py | 12 + .../test/test_api/test_api.py | 224 + .../test_api_classes_follow_definition.py | 62 + .../test/test_api/test_call_signatures.py | 426 + .../test/test_api/test_classes.py | 393 + .../test/test_api/test_completion.py | 49 + .../test/test_api/test_defined_names.py | 92 + .../test/test_api/test_full_name.py | 104 + .../test/test_api/test_interpreter.py | 300 + .../test/test_api/test_unicode.py | 66 + .../test/test_api/test_usages.py | 6 + .../test/test_evaluate/__init__.py | 0 .../absolute_import/local_module.py | 14 + .../test_evaluate/absolute_import/unittest.py | 14 + .../test_evaluate/buildout_project/bin/app | 12 + .../buildout_project/bin/binary_file | 1 + .../buildout_project/bin/empty_file | 0 .../buildout_project/buildout.cfg | 0 .../src/proj_name/module_name.py | 0 .../flask-site-packages/flask/__init__.py | 1 + .../flask-site-packages/flask/ext/__init__.py | 1 + .../flask-site-packages/flask_baz/__init__.py | 1 + .../flask-site-packages/flask_foo.py | 2 + .../flask-site-packages/flaskext/__init__.py | 0 .../flask-site-packages/flaskext/bar.py | 2 + .../flaskext/moo/__init__.py | 1 + .../ns1/pkg/ns1_file.py | 1 + .../ns2/pkg/ns2_file.py | 1 + .../namespace/pkg/module.py | 1 + .../__init__.cpython-34m.so | Bin 0 -> 16493 bytes .../init_extension_module/module.c | 15 + .../init_extension_module/setup.py | 10 + .../namespace_package/ns1/pkg/__init__.py | 9 + .../namespace_package/ns1/pkg/ns1_file.py | 1 + .../ns1/pkg/ns1_folder/__init__.py | 1 + .../namespace_package/ns2/pkg/ns2_file.py | 1 + .../ns2/pkg/ns2_folder/__init__.py | 1 + .../ns2/pkg/ns2_folder/nested/__init__.py | 1 + .../nested_namespaces/__init__.py | 0 .../nested_namespaces/namespace/__init__.py | 4 + .../namespace/pkg/__init__.py | 1 + .../test_evaluate/not_in_sys_path/__init__.py | 0 .../not_in_sys_path/not_in_sys_path.py | 1 + .../not_in_sys_path_package/__init__.py | 1 + .../not_in_sys_path_package/module.py | 1 + .../not_in_sys_path/pkg/__init__.py | 0 .../not_in_sys_path/pkg/module.py | 7 + .../dir-from-foo-pth/__init__.py | 2 + .../python2.7/site-packages/egg_link.egg-link | 1 + .../lib/python2.7/site-packages/foo.pth | 1 + .../python2.7/site-packages/import_smth.pth | 1 + .../python2.7/site-packages/relative.egg-link | 1 + .../lib/python2.7/site-packages/smth.py | 6 + .../dir-from-foo-pth/__init__.py | 2 + .../python3.4/site-packages/egg_link.egg-link | 1 + .../lib/python3.4/site-packages/foo.pth | 1 + .../python3.4/site-packages/import_smth.pth | 1 + .../python3.4/site-packages/relative.egg-link | 1 + .../lib/python3.4/site-packages/smth.py | 6 + .../test_evaluate/test_absolute_import.py | 12 + .../test/test_evaluate/test_annotations.py | 60 + .../test_evaluate/test_buildout_detection.py | 90 + .../test/test_evaluate/test_compiled.py | 100 + .../test/test_evaluate/test_context.py | 10 + .../test/test_evaluate/test_docstring.py | 331 + .../test/test_evaluate/test_extension.py | 57 + .../test/test_evaluate/test_helpers.py | 16 + .../test_implicit_namespace_package.py | 58 + .../test/test_evaluate/test_imports.py | 237 + .../test/test_evaluate/test_literals.py | 41 + .../test/test_evaluate/test_mixed.py | 7 + .../test_evaluate/test_namespace_package.py | 65 + .../test/test_evaluate/test_precedence.py | 17 + .../test/test_evaluate/test_pyc.py | 64 + .../test/test_evaluate/test_representation.py | 36 + .../test/test_evaluate/test_stdlib.py | 77 + .../test/test_evaluate/test_sys_path.py | 58 + .../test_evaluate/zipped_imports/not_pkg.zip | Bin 0 -> 204 bytes .../test/test_evaluate/zipped_imports/pkg.zip | Bin 0 -> 504 bytes .../EGG-INFO/DESCRIPTION.rst | 110 + .../parso-0.1.1-py3.6.egg/EGG-INFO/PKG-INFO | 136 + .../parso-0.1.1-py3.6.egg/EGG-INFO/RECORD | 35 + .../parso-0.1.1-py3.6.egg/EGG-INFO/WHEEL | 6 + .../EGG-INFO/metadata.json | 1 + .../EGG-INFO/top_level.txt | 1 + .../parso-0.1.1-py3.6.egg/parso/__init__.py | 58 + .../parso/_compatibility.py | 103 + .../parso-0.1.1-py3.6.egg/parso/cache.py | 162 + .../parso-0.1.1-py3.6.egg/parso/grammar.py | 283 + .../parso-0.1.1-py3.6.egg/parso/normalizer.py | 184 + .../parso-0.1.1-py3.6.egg/parso/parser.py | 78 + .../parso/pgen2/__init__.py | 8 + .../parso/pgen2/grammar.py | 128 + .../parso/pgen2/parse.py | 223 + .../parso-0.1.1-py3.6.egg/parso/pgen2/pgen.py | 399 + .../parso/python/__init__.py | 0 .../parso/python/diff.py | 587 + .../parso/python/errors.py | 1053 + .../parso/python/fstring.py | 211 + .../parso/python/grammar26.txt | 158 + .../parso/python/grammar27.txt | 142 + .../parso/python/grammar33.txt | 133 + .../parso/python/grammar34.txt | 133 + .../parso/python/grammar35.txt | 152 + .../parso/python/grammar36.txt | 150 + .../parso/python/grammar37.txt | 150 + .../parso/python/parser.py | 261 + .../parso/python/pep8.py | 727 + .../parso/python/prefix.py | 97 + .../parso/python/token.py | 104 + .../parso/python/tokenize.py | 420 + .../parso/python/tree.py | 1165 + .../0.1.9/parso-0.1.1-py3.6.egg/parso/tree.py | 364 + .../parso-0.1.1-py3.6.egg/parso/utils.py | 156 + .../EGG-INFO/DESCRIPTION.rst | 125 + .../EGG-INFO/PKG-INFO | 145 + .../EGG-INFO/RECORD | 15 + .../EGG-INFO/WHEEL | 5 + .../EGG-INFO/metadata.json | 1 + .../EGG-INFO/top_level.txt | 1 + .../service_factory/__init__.py | 17 + .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 593 bytes .../__pycache__/compat.cpython-36.pyc | Bin 0 -> 683 bytes .../__pycache__/errors.cpython-36.pyc | Bin 0 -> 2006 bytes .../__pycache__/exceptions.cpython-36.pyc | Bin 0 -> 788 bytes .../__pycache__/factory.cpython-36.pyc | Bin 0 -> 1182 bytes .../__pycache__/service.cpython-36.pyc | Bin 0 -> 3387 bytes .../__pycache__/validation.cpython-36.pyc | Bin 0 -> 1630 bytes .../service_factory/compat.py | 23 + .../service_factory/errors.py | 91 + .../service_factory/exceptions.py | 19 + .../service_factory/factory.py | 34 + .../service_factory/providers/__init__.py | 3 + .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 329 bytes .../__pycache__/basehttp.cpython-36.pyc | Bin 0 -> 2845 bytes .../service_factory/providers/basehttp.py | 84 + .../service_factory/service.py | 116 + .../service_factory/validation.py | 52 + emacs/.emacs.d/config.el | 113 +- emacs/.emacs.d/config.html | 752 +- emacs/.emacs.d/config.org | 215 +- .../elpa/archives/gnu/archive-contents | 1212 - .../elpa/archives/gnu/archive-contents.signed | 1 - .../elpa/archives/melpa/archive-contents | 2 - emacs/.emacs.d/elpa/auctex-12.1.0.signed | 1 - emacs/.emacs.d/elpa/auctex-12.1.0/.elpaignore | 10 - emacs/.emacs.d/elpa/auctex-12.1.0/.gitignore | 49 - emacs/.emacs.d/elpa/auctex-12.1.0/COPYING | 674 - .../elpa/auctex-12.1.0/ChangeLog-preview | 1897 -- .../elpa/auctex-12.1.0/ChangeLog-preview.1 | 3736 --- emacs/.emacs.d/elpa/auctex-12.1.0/ChangeLog.1 | 22506 ---------------- emacs/.emacs.d/elpa/auctex-12.1.0/GNUmakefile | 93 - emacs/.emacs.d/elpa/auctex-12.1.0/Makefile.in | 713 - emacs/.emacs.d/elpa/auctex-12.1.0/README | 238 - emacs/.emacs.d/elpa/auctex-12.1.0/README.GIT | 37 - emacs/.emacs.d/elpa/auctex-12.1.0/RELEASE | 101 - emacs/.emacs.d/elpa/auctex-12.1.0/aclocal.m4 | 653 - emacs/.emacs.d/elpa/auctex-12.1.0/auctex.el | 36 - .../.emacs.d/elpa/auctex-12.1.0/auctex.el.in | 10 - emacs/.emacs.d/elpa/auctex-12.1.0/auctex.info | 8924 ------ emacs/.emacs.d/elpa/auctex-12.1.0/auctex.spec | 226 - emacs/.emacs.d/elpa/auctex-12.1.0/autogen.sh | 65 - emacs/.emacs.d/elpa/auctex-12.1.0/bib-cite.el | 2607 -- .../build-aux/gitlog-to-auctexlog | 129 - .../build-aux/gitlog-to-changelog | 492 - emacs/.emacs.d/elpa/auctex-12.1.0/circ.tex | 479 - .../.emacs.d/elpa/auctex-12.1.0/configure.ac | 317 - .../.emacs.d/elpa/auctex-12.1.0/context-en.el | 225 - .../.emacs.d/elpa/auctex-12.1.0/context-nl.el | 200 - emacs/.emacs.d/elpa/auctex-12.1.0/context.el | 1825 -- emacs/.emacs.d/elpa/auctex-12.1.0/dir | 25 - .../elpa/auctex-12.1.0/doc/.gitignore | 34 - .../elpa/auctex-12.1.0/doc/Makefile.in | 224 - .../elpa/auctex-12.1.0/doc/auctex.texi | 5874 ---- .../elpa/auctex-12.1.0/doc/changes.texi | 1326 - .../elpa/auctex-12.1.0/doc/copying.texi | 48 - .../.emacs.d/elpa/auctex-12.1.0/doc/faq.texi | 138 - .../.emacs.d/elpa/auctex-12.1.0/doc/fdl.texi | 506 - .../elpa/auctex-12.1.0/doc/history.texi | 1918 -- .../elpa/auctex-12.1.0/doc/install.texi | 536 - .../elpa/auctex-12.1.0/doc/intro.texi | 106 - .../elpa/auctex-12.1.0/doc/macros.texi | 89 - .../elpa/auctex-12.1.0/doc/preview-dtxdoc.pl | 152 - .../elpa/auctex-12.1.0/doc/preview-faq.texi | 303 - .../elpa/auctex-12.1.0/doc/preview-latex.texi | 829 - .../auctex-12.1.0/doc/preview-problems.texi | 139 - .../auctex-12.1.0/doc/preview-readme.texi | 228 - .../elpa/auctex-12.1.0/doc/preview-todo.texi | 118 - .../elpa/auctex-12.1.0/doc/quickstart.texi | 326 - .../elpa/auctex-12.1.0/doc/tex-ref.tex | 681 - .../.emacs.d/elpa/auctex-12.1.0/doc/todo.texi | 287 - .../elpa/auctex-12.1.0/doc/wininstall.texi | 357 - .../elpa/auctex-12.1.0/etc/auctex-logo.tex | 27 - .../.emacs.d/elpa/auctex-12.1.0/font-latex.el | 2245 -- .../elpa/auctex-12.1.0/images/amstex.xpm | 207 - .../elpa/auctex-12.1.0/images/bibtex.xpm | 82 - .../elpa/auctex-12.1.0/images/dropdown.xpm | 30 - .../elpa/auctex-12.1.0/images/dvipdf.xpm | 65 - .../elpa/auctex-12.1.0/images/dvips.xpm | 89 - .../elpa/auctex-12.1.0/images/error.xpm | 35 - .../elpa/auctex-12.1.0/images/exec.xpm | 68 - .../elpa/auctex-12.1.0/images/execbibtex.xpm | 127 - .../elpa/auctex-12.1.0/images/execdvips.xpm | 52 - .../elpa/auctex-12.1.0/images/execerror.xpm | 49 - .../elpa/auctex-12.1.0/images/execpdftex.xpm | 205 - .../elpa/auctex-12.1.0/images/exectex.xpm | 203 - .../elpa/auctex-12.1.0/images/execviewdvi.xpm | 46 - .../elpa/auctex-12.1.0/images/execviewpdf.xpm | 42 - .../elpa/auctex-12.1.0/images/execviewps.xpm | 42 - .../.emacs.d/elpa/auctex-12.1.0/images/gv.xpm | 158 - .../elpa/auctex-12.1.0/images/jumpdvi.xpm | 74 - .../images/ltx-symb-turn-off.xpm | 47 - .../auctex-12.1.0/images/ltx-symb-turn-on.xpm | 46 - .../elpa/auctex-12.1.0/images/pdftex.xpm | 206 - .../elpa/auctex-12.1.0/images/prverr16.xpm | 31 - .../elpa/auctex-12.1.0/images/prverr20.xpm | 35 - .../elpa/auctex-12.1.0/images/prverr24.xbm | 9 - .../elpa/auctex-12.1.0/images/prverr24.xpm | 39 - .../auctex-12.1.0/images/prvtex-cap-up.xpm | 48 - .../elpa/auctex-12.1.0/images/prvtex12.xbm | 6 - .../elpa/auctex-12.1.0/images/prvtex12.xpm | 32 - .../elpa/auctex-12.1.0/images/prvtex16.xbm | 7 - .../elpa/auctex-12.1.0/images/prvtex16.xpm | 36 - .../elpa/auctex-12.1.0/images/prvtex20.xpm | 40 - .../elpa/auctex-12.1.0/images/prvtex24.xbm | 10 - .../elpa/auctex-12.1.0/images/prvtex24.xpm | 37 - .../elpa/auctex-12.1.0/images/prvwrk12.xpm | 32 - .../elpa/auctex-12.1.0/images/prvwrk14.xpm | 34 - .../elpa/auctex-12.1.0/images/prvwrk16.xpm | 36 - .../elpa/auctex-12.1.0/images/prvwrk20.xpm | 40 - .../elpa/auctex-12.1.0/images/prvwrk24.xbm | 12 - .../elpa/auctex-12.1.0/images/prvwrk24.xpm | 44 - .../elpa/auctex-12.1.0/images/pspdf.xpm | 83 - .../elpa/auctex-12.1.0/images/sep.xpm | 29 - .../elpa/auctex-12.1.0/images/spell.xpm | 64 - .../elpa/auctex-12.1.0/images/tex.xpm | 260 - .../elpa/auctex-12.1.0/images/view.xpm | 31 - .../elpa/auctex-12.1.0/images/viewdvi.xpm | 58 - .../elpa/auctex-12.1.0/images/viewpdf.xpm | 54 - .../elpa/auctex-12.1.0/images/viewps.xpm | 54 - emacs/.emacs.d/elpa/auctex-12.1.0/install-sh | 251 - emacs/.emacs.d/elpa/auctex-12.1.0/latex.el | 6695 ----- .../elpa/auctex-12.1.0/latex/.gitignore | 16 - .../elpa/auctex-12.1.0/latex/Makefile.in | 97 - .../.emacs.d/elpa/auctex-12.1.0/latex/README | 64 - .../elpa/auctex-12.1.0/latex/bootstrap.ins | 4 - .../elpa/auctex-12.1.0/latex/preview.dtx | 1877 -- emacs/.emacs.d/elpa/auctex-12.1.0/lpath.el | 10 - .../.emacs.d/elpa/auctex-12.1.0/mkinstalldirs | 99 - .../elpa/auctex-12.1.0/multi-prompt.el | 224 - .../.emacs.d/elpa/auctex-12.1.0/plain-tex.el | 320 - .../elpa/auctex-12.1.0/preview-latex.info | 2501 -- .../elpa/auctex-12.1.0/preview-latex.spec | 260 - .../.emacs.d/elpa/auctex-12.1.0/prv-emacs.el | 600 - .../elpa/auctex-12.1.0/prv-install.el | 114 - .../.emacs.d/elpa/auctex-12.1.0/prv-xemacs.el | 759 - .../elpa/auctex-12.1.0/style/.nosearch | 1 - .../elpa/auctex-12.1.0/style/Alegreya.el | 98 - .../elpa/auctex-12.1.0/style/AlegreyaSans.el | 110 - .../elpa/auctex-12.1.0/style/AnonymousPro.el | 90 - .../.emacs.d/elpa/auctex-12.1.0/style/CJK.el | 94 - .../elpa/auctex-12.1.0/style/CJKutf8.el | 39 - .../elpa/auctex-12.1.0/style/FiraMono.el | 70 - .../elpa/auctex-12.1.0/style/FiraSans.el | 102 - .../elpa/auctex-12.1.0/style/MinionPro.el | 69 - .../elpa/auctex-12.1.0/style/MyriadPro.el | 94 - .../elpa/auctex-12.1.0/style/XCharter.el | 90 - .../.emacs.d/elpa/auctex-12.1.0/style/acro.el | 294 - .../elpa/auctex-12.1.0/style/acronym.el | 179 - .../elpa/auctex-12.1.0/style/afterpage.el | 43 - .../elpa/auctex-12.1.0/style/alltt.el | 50 - .../elpa/auctex-12.1.0/style/alphanum.el | 100 - .../elpa/auctex-12.1.0/style/amsart.el | 12 - .../elpa/auctex-12.1.0/style/amsbook.el | 12 - .../elpa/auctex-12.1.0/style/amsbsy.el | 19 - .../elpa/auctex-12.1.0/style/amsfonts.el | 53 - .../elpa/auctex-12.1.0/style/amsmath.el | 229 - .../elpa/auctex-12.1.0/style/amsopn.el | 53 - .../elpa/auctex-12.1.0/style/amssymb.el | 250 - .../elpa/auctex-12.1.0/style/amstex.el | 61 - .../elpa/auctex-12.1.0/style/amstext.el | 17 - .../elpa/auctex-12.1.0/style/amsthm.el | 200 - .../elpa/auctex-12.1.0/style/arabxetex.el | 113 - .../elpa/auctex-12.1.0/style/array.el | 105 - .../elpa/auctex-12.1.0/style/article.el | 21 - .../elpa/auctex-12.1.0/style/attachfile.el | 119 - .../elpa/auctex-12.1.0/style/australian.el | 40 - .../elpa/auctex-12.1.0/style/austrian.el | 40 - .../elpa/auctex-12.1.0/style/babel.el | 196 - .../elpa/auctex-12.1.0/style/baskervaldx.el | 84 - .../elpa/auctex-12.1.0/style/beamer.el | 363 - .../elpa/auctex-12.1.0/style/biblatex.el | 636 - .../elpa/auctex-12.1.0/style/bicaption.el | 183 - .../.emacs.d/elpa/auctex-12.1.0/style/bidi.el | 59 - .../elpa/auctex-12.1.0/style/bidibeamer.el | 40 - .../elpa/auctex-12.1.0/style/bigdelim.el | 53 - .../elpa/auctex-12.1.0/style/bigstrut.el | 51 - emacs/.emacs.d/elpa/auctex-12.1.0/style/bm.el | 55 - .../.emacs.d/elpa/auctex-12.1.0/style/book.el | 21 - .../elpa/auctex-12.1.0/style/booktabs.el | 79 - .../elpa/auctex-12.1.0/style/breqn.el | 185 - .../elpa/auctex-12.1.0/style/bulgarian.el | 55 - .../elpa/auctex-12.1.0/style/canadian.el | 40 - .../elpa/auctex-12.1.0/style/captcont.el | 47 - .../elpa/auctex-12.1.0/style/caption.el | 463 - .../elpa/auctex-12.1.0/style/cleveref.el | 108 - .../elpa/auctex-12.1.0/style/color.el | 291 - .../elpa/auctex-12.1.0/style/colortbl.el | 92 - .../elpa/auctex-12.1.0/style/commath.el | 102 - .../elpa/auctex-12.1.0/style/comment.el | 69 - .../elpa/auctex-12.1.0/style/csquotes.el | 246 - .../elpa/auctex-12.1.0/style/currvita.el | 94 - .../elpa/auctex-12.1.0/style/czech.el | 9 - .../elpa/auctex-12.1.0/style/danish.el | 18 - .../elpa/auctex-12.1.0/style/dcolumn.el | 49 - .../elpa/auctex-12.1.0/style/dinbrief.el | 277 - .../elpa/auctex-12.1.0/style/dk-bib.el | 62 - emacs/.emacs.d/elpa/auctex-12.1.0/style/dk.el | 10 - .../.emacs.d/elpa/auctex-12.1.0/style/doc.el | 193 - .../elpa/auctex-12.1.0/style/dutch.el | 10 - .../.emacs.d/elpa/auctex-12.1.0/style/emp.el | 85 - .../elpa/auctex-12.1.0/style/empheq.el | 500 - .../elpa/auctex-12.1.0/style/english.el | 13 - .../elpa/auctex-12.1.0/style/enumitem.el | 455 - .../elpa/auctex-12.1.0/style/environ.el | 135 - .../elpa/auctex-12.1.0/style/epigraph.el | 98 - .../.emacs.d/elpa/auctex-12.1.0/style/epsf.el | 38 - .../elpa/auctex-12.1.0/style/erewhon.el | 91 - .../elpa/auctex-12.1.0/style/eso-pic.el | 90 - .../elpa/auctex-12.1.0/style/everysel.el | 45 - .../.emacs.d/elpa/auctex-12.1.0/style/exam.el | 378 - .../elpa/auctex-12.1.0/style/exercise.el | 63 - .../elpa/auctex-12.1.0/style/expl3.el | 58 - .../elpa/auctex-12.1.0/style/fancyhdr.el | 114 - .../elpa/auctex-12.1.0/style/fancynum.el | 47 - .../elpa/auctex-12.1.0/style/fancyref.el | 128 - .../elpa/auctex-12.1.0/style/fancyvrb.el | 538 - .../.emacs.d/elpa/auctex-12.1.0/style/fbb.el | 81 - .../elpa/auctex-12.1.0/style/filecontents.el | 61 - .../elpa/auctex-12.1.0/style/flashcards.el | 61 - .../elpa/auctex-12.1.0/style/floatrow.el | 726 - .../elpa/auctex-12.1.0/style/foils.el | 66 - .../elpa/auctex-12.1.0/style/fontaxes.el | 114 - .../elpa/auctex-12.1.0/style/fontenc.el | 52 - .../elpa/auctex-12.1.0/style/fontspec.el | 401 - .../elpa/auctex-12.1.0/style/footmisc.el | 73 - .../elpa/auctex-12.1.0/style/framed.el | 52 - .../elpa/auctex-12.1.0/style/francais.el | 42 - .../elpa/auctex-12.1.0/style/french.el | 49 - .../elpa/auctex-12.1.0/style/frenchb.el | 79 - .../elpa/auctex-12.1.0/style/fvextra.el | 139 - .../elpa/auctex-12.1.0/style/geometry.el | 151 - .../elpa/auctex-12.1.0/style/german.el | 50 - .../elpa/auctex-12.1.0/style/gloss-italian.el | 68 - .../elpa/auctex-12.1.0/style/graphics.el | 12 - .../elpa/auctex-12.1.0/style/graphicx.el | 290 - .../elpa/auctex-12.1.0/style/harvard.el | 130 - .../elpa/auctex-12.1.0/style/hologo.el | 233 - .../elpa/auctex-12.1.0/style/hyperref.el | 318 - .../elpa/auctex-12.1.0/style/icelandic.el | 54 - .../elpa/auctex-12.1.0/style/ifluatex.el | 65 - .../elpa/auctex-12.1.0/style/imakeidx.el | 100 - .../elpa/auctex-12.1.0/style/index.el | 84 - .../elpa/auctex-12.1.0/style/inputenc.el | 87 - .../elpa/auctex-12.1.0/style/italian.el | 60 - .../elpa/auctex-12.1.0/style/j-article.el | 11 - .../elpa/auctex-12.1.0/style/j-book.el | 11 - .../elpa/auctex-12.1.0/style/j-report.el | 11 - .../elpa/auctex-12.1.0/style/jarticle.el | 23 - .../elpa/auctex-12.1.0/style/jbook.el | 22 - .../elpa/auctex-12.1.0/style/jreport.el | 23 - .../elpa/auctex-12.1.0/style/jsarticle.el | 27 - .../elpa/auctex-12.1.0/style/jsbook.el | 31 - .../elpa/auctex-12.1.0/style/jsreport.el | 56 - .../.emacs.d/elpa/auctex-12.1.0/style/jura.el | 40 - .../elpa/auctex-12.1.0/style/jurabib.el | 634 - .../elpa/auctex-12.1.0/style/kantlipsum.el | 46 - .../elpa/auctex-12.1.0/style/kpfonts.el | 599 - .../elpa/auctex-12.1.0/style/latexinfo.el | 181 - .../elpa/auctex-12.1.0/style/letter.el | 185 - .../elpa/auctex-12.1.0/style/lettrine.el | 75 - .../elpa/auctex-12.1.0/style/lipsum.el | 46 - .../elpa/auctex-12.1.0/style/listings.el | 425 - .../elpa/auctex-12.1.0/style/longtable.el | 135 - .../elpa/auctex-12.1.0/style/lscape.el | 45 - .../elpa/auctex-12.1.0/style/ltablex.el | 49 - .../elpa/auctex-12.1.0/style/ltx-base.el | 87 - .../elpa/auctex-12.1.0/style/ltxdoc.el | 41 - .../elpa/auctex-12.1.0/style/ltxtable.el | 83 - .../elpa/auctex-12.1.0/style/luacode.el | 63 - .../elpa/auctex-12.1.0/style/luatextra.el | 44 - .../elpa/auctex-12.1.0/style/makeidx.el | 49 - .../elpa/auctex-12.1.0/style/mathtools.el | 484 - .../elpa/auctex-12.1.0/style/mdframed.el | 421 - .../elpa/auctex-12.1.0/style/mdsymbol.el | 99 - .../elpa/auctex-12.1.0/style/mdwlist.el | 64 - .../elpa/auctex-12.1.0/style/memoir.el | 85 - .../elpa/auctex-12.1.0/style/menukeys.el | 539 - .../elpa/auctex-12.1.0/style/metalogo.el | 85 - .../elpa/auctex-12.1.0/style/mflogo.el | 49 - .../elpa/auctex-12.1.0/style/minted.el | 468 - .../.emacs.d/elpa/auctex-12.1.0/style/mn2e.el | 175 - .../elpa/auctex-12.1.0/style/mnras.el | 176 - .../elpa/auctex-12.1.0/style/moodle.el | 213 - .../elpa/auctex-12.1.0/style/multicol.el | 63 - .../elpa/auctex-12.1.0/style/multido.el | 53 - .../elpa/auctex-12.1.0/style/multind.el | 62 - .../elpa/auctex-12.1.0/style/multirow.el | 52 - .../elpa/auctex-12.1.0/style/nameref.el | 57 - .../elpa/auctex-12.1.0/style/natbib.el | 191 - .../elpa/auctex-12.1.0/style/naustrian.el | 40 - .../elpa/auctex-12.1.0/style/newfloat.el | 217 - .../elpa/auctex-12.1.0/style/newpxmath.el | 74 - .../elpa/auctex-12.1.0/style/newpxtext.el | 81 - .../elpa/auctex-12.1.0/style/newtxmath.el | 84 - .../elpa/auctex-12.1.0/style/newtxsf.el | 57 - .../elpa/auctex-12.1.0/style/newtxtext.el | 80 - .../elpa/auctex-12.1.0/style/newtxttt.el | 62 - .../elpa/auctex-12.1.0/style/newzealand.el | 40 - .../elpa/auctex-12.1.0/style/ngerman.el | 50 - .../elpa/auctex-12.1.0/style/nicefrac.el | 46 - .../elpa/auctex-12.1.0/style/nomencl.el | 71 - .../elpa/auctex-12.1.0/style/ntheorem.el | 428 - .../elpa/auctex-12.1.0/style/paracol.el | 279 - .../elpa/auctex-12.1.0/style/paralist.el | 107 - .../elpa/auctex-12.1.0/style/pdflscape.el | 44 - .../elpa/auctex-12.1.0/style/pdfpages.el | 135 - .../elpa/auctex-12.1.0/style/pdfsync.el | 90 - .../elpa/auctex-12.1.0/style/placeins.el | 43 - .../elpa/auctex-12.1.0/style/plext.el | 78 - .../elpa/auctex-12.1.0/style/plfonts.el | 30 - .../.emacs.d/elpa/auctex-12.1.0/style/plhb.el | 30 - .../elpa/auctex-12.1.0/style/polish.el | 53 - .../elpa/auctex-12.1.0/style/polski.el | 56 - .../elpa/auctex-12.1.0/style/polyglossia.el | 355 - .../elpa/auctex-12.1.0/style/preview.el | 104 - .../elpa/auctex-12.1.0/style/prosper.el | 192 - .../elpa/auctex-12.1.0/style/psfig.el | 84 - .../elpa/auctex-12.1.0/style/pst-grad.el | 66 - .../elpa/auctex-12.1.0/style/pst-node.el | 193 - .../elpa/auctex-12.1.0/style/pst-plot.el | 139 - .../elpa/auctex-12.1.0/style/pst-slpe.el | 68 - .../elpa/auctex-12.1.0/style/pstricks.el | 871 - .../elpa/auctex-12.1.0/style/ragged2e.el | 65 - .../elpa/auctex-12.1.0/style/relsize.el | 69 - .../elpa/auctex-12.1.0/style/report.el | 22 - .../.emacs.d/elpa/auctex-12.1.0/style/ruby.el | 50 - .../elpa/auctex-12.1.0/style/scrartcl.el | 27 - .../elpa/auctex-12.1.0/style/scrbase.el | 225 - .../elpa/auctex-12.1.0/style/scrbook.el | 63 - .../elpa/auctex-12.1.0/style/scrlttr2.el | 240 - .../elpa/auctex-12.1.0/style/scrpage2.el | 130 - .../elpa/auctex-12.1.0/style/scrreprt.el | 65 - .../elpa/auctex-12.1.0/style/setspace.el | 62 - .../elpa/auctex-12.1.0/style/shortvrb.el | 83 - .../elpa/auctex-12.1.0/style/siunitx.el | 631 - .../elpa/auctex-12.1.0/style/slides.el | 51 - .../elpa/auctex-12.1.0/style/slovak.el | 12 - .../elpa/auctex-12.1.0/style/sourcecodepro.el | 80 - .../elpa/auctex-12.1.0/style/splitidx.el | 309 - .../elpa/auctex-12.1.0/style/subcaption.el | 184 - .../elpa/auctex-12.1.0/style/subfigure.el | 79 - .../elpa/auctex-12.1.0/style/subfiles.el | 88 - .../elpa/auctex-12.1.0/style/swedish.el | 15 - .../elpa/auctex-12.1.0/style/tabularx.el | 70 - .../elpa/auctex-12.1.0/style/tabulary.el | 67 - .../elpa/auctex-12.1.0/style/tarticle.el | 43 - .../elpa/auctex-12.1.0/style/tbook.el | 43 - .../elpa/auctex-12.1.0/style/tcolorbox.el | 704 - .../style/tcolorboxlib-raster.el | 192 - .../elpa/auctex-12.1.0/style/textcomp.el | 171 - .../elpa/auctex-12.1.0/style/textpos.el | 119 - .../elpa/auctex-12.1.0/style/theorem.el | 174 - .../.emacs.d/elpa/auctex-12.1.0/style/tikz.el | 283 - .../elpa/auctex-12.1.0/style/titleps.el | 233 - .../elpa/auctex-12.1.0/style/titlesec.el | 255 - .../elpa/auctex-12.1.0/style/titletoc.el | 193 - .../elpa/auctex-12.1.0/style/transparent.el | 53 - .../elpa/auctex-12.1.0/style/treport.el | 43 - .../.emacs.d/elpa/auctex-12.1.0/style/ulem.el | 107 - .../elpa/auctex-12.1.0/style/unicode-math.el | 74 - .../elpa/auctex-12.1.0/style/units.el | 50 - .../.emacs.d/elpa/auctex-12.1.0/style/url.el | 94 - .../elpa/auctex-12.1.0/style/varioref.el | 97 - .../elpa/auctex-12.1.0/style/verbatim.el | 44 - .../elpa/auctex-12.1.0/style/virtex.el | 83 - .../elpa/auctex-12.1.0/style/vwcol.el | 71 - .../elpa/auctex-12.1.0/style/wrapfig.el | 118 - .../elpa/auctex-12.1.0/style/xcolor.el | 629 - .../elpa/auctex-12.1.0/style/xltabular.el | 128 - .../elpa/auctex-12.1.0/style/xparse.el | 114 - .../elpa/auctex-12.1.0/style/xspace.el | 53 - .../elpa/auctex-12.1.0/style/zlmtt.el | 58 - .../tests/context/context-indentation-in.tex | 24 - .../tests/context/context-indentation-out.tex | 24 - .../tests/context/context-test.el | 44 - .../tests/japanese/error-parsing.el | 64 - .../tests/japanese/parse-timing-test.tex | 2 - .../tests/japanese/parse-timing.el | 52 - .../tests/japanese/preview-error-test.tex | 42 - .../tests/japanese/preview-error-test2.tex | 20 - .../tests/japanese/prv-dif-code.tex | 42 - .../tests/latex/fontification-general.tex | 358 - .../tests/latex/fontification-verb-macros.tex | 143 - .../tests/latex/latex-filling-in.tex | 28 - .../tests/latex/latex-filling-out.tex | 26 - .../auctex-12.1.0/tests/latex/latex-test.el | 165 - .../tests/latex/math-indent-in.tex | 17 - .../tests/latex/math-indent-out.tex | 17 - .../latex/tabular-count-ampersands-in.tex | 84 - .../latex/tabular-count-ampersands-out.tex | 100 - .../auctex-12.1.0/tests/latex/tabular-in.tex | 82 - .../auctex-12.1.0/tests/latex/tabular-out.tex | 82 - .../tests/make-test-deps.emacs-lisp | 49 - .../tests/tex/command-expansion.el | 87 - .../tests/tex/compilation-log.txt | 72 - .../auctex-12.1.0/tests/tex/error-parsing.el | 153 - .../auctex-12.1.0/tests/tex/path-expansion.el | 35 - .../elpa/auctex-12.1.0/tests/tex/utility.el | 31 - emacs/.emacs.d/elpa/auctex-12.1.0/tex-bar.el | 523 - emacs/.emacs.d/elpa/auctex-12.1.0/tex-buf.el | 3831 --- emacs/.emacs.d/elpa/auctex-12.1.0/tex-fold.el | 986 - emacs/.emacs.d/elpa/auctex-12.1.0/tex-font.el | 173 - emacs/.emacs.d/elpa/auctex-12.1.0/tex-info.el | 881 - .../.emacs.d/elpa/auctex-12.1.0/tex-ispell.el | 393 - emacs/.emacs.d/elpa/auctex-12.1.0/tex-jp.el | 1016 - emacs/.emacs.d/elpa/auctex-12.1.0/tex-mik.el | 73 - emacs/.emacs.d/elpa/auctex-12.1.0/tex-site.el | 181 - .../elpa/auctex-12.1.0/tex-site.el.in | 181 - .../.emacs.d/elpa/auctex-12.1.0/tex-style.el | 394 - .../.emacs.d/elpa/auctex-12.1.0/tex-wizard.el | 111 - emacs/.emacs.d/elpa/auctex-12.1.0/tex.el | 6824 ----- emacs/.emacs.d/elpa/auctex-12.1.0/texmathp.el | 424 - .../.emacs.d/elpa/auctex-12.1.0/toolbar-x.el | 2162 -- .../elpa/dash-20180107.818/dash-autoloads.el | 15 - .../elpa/dash-20180107.818/dash-pkg.el | 2 - emacs/.emacs.d/elpa/dash-20180107.818/dash.el | 2770 -- .../.emacs.d/elpa/dash-20180107.818/dash.elc | Bin 92192 -> 0 bytes emacs/.emacs.d/elpa/gnupg/pubring.kbx | Bin 1177 -> 0 bytes emacs/.emacs.d/elpa/gnupg/trustdb.gpg | Bin 1200 -> 0 bytes .../rainbow-delimiters-autoloads.el | 32 - .../rainbow-delimiters-pkg.el | 2 - .../rainbow-delimiters.el | 300 - .../rainbow-delimiters.elc | Bin 9310 -> 0 bytes .../smartparens-autoloads.el | 202 - .../smartparens-clojure.el | 56 - .../smartparens-clojure.elc | Bin 965 -> 0 bytes .../smartparens-config.el | 129 - .../smartparens-config.elc | Bin 3381 -> 0 bytes .../smartparens-elixir.el | 134 - .../smartparens-elixir.elc | Bin 3227 -> 0 bytes .../smartparens-ess.el | 224 - .../smartparens-ess.elc | Bin 4779 -> 0 bytes .../smartparens-haskell.el | 113 - .../smartparens-haskell.elc | Bin 2730 -> 0 bytes .../smartparens-html.el | 170 - .../smartparens-html.elc | Bin 3501 -> 0 bytes .../smartparens-javascript.el | 55 - .../smartparens-javascript.elc | Bin 678 -> 0 bytes .../smartparens-latex.el | 185 - .../smartparens-latex.elc | Bin 4736 -> 0 bytes .../smartparens-lua.el | 90 - .../smartparens-lua.elc | Bin 1332 -> 0 bytes .../smartparens-markdown.el | 86 - .../smartparens-ml.el | 57 - .../smartparens-ml.elc | Bin 631 -> 0 bytes .../smartparens-org.el | 65 - .../smartparens-org.elc | Bin 1264 -> 0 bytes .../smartparens-pkg.el | 6 - .../smartparens-python.el | 92 - .../smartparens-python.elc | Bin 2051 -> 0 bytes .../smartparens-racket.el | 55 - .../smartparens-racket.elc | Bin 627 -> 0 bytes .../smartparens-ruby.el | 407 - .../smartparens-ruby.elc | Bin 10385 -> 0 bytes .../smartparens-rust.el | 138 - .../smartparens-rust.elc | Bin 2229 -> 0 bytes .../smartparens-scala.el | 80 - .../smartparens-scala.elc | Bin 1307 -> 0 bytes .../smartparens-text.el | 65 - .../smartparens-text.elc | Bin 935 -> 0 bytes .../smartparens-20171201.242/smartparens.el | 9400 ------- .../smartparens-20171201.242/smartparens.elc | Bin 328692 -> 0 bytes emacs/.emacs.d/elpa/smartparens-readme.txt | 17 - emacs/.emacs.d/elpa/zenburn-theme-readme.txt | 2 - emacs/.emacs.d/init.el | 12 +- .../snippets/emacs-lisp-mode/add-hook | 7 + emacs/.emacs.d/snippets/java-mode/apr_assert | 7 + emacs/.emacs.d/snippets/java-mode/assert | 5 + .../.emacs.d/snippets/java-mode/assertEquals | 7 + emacs/.emacs.d/snippets/java-mode/cls | 7 + emacs/.emacs.d/snippets/java-mode/constructor | 7 + .../snippets/java-mode/define test method | 8 + emacs/.emacs.d/snippets/java-mode/doc | 7 + emacs/.emacs.d/snippets/java-mode/equals | 7 + emacs/.emacs.d/snippets/java-mode/file_class | 9 + emacs/.emacs.d/snippets/java-mode/for | 7 + emacs/.emacs.d/snippets/java-mode/fori | 7 + emacs/.emacs.d/snippets/java-mode/getter | 7 + emacs/.emacs.d/snippets/java-mode/if | 7 + emacs/.emacs.d/snippets/java-mode/ife | 10 + emacs/.emacs.d/snippets/java-mode/import | 6 + emacs/.emacs.d/snippets/java-mode/iterator | 7 + emacs/.emacs.d/snippets/java-mode/javadoc | 8 + emacs/.emacs.d/snippets/java-mode/lambda | 5 + emacs/.emacs.d/snippets/java-mode/main | 7 + emacs/.emacs.d/snippets/java-mode/main_class | 11 + emacs/.emacs.d/snippets/java-mode/method | 7 + emacs/.emacs.d/snippets/java-mode/new | 6 + emacs/.emacs.d/snippets/java-mode/override | 6 + emacs/.emacs.d/snippets/java-mode/param | 5 + emacs/.emacs.d/snippets/java-mode/printf | 5 + emacs/.emacs.d/snippets/java-mode/println | 6 + emacs/.emacs.d/snippets/java-mode/return | 5 + emacs/.emacs.d/snippets/java-mode/test | 8 + emacs/.emacs.d/snippets/java-mode/testClass | 12 + emacs/.emacs.d/snippets/java-mode/this | 6 + emacs/.emacs.d/snippets/java-mode/toString | 7 + emacs/.emacs.d/snippets/java-mode/try | 11 + emacs/.emacs.d/snippets/java-mode/value | 5 + emacs/.emacs.d/snippets/latex-mode/item | 5 + emacs/.emacs.d/snippets/latex-mode/itemize | 7 + emacs/.emacs.d/snippets/latex-mode/moderncv | 15 + .../snippets/latex-mode/moderncv-cvcomputer | 6 + .../snippets/latex-mode/moderncv-cventry | 6 + .../snippets/latex-mode/moderncv-cvlanguage | 6 + .../snippets/latex-mode/moderncv-cvline | 6 + .../latex-mode/moderncv-cvlistdoubleitem | 6 + .../snippets/latex-mode/moderncv-cvlistitem | 6 + emacs/.emacs.d/snippets/latex-mode/section | 8 + emacs/.emacs.d/snippets/latex-mode/subsec | 8 + emacs/.emacs.d/snippets/org-mode/elisp | 7 + emacs/.emacs.d/snippets/org-mode/latex | 7 + .../snippets/python-mode/.yas-parents | 1 + .../snippets/python-mode/.yas-setup.el | 39 + .../snippets/python-mode/.yas-setup.elc | Bin 0 -> 1799 bytes .../snippets/python-mode/__contains__ | 7 + emacs/.emacs.d/snippets/python-mode/__enter__ | 9 + emacs/.emacs.d/snippets/python-mode/__exit__ | 7 + .../.emacs.d/snippets/python-mode/__getitem__ | 7 + emacs/.emacs.d/snippets/python-mode/__len__ | 7 + emacs/.emacs.d/snippets/python-mode/__new__ | 8 + .../.emacs.d/snippets/python-mode/__setitem__ | 7 + emacs/.emacs.d/snippets/python-mode/all | 7 + emacs/.emacs.d/snippets/python-mode/arg | 7 + .../snippets/python-mode/arg_positional | 6 + emacs/.emacs.d/snippets/python-mode/assert | 6 + .../.emacs.d/snippets/python-mode/assertEqual | 6 + .../.emacs.d/snippets/python-mode/assertFalse | 6 + emacs/.emacs.d/snippets/python-mode/assertIn | 6 + .../snippets/python-mode/assertNotEqual | 6 + .../.emacs.d/snippets/python-mode/assertNotIn | 6 + .../snippets/python-mode/assertRaises | 6 + .../snippets/python-mode/assertRaises.with | 6 + .../.emacs.d/snippets/python-mode/assertTrue | 6 + .../.emacs.d/snippets/python-mode/celery_pdb | 6 + .../.emacs.d/snippets/python-mode/classmethod | 8 + emacs/.emacs.d/snippets/python-mode/cls | 7 + emacs/.emacs.d/snippets/python-mode/dec | 14 + emacs/.emacs.d/snippets/python-mode/deftest | 7 + .../snippets/python-mode/django_test_class | 7 + emacs/.emacs.d/snippets/python-mode/doc | 6 + emacs/.emacs.d/snippets/python-mode/doctest | 8 + emacs/.emacs.d/snippets/python-mode/embed | 5 + emacs/.emacs.d/snippets/python-mode/eq | 7 + emacs/.emacs.d/snippets/python-mode/for | 6 + emacs/.emacs.d/snippets/python-mode/from | 6 + emacs/.emacs.d/snippets/python-mode/function | 7 + .../snippets/python-mode/function_docstring | 11 + .../python-mode/function_docstring_numpy | 11 + emacs/.emacs.d/snippets/python-mode/if | 7 + emacs/.emacs.d/snippets/python-mode/ife | 9 + emacs/.emacs.d/snippets/python-mode/ifmain | 6 + emacs/.emacs.d/snippets/python-mode/import | 7 + emacs/.emacs.d/snippets/python-mode/init | 8 + .../snippets/python-mode/init_docstring | 10 + emacs/.emacs.d/snippets/python-mode/interact | 5 + emacs/.emacs.d/snippets/python-mode/ipdbdebug | 6 + emacs/.emacs.d/snippets/python-mode/iter | 7 + emacs/.emacs.d/snippets/python-mode/lambda | 5 + emacs/.emacs.d/snippets/python-mode/list | 7 + .../.emacs.d/snippets/python-mode/logger_name | 5 + emacs/.emacs.d/snippets/python-mode/logging | 6 + emacs/.emacs.d/snippets/python-mode/main | 6 + emacs/.emacs.d/snippets/python-mode/metaclass | 6 + emacs/.emacs.d/snippets/python-mode/method | 7 + .../snippets/python-mode/method_docstring | 10 + emacs/.emacs.d/snippets/python-mode/not_impl | 5 + emacs/.emacs.d/snippets/python-mode/np | 7 + .../.emacs.d/snippets/python-mode/parse_args | 9 + emacs/.emacs.d/snippets/python-mode/parser | 7 + emacs/.emacs.d/snippets/python-mode/pass | 5 + emacs/.emacs.d/snippets/python-mode/pl | 7 + emacs/.emacs.d/snippets/python-mode/print | 5 + emacs/.emacs.d/snippets/python-mode/prop | 17 + emacs/.emacs.d/snippets/python-mode/reg | 7 + emacs/.emacs.d/snippets/python-mode/repr | 7 + emacs/.emacs.d/snippets/python-mode/return | 5 + emacs/.emacs.d/snippets/python-mode/scls | 7 + emacs/.emacs.d/snippets/python-mode/script | 11 + emacs/.emacs.d/snippets/python-mode/self | 6 + .../snippets/python-mode/self_without_dot | 6 + .../.emacs.d/snippets/python-mode/selfassign | 6 + emacs/.emacs.d/snippets/python-mode/setdef | 5 + emacs/.emacs.d/snippets/python-mode/setup | 14 + emacs/.emacs.d/snippets/python-mode/size | 5 + emacs/.emacs.d/snippets/python-mode/static | 6 + emacs/.emacs.d/snippets/python-mode/str | 7 + emacs/.emacs.d/snippets/python-mode/super | 7 + .../.emacs.d/snippets/python-mode/test_class | 7 + emacs/.emacs.d/snippets/python-mode/test_file | 12 + emacs/.emacs.d/snippets/python-mode/trace | 6 + emacs/.emacs.d/snippets/python-mode/try | 8 + emacs/.emacs.d/snippets/python-mode/tryelse | 10 + emacs/.emacs.d/snippets/python-mode/unicode | 7 + .../snippets/python-mode/unicode_literals | 6 + emacs/.emacs.d/snippets/python-mode/utf8 | 5 + emacs/.emacs.d/snippets/python-mode/while | 7 + emacs/.emacs.d/snippets/python-mode/with | 7 + .../snippets/python-mode/with_statement | 6 + emacs/.emacs.d/snippets/sh-mode/args | 7 + emacs/.emacs.d/snippets/sh-mode/bang | 6 + emacs/.emacs.d/snippets/sh-mode/for loop | 7 + emacs/.emacs.d/snippets/sh-mode/function | 7 + emacs/.emacs.d/snippets/sh-mode/if | 8 + emacs/.emacs.d/snippets/sh-mode/ife | 9 + emacs/.emacs.d/snippets/sh-mode/safe-bang | 9 + emacs/.emacs.d/snippets/sh-mode/while | 7 + emacs/.emacs.d/themes/forest-blue-theme.el | 266 - emacs/.emacs.d/themes/zenburn-theme.el | 1460 - 874 files changed, 34968 insertions(+), 149180 deletions(-) create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/anaconda_mode-0.1.9-py3.6.egg/EGG-INFO/DESCRIPTION.rst create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/anaconda_mode-0.1.9-py3.6.egg/EGG-INFO/PKG-INFO create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/anaconda_mode-0.1.9-py3.6.egg/EGG-INFO/RECORD create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/anaconda_mode-0.1.9-py3.6.egg/EGG-INFO/WHEEL create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/anaconda_mode-0.1.9-py3.6.egg/EGG-INFO/metadata.json create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/anaconda_mode-0.1.9-py3.6.egg/EGG-INFO/requires.txt create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/anaconda_mode-0.1.9-py3.6.egg/EGG-INFO/top_level.txt create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/anaconda_mode-0.1.9-py3.6.egg/__pycache__/anaconda_mode.cpython-36.pyc create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/anaconda_mode-0.1.9-py3.6.egg/anaconda_mode.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/easy-install.pth create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/EGG-INFO/DESCRIPTION.rst create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/EGG-INFO/PKG-INFO create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/EGG-INFO/RECORD create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/EGG-INFO/WHEEL create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/EGG-INFO/metadata.json create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/EGG-INFO/requires.txt create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/EGG-INFO/top_level.txt create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/__init__.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/__main__.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/_compatibility.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/api/__init__.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/api/classes.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/api/completion.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/api/helpers.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/api/interpreter.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/api/keywords.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/api/replstartup.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/cache.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/common/__init__.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/common/context.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/debug.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/__init__.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/analysis.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/arguments.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/base_context.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/cache.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/__init__.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake/_functools.pym create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake/_sqlite3.pym create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake/_sre.pym create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake/_weakref.pym create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake/builtins.pym create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake/datetime.pym create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake/io.pym create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake/operator.pym create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake/posix.pym create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/getattr_static.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/mixed.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/context/__init__.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/context/function.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/context/instance.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/context/iterable.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/context/klass.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/context/module.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/context/namespace.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/docstrings.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/dynamic.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/filters.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/finder.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/flow_analysis.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/helpers.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/imports.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/jedi_typing.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/lazy_context.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/param.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/parser_cache.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/pep0484.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/project.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/recursion.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/site.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/stdlib.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/syntax_tree.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/sys_path.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/usages.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/utils.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/parser_utils.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/refactoring.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/settings.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/utils.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/__init__.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/arrays.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/async_.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/basic.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/classes.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/completion.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/complex.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/comprehensions.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/context.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/decorators.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/definition.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/descriptors.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/docstring.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/dynamic_arrays.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/dynamic_params.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/flow_analysis.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/functions.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/generators.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/goto.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/__init__.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/classes.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/flow_import.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/invisible_pkg.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/mod1.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/mod2.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/pkg/__init__.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/pkg/mod1.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/random.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/recurse_class1.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/recurse_class2.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/rename1.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/rename2.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/imports.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/invalid.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/isinstance.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/keywords.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/lambdas.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/named_param.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/on_import.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/ordering.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/parser.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/pep0484_basic.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/pep0484_comments.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/pep0484_typing.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/pep0526_variables.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/precedence.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/recursion.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/stdlib.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/sys_path.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/thirdparty/PyQt4_.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/thirdparty/django_.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/thirdparty/jedi_.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/thirdparty/psycopg2_.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/thirdparty/pylab_.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/types.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/usages.py rename emacs/.emacs.d/{elpa/forest-blue-theme-readme.txt => anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/__init__.py} (100%) create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/import_tree_for_usages/__init__.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/import_tree_for_usages/a.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/import_tree_for_usages/b.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/simple_import/__init__.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/simple_import/module.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/simple_import/module2.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_analysis.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_api.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_api_classes_follow_definition.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_call_signatures.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_classes.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_completion.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_defined_names.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_full_name.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_interpreter.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_unicode.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_usages.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/__init__.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/absolute_import/local_module.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/absolute_import/unittest.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/buildout_project/bin/app create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/buildout_project/bin/binary_file create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/buildout_project/bin/empty_file create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/buildout_project/buildout.cfg create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/buildout_project/src/proj_name/module_name.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/flask-site-packages/flask/__init__.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/flask-site-packages/flask/ext/__init__.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/flask-site-packages/flask_baz/__init__.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/flask-site-packages/flask_foo.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/flask-site-packages/flaskext/__init__.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/flask-site-packages/flaskext/bar.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/flask-site-packages/flaskext/moo/__init__.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/implicit_namespace_package/ns1/pkg/ns1_file.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/implicit_namespace_package/ns2/pkg/ns2_file.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/implicit_nested_namespaces/namespace/pkg/module.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/init_extension_module/__init__.cpython-34m.so create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/init_extension_module/module.c create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/init_extension_module/setup.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/namespace_package/ns1/pkg/__init__.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/namespace_package/ns1/pkg/ns1_file.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/namespace_package/ns1/pkg/ns1_folder/__init__.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/namespace_package/ns2/pkg/ns2_file.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/namespace_package/ns2/pkg/ns2_folder/__init__.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/namespace_package/ns2/pkg/ns2_folder/nested/__init__.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/nested_namespaces/__init__.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/nested_namespaces/namespace/__init__.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/nested_namespaces/namespace/pkg/__init__.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/not_in_sys_path/__init__.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/not_in_sys_path/not_in_sys_path.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/not_in_sys_path/not_in_sys_path_package/__init__.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/not_in_sys_path/not_in_sys_path_package/module.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/not_in_sys_path/pkg/__init__.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/not_in_sys_path/pkg/module.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/sample_venvs/venv27/lib/python2.7/site-packages/dir-from-foo-pth/__init__.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/sample_venvs/venv27/lib/python2.7/site-packages/egg_link.egg-link create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/sample_venvs/venv27/lib/python2.7/site-packages/foo.pth create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/sample_venvs/venv27/lib/python2.7/site-packages/import_smth.pth create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/sample_venvs/venv27/lib/python2.7/site-packages/relative.egg-link create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/sample_venvs/venv27/lib/python2.7/site-packages/smth.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/sample_venvs/venv34/lib/python3.4/site-packages/dir-from-foo-pth/__init__.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/sample_venvs/venv34/lib/python3.4/site-packages/egg_link.egg-link create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/sample_venvs/venv34/lib/python3.4/site-packages/foo.pth create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/sample_venvs/venv34/lib/python3.4/site-packages/import_smth.pth create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/sample_venvs/venv34/lib/python3.4/site-packages/relative.egg-link create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/sample_venvs/venv34/lib/python3.4/site-packages/smth.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_absolute_import.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_annotations.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_buildout_detection.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_compiled.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_context.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_docstring.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_extension.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_helpers.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_implicit_namespace_package.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_imports.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_literals.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_mixed.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_namespace_package.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_precedence.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_pyc.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_representation.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_stdlib.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_sys_path.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/zipped_imports/not_pkg.zip create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/zipped_imports/pkg.zip create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/EGG-INFO/DESCRIPTION.rst create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/EGG-INFO/PKG-INFO create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/EGG-INFO/RECORD create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/EGG-INFO/WHEEL create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/EGG-INFO/metadata.json create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/EGG-INFO/top_level.txt create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/__init__.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/_compatibility.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/cache.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/grammar.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/normalizer.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/parser.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/pgen2/__init__.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/pgen2/grammar.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/pgen2/parse.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/pgen2/pgen.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/__init__.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/diff.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/errors.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/fstring.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/grammar26.txt create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/grammar27.txt create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/grammar33.txt create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/grammar34.txt create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/grammar35.txt create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/grammar36.txt create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/grammar37.txt create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/parser.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/pep8.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/prefix.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/token.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/tokenize.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/tree.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/tree.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/utils.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/EGG-INFO/DESCRIPTION.rst create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/EGG-INFO/PKG-INFO create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/EGG-INFO/RECORD create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/EGG-INFO/WHEEL create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/EGG-INFO/metadata.json create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/EGG-INFO/top_level.txt create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/__init__.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/__pycache__/__init__.cpython-36.pyc create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/__pycache__/compat.cpython-36.pyc create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/__pycache__/errors.cpython-36.pyc create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/__pycache__/exceptions.cpython-36.pyc create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/__pycache__/factory.cpython-36.pyc create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/__pycache__/service.cpython-36.pyc create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/__pycache__/validation.cpython-36.pyc create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/compat.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/errors.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/exceptions.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/factory.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/providers/__init__.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/providers/__pycache__/__init__.cpython-36.pyc create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/providers/__pycache__/basehttp.cpython-36.pyc create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/providers/basehttp.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/service.py create mode 100644 emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/validation.py delete mode 100644 emacs/.emacs.d/elpa/archives/gnu/archive-contents delete mode 100644 emacs/.emacs.d/elpa/archives/gnu/archive-contents.signed delete mode 100644 emacs/.emacs.d/elpa/archives/melpa/archive-contents delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0.signed delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/.elpaignore delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/.gitignore delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/COPYING delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/ChangeLog-preview delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/ChangeLog-preview.1 delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/ChangeLog.1 delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/GNUmakefile delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/Makefile.in delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/README delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/README.GIT delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/RELEASE delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/aclocal.m4 delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/auctex.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/auctex.el.in delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/auctex.info delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/auctex.spec delete mode 100755 emacs/.emacs.d/elpa/auctex-12.1.0/autogen.sh delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/bib-cite.el delete mode 100755 emacs/.emacs.d/elpa/auctex-12.1.0/build-aux/gitlog-to-auctexlog delete mode 100755 emacs/.emacs.d/elpa/auctex-12.1.0/build-aux/gitlog-to-changelog delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/circ.tex delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/configure.ac delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/context-en.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/context-nl.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/context.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/dir delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/doc/.gitignore delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/doc/Makefile.in delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/doc/auctex.texi delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/doc/changes.texi delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/doc/copying.texi delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/doc/faq.texi delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/doc/fdl.texi delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/doc/history.texi delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/doc/install.texi delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/doc/intro.texi delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/doc/macros.texi delete mode 100755 emacs/.emacs.d/elpa/auctex-12.1.0/doc/preview-dtxdoc.pl delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/doc/preview-faq.texi delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/doc/preview-latex.texi delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/doc/preview-problems.texi delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/doc/preview-readme.texi delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/doc/preview-todo.texi delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/doc/quickstart.texi delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/doc/tex-ref.tex delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/doc/todo.texi delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/doc/wininstall.texi delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/etc/auctex-logo.tex delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/font-latex.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/amstex.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/bibtex.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/dropdown.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/dvipdf.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/dvips.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/error.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/exec.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/execbibtex.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/execdvips.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/execerror.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/execpdftex.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/exectex.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/execviewdvi.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/execviewpdf.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/execviewps.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/gv.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/jumpdvi.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/ltx-symb-turn-off.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/ltx-symb-turn-on.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/pdftex.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/prverr16.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/prverr20.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/prverr24.xbm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/prverr24.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/prvtex-cap-up.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/prvtex12.xbm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/prvtex12.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/prvtex16.xbm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/prvtex16.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/prvtex20.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/prvtex24.xbm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/prvtex24.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/prvwrk12.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/prvwrk14.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/prvwrk16.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/prvwrk20.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/prvwrk24.xbm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/prvwrk24.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/pspdf.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/sep.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/spell.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/tex.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/view.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/viewdvi.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/viewpdf.xpm delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/images/viewps.xpm delete mode 100755 emacs/.emacs.d/elpa/auctex-12.1.0/install-sh delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/latex.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/latex/.gitignore delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/latex/Makefile.in delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/latex/README delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/latex/bootstrap.ins delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/latex/preview.dtx delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/lpath.el delete mode 100755 emacs/.emacs.d/elpa/auctex-12.1.0/mkinstalldirs delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/multi-prompt.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/plain-tex.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/preview-latex.info delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/preview-latex.spec delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/prv-emacs.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/prv-install.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/prv-xemacs.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/.nosearch delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/Alegreya.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/AlegreyaSans.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/AnonymousPro.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/CJK.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/CJKutf8.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/FiraMono.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/FiraSans.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/MinionPro.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/MyriadPro.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/XCharter.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/acro.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/acronym.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/afterpage.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/alltt.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/alphanum.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/amsart.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/amsbook.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/amsbsy.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/amsfonts.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/amsmath.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/amsopn.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/amssymb.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/amstex.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/amstext.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/amsthm.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/arabxetex.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/array.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/article.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/attachfile.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/australian.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/austrian.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/babel.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/baskervaldx.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/beamer.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/biblatex.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/bicaption.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/bidi.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/bidibeamer.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/bigdelim.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/bigstrut.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/bm.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/book.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/booktabs.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/breqn.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/bulgarian.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/canadian.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/captcont.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/caption.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/cleveref.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/color.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/colortbl.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/commath.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/comment.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/csquotes.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/currvita.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/czech.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/danish.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/dcolumn.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/dinbrief.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/dk-bib.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/dk.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/doc.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/dutch.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/emp.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/empheq.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/english.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/enumitem.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/environ.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/epigraph.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/epsf.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/erewhon.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/eso-pic.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/everysel.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/exam.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/exercise.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/expl3.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/fancyhdr.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/fancynum.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/fancyref.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/fancyvrb.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/fbb.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/filecontents.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/flashcards.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/floatrow.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/foils.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/fontaxes.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/fontenc.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/fontspec.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/footmisc.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/framed.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/francais.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/french.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/frenchb.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/fvextra.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/geometry.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/german.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/gloss-italian.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/graphics.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/graphicx.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/harvard.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/hologo.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/hyperref.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/icelandic.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/ifluatex.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/imakeidx.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/index.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/inputenc.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/italian.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/j-article.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/j-book.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/j-report.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/jarticle.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/jbook.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/jreport.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/jsarticle.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/jsbook.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/jsreport.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/jura.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/jurabib.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/kantlipsum.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/kpfonts.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/latexinfo.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/letter.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/lettrine.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/lipsum.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/listings.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/longtable.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/lscape.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/ltablex.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/ltx-base.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/ltxdoc.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/ltxtable.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/luacode.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/luatextra.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/makeidx.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/mathtools.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/mdframed.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/mdsymbol.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/mdwlist.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/memoir.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/menukeys.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/metalogo.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/mflogo.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/minted.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/mn2e.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/mnras.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/moodle.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/multicol.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/multido.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/multind.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/multirow.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/nameref.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/natbib.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/naustrian.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/newfloat.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/newpxmath.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/newpxtext.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/newtxmath.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/newtxsf.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/newtxtext.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/newtxttt.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/newzealand.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/ngerman.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/nicefrac.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/nomencl.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/ntheorem.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/paracol.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/paralist.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/pdflscape.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/pdfpages.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/pdfsync.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/placeins.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/plext.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/plfonts.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/plhb.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/polish.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/polski.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/polyglossia.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/preview.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/prosper.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/psfig.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/pst-grad.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/pst-node.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/pst-plot.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/pst-slpe.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/pstricks.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/ragged2e.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/relsize.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/report.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/ruby.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/scrartcl.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/scrbase.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/scrbook.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/scrlttr2.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/scrpage2.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/scrreprt.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/setspace.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/shortvrb.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/siunitx.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/slides.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/slovak.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/sourcecodepro.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/splitidx.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/subcaption.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/subfigure.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/subfiles.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/swedish.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/tabularx.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/tabulary.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/tarticle.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/tbook.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/tcolorbox.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/tcolorboxlib-raster.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/textcomp.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/textpos.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/theorem.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/tikz.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/titleps.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/titlesec.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/titletoc.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/transparent.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/treport.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/ulem.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/unicode-math.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/units.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/url.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/varioref.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/verbatim.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/virtex.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/vwcol.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/wrapfig.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/xcolor.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/xltabular.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/xparse.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/xspace.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/style/zlmtt.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/tests/context/context-indentation-in.tex delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/tests/context/context-indentation-out.tex delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/tests/context/context-test.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/tests/japanese/error-parsing.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/tests/japanese/parse-timing-test.tex delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/tests/japanese/parse-timing.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/tests/japanese/preview-error-test.tex delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/tests/japanese/preview-error-test2.tex delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/tests/japanese/prv-dif-code.tex delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/tests/latex/fontification-general.tex delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/tests/latex/fontification-verb-macros.tex delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/tests/latex/latex-filling-in.tex delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/tests/latex/latex-filling-out.tex delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/tests/latex/latex-test.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/tests/latex/math-indent-in.tex delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/tests/latex/math-indent-out.tex delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/tests/latex/tabular-count-ampersands-in.tex delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/tests/latex/tabular-count-ampersands-out.tex delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/tests/latex/tabular-in.tex delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/tests/latex/tabular-out.tex delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/tests/make-test-deps.emacs-lisp delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/tests/tex/command-expansion.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/tests/tex/compilation-log.txt delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/tests/tex/error-parsing.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/tests/tex/path-expansion.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/tests/tex/utility.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/tex-bar.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/tex-buf.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/tex-fold.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/tex-font.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/tex-info.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/tex-ispell.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/tex-jp.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/tex-mik.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/tex-site.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/tex-site.el.in delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/tex-style.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/tex-wizard.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/tex.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/texmathp.el delete mode 100644 emacs/.emacs.d/elpa/auctex-12.1.0/toolbar-x.el delete mode 100644 emacs/.emacs.d/elpa/dash-20180107.818/dash-autoloads.el delete mode 100644 emacs/.emacs.d/elpa/dash-20180107.818/dash-pkg.el delete mode 100644 emacs/.emacs.d/elpa/dash-20180107.818/dash.el delete mode 100644 emacs/.emacs.d/elpa/dash-20180107.818/dash.elc delete mode 100644 emacs/.emacs.d/elpa/gnupg/pubring.kbx delete mode 100644 emacs/.emacs.d/elpa/gnupg/trustdb.gpg delete mode 100644 emacs/.emacs.d/elpa/rainbow-delimiters-20170929.432/rainbow-delimiters-autoloads.el delete mode 100644 emacs/.emacs.d/elpa/rainbow-delimiters-20170929.432/rainbow-delimiters-pkg.el delete mode 100644 emacs/.emacs.d/elpa/rainbow-delimiters-20170929.432/rainbow-delimiters.el delete mode 100644 emacs/.emacs.d/elpa/rainbow-delimiters-20170929.432/rainbow-delimiters.elc delete mode 100644 emacs/.emacs.d/elpa/smartparens-20171201.242/smartparens-autoloads.el delete mode 100644 emacs/.emacs.d/elpa/smartparens-20171201.242/smartparens-clojure.el delete mode 100644 emacs/.emacs.d/elpa/smartparens-20171201.242/smartparens-clojure.elc delete mode 100644 emacs/.emacs.d/elpa/smartparens-20171201.242/smartparens-config.el delete mode 100644 emacs/.emacs.d/elpa/smartparens-20171201.242/smartparens-config.elc delete mode 100644 emacs/.emacs.d/elpa/smartparens-20171201.242/smartparens-elixir.el delete mode 100644 emacs/.emacs.d/elpa/smartparens-20171201.242/smartparens-elixir.elc delete mode 100644 emacs/.emacs.d/elpa/smartparens-20171201.242/smartparens-ess.el delete mode 100644 emacs/.emacs.d/elpa/smartparens-20171201.242/smartparens-ess.elc delete mode 100644 emacs/.emacs.d/elpa/smartparens-20171201.242/smartparens-haskell.el delete mode 100644 emacs/.emacs.d/elpa/smartparens-20171201.242/smartparens-haskell.elc delete mode 100644 emacs/.emacs.d/elpa/smartparens-20171201.242/smartparens-html.el delete mode 100644 emacs/.emacs.d/elpa/smartparens-20171201.242/smartparens-html.elc delete mode 100644 emacs/.emacs.d/elpa/smartparens-20171201.242/smartparens-javascript.el delete mode 100644 emacs/.emacs.d/elpa/smartparens-20171201.242/smartparens-javascript.elc delete mode 100644 emacs/.emacs.d/elpa/smartparens-20171201.242/smartparens-latex.el delete mode 100644 emacs/.emacs.d/elpa/smartparens-20171201.242/smartparens-latex.elc delete mode 100644 emacs/.emacs.d/elpa/smartparens-20171201.242/smartparens-lua.el delete mode 100644 emacs/.emacs.d/elpa/smartparens-20171201.242/smartparens-lua.elc delete mode 100644 emacs/.emacs.d/elpa/smartparens-20171201.242/smartparens-markdown.el delete mode 100644 emacs/.emacs.d/elpa/smartparens-20171201.242/smartparens-ml.el delete mode 100644 emacs/.emacs.d/elpa/smartparens-20171201.242/smartparens-ml.elc delete mode 100644 emacs/.emacs.d/elpa/smartparens-20171201.242/smartparens-org.el delete mode 100644 emacs/.emacs.d/elpa/smartparens-20171201.242/smartparens-org.elc delete mode 100644 emacs/.emacs.d/elpa/smartparens-20171201.242/smartparens-pkg.el delete mode 100644 emacs/.emacs.d/elpa/smartparens-20171201.242/smartparens-python.el delete mode 100644 emacs/.emacs.d/elpa/smartparens-20171201.242/smartparens-python.elc delete mode 100644 emacs/.emacs.d/elpa/smartparens-20171201.242/smartparens-racket.el delete mode 100644 emacs/.emacs.d/elpa/smartparens-20171201.242/smartparens-racket.elc delete mode 100644 emacs/.emacs.d/elpa/smartparens-20171201.242/smartparens-ruby.el delete mode 100644 emacs/.emacs.d/elpa/smartparens-20171201.242/smartparens-ruby.elc delete mode 100644 emacs/.emacs.d/elpa/smartparens-20171201.242/smartparens-rust.el delete mode 100644 emacs/.emacs.d/elpa/smartparens-20171201.242/smartparens-rust.elc delete mode 100644 emacs/.emacs.d/elpa/smartparens-20171201.242/smartparens-scala.el delete mode 100644 emacs/.emacs.d/elpa/smartparens-20171201.242/smartparens-scala.elc delete mode 100644 emacs/.emacs.d/elpa/smartparens-20171201.242/smartparens-text.el delete mode 100644 emacs/.emacs.d/elpa/smartparens-20171201.242/smartparens-text.elc delete mode 100644 emacs/.emacs.d/elpa/smartparens-20171201.242/smartparens.el delete mode 100644 emacs/.emacs.d/elpa/smartparens-20171201.242/smartparens.elc delete mode 100644 emacs/.emacs.d/elpa/smartparens-readme.txt delete mode 100644 emacs/.emacs.d/elpa/zenburn-theme-readme.txt create mode 100644 emacs/.emacs.d/snippets/emacs-lisp-mode/add-hook create mode 100644 emacs/.emacs.d/snippets/java-mode/apr_assert create mode 100644 emacs/.emacs.d/snippets/java-mode/assert create mode 100644 emacs/.emacs.d/snippets/java-mode/assertEquals create mode 100644 emacs/.emacs.d/snippets/java-mode/cls create mode 100644 emacs/.emacs.d/snippets/java-mode/constructor create mode 100644 emacs/.emacs.d/snippets/java-mode/define test method create mode 100644 emacs/.emacs.d/snippets/java-mode/doc create mode 100644 emacs/.emacs.d/snippets/java-mode/equals create mode 100644 emacs/.emacs.d/snippets/java-mode/file_class create mode 100644 emacs/.emacs.d/snippets/java-mode/for create mode 100644 emacs/.emacs.d/snippets/java-mode/fori create mode 100644 emacs/.emacs.d/snippets/java-mode/getter create mode 100644 emacs/.emacs.d/snippets/java-mode/if create mode 100644 emacs/.emacs.d/snippets/java-mode/ife create mode 100644 emacs/.emacs.d/snippets/java-mode/import create mode 100644 emacs/.emacs.d/snippets/java-mode/iterator create mode 100644 emacs/.emacs.d/snippets/java-mode/javadoc create mode 100644 emacs/.emacs.d/snippets/java-mode/lambda create mode 100644 emacs/.emacs.d/snippets/java-mode/main create mode 100644 emacs/.emacs.d/snippets/java-mode/main_class create mode 100644 emacs/.emacs.d/snippets/java-mode/method create mode 100644 emacs/.emacs.d/snippets/java-mode/new create mode 100644 emacs/.emacs.d/snippets/java-mode/override create mode 100644 emacs/.emacs.d/snippets/java-mode/param create mode 100644 emacs/.emacs.d/snippets/java-mode/printf create mode 100644 emacs/.emacs.d/snippets/java-mode/println create mode 100644 emacs/.emacs.d/snippets/java-mode/return create mode 100644 emacs/.emacs.d/snippets/java-mode/test create mode 100644 emacs/.emacs.d/snippets/java-mode/testClass create mode 100644 emacs/.emacs.d/snippets/java-mode/this create mode 100644 emacs/.emacs.d/snippets/java-mode/toString create mode 100644 emacs/.emacs.d/snippets/java-mode/try create mode 100644 emacs/.emacs.d/snippets/java-mode/value create mode 100644 emacs/.emacs.d/snippets/latex-mode/item create mode 100644 emacs/.emacs.d/snippets/latex-mode/itemize create mode 100644 emacs/.emacs.d/snippets/latex-mode/moderncv create mode 100644 emacs/.emacs.d/snippets/latex-mode/moderncv-cvcomputer create mode 100644 emacs/.emacs.d/snippets/latex-mode/moderncv-cventry create mode 100644 emacs/.emacs.d/snippets/latex-mode/moderncv-cvlanguage create mode 100644 emacs/.emacs.d/snippets/latex-mode/moderncv-cvline create mode 100644 emacs/.emacs.d/snippets/latex-mode/moderncv-cvlistdoubleitem create mode 100644 emacs/.emacs.d/snippets/latex-mode/moderncv-cvlistitem create mode 100644 emacs/.emacs.d/snippets/latex-mode/section create mode 100644 emacs/.emacs.d/snippets/latex-mode/subsec create mode 100644 emacs/.emacs.d/snippets/org-mode/elisp create mode 100644 emacs/.emacs.d/snippets/org-mode/latex create mode 100644 emacs/.emacs.d/snippets/python-mode/.yas-parents create mode 100644 emacs/.emacs.d/snippets/python-mode/.yas-setup.el create mode 100644 emacs/.emacs.d/snippets/python-mode/.yas-setup.elc create mode 100644 emacs/.emacs.d/snippets/python-mode/__contains__ create mode 100644 emacs/.emacs.d/snippets/python-mode/__enter__ create mode 100644 emacs/.emacs.d/snippets/python-mode/__exit__ create mode 100644 emacs/.emacs.d/snippets/python-mode/__getitem__ create mode 100644 emacs/.emacs.d/snippets/python-mode/__len__ create mode 100644 emacs/.emacs.d/snippets/python-mode/__new__ create mode 100644 emacs/.emacs.d/snippets/python-mode/__setitem__ create mode 100644 emacs/.emacs.d/snippets/python-mode/all create mode 100644 emacs/.emacs.d/snippets/python-mode/arg create mode 100644 emacs/.emacs.d/snippets/python-mode/arg_positional create mode 100644 emacs/.emacs.d/snippets/python-mode/assert create mode 100644 emacs/.emacs.d/snippets/python-mode/assertEqual create mode 100644 emacs/.emacs.d/snippets/python-mode/assertFalse create mode 100644 emacs/.emacs.d/snippets/python-mode/assertIn create mode 100644 emacs/.emacs.d/snippets/python-mode/assertNotEqual create mode 100644 emacs/.emacs.d/snippets/python-mode/assertNotIn create mode 100644 emacs/.emacs.d/snippets/python-mode/assertRaises create mode 100644 emacs/.emacs.d/snippets/python-mode/assertRaises.with create mode 100644 emacs/.emacs.d/snippets/python-mode/assertTrue create mode 100644 emacs/.emacs.d/snippets/python-mode/celery_pdb create mode 100644 emacs/.emacs.d/snippets/python-mode/classmethod create mode 100644 emacs/.emacs.d/snippets/python-mode/cls create mode 100644 emacs/.emacs.d/snippets/python-mode/dec create mode 100644 emacs/.emacs.d/snippets/python-mode/deftest create mode 100644 emacs/.emacs.d/snippets/python-mode/django_test_class create mode 100644 emacs/.emacs.d/snippets/python-mode/doc create mode 100644 emacs/.emacs.d/snippets/python-mode/doctest create mode 100644 emacs/.emacs.d/snippets/python-mode/embed create mode 100644 emacs/.emacs.d/snippets/python-mode/eq create mode 100644 emacs/.emacs.d/snippets/python-mode/for create mode 100644 emacs/.emacs.d/snippets/python-mode/from create mode 100644 emacs/.emacs.d/snippets/python-mode/function create mode 100644 emacs/.emacs.d/snippets/python-mode/function_docstring create mode 100644 emacs/.emacs.d/snippets/python-mode/function_docstring_numpy create mode 100644 emacs/.emacs.d/snippets/python-mode/if create mode 100644 emacs/.emacs.d/snippets/python-mode/ife create mode 100644 emacs/.emacs.d/snippets/python-mode/ifmain create mode 100644 emacs/.emacs.d/snippets/python-mode/import create mode 100644 emacs/.emacs.d/snippets/python-mode/init create mode 100644 emacs/.emacs.d/snippets/python-mode/init_docstring create mode 100644 emacs/.emacs.d/snippets/python-mode/interact create mode 100644 emacs/.emacs.d/snippets/python-mode/ipdbdebug create mode 100644 emacs/.emacs.d/snippets/python-mode/iter create mode 100644 emacs/.emacs.d/snippets/python-mode/lambda create mode 100644 emacs/.emacs.d/snippets/python-mode/list create mode 100644 emacs/.emacs.d/snippets/python-mode/logger_name create mode 100644 emacs/.emacs.d/snippets/python-mode/logging create mode 100644 emacs/.emacs.d/snippets/python-mode/main create mode 100644 emacs/.emacs.d/snippets/python-mode/metaclass create mode 100644 emacs/.emacs.d/snippets/python-mode/method create mode 100644 emacs/.emacs.d/snippets/python-mode/method_docstring create mode 100644 emacs/.emacs.d/snippets/python-mode/not_impl create mode 100644 emacs/.emacs.d/snippets/python-mode/np create mode 100644 emacs/.emacs.d/snippets/python-mode/parse_args create mode 100644 emacs/.emacs.d/snippets/python-mode/parser create mode 100644 emacs/.emacs.d/snippets/python-mode/pass create mode 100644 emacs/.emacs.d/snippets/python-mode/pl create mode 100644 emacs/.emacs.d/snippets/python-mode/print create mode 100644 emacs/.emacs.d/snippets/python-mode/prop create mode 100644 emacs/.emacs.d/snippets/python-mode/reg create mode 100644 emacs/.emacs.d/snippets/python-mode/repr create mode 100644 emacs/.emacs.d/snippets/python-mode/return create mode 100644 emacs/.emacs.d/snippets/python-mode/scls create mode 100644 emacs/.emacs.d/snippets/python-mode/script create mode 100644 emacs/.emacs.d/snippets/python-mode/self create mode 100644 emacs/.emacs.d/snippets/python-mode/self_without_dot create mode 100644 emacs/.emacs.d/snippets/python-mode/selfassign create mode 100644 emacs/.emacs.d/snippets/python-mode/setdef create mode 100644 emacs/.emacs.d/snippets/python-mode/setup create mode 100644 emacs/.emacs.d/snippets/python-mode/size create mode 100644 emacs/.emacs.d/snippets/python-mode/static create mode 100644 emacs/.emacs.d/snippets/python-mode/str create mode 100644 emacs/.emacs.d/snippets/python-mode/super create mode 100644 emacs/.emacs.d/snippets/python-mode/test_class create mode 100644 emacs/.emacs.d/snippets/python-mode/test_file create mode 100644 emacs/.emacs.d/snippets/python-mode/trace create mode 100644 emacs/.emacs.d/snippets/python-mode/try create mode 100644 emacs/.emacs.d/snippets/python-mode/tryelse create mode 100644 emacs/.emacs.d/snippets/python-mode/unicode create mode 100644 emacs/.emacs.d/snippets/python-mode/unicode_literals create mode 100644 emacs/.emacs.d/snippets/python-mode/utf8 create mode 100644 emacs/.emacs.d/snippets/python-mode/while create mode 100644 emacs/.emacs.d/snippets/python-mode/with create mode 100644 emacs/.emacs.d/snippets/python-mode/with_statement create mode 100644 emacs/.emacs.d/snippets/sh-mode/args create mode 100644 emacs/.emacs.d/snippets/sh-mode/bang create mode 100644 emacs/.emacs.d/snippets/sh-mode/for loop create mode 100644 emacs/.emacs.d/snippets/sh-mode/function create mode 100644 emacs/.emacs.d/snippets/sh-mode/if create mode 100644 emacs/.emacs.d/snippets/sh-mode/ife create mode 100644 emacs/.emacs.d/snippets/sh-mode/safe-bang create mode 100644 emacs/.emacs.d/snippets/sh-mode/while delete mode 100644 emacs/.emacs.d/themes/forest-blue-theme.el delete mode 100644 emacs/.emacs.d/themes/zenburn-theme.el diff --git a/.gitignore b/.gitignore index 5745560..d986511 100755 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ \#*\# *.log .#* +emacs/.emacs.d/elpa/* \ No newline at end of file diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/anaconda_mode-0.1.9-py3.6.egg/EGG-INFO/DESCRIPTION.rst b/emacs/.emacs.d/anaconda-mode/0.1.9/anaconda_mode-0.1.9-py3.6.egg/EGG-INFO/DESCRIPTION.rst new file mode 100644 index 0000000..e0f03bb --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/anaconda_mode-0.1.9-py3.6.egg/EGG-INFO/DESCRIPTION.rst @@ -0,0 +1,305 @@ + +.. |travis| image:: https://img.shields.io/travis/proofit404/anaconda-mode.svg?style=flat-square + :target: https://travis-ci.org/proofit404/anaconda-mode + :alt: Build Status + +.. |coveralls| image:: https://img.shields.io/coveralls/proofit404/anaconda-mode.svg?style=flat-square + :target: https://coveralls.io/r/proofit404/anaconda-mode + :alt: Coverage Status + +.. |requires| image:: https://img.shields.io/requires/github/proofit404/anaconda-mode.svg?style=flat-square + :target: https://requires.io/github/proofit404/anaconda-mode/requirements + :alt: Requirements Status + +.. |melpa| image:: http://melpa.org/packages/anaconda-mode-badge.svg + :target: http://melpa.org/#/anaconda-mode + :alt: Melpa + +.. |melpa-stable| image:: http://stable.melpa.org/packages/anaconda-mode-badge.svg + :target: http://stable.melpa.org/#/anaconda-mode + :alt: Melpa Stable + +.. image:: static/logo.png + :align: right + :alt: Logo + +=============== + Anaconda mode +=============== + +|travis| |coveralls| |requires| |melpa| |melpa-stable| + +Code navigation, documentation lookup and completion for Python. + +.. figure:: static/completion.png + +.. figure:: static/reference.png + + +Features +-------- +Anaconda mode provides the following features + +* context-sensitive code completion +* jump to definitions +* find references +* view documentation +* virtual environment +* eldoc mode +* all this stuff inside vagrant and remote hosts + +Supported Python Versions +------------------------- +2.6, 2.7, 3.3, 3.4 + +Installation +------------ + +To use this package you need to install ``setuptools``. + +package.el +`````````` + +All you need to do is install the package from Melpa_:: + + M-x package-install RET anaconda-mode RET + +Manual +`````` + +Clone this repository somewhere and add this directory to your +``load-path``. + +Prelude +``````` + +``anaconda-mode`` is included in the `Emacs Prelude`_ distribution. You +can use it as well. Look at the ``prelude-python`` module to see more +details. + +Spacemacs +````````` + +``anaconda-mode`` is included in the Spacemacs_ distribution. You can use +it as well. Look at the ``python`` language layer to see more details. + +Configuration +------------- + +You can automatically enable ``anaconda-mode`` in all python buffers +with following code in your configuration: + +.. code:: lisp + + (add-hook 'python-mode-hook 'anaconda-mode) + +ElDoc +````` + +``anaconda-eldoc-mode`` provide document function to ``eldoc-mode``. All +you need is to enable ``anaconda-eldoc-mode`` in addition to the previous setup. + +.. code:: lisp + + (add-hook 'python-mode-hook 'anaconda-eldoc-mode) + +Usage +----- + +To start a completion press ``C-M-i``. This is the standard emacs binding +for ``complete-at-point`` function. You can use company-mode_ with +company-anaconda_ backend to get more intelligent ui. Or +auto-complete-mode_ with ac-anaconda_ as a last try. + +Interactive commands +```````````````````` + +Here is a list of interactive commands available with anaconda-mode + +========== ============================== +Keybinding Description +========== ============================== +C-M-i anaconda-mode-complete +M-. anaconda-mode-find-definitions +M-, anaconda-mode-find-assignments +M-r anaconda-mode-find-references +M-* anaconda-mode-go-back +M-? anaconda-mode-show-doc +========== ============================== + +If multiple candidates are found for definitions, assignments or usages, +you'll see an advanced anaconda navigator buffer. + +PYTHONPATH +`````````` + +You can add your project to the Emacs ``PYTHONPATH``. If you store project +dependencies somewhere on your machine, you can add them as well. + +.. code:: lisp + + (add-to-list 'python-shell-extra-pythonpaths "/path/to/the/project") + (add-to-list 'python-shell-extra-pythonpaths "/path/to/the/dependency") + +Virtual environment +``````````````````` + +Use a virtual environment to isolate your project dependencies from +others on the system. You can additionally install your project in an editable +mode in the virtual environment. This will improve search functionality. +Then activate this virtual environment inside Emacs. + +:: + + M-x pythonic-activate RET /path/to/virtualenv RET + +Also you can use `pyenv-mode`_ or similar package to hold virtual +environment in actual state. + +Each action above applies to ``anaconda-mode`` immediately. The next +``anaconda-mode`` command you call will use this environment for +search completion candidates. + +Tramp +````` + +It's possible to use anaconda-mode on a remote server when you connect +to it using tramp. Anaconda-mode can search for completion candidates +and all other stuff on remote server while you're running Emacs locally. +First of all open interesting remote file. + +:: + + C-x C-f /ssh:remote_host:project/__init__.py RET + +After tramp successfully connects and you see actual buffer +content, activate the remote virtual environment. + +:: + + M-x pythoninc-activate RET /ssh:remote_host:/home/user/venv RET + +Now any anaconda-mode command will use ``/home/user/venv/bin/python`` +interpreter running on ``remote_host`` over ssh. If you don't use the +virtual environment remotely then you have an option to specify the remote +interpreter directly. + +.. code:: lisp + + (setq python-shell-interpreter "/ssh:remote_host:/usr/bin/python") + +It is important to remember that ``remote_host`` must be a real host +name or an IP address. SSH aliases not allowed to be used with +anaconda-mode. Also port 9000 on the remote host should be open to +incoming connections from your local machine. A final note about project scope: +all kinds of searching from inside the +virtual environment are available from any buffer. However searching inside your +project is available only if you open it on the same machine as the +interpreter. + +Vagrant +``````` + +You can get all the intelligent features of anaconda-mode with virtual +environments deployed on your vagrant box. Fire up the vagrant machine as usual. +The easiest way to handle authentication is to copy your public ssh key to the +vagrant box. + +:: + + ssh-copy-id vagrant@localhost -p 2222 + +Now open your project inside the vagrant box. + +:: + + C-x C-f /ssh:vagrant@localhost#2222:/vagrant/polls/views.py + +Check the ``*anaconda-mode*`` buffer for the port number, and forward that port +from vagrant. + +:: + + ssh -nNT vagrant@localhost -p 2222 -L :localhost: + +Then activate your project environment installed inside vagrant. + +:: + + M-x pythonic-activate RET /ssh:vagrant@localhost#2222:/vagrant/polls/venv RET + +Now you are ready to go. If you have random connection errors during interaction +with running server, try replacing the host name with the IP address, for example, +``localhost`` with ``127.0.0.1``. + +Implementation details +---------------------- + +Anaconda mode comes with ``anaconda_mode.py`` server. This server +allows you to use the jedi_ python library over jsonrpc api. The server chooses +first available port starting from 9000. Anaconda mode will run this +server automatically on first call of any anaconda-mode command. + +This means that completion results and reference searches depend on your +project installation. + +Bug Reports +----------- + +Please attach ``*anaconda-mode*`` buffer content to every created +issue. + +Issues +------ + +AttributeError and KeyError randomly happens +```````````````````````````````````````````` + +These kinds of problems were reported with jedi 0.9 version. (This +error may occur in Spacemacs or any other usage). You can try to +downgrade jedi version down to 0.8. + +:: + + M-: (dired (anaconda-mode-server-directory)) RET + M-! rm -rf jedi* RET + M-! pip install "jedi<0.9" -t . RET + +After you saw the jedi version changed to 0.8 in the dired window, you +have to refresh Emacs to make it work right away. You can either +restart Emacs or kill the ``*anaconda-mode*`` buffer. + +Contributions +------------- + +Are very welcome. But any significant change has to be accompanied +with tests, both for Emacs Lisp and Python code. To run the test +suite, call: + +.. code:: shell + + tox + +Thanks +------ + +* Dmitry Gutov **@dgutov** +* Bo Lin **@sadboy** +* Vasilij Schneidermann **@wasamasa** +* Fredrik Bergroth **@fbergroth** +* Fabio Corneti **@fabiocorneti** +* Tom Davis **@tdavis** +* Sviridov Alexander **@sviridov** +* Mario Rodas **@marsam** + +.. _Melpa: http://melpa.milkbox.net/ +.. _pyenv-mode: https://github.com/proofit404/pyenv-mode +.. _jedi: http://jedi.jedidjah.ch/en/latest/ +.. _emacs prelude: https://github.com/bbatsov/prelude +.. _spacemacs: https://github.com/syl20bnr/spacemacs +.. _company-mode: http://company-mode.github.io/ +.. _company-anaconda: https://github.com/proofit404/company-anaconda +.. _auto-complete-mode: https://github.com/auto-complete/auto-complete +.. _ac-anaconda: https://github.com/proofit404/ac-anaconda + + diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/anaconda_mode-0.1.9-py3.6.egg/EGG-INFO/PKG-INFO b/emacs/.emacs.d/anaconda-mode/0.1.9/anaconda_mode-0.1.9-py3.6.egg/EGG-INFO/PKG-INFO new file mode 100644 index 0000000..84b55da --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/anaconda_mode-0.1.9-py3.6.egg/EGG-INFO/PKG-INFO @@ -0,0 +1,332 @@ +Metadata-Version: 2.0 +Name: anaconda-mode +Version: 0.1.9 +Summary: Code navigation, documentation lookup and completion for Python. +Home-page: https://github.com/proofit404/anaconda-mode +Author: Artem Malyshev +Author-email: proofit404@gmail.com +License: GPL3 +Description-Content-Type: UNKNOWN +Platform: any +Classifier: Development Status :: 4 - Beta +Classifier: Environment :: Console +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3) +Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 2.6 +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.2 +Classifier: Programming Language :: Python :: 3.3 +Classifier: Programming Language :: Python :: 3.4 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Topic :: Text Editors +Classifier: Topic :: Text Editors :: Emacs +Requires-Dist: jedi (>=0.11) +Requires-Dist: service-factory (>=0.1.5) + + +.. |travis| image:: https://img.shields.io/travis/proofit404/anaconda-mode.svg?style=flat-square + :target: https://travis-ci.org/proofit404/anaconda-mode + :alt: Build Status + +.. |coveralls| image:: https://img.shields.io/coveralls/proofit404/anaconda-mode.svg?style=flat-square + :target: https://coveralls.io/r/proofit404/anaconda-mode + :alt: Coverage Status + +.. |requires| image:: https://img.shields.io/requires/github/proofit404/anaconda-mode.svg?style=flat-square + :target: https://requires.io/github/proofit404/anaconda-mode/requirements + :alt: Requirements Status + +.. |melpa| image:: http://melpa.org/packages/anaconda-mode-badge.svg + :target: http://melpa.org/#/anaconda-mode + :alt: Melpa + +.. |melpa-stable| image:: http://stable.melpa.org/packages/anaconda-mode-badge.svg + :target: http://stable.melpa.org/#/anaconda-mode + :alt: Melpa Stable + +.. image:: static/logo.png + :align: right + :alt: Logo + +=============== + Anaconda mode +=============== + +|travis| |coveralls| |requires| |melpa| |melpa-stable| + +Code navigation, documentation lookup and completion for Python. + +.. figure:: static/completion.png + +.. figure:: static/reference.png + + +Features +-------- +Anaconda mode provides the following features + +* context-sensitive code completion +* jump to definitions +* find references +* view documentation +* virtual environment +* eldoc mode +* all this stuff inside vagrant and remote hosts + +Supported Python Versions +------------------------- +2.6, 2.7, 3.3, 3.4 + +Installation +------------ + +To use this package you need to install ``setuptools``. + +package.el +`````````` + +All you need to do is install the package from Melpa_:: + + M-x package-install RET anaconda-mode RET + +Manual +`````` + +Clone this repository somewhere and add this directory to your +``load-path``. + +Prelude +``````` + +``anaconda-mode`` is included in the `Emacs Prelude`_ distribution. You +can use it as well. Look at the ``prelude-python`` module to see more +details. + +Spacemacs +````````` + +``anaconda-mode`` is included in the Spacemacs_ distribution. You can use +it as well. Look at the ``python`` language layer to see more details. + +Configuration +------------- + +You can automatically enable ``anaconda-mode`` in all python buffers +with following code in your configuration: + +.. code:: lisp + + (add-hook 'python-mode-hook 'anaconda-mode) + +ElDoc +````` + +``anaconda-eldoc-mode`` provide document function to ``eldoc-mode``. All +you need is to enable ``anaconda-eldoc-mode`` in addition to the previous setup. + +.. code:: lisp + + (add-hook 'python-mode-hook 'anaconda-eldoc-mode) + +Usage +----- + +To start a completion press ``C-M-i``. This is the standard emacs binding +for ``complete-at-point`` function. You can use company-mode_ with +company-anaconda_ backend to get more intelligent ui. Or +auto-complete-mode_ with ac-anaconda_ as a last try. + +Interactive commands +```````````````````` + +Here is a list of interactive commands available with anaconda-mode + +========== ============================== +Keybinding Description +========== ============================== +C-M-i anaconda-mode-complete +M-. anaconda-mode-find-definitions +M-, anaconda-mode-find-assignments +M-r anaconda-mode-find-references +M-* anaconda-mode-go-back +M-? anaconda-mode-show-doc +========== ============================== + +If multiple candidates are found for definitions, assignments or usages, +you'll see an advanced anaconda navigator buffer. + +PYTHONPATH +`````````` + +You can add your project to the Emacs ``PYTHONPATH``. If you store project +dependencies somewhere on your machine, you can add them as well. + +.. code:: lisp + + (add-to-list 'python-shell-extra-pythonpaths "/path/to/the/project") + (add-to-list 'python-shell-extra-pythonpaths "/path/to/the/dependency") + +Virtual environment +``````````````````` + +Use a virtual environment to isolate your project dependencies from +others on the system. You can additionally install your project in an editable +mode in the virtual environment. This will improve search functionality. +Then activate this virtual environment inside Emacs. + +:: + + M-x pythonic-activate RET /path/to/virtualenv RET + +Also you can use `pyenv-mode`_ or similar package to hold virtual +environment in actual state. + +Each action above applies to ``anaconda-mode`` immediately. The next +``anaconda-mode`` command you call will use this environment for +search completion candidates. + +Tramp +````` + +It's possible to use anaconda-mode on a remote server when you connect +to it using tramp. Anaconda-mode can search for completion candidates +and all other stuff on remote server while you're running Emacs locally. +First of all open interesting remote file. + +:: + + C-x C-f /ssh:remote_host:project/__init__.py RET + +After tramp successfully connects and you see actual buffer +content, activate the remote virtual environment. + +:: + + M-x pythoninc-activate RET /ssh:remote_host:/home/user/venv RET + +Now any anaconda-mode command will use ``/home/user/venv/bin/python`` +interpreter running on ``remote_host`` over ssh. If you don't use the +virtual environment remotely then you have an option to specify the remote +interpreter directly. + +.. code:: lisp + + (setq python-shell-interpreter "/ssh:remote_host:/usr/bin/python") + +It is important to remember that ``remote_host`` must be a real host +name or an IP address. SSH aliases not allowed to be used with +anaconda-mode. Also port 9000 on the remote host should be open to +incoming connections from your local machine. A final note about project scope: +all kinds of searching from inside the +virtual environment are available from any buffer. However searching inside your +project is available only if you open it on the same machine as the +interpreter. + +Vagrant +``````` + +You can get all the intelligent features of anaconda-mode with virtual +environments deployed on your vagrant box. Fire up the vagrant machine as usual. +The easiest way to handle authentication is to copy your public ssh key to the +vagrant box. + +:: + + ssh-copy-id vagrant@localhost -p 2222 + +Now open your project inside the vagrant box. + +:: + + C-x C-f /ssh:vagrant@localhost#2222:/vagrant/polls/views.py + +Check the ``*anaconda-mode*`` buffer for the port number, and forward that port +from vagrant. + +:: + + ssh -nNT vagrant@localhost -p 2222 -L :localhost: + +Then activate your project environment installed inside vagrant. + +:: + + M-x pythonic-activate RET /ssh:vagrant@localhost#2222:/vagrant/polls/venv RET + +Now you are ready to go. If you have random connection errors during interaction +with running server, try replacing the host name with the IP address, for example, +``localhost`` with ``127.0.0.1``. + +Implementation details +---------------------- + +Anaconda mode comes with ``anaconda_mode.py`` server. This server +allows you to use the jedi_ python library over jsonrpc api. The server chooses +first available port starting from 9000. Anaconda mode will run this +server automatically on first call of any anaconda-mode command. + +This means that completion results and reference searches depend on your +project installation. + +Bug Reports +----------- + +Please attach ``*anaconda-mode*`` buffer content to every created +issue. + +Issues +------ + +AttributeError and KeyError randomly happens +```````````````````````````````````````````` + +These kinds of problems were reported with jedi 0.9 version. (This +error may occur in Spacemacs or any other usage). You can try to +downgrade jedi version down to 0.8. + +:: + + M-: (dired (anaconda-mode-server-directory)) RET + M-! rm -rf jedi* RET + M-! pip install "jedi<0.9" -t . RET + +After you saw the jedi version changed to 0.8 in the dired window, you +have to refresh Emacs to make it work right away. You can either +restart Emacs or kill the ``*anaconda-mode*`` buffer. + +Contributions +------------- + +Are very welcome. But any significant change has to be accompanied +with tests, both for Emacs Lisp and Python code. To run the test +suite, call: + +.. code:: shell + + tox + +Thanks +------ + +* Dmitry Gutov **@dgutov** +* Bo Lin **@sadboy** +* Vasilij Schneidermann **@wasamasa** +* Fredrik Bergroth **@fbergroth** +* Fabio Corneti **@fabiocorneti** +* Tom Davis **@tdavis** +* Sviridov Alexander **@sviridov** +* Mario Rodas **@marsam** + +.. _Melpa: http://melpa.milkbox.net/ +.. _pyenv-mode: https://github.com/proofit404/pyenv-mode +.. _jedi: http://jedi.jedidjah.ch/en/latest/ +.. _emacs prelude: https://github.com/bbatsov/prelude +.. _spacemacs: https://github.com/syl20bnr/spacemacs +.. _company-mode: http://company-mode.github.io/ +.. _company-anaconda: https://github.com/proofit404/company-anaconda +.. _auto-complete-mode: https://github.com/auto-complete/auto-complete +.. _ac-anaconda: https://github.com/proofit404/ac-anaconda + + diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/anaconda_mode-0.1.9-py3.6.egg/EGG-INFO/RECORD b/emacs/.emacs.d/anaconda-mode/0.1.9/anaconda_mode-0.1.9-py3.6.egg/EGG-INFO/RECORD new file mode 100644 index 0000000..3f9ba3f --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/anaconda_mode-0.1.9-py3.6.egg/EGG-INFO/RECORD @@ -0,0 +1,7 @@ +anaconda_mode.py,sha256=e9O9YfhtxQEBpVkvNltJlk80mvTpm5kCWdWmIPB8FI4,2579 +anaconda_mode-0.1.9.dist-info/DESCRIPTION.rst,sha256=SQfFskNefB5PKjFi_zHFVik3kHWXbb941YO_udbU0V0,8805 +anaconda_mode-0.1.9.dist-info/METADATA,sha256=cKsFgEY0BgmpqR6z3Vu-2axGlEGDIVb_O53GhpdASvE,9854 +anaconda_mode-0.1.9.dist-info/RECORD,, +anaconda_mode-0.1.9.dist-info/WHEEL,sha256=8Lm45v9gcYRm70DrgFGVe4WsUtUMi1_0Tso1hqPGMjA,92 +anaconda_mode-0.1.9.dist-info/metadata.json,sha256=BJY77RH3AfXAJ1IE7ZIOv9DRBM60wtdSlI3OCEIWk8E,1178 +anaconda_mode-0.1.9.dist-info/top_level.txt,sha256=L8Fh-IKHfPsLM8slR8CSTKc7TI1BiVzAC5nR-tLkGLM,14 diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/anaconda_mode-0.1.9-py3.6.egg/EGG-INFO/WHEEL b/emacs/.emacs.d/anaconda-mode/0.1.9/anaconda_mode-0.1.9-py3.6.egg/EGG-INFO/WHEEL new file mode 100644 index 0000000..6261a26 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/anaconda_mode-0.1.9-py3.6.egg/EGG-INFO/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.30.0) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/anaconda_mode-0.1.9-py3.6.egg/EGG-INFO/metadata.json b/emacs/.emacs.d/anaconda-mode/0.1.9/anaconda_mode-0.1.9-py3.6.egg/EGG-INFO/metadata.json new file mode 100644 index 0000000..8d4856d --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/anaconda_mode-0.1.9-py3.6.egg/EGG-INFO/metadata.json @@ -0,0 +1 @@ +{"classifiers": ["Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: Text Editors", "Topic :: Text Editors :: Emacs"], "description_content_type": "UNKNOWN", "extensions": {"python.details": {"contacts": [{"email": "proofit404@gmail.com", "name": "Artem Malyshev", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "https://github.com/proofit404/anaconda-mode"}}}, "extras": [], "generator": "bdist_wheel (0.30.0)", "license": "GPL3", "metadata_version": "2.0", "name": "anaconda-mode", "platform": "any", "run_requires": [{"requires": ["jedi (>=0.11)", "service-factory (>=0.1.5)"]}], "summary": "Code navigation, documentation lookup and completion for Python.", "version": "0.1.9"} \ No newline at end of file diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/anaconda_mode-0.1.9-py3.6.egg/EGG-INFO/requires.txt b/emacs/.emacs.d/anaconda-mode/0.1.9/anaconda_mode-0.1.9-py3.6.egg/EGG-INFO/requires.txt new file mode 100644 index 0000000..6a1ea29 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/anaconda_mode-0.1.9-py3.6.egg/EGG-INFO/requires.txt @@ -0,0 +1,2 @@ +jedi>=0.11 +service-factory>=0.1.5 diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/anaconda_mode-0.1.9-py3.6.egg/EGG-INFO/top_level.txt b/emacs/.emacs.d/anaconda-mode/0.1.9/anaconda_mode-0.1.9-py3.6.egg/EGG-INFO/top_level.txt new file mode 100644 index 0000000..d692d49 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/anaconda_mode-0.1.9-py3.6.egg/EGG-INFO/top_level.txt @@ -0,0 +1 @@ +anaconda_mode diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/anaconda_mode-0.1.9-py3.6.egg/__pycache__/anaconda_mode.cpython-36.pyc b/emacs/.emacs.d/anaconda-mode/0.1.9/anaconda_mode-0.1.9-py3.6.egg/__pycache__/anaconda_mode.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4fbd627888b6849fff1f51771530c62743efc5ea GIT binary patch literal 3058 zcmbVOTW=dh6yBS!apK(CCS0loDpDh|Nn6yGC@P?UDx?w+K|)#yt+qR3XT#o@Sr=>^ zUR*?9dG8Ny5|3aVm&aC4&Z7L$1oS8YZb2)R)H{Y3C^YhKcs_U*aHSHg5 z=2t=cV~G441=C!O>CA}q*l>;5bj{dut+?V=bm}*ws#`^EMYXu@)>U66YQ#;qsoK?O zE}nDe(5|uiW6f=`25X|8=Pf?Z=2+{oHrB_wyP))WwlLA#N^i5piN2`xCAK`#mw1b< zuvOCBWxl}Me338l#VO;e=a<=EQ+0iF7)l%eX9nATKTm@+&LWKv%9IV<5X~)@!St1=`^1qG+M_h+WteCM*W<7VVtERFX}9O6iS#=EMy`~a?dJ>GkQ^&bKysFzoQqGABCSuG^z)I2(uimHk|{ucwIlpQ!xm1+6zAeVnIxZ zTtks-PvFnrw60DFd0Zds$NETzZ_S~zC%B(;`-rp9DVMgxMCN`HaCni~ewIZ8yKCpE z9p+9z>(YyE+cKEkBpHyw#Kx&4#Pza-*En_O#33>g%yPfFRB525hsO} z`S~G^qIdt$o_Dtn)0l7NeLvZ9Sekdkh|4V=`+?kYROPU(lfZ5g3bwYL8_tK*K81`; z)wh`qZaKFd-s_$H>STkWMy|}bc!NwQUunkhs#IR}VxAwS%-N070FJ-sOorkdbl8p| z=23}7Di)|iFFV?37xQP|dZ#plkRA4PCKg#z#gZga%J7F_ltv=W5n zNCMNWA7}oG}EQKV*e8iLR!=s50VNspGCDrc7zt2Fu&jaG}Ou^po@ zoNc$scsEQ!x^yap)j9sWygpGm!>dO7C>0dT(88Xm_R18>NbvsL?@~zX+-MLfx1&IkFr59XY)K8YXL;I?G zSrMi&!^q+iIEP4Y`$`aKS^D7gV}S7AEeJ5@FK6+sejV&5-k z>>zz=2hj|{R{>`ijS@J=dJfhYBljT7-yIh@MG`&InA3&X!9$ zV|W8=iU5{sR*m6gn;2s zMO7__lwNV$NHLK|DDiPjE(Dujyg~np^ig`r>(N|IU@7=6OJa=ebP}uP5>$zEQ*lAyE(%1qHt_llAtXjiZ<+OGebvwxYO~U6FPL=%?O(xy)~Wyi literal 0 HcmV?d00001 diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/anaconda_mode-0.1.9-py3.6.egg/anaconda_mode.py b/emacs/.emacs.d/anaconda-mode/0.1.9/anaconda_mode-0.1.9-py3.6.egg/anaconda_mode.py new file mode 100644 index 0000000..86ff995 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/anaconda_mode-0.1.9-py3.6.egg/anaconda_mode.py @@ -0,0 +1,110 @@ +""" + anaconda_mode + ~~~~~~~~~~~~~ + + This is anaconda_mode autocompletion server. + + :copyright: (c) 2013-2016 by Artem Malyshev. + :license: GPL3, see LICENSE for more details. +""" + +from __future__ import ( + absolute_import, + division, + print_function, + unicode_literals, +) + +import sys +from functools import wraps + +from jedi import Script +from service_factory import service_factory + + +def script_method(f): + """Create jedi.Script instance and apply f to it.""" + + @wraps(f) + def wrapper(source, line, column, path): + return f(Script(source, line, column, path)) + + return wrapper + + +def process_definitions(f): + """Call f and convert it result into json dumpable format.""" + + @wraps(f) + def wrapper(script): + + return [{'name': definition.name, + 'type': definition.type, + 'module-name': definition.module_name, + 'module-path': definition.module_path, + 'line': definition.line, + 'column': definition.column, + 'docstring': definition.docstring(), + 'description': definition.description, + 'full-name': definition.full_name} + for definition in f(script)] + + return wrapper + + +@script_method +@process_definitions +def complete(script): + """Select auto-complete candidates for source position.""" + + return script.completions() + + +@script_method +@process_definitions +def goto_definitions(script): + """Get definitions for thing under cursor.""" + + return script.goto_definitions() + + +@script_method +@process_definitions +def goto_assignments(script): + """Get assignments for thing under cursor.""" + + return script.goto_assignments() + + +@script_method +@process_definitions +def usages(script): + """Get usage information for thing under cursor.""" + + return script.usages() + + +@script_method +def eldoc(script): + """Return eldoc format documentation string or ''.""" + + signatures = script.call_signatures() + if len(signatures) == 1: + signature = signatures[0] + return { + 'name': signature.name, + 'index': signature.index, + # NOTE: Remove 'param ' prefix from each description. + 'params': [param.description[6:] for param in signature.params] + } + + +app = [complete, goto_definitions, goto_assignments, usages, eldoc] + + +def main(args): + host = args[0] if len(args) == 1 else '127.0.0.1' + service_factory(app, host, 0, 'anaconda_mode port {port}') + +if __name__ == '__main__': + main(sys.argv[1:]) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/easy-install.pth b/emacs/.emacs.d/anaconda-mode/0.1.9/easy-install.pth new file mode 100644 index 0000000..567b254 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/easy-install.pth @@ -0,0 +1,4 @@ +./anaconda_mode-0.1.9-py3.6.egg +./service_factory-0.1.5-py3.6.egg +./jedi-0.11.1-py3.6.egg +./parso-0.1.1-py3.6.egg diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/EGG-INFO/DESCRIPTION.rst b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/EGG-INFO/DESCRIPTION.rst new file mode 100644 index 0000000..7384291 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/EGG-INFO/DESCRIPTION.rst @@ -0,0 +1,306 @@ +################################################################### +Jedi - an awesome autocompletion/static analysis library for Python +################################################################### + +.. image:: https://secure.travis-ci.org/davidhalter/jedi.png?branch=master + :target: http://travis-ci.org/davidhalter/jedi + :alt: Travis-CI build status + +.. image:: https://coveralls.io/repos/davidhalter/jedi/badge.png?branch=master + :target: https://coveralls.io/r/davidhalter/jedi + :alt: Coverage Status + + +*If you have specific questions, please add an issue or ask on* `stackoverflow +`_ *with the label* ``python-jedi``. + + +Jedi is a static analysis tool for Python that can be used in IDEs/editors. Its +historic focus is autocompletion, but does static analysis for now as well. +Jedi is fast and is very well tested. It understands Python on a deeper level +than all other static analysis frameworks for Python. + +Jedi has support for two different goto functions. It's possible to search for +related names and to list all names in a Python file and infer them. Jedi +understands docstrings and you can use Jedi autocompletion in your REPL as +well. + +Jedi uses a very simple API to connect with IDE's. There's a reference +implementation as a `VIM-Plugin `_, +which uses Jedi's autocompletion. We encourage you to use Jedi in your IDEs. +It's really easy. + +Jedi can currently be used with the following editors/projects: + +- Vim (jedi-vim_, YouCompleteMe_, deoplete-jedi_, completor.vim_) +- Emacs (Jedi.el_, company-mode_, elpy_, anaconda-mode_, ycmd_) +- Sublime Text (SublimeJEDI_ [ST2 + ST3], anaconda_ [only ST3]) +- TextMate_ (Not sure if it's actually working) +- Kate_ version 4.13+ supports it natively, you have to enable it, though. [`proof + `_] +- Atom_ (autocomplete-python-jedi_) +- SourceLair_ +- `GNOME Builder`_ (with support for GObject Introspection) +- `Visual Studio Code`_ (via `Python Extension `_) +- Gedit (gedi_) +- wdb_ - Web Debugger +- `Eric IDE`_ (Available as a plugin) +- `Ipython 6.0.0+ `_ + +and many more! + + +Here are some pictures taken from jedi-vim_: + +.. image:: https://github.com/davidhalter/jedi/raw/master/docs/_screenshots/screenshot_complete.png + +Completion for almost anything (Ctrl+Space). + +.. image:: https://github.com/davidhalter/jedi/raw/master/docs/_screenshots/screenshot_function.png + +Display of function/class bodies, docstrings. + +.. image:: https://github.com/davidhalter/jedi/raw/master/docs/_screenshots/screenshot_pydoc.png + +Pydoc support (Shift+k). + +There is also support for goto and renaming. + +Get the latest version from `github `_ +(master branch should always be kind of stable/working). + +Docs are available at `https://jedi.readthedocs.org/en/latest/ +`_. Pull requests with documentation +enhancements and/or fixes are awesome and most welcome. Jedi uses `semantic +versioning `_. + + +Installation +============ + + pip install jedi + +Note: This just installs the Jedi library, not the editor plugins. For +information about how to make it work with your editor, refer to the +corresponding documentation. + +You don't want to use ``pip``? Please refer to the `manual +`_. + + +Feature Support and Caveats +=========================== + +Jedi really understands your Python code. For a comprehensive list what Jedi +understands, see: `Features +`_. A list of +caveats can be found on the same page. + +You can run Jedi on cPython 2.6, 2.7, 3.3, 3.4 or 3.5 but it should also +understand/parse code older than those versions. + +Tips on how to use Jedi efficiently can be found `here +`_. + +API +--- + +You can find the documentation for the `API here `_. + + +Autocompletion / Goto / Pydoc +----------------------------- + +Please check the API for a good explanation. There are the following commands: + +- ``jedi.Script.goto_assignments`` +- ``jedi.Script.completions`` +- ``jedi.Script.usages`` + +The returned objects are very powerful and really all you might need. + + +Autocompletion in your REPL (IPython, etc.) +------------------------------------------- + +Starting with Ipython `6.0.0` Jedi is a dependency of IPython. Autocompletion +in IPython is therefore possible without additional configuration. + +It's possible to have Jedi autocompletion in REPL modes - `example video `_. +This means that in Python you can enable tab completion in a `REPL +`_. + + +Static Analysis / Linter +------------------------ + +To do all forms of static analysis, please try to use ``jedi.names``. It will +return a list of names that you can use to infer types and so on. + +Linting is another thing that is going to be part of Jedi. For now you can try +an alpha version ``python -m jedi linter``. The API might change though and +it's still buggy. It's Jedi's goal to be smarter than classic linter and +understand ``AttributeError`` and other code issues. + + +Refactoring +----------- + +Jedi's parser would support refactoring, but there's no API to use it right +now. If you're interested in helping out here, let me know. With the latest +parser changes, it should be very easy to actually make it work. + + +Development +=========== + +There's a pretty good and extensive `development documentation +`_. + + +Testing +======= + +The test suite depends on ``tox`` and ``pytest``:: + + pip install tox pytest + +To run the tests for all supported Python versions:: + + tox + +If you want to test only a specific Python version (e.g. Python 2.7), it's as +easy as :: + + tox -e py27 + +Tests are also run automatically on `Travis CI +`_. + +For more detailed information visit the `testing documentation +`_ + + +Acknowledgements +================ + +- Takafumi Arakaki (@tkf) for creating a solid test environment and a lot of + other things. +- Danilo Bargen (@dbrgn) for general housekeeping and being a good friend :). +- Guido van Rossum (@gvanrossum) for creating the parser generator pgen2 + (originally used in lib2to3). + + + +.. _jedi-vim: https://github.com/davidhalter/jedi-vim +.. _youcompleteme: http://valloric.github.io/YouCompleteMe/ +.. _deoplete-jedi: https://github.com/zchee/deoplete-jedi +.. _completor.vim: https://github.com/maralla/completor.vim +.. _Jedi.el: https://github.com/tkf/emacs-jedi +.. _company-mode: https://github.com/syohex/emacs-company-jedi +.. _elpy: https://github.com/jorgenschaefer/elpy +.. _anaconda-mode: https://github.com/proofit404/anaconda-mode +.. _ycmd: https://github.com/abingham/emacs-ycmd +.. _sublimejedi: https://github.com/srusskih/SublimeJEDI +.. _anaconda: https://github.com/DamnWidget/anaconda +.. _wdb: https://github.com/Kozea/wdb +.. _TextMate: https://github.com/lawrenceakka/python-jedi.tmbundle +.. _Kate: http://kate-editor.org +.. _Atom: https://atom.io/ +.. _autocomplete-python-jedi: https://atom.io/packages/autocomplete-python-jedi +.. _SourceLair: https://www.sourcelair.com +.. _GNOME Builder: https://wiki.gnome.org/Apps/Builder +.. _Visual Studio Code: https://code.visualstudio.com/ +.. _gedi: https://github.com/isamert/gedi +.. _Eric IDE: http://eric-ide.python-projects.org + + +.. :changelog: + +Changelog +--------- + +0.11.0 (2017-09-20) ++++++++++++++++++++ + +- Split Jedi's parser into a separate project called ``parso``. +- Avoiding side effects in REPL completion. +- Numpy docstring support should be much better. +- Moved the `settings.*recursion*` away, they are no longer usable. + +0.10.2 (2017-04-05) ++++++++++++++++++++ + +- Python Packaging sucks. Some files were not included in 0.10.1. + +0.10.1 (2017-04-05) ++++++++++++++++++++ + +- Fixed a few very annoying bugs. +- Prepared the parser to be factored out of Jedi. + +0.10.0 (2017-02-03) ++++++++++++++++++++ + +- Actual semantic completions for the complete Python syntax. +- Basic type inference for ``yield from`` PEP 380. +- PEP 484 support (most of the important features of it). Thanks Claude! (@reinhrst) +- Added ``get_line_code`` to ``Definition`` and ``Completion`` objects. +- Completely rewritten the type inference engine. +- A new and better parser for (fast) parsing diffs of Python code. + +0.9.0 (2015-04-10) +++++++++++++++++++ + +- The import logic has been rewritten to look more like Python's. There is now + an ``Evaluator.modules`` import cache, which resembles ``sys.modules``. +- Integrated the parser of 2to3. This will make refactoring possible. It will + also be possible to check for error messages (like compiling an AST would give) + in the future. +- With the new parser, the evaluation also completely changed. It's now simpler + and more readable. +- Completely rewritten REPL completion. +- Added ``jedi.names``, a command to do static analysis. Thanks to that + sourcegraph guys for sponsoring this! +- Alpha version of the linter. + + +0.8.1 (2014-07-23) ++++++++++++++++++++ + +- Bugfix release, the last release forgot to include files that improve + autocompletion for builtin libraries. Fixed. + +0.8.0 (2014-05-05) ++++++++++++++++++++ + +- Memory Consumption for compiled modules (e.g. builtins, sys) has been reduced + drastically. Loading times are down as well (it takes basically as long as an + import). +- REPL completion is starting to become usable. +- Various small API changes. Generally this release focuses on stability and + refactoring of internal APIs. +- Introducing operator precedence, which makes calculating correct Array + indices and ``__getattr__`` strings possible. + +0.7.0 (2013-08-09) +++++++++++++++++++ + +- Switched from LGPL to MIT license. +- Added an Interpreter class to the API to make autocompletion in REPL + possible. +- Added autocompletion support for namespace packages. +- Add sith.py, a new random testing method. + +0.6.0 (2013-05-14) +++++++++++++++++++ + +- Much faster parser with builtin part caching. +- A test suite, thanks @tkf. + +0.5 versions (2012) ++++++++++++++++++++ + +- Initial development. + + diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/EGG-INFO/PKG-INFO b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/EGG-INFO/PKG-INFO new file mode 100644 index 0000000..9364ecd --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/EGG-INFO/PKG-INFO @@ -0,0 +1,337 @@ +Metadata-Version: 2.0 +Name: jedi +Version: 0.11.1 +Summary: An autocompletion tool for Python that can be used for text editors. +Home-page: https://github.com/davidhalter/jedi +Author: David Halter +Author-email: davidhalter88@gmail.com +License: MIT +Keywords: python completion refactoring vim +Platform: any +Classifier: Development Status :: 4 - Beta +Classifier: Environment :: Plugins +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: MIT License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 2.6 +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.3 +Classifier: Programming Language :: Python :: 3.4 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Classifier: Topic :: Text Editors :: Integrated Development Environments (IDE) +Classifier: Topic :: Utilities +Requires-Dist: parso (==0.1.1) +Provides-Extra: dev +Requires-Dist: docopt; extra == 'dev' + +################################################################### +Jedi - an awesome autocompletion/static analysis library for Python +################################################################### + +.. image:: https://secure.travis-ci.org/davidhalter/jedi.png?branch=master + :target: http://travis-ci.org/davidhalter/jedi + :alt: Travis-CI build status + +.. image:: https://coveralls.io/repos/davidhalter/jedi/badge.png?branch=master + :target: https://coveralls.io/r/davidhalter/jedi + :alt: Coverage Status + + +*If you have specific questions, please add an issue or ask on* `stackoverflow +`_ *with the label* ``python-jedi``. + + +Jedi is a static analysis tool for Python that can be used in IDEs/editors. Its +historic focus is autocompletion, but does static analysis for now as well. +Jedi is fast and is very well tested. It understands Python on a deeper level +than all other static analysis frameworks for Python. + +Jedi has support for two different goto functions. It's possible to search for +related names and to list all names in a Python file and infer them. Jedi +understands docstrings and you can use Jedi autocompletion in your REPL as +well. + +Jedi uses a very simple API to connect with IDE's. There's a reference +implementation as a `VIM-Plugin `_, +which uses Jedi's autocompletion. We encourage you to use Jedi in your IDEs. +It's really easy. + +Jedi can currently be used with the following editors/projects: + +- Vim (jedi-vim_, YouCompleteMe_, deoplete-jedi_, completor.vim_) +- Emacs (Jedi.el_, company-mode_, elpy_, anaconda-mode_, ycmd_) +- Sublime Text (SublimeJEDI_ [ST2 + ST3], anaconda_ [only ST3]) +- TextMate_ (Not sure if it's actually working) +- Kate_ version 4.13+ supports it natively, you have to enable it, though. [`proof + `_] +- Atom_ (autocomplete-python-jedi_) +- SourceLair_ +- `GNOME Builder`_ (with support for GObject Introspection) +- `Visual Studio Code`_ (via `Python Extension `_) +- Gedit (gedi_) +- wdb_ - Web Debugger +- `Eric IDE`_ (Available as a plugin) +- `Ipython 6.0.0+ `_ + +and many more! + + +Here are some pictures taken from jedi-vim_: + +.. image:: https://github.com/davidhalter/jedi/raw/master/docs/_screenshots/screenshot_complete.png + +Completion for almost anything (Ctrl+Space). + +.. image:: https://github.com/davidhalter/jedi/raw/master/docs/_screenshots/screenshot_function.png + +Display of function/class bodies, docstrings. + +.. image:: https://github.com/davidhalter/jedi/raw/master/docs/_screenshots/screenshot_pydoc.png + +Pydoc support (Shift+k). + +There is also support for goto and renaming. + +Get the latest version from `github `_ +(master branch should always be kind of stable/working). + +Docs are available at `https://jedi.readthedocs.org/en/latest/ +`_. Pull requests with documentation +enhancements and/or fixes are awesome and most welcome. Jedi uses `semantic +versioning `_. + + +Installation +============ + + pip install jedi + +Note: This just installs the Jedi library, not the editor plugins. For +information about how to make it work with your editor, refer to the +corresponding documentation. + +You don't want to use ``pip``? Please refer to the `manual +`_. + + +Feature Support and Caveats +=========================== + +Jedi really understands your Python code. For a comprehensive list what Jedi +understands, see: `Features +`_. A list of +caveats can be found on the same page. + +You can run Jedi on cPython 2.6, 2.7, 3.3, 3.4 or 3.5 but it should also +understand/parse code older than those versions. + +Tips on how to use Jedi efficiently can be found `here +`_. + +API +--- + +You can find the documentation for the `API here `_. + + +Autocompletion / Goto / Pydoc +----------------------------- + +Please check the API for a good explanation. There are the following commands: + +- ``jedi.Script.goto_assignments`` +- ``jedi.Script.completions`` +- ``jedi.Script.usages`` + +The returned objects are very powerful and really all you might need. + + +Autocompletion in your REPL (IPython, etc.) +------------------------------------------- + +Starting with Ipython `6.0.0` Jedi is a dependency of IPython. Autocompletion +in IPython is therefore possible without additional configuration. + +It's possible to have Jedi autocompletion in REPL modes - `example video `_. +This means that in Python you can enable tab completion in a `REPL +`_. + + +Static Analysis / Linter +------------------------ + +To do all forms of static analysis, please try to use ``jedi.names``. It will +return a list of names that you can use to infer types and so on. + +Linting is another thing that is going to be part of Jedi. For now you can try +an alpha version ``python -m jedi linter``. The API might change though and +it's still buggy. It's Jedi's goal to be smarter than classic linter and +understand ``AttributeError`` and other code issues. + + +Refactoring +----------- + +Jedi's parser would support refactoring, but there's no API to use it right +now. If you're interested in helping out here, let me know. With the latest +parser changes, it should be very easy to actually make it work. + + +Development +=========== + +There's a pretty good and extensive `development documentation +`_. + + +Testing +======= + +The test suite depends on ``tox`` and ``pytest``:: + + pip install tox pytest + +To run the tests for all supported Python versions:: + + tox + +If you want to test only a specific Python version (e.g. Python 2.7), it's as +easy as :: + + tox -e py27 + +Tests are also run automatically on `Travis CI +`_. + +For more detailed information visit the `testing documentation +`_ + + +Acknowledgements +================ + +- Takafumi Arakaki (@tkf) for creating a solid test environment and a lot of + other things. +- Danilo Bargen (@dbrgn) for general housekeeping and being a good friend :). +- Guido van Rossum (@gvanrossum) for creating the parser generator pgen2 + (originally used in lib2to3). + + + +.. _jedi-vim: https://github.com/davidhalter/jedi-vim +.. _youcompleteme: http://valloric.github.io/YouCompleteMe/ +.. _deoplete-jedi: https://github.com/zchee/deoplete-jedi +.. _completor.vim: https://github.com/maralla/completor.vim +.. _Jedi.el: https://github.com/tkf/emacs-jedi +.. _company-mode: https://github.com/syohex/emacs-company-jedi +.. _elpy: https://github.com/jorgenschaefer/elpy +.. _anaconda-mode: https://github.com/proofit404/anaconda-mode +.. _ycmd: https://github.com/abingham/emacs-ycmd +.. _sublimejedi: https://github.com/srusskih/SublimeJEDI +.. _anaconda: https://github.com/DamnWidget/anaconda +.. _wdb: https://github.com/Kozea/wdb +.. _TextMate: https://github.com/lawrenceakka/python-jedi.tmbundle +.. _Kate: http://kate-editor.org +.. _Atom: https://atom.io/ +.. _autocomplete-python-jedi: https://atom.io/packages/autocomplete-python-jedi +.. _SourceLair: https://www.sourcelair.com +.. _GNOME Builder: https://wiki.gnome.org/Apps/Builder +.. _Visual Studio Code: https://code.visualstudio.com/ +.. _gedi: https://github.com/isamert/gedi +.. _Eric IDE: http://eric-ide.python-projects.org + + +.. :changelog: + +Changelog +--------- + +0.11.0 (2017-09-20) ++++++++++++++++++++ + +- Split Jedi's parser into a separate project called ``parso``. +- Avoiding side effects in REPL completion. +- Numpy docstring support should be much better. +- Moved the `settings.*recursion*` away, they are no longer usable. + +0.10.2 (2017-04-05) ++++++++++++++++++++ + +- Python Packaging sucks. Some files were not included in 0.10.1. + +0.10.1 (2017-04-05) ++++++++++++++++++++ + +- Fixed a few very annoying bugs. +- Prepared the parser to be factored out of Jedi. + +0.10.0 (2017-02-03) ++++++++++++++++++++ + +- Actual semantic completions for the complete Python syntax. +- Basic type inference for ``yield from`` PEP 380. +- PEP 484 support (most of the important features of it). Thanks Claude! (@reinhrst) +- Added ``get_line_code`` to ``Definition`` and ``Completion`` objects. +- Completely rewritten the type inference engine. +- A new and better parser for (fast) parsing diffs of Python code. + +0.9.0 (2015-04-10) +++++++++++++++++++ + +- The import logic has been rewritten to look more like Python's. There is now + an ``Evaluator.modules`` import cache, which resembles ``sys.modules``. +- Integrated the parser of 2to3. This will make refactoring possible. It will + also be possible to check for error messages (like compiling an AST would give) + in the future. +- With the new parser, the evaluation also completely changed. It's now simpler + and more readable. +- Completely rewritten REPL completion. +- Added ``jedi.names``, a command to do static analysis. Thanks to that + sourcegraph guys for sponsoring this! +- Alpha version of the linter. + + +0.8.1 (2014-07-23) ++++++++++++++++++++ + +- Bugfix release, the last release forgot to include files that improve + autocompletion for builtin libraries. Fixed. + +0.8.0 (2014-05-05) ++++++++++++++++++++ + +- Memory Consumption for compiled modules (e.g. builtins, sys) has been reduced + drastically. Loading times are down as well (it takes basically as long as an + import). +- REPL completion is starting to become usable. +- Various small API changes. Generally this release focuses on stability and + refactoring of internal APIs. +- Introducing operator precedence, which makes calculating correct Array + indices and ``__getattr__`` strings possible. + +0.7.0 (2013-08-09) +++++++++++++++++++ + +- Switched from LGPL to MIT license. +- Added an Interpreter class to the API to make autocompletion in REPL + possible. +- Added autocompletion support for namespace packages. +- Add sith.py, a new random testing method. + +0.6.0 (2013-05-14) +++++++++++++++++++ + +- Much faster parser with builtin part caching. +- A test suite, thanks @tkf. + +0.5 versions (2012) ++++++++++++++++++++ + +- Initial development. + + diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/EGG-INFO/RECORD b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/EGG-INFO/RECORD new file mode 100644 index 0000000..1b28107 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/EGG-INFO/RECORD @@ -0,0 +1,211 @@ +jedi/__init__.py,sha256=-U3en9SeER8H_YJiQC17l66xiSMEafK_BYY3ru8sXDI,1597 +jedi/__main__.py,sha256=jkG0jwBmWM95hFYQTbN2ZjknJYVJS1lsoO5T-X9vPjY,1427 +jedi/_compatibility.py,sha256=8BEjsDDoj-5Wcy2GMgvVvMd6HaK6yXO8rKYhzkZVV9w,9022 +jedi/cache.py,sha256=ZVJH-2JqIvhw1eNbxiiThrzz1R0YJgOPSf5qvmwp7CY,3600 +jedi/debug.py,sha256=a_LcGqasBm9qkugqKNPCVX3T8NLUKJDb-4I7aurqB_M,3417 +jedi/parser_utils.py,sha256=T7N4gMpMcf2K20z6aJQO2wzKLrTM5ML9ksrMxC1MyT0,7484 +jedi/refactoring.py,sha256=rg0jBMDCVUFT2CygmEMIeHTZxZ8hHlNkmCuOYB23luI,6851 +jedi/settings.py,sha256=KcM1E8Nn9bjHoonQ2FliQkxVaXpXfZWMxk50REx8O50,3768 +jedi/utils.py,sha256=K0rhUsRX2-O_E0f1O79Ei0SrHbxG27koJ115vy-rk00,4635 +jedi/api/__init__.py,sha256=ue86MsmeB5d3aK3A0kgsJCosKWoRlX4Cic5SZ92p9tQ,16616 +jedi/api/classes.py,sha256=AlJh087asHKYhU-lx8rJKmqp1F0veUMY0Ho-ctvN1iM,22979 +jedi/api/completion.py,sha256=tbIBMEpPGreHl1AT6NvidzIykhgNmbeLiCx1dL70M7o,11770 +jedi/api/helpers.py,sha256=OCZmVa1b_30FOHkfSoGTsGxegTlvuF8zBy3CfMnF6X0,10805 +jedi/api/interpreter.py,sha256=KrgEoqUgSF-gzsMKflcXO1_Rwsdh1N7Xh5HvwO3hLPk,1497 +jedi/api/keywords.py,sha256=UsJIdq9wsxvidUs5ignG4507fbj9AlaatEVnlRYqxn0,3707 +jedi/api/replstartup.py,sha256=jcUVaTQYlkBlec4-00HtWYO3iB3Yj5og3SI8INbeLQg,832 +jedi/common/__init__.py,sha256=4TYbU_MxgzG_T381EwR__cYT9XjI1pT9OsqRowu3324,60 +jedi/common/context.py,sha256=rHwPB4aBUUudyC0ZPWU5BvJGagkyOAMj_eqSKXZ-Ut8,1798 +jedi/evaluate/__init__.py,sha256=JhPe6XCkuJpB-_niPXp_HBXc9rsWYG2K1FmxUN-kGuY,16123 +jedi/evaluate/analysis.py,sha256=Zdq-Nx2mQaKLCWLG3mmdyYJhvXEzCoMg7xhq4TcbQqQ,7859 +jedi/evaluate/arguments.py,sha256=__9PMWarYJoovgcgN88vpUHzmyd3x4EBo5aFAkryggg,9654 +jedi/evaluate/base_context.py,sha256=31d1iErAQgAf0cJpJUhw_IHh-rjZRkx-0Cy2s2qUswc,8790 +jedi/evaluate/cache.py,sha256=kwqnGHtjUUFvaLaNU93Fnnb1AsgbLRYfwlJxjxaVgwU,2461 +jedi/evaluate/docstrings.py,sha256=6oageQJlgetRugtN1naQC98gApuSKc4RJBTwAMv_P04,10293 +jedi/evaluate/dynamic.py,sha256=jub0xZsA6sQY9AIKuvuqxb_3HQM8IoBSSRmQg7K8zeA,7536 +jedi/evaluate/filters.py,sha256=mevyNXl4dOjEhovDK1ZAuBb73l3NCoI-RvkNmDi9AiI,14315 +jedi/evaluate/finder.py,sha256=StETqO6YPIta4utpt_7sZX7PLL8R1RIKOutbhVKIV3M,10858 +jedi/evaluate/flow_analysis.py,sha256=EBG7mJkLDTGgM2O6AJby7PN8qQer61gDeGE9GehZFHw,4077 +jedi/evaluate/helpers.py,sha256=VjNdWiCOj_mpSLracWI22o3wwQcnUZkuBBiO1jD_KpU,6187 +jedi/evaluate/imports.py,sha256=Oj5IzhF920sO-MPNRCpki6sOYqh-EqutyV51yrJujYg,22282 +jedi/evaluate/jedi_typing.py,sha256=xuI1PFB-uhB9Y31z8ediR_9ayS0z4ljDRPOB5L8E7XQ,2563 +jedi/evaluate/lazy_context.py,sha256=D6VJh-fwtrxywBY9CvDu0XARxhuirj61BXvDTqDYY9Q,1735 +jedi/evaluate/param.py,sha256=Sx6K9brKPIzSHYMGWW8rIZhpj_5qh8YtMCxi2U5OsTE,7914 +jedi/evaluate/parser_cache.py,sha256=Hk2-SY9PWSeYR9KZw7lOReBnUcw7MDDlG1dPuXJnMJM,172 +jedi/evaluate/pep0484.py,sha256=FKKOevxT78b1EQNjQkoIsRl0EpFQl9oe0WcyiQSnAXM,8087 +jedi/evaluate/project.py,sha256=3O5VL1TN2rkIp3Yf-XksHRBT_MmD_Kaxfi4_eUQdIQI,1023 +jedi/evaluate/recursion.py,sha256=XPt-DBn4LXN5CJL8pk3AW1ZiuP1J6m5g6otKLjCWdEc,4225 +jedi/evaluate/site.py,sha256=ttpVSiA5LM6OJkDYGiWR3CLGahpGiEgpBfj9q30Dgyw,3592 +jedi/evaluate/stdlib.py,sha256=bdTLw_1hfjep9MB9O5KbaokgncfPuE56e2tUDMKP7b0,11359 +jedi/evaluate/syntax_tree.py,sha256=NdQwyNDP2-HkLmLLx_CTYL3DcS-aSUBaOUL878Wmnj0,22899 +jedi/evaluate/sys_path.py,sha256=dpPdqV3S0kF-g3rF3G7yqEL5ugBW-3wq-UlWMPVB6rY,10920 +jedi/evaluate/usages.py,sha256=tdBEkLqOdgdIYJ2nTN-lypznwmx2GVt7tsY_7xqMi6c,2382 +jedi/evaluate/utils.py,sha256=uALOgaW2k6WuqbwxfySKdtjqYTCKL9tBzCkr7DjRNEU,3371 +jedi/evaluate/compiled/__init__.py,sha256=ibI7WFWGSAz6pry_ZukxOR_fCehNBvYz8VjL3REz_tk,21605 +jedi/evaluate/compiled/fake.py,sha256=hI-GGx40wWPWKG4iQzX68xPzbjHP_wlXqwLXsmg2Yw4,6534 +jedi/evaluate/compiled/getattr_static.py,sha256=f8x0lF5yYZmQUXQyScyMz40AIqYOuJ0M7NviY595Jjg,5772 +jedi/evaluate/compiled/mixed.py,sha256=2-oJNit8Bb8p-ujUTzWrhJ3MPbM8GaOANGCgh6V6Npc,7955 +jedi/evaluate/compiled/fake/_functools.pym,sha256=VWfkjpbuYg72FRRLbgPYXUjIVEEhZn4hJORih0LA4Jc,325 +jedi/evaluate/compiled/fake/_sqlite3.pym,sha256=OyodpClVDEGXjHXXQNx9ckDdIG59u2CjKsLJu5mke-k,489 +jedi/evaluate/compiled/fake/_sre.pym,sha256=s3NJJ-35qKSGB-fdw3-EU70U4dZTFoXAPFSEb9i0ZZU,3019 +jedi/evaluate/compiled/fake/_weakref.pym,sha256=7oqmsoOIy5SixiD54ZeMDdRvIMus77yHZRoCDj1xxrs,198 +jedi/evaluate/compiled/fake/builtins.pym,sha256=pYIdcuBRcV-VsXjn_Igywkg81Gt0cdcU7VFcMayKAVU,5560 +jedi/evaluate/compiled/fake/datetime.pym,sha256=xxIqy49l4mePOnaoGfjiKaN5w9JvPb9rVUWJgpMdVsY,77 +jedi/evaluate/compiled/fake/io.pym,sha256=aUD-B-SXs6sP-msDf8GzXvCMjx4llMlnZ8TxhxEBoR4,205 +jedi/evaluate/compiled/fake/operator.pym,sha256=nbMI33j8TF1ecQIu6j_xhB8j6Kp4e_LLaM9l-5iXmx8,1015 +jedi/evaluate/compiled/fake/posix.pym,sha256=KuVdP7_TMjd7coui58ak6y2SoStaoUpMZkCElXz8fCc,58 +jedi/evaluate/context/__init__.py,sha256=3IbVtWice8nnEyeLivr0WuzE7nBZSN3ntlkbbeynOa8,330 +jedi/evaluate/context/function.py,sha256=JbaJbfZR2BAbw8dC68mC3jU9IVdZ_FzDJKn-gWuFTYc,9184 +jedi/evaluate/context/instance.py,sha256=4nf5NolGZeKIsB0YImaC2qOg6pH8b0n2oMibsWEBVs8,16668 +jedi/evaluate/context/iterable.py,sha256=ny6BTCP13GryucXwFEvrvLZt-oK33ftdOmuhUmUenH0,24482 +jedi/evaluate/context/klass.py,sha256=qUfHrzqqNiVdtB8eikZj-5tn4vqzAApY1MLSWGvVeL4,8100 +jedi/evaluate/context/module.py,sha256=Hdh7iQo5L4ZRsG62Uo2IuUMeoGfcPGpdqidcTsOEOpw,7657 +jedi/evaluate/context/namespace.py,sha256=ovjId5ZvjscVcwG15IhbSrYn3ehbXRWeaSu0gXA5h4w,2214 +jedi-0.11.1.dist-info/DESCRIPTION.rst,sha256=1KSOf5PS7l0ioGAb6Kmd3aaTVJiCq6vXS3xI4ARv4X4,10569 +jedi-0.11.1.dist-info/METADATA,sha256=DLjIvvVQ-Pll9bdISSAMxGOeRx7v-oD2URsSFMInfNc,11812 +jedi-0.11.1.dist-info/RECORD,, +jedi-0.11.1.dist-info/WHEEL,sha256=o2k-Qa-RMNIJmUdIc7KU6VWR_ErNRbWNlxDIpl7lm34,110 +jedi-0.11.1.dist-info/metadata.json,sha256=VozZDZ_c7rgwSFleBaqLJgw__cVEzUQGd_CFEpcQvtM,1357 +jedi-0.11.1.dist-info/top_level.txt,sha256=s2r0f2Qa0jN2Cc9RwvYlU_2RQSHDHtbvDlqy6w8PfP8,10 +test/completion/__init__.py,sha256=EXR1qczisa4P9Kyau8wdh85TRFM0f9HTMLpEZXxhbuw,77 +test/completion/arrays.py,sha256=5HceQJyxPcBxuecCF-_QRKlEr57nFbenSYMWKreqeF0,5199 +test/completion/async_.py,sha256=Z7Jdq3I5jm3Tqnj6b-tW_knlAPEJgObUefUZJcUxr20,506 +test/completion/basic.py,sha256=JdnyXPNYFl9pHbQk3Q7P9Ltf1wSUY3mTrZgW44R0fRE,3896 +test/completion/classes.py,sha256=NAP4815sO5Yfl9L7hza9hfhIqk0n5__0cxk_FyRi11c,8297 +test/completion/completion.py,sha256=CPb-OFawEKOF5rQfj_iiWLFLdyCp3hv3yLFYw33p4NQ,565 +test/completion/complex.py,sha256=8U52qye1FR3rMDPpYWAYKj3WrC4DrCLat_6LOK7YmFw,197 +test/completion/comprehensions.py,sha256=Bdr9MyQtpg8VnKLDc2IKnLLxTcjlS0UIfT-Rt8helv0,3083 +test/completion/context.py,sha256=Eqa2TEZWQ5FuY29JQWx-o54HGUNtQsXs4ZINAYQPYq4,520 +test/completion/decorators.py,sha256=wp6C9v9rRYG0t1GOWTt1s776zv9Xs411m-Dn4zkC_gc,5198 +test/completion/definition.py,sha256=bgg-_bc5Lx65Ei-RiSWnOgIZh0C8xEk0-9L9T-29ICc,1072 +test/completion/descriptors.py,sha256=oM8453A0-oD45ufZhK8xEFIhVLjG_FVnxbIgfw-niOo,3421 +test/completion/docstring.py,sha256=NPW95qIGhItT2fzDzGYLB0BCKvtcAhi1HY9gpXAQqJE,3595 +test/completion/dynamic_arrays.py,sha256=Xni-30peE6rC5Tpm3o1noEqHIYZ5FyDcAEYQmDf38Rs,4263 +test/completion/dynamic_params.py,sha256=M5nEIjoeGc-PFJUvO5TV57qARcG-GykwKlyT4TqxZa0,1921 +test/completion/flow_analysis.py,sha256=FW-85o2ZNND5D7iRmBliNX8fjfa1mlKxiTn7v_CH77Y,4028 +test/completion/functions.py,sha256=Up4tFaPl41BG29izLtCZ6Lq9C0b9ivNqL1MjYkVg5rE,6731 +test/completion/generators.py,sha256=K9xb-jRX7B1fck4290aeL9m-4ob1XVnLIF1EBxaBWRY,2897 +test/completion/goto.py,sha256=26eh4LnUn0D5X3YGplDS6wDM_ZBERsKqApGvy0GQK74,3011 +test/completion/imports.py,sha256=_vrma0z8V2I8tRZVKt5pZYfj5W5YfUz2paXmfU9TUQY,4992 +test/completion/invalid.py,sha256=S2IS6MKmS1_GpO-2FqMnMDKvznbW1BY_VUmJlvBmvng,2709 +test/completion/isinstance.py,sha256=TCLiLsO0G1TT_NuxIQ2sJ-nupnUIDFc5Of-XyXUJ5b0,1747 +test/completion/keywords.py,sha256=IZqHB2rnlIk9WHGEpfgaQFIV-vJQeus7IJgEew3nSmM,577 +test/completion/lambdas.py,sha256=Ex7mZ_HfDTn61WtFlvAWewZ0A7UsXC48jfnAraCBjn4,1833 +test/completion/named_param.py,sha256=WKCtNJrmbdW7-tcs66qEDF497srVAE_ykB2U0PIxbXI,782 +test/completion/on_import.py,sha256=kR5pmY9WEI7jEAsu-AMeFj5ZeBBom4tyWmnqlOyu-rQ,2061 +test/completion/ordering.py,sha256=9MtjcukeU4RD8LovOF484YMtX29M0YW-rV58th-rDE8,2080 +test/completion/parser.py,sha256=ULhwabJL3r6njgZY-v_y7qqQqnBpqRvL4hweOQrrUXg,744 +test/completion/pep0484_basic.py,sha256=es0pK0laucw1N3wsRICDIvCfxv8Ajx2RGGnmTam2Pgs,2687 +test/completion/pep0484_comments.py,sha256=mmsoddQZ4dAYxRoSR4EJIVQIdKHz37KkAOEucO4LBSs,1669 +test/completion/pep0484_typing.py,sha256=aDwA-TdyR7yckeAgCxxXG6Bzj_7mTQv1gSZ9o4u_9HM,4971 +test/completion/pep0526_variables.py,sha256=essPDFbei6YtbocYkTMveAK1ChexSty5RjdaZRoKz64,386 +test/completion/precedence.py,sha256=s4ATwcLOtws5iPcehOSkl0m4N47OPd0rwm8YC8-mPsE,1910 +test/completion/recursion.py,sha256=X4-5-d4TyLZP3HxqNO0DTeqZLkV5fgF_o-NLtV4rIOk,1237 +test/completion/stdlib.py,sha256=Cy0w3AQc-1OKjKRHLke95zoBoUD_wqQF_9dpy8fFr-c,3451 +test/completion/sys_path.py,sha256=5rSjtJn_uK5kwJ4cLlSWmTbX9ny80khiy7bAatm28KE,458 +test/completion/types.py,sha256=mDpkevuiKQwHVZsZ2oNSOS0PJrve_40c5iKrlxBdMPU,1384 +test/completion/usages.py,sha256=g0ppNKlCd07UXRpcnCNOQEtNSWOtZru7ATLt102ZcqI,5902 +test/completion/import_tree/__init__.py,sha256=49MZ69jP853w34OQeY01zLo4Skqiv7hYbFPn_uLlqOQ,80 +test/completion/import_tree/classes.py,sha256=akStUyuAOcpSuvhM5Kz3JV-048XBZgmRKRFhkKo7vf0,131 +test/completion/import_tree/flow_import.py,sha256=zPzgs5xFTGTKPyGb3H3Gw7GMer99JDD_u660yKJ8bJA,39 +test/completion/import_tree/invisible_pkg.py,sha256=hWRh8t7Cans_gHDaB6B7KMz7EY2bwx3Eq12tSkD6ORU,193 +test/completion/import_tree/mod1.py,sha256=JG1ymTjFzfS3wNtZuX4GRhg-BNPcGBj_O_8fTH0Etnk,61 +test/completion/import_tree/mod2.py,sha256=TLDy6i1SnFdtGy2WHgSJUqnDaeHQSuGOkqSKWG4kBmk,27 +test/completion/import_tree/random.py,sha256=iviTEgrCXtZ6WC5ikvJgEVk7gtpfUjrOG9Z3CtmhGUE,74 +test/completion/import_tree/recurse_class1.py,sha256=GN4ZGNnvjZryTcYmCtvDN9qbUYJtUPipU_9lmbZPgG8,80 +test/completion/import_tree/recurse_class2.py,sha256=VImpnbzOgZWTux1o9-MdsGYEUcgW3HFyUF80cifpLNA,59 +test/completion/import_tree/rename1.py,sha256=bWsE77xszb9cL5HV3KlPx8bfhvSp6mlQ-5sqQD1YvfY,41 +test/completion/import_tree/rename2.py,sha256=V6sOSY1dM0oW4KMS9Mj198zhNORsW0tVy-sRJ55RHGA,63 +test/completion/import_tree/pkg/__init__.py,sha256=hW0lIwwtBSeggq26M4-a_HDbbLK0XD1ez1nCCCuwoZc,29 +test/completion/import_tree/pkg/mod1.py,sha256=nAt8anFLeRosBw020LhIsQvAkVrrSi-QKUIgsMaBAGI,37 +test/completion/thirdparty/PyQt4_.py,sha256=zy1SrigbvQ8gsEcIRcZ-1VNTISagP-X5JHaQ8bPC2kQ,320 +test/completion/thirdparty/django_.py,sha256=ZVaLc-Dnn7cJ9F3NTHEr-RyGCZjxv_TA9A6PeIgXlEE,212 +test/completion/thirdparty/jedi_.py,sha256=DWfz5itKd1_9oINrPW-ig7zndAx5ECXTKuyW4zaf4nM,1474 +test/completion/thirdparty/psycopg2_.py,sha256=ENr0FP9o7uzRl_zPAxKyXDkS78NTgBP8ZhAKEMEmXSE,134 +test/completion/thirdparty/pylab_.py,sha256=lSkp9kLX72WxVexRfgWk3Qj1uZoQaxz5yArrGBWK6x8,544 +test/test_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +test/test_api/test_analysis.py,sha256=4Lp7oPequSjD9w83lduNENHQ0wmyuyRxh9gH2RNTEUo,346 +test/test_api/test_api.py,sha256=IhYO5Cm1LROoScU_EKhJjNjs19SVffe29mlqHsx4flQ,6911 +test/test_api/test_api_classes_follow_definition.py,sha256=ri8sAFnY9IvLtLexcB0W1FtVVetrbYKaNAKETiED8vE,2032 +test/test_api/test_call_signatures.py,sha256=BpG5PzoMjrzoeyT5hIQsOCl-V5JZSfh2cAnsGbzv_uE,12549 +test/test_api/test_classes.py,sha256=Mx9dSZQB6H7IDwMSZvDrNoN_DYH3QUI38US7uI1rmQU,11881 +test/test_api/test_completion.py,sha256=EbEIBSSjZgdG0D58I_c0YLL_XCSLxDGNO_Ldl8j6JwA,1146 +test/test_api/test_defined_names.py,sha256=B8RNywr0jOCLI64aTVzD15qlj2oFiLpAHNcWLg0RxaU,2620 +test/test_api/test_full_name.py,sha256=61hrtBZRAH9oWCOeA7OEJ5hviuqw_1wKqVxhK_Q72ms,2884 +test/test_api/test_interpreter.py,sha256=IyJKRtXA95hFckH5iacBqMSFMj0nO1uGgodzD5jdvcY,8494 +test/test_api/test_unicode.py,sha256=mb-kjTbjlN8ws4uGYjv91vTlNUNW1V8FWrb2VhP409w,2147 +test/test_api/test_usages.py,sha256=lwYjYXGLI_R9UWkWwBZwRLfrCuMC-VKoJk228GES_kY,170 +test/test_api/import_tree_for_usages/__init__.py,sha256=EXjwZANe9285HuLjQfBXrK-yK0JhqGYoKV1NTf4030M,45 +test/test_api/import_tree_for_usages/a.py,sha256=aETdshVHQMtJ8QWklAJ3UKP8X8QplxuW8OuCVWfNBwU,40 +test/test_api/import_tree_for_usages/b.py,sha256=B2qqFpBqHuyC1td2B_2qHm42nvYwXkLEGWqL6le7DWE,20 +test/test_api/simple_import/__init__.py,sha256=3yu_GEWkV_JRf99zvNqHs6b4kl3SXYwOJlimv2VYFXs,92 +test/test_api/simple_import/module.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +test/test_api/simple_import/module2.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +test/test_evaluate/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +test/test_evaluate/test_absolute_import.py,sha256=PjI67Xr5fobgNNliJ8ZIaLjeHwDaqrC7qek0g5W0hgA,297 +test/test_evaluate/test_annotations.py,sha256=O0wUE5WKrgTSENZ9tlma-YoRPOGxBTua--fn_RCoEro,1459 +test/test_evaluate/test_buildout_detection.py,sha256=utUI_yg-x9w-K-mZds2IpdXv6v3wCkHQgMpDyp73AwY,2449 +test/test_evaluate/test_compiled.py,sha256=hdsAsQ4Lj2IrOmXYtJxXwaPMpeC-BW6ooStAfoCvIk4,2645 +test/test_evaluate/test_context.py,sha256=2ENeEXha85N8SHPq-rheSLShHkDXXMkAvhRyiPsKcZ4,263 +test/test_evaluate/test_docstring.py,sha256=SbiptZlr0sqM8ml3MhGlpIXdZSqsUI9Wj9JS9FNAxvQ,8889 +test/test_evaluate/test_extension.py,sha256=1rz5lO-5iE5slecvdrpAGeQkxZyoRLsSAuGvifilX3s,1680 +test/test_evaluate/test_helpers.py,sha256=BOKx5aAEAauAf7OrkbHHmbLhIsOrQbB3KVl1qdP2veI,334 +test/test_evaluate/test_implicit_namespace_package.py,sha256=Xn5GW6cBmHuyKbuuCe0j_z2mrtkQDLZAR1XVzaaJueA,2021 +test/test_evaluate/test_imports.py,sha256=Bxza2oPoRDEdIwrvdCHPEqBKgOt9fo6VMqhAp357Lew,8496 +test/test_evaluate/test_literals.py,sha256=l9046hj16OEpCGt6CxnJvANNAfMnBMrubr7tjCBL0xs,1160 +test/test_evaluate/test_mixed.py,sha256=vid8mp53Jo_BC8tI1UsSsReo6aiyYduwtacDqZJSFE4,160 +test/test_evaluate/test_namespace_package.py,sha256=QlefcR2AlDQnqETk_aXAvjyhcI61DwrBywrD4a8ZWa8,2463 +test/test_evaluate/test_precedence.py,sha256=vPCqH6thm1jRrd4fKYNv1nqIQ3mauAf4hu2F5BL2E1s,477 +test/test_evaluate/test_pyc.py,sha256=TZ_ghfj62BHXvKXSbNHn3QyUggM0OE47Sd8YWFMcBrw,1684 +test/test_evaluate/test_representation.py,sha256=1vURx387mz8I7WDzLB9jCQyqHxDhJRue4v4lO9Hx_bc,976 +test/test_evaluate/test_stdlib.py,sha256=4ET-3ggk9R3Y8kzHCilsrD8YoHi46KFYTKdZ5MAr6JM,2230 +test/test_evaluate/test_sys_path.py,sha256=m-3KJBQQ57y6rM1jA9x8Iod0Ba-qKRjh-Z0jbkHcYJg,2067 +test/test_evaluate/absolute_import/local_module.py,sha256=2_gsJH9Wg4ZMSvqrimaELsA6WAgBSm9al0FGgRguVgM,383 +test/test_evaluate/absolute_import/unittest.py,sha256=bTW1ZCQ0ViTk3f9Pz5iIIb0ukAXQ2AJ1D4UAS_XRVKI,437 +test/test_evaluate/buildout_project/buildout.cfg,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +test/test_evaluate/buildout_project/bin/app,sha256=8G2uyRJW_zo6p25r8DzoYNdfsnQpzJr1FJUW3vLERHA,227 +test/test_evaluate/buildout_project/bin/binary_file,sha256=EsWTxb0vCXIYjrMOMr7nrUBgvlgsLGgmyv-JNyyoRwc,5 +test/test_evaluate/buildout_project/bin/empty_file,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +test/test_evaluate/buildout_project/src/proj_name/module_name.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +test/test_evaluate/flask-site-packages/flask_foo.py,sha256=tLkl02dDn-zWuXBiI5yz0s_oYM56AnYL_Kt3XdHWsMo,28 +test/test_evaluate/flask-site-packages/flask/__init__.py,sha256=9rREU_D-MjXn6hKj3nurKmv5AzOVtVeT_0Mtuahhgss,21 +test/test_evaluate/flask-site-packages/flask/ext/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1 +test/test_evaluate/flask-site-packages/flask_baz/__init__.py,sha256=EWYM55mzbPcswv2Ttvd2GEcAuBsqm13piIHo0ec3ZtQ,8 +test/test_evaluate/flask-site-packages/flaskext/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +test/test_evaluate/flask-site-packages/flaskext/bar.py,sha256=UiL7th9-n2OyBUYCGqxdWmVzmoEOu1mPqGj9UDJKtIM,28 +test/test_evaluate/flask-site-packages/flaskext/moo/__init__.py,sha256=EHUfjRJdPtNv_CfWCrh71y6LWCGaL8Cd4BtXvh-3X-I,8 +test/test_evaluate/implicit_namespace_package/ns1/pkg/ns1_file.py,sha256=ic5O9gqRCw1SIkCGvZHLa3phGEcxYtHQEcBLCpv3Tno,18 +test/test_evaluate/implicit_namespace_package/ns2/pkg/ns2_file.py,sha256=Hw9-IVWkpTZPWPVCXy2Md6EVdoDDi7tG9igzaWtp7C0,18 +test/test_evaluate/implicit_nested_namespaces/namespace/pkg/module.py,sha256=9H0YG2bDCiSNSPRvTVWXA1sQ6TIa9UhOHV3s16KJS_U,10 +test/test_evaluate/init_extension_module/__init__.cpython-34m.so,sha256=JV7_ByZ0zpaQg_VugEzBE28Xudgkv1wnEzhSTMVMhUg,16493 +test/test_evaluate/init_extension_module/module.c,sha256=j8_84ScWZ_Q3XZLzxSk4wsRxkVaROxS45AuaN_0HSKE,294 +test/test_evaluate/init_extension_module/setup.py,sha256=-U3oUIAwCdV4FXvZtQeDukam5cMrijTdqDMPhYuCLo0,250 +test/test_evaluate/namespace_package/ns1/pkg/__init__.py,sha256=Dknzk1_-KvJz7vI3n_iUrR6OKHPjFsrYgyPAmxlKPtk,214 +test/test_evaluate/namespace_package/ns1/pkg/ns1_file.py,sha256=ic5O9gqRCw1SIkCGvZHLa3phGEcxYtHQEcBLCpv3Tno,18 +test/test_evaluate/namespace_package/ns1/pkg/ns1_folder/__init__.py,sha256=Wmyh2Y6Tg6CwcumhjL-bAtjJj4AGOT6hAzUAkPZVckM,20 +test/test_evaluate/namespace_package/ns2/pkg/ns2_file.py,sha256=Hw9-IVWkpTZPWPVCXy2Md6EVdoDDi7tG9igzaWtp7C0,18 +test/test_evaluate/namespace_package/ns2/pkg/ns2_folder/__init__.py,sha256=n6WLWeSNngmBdu0sORWUGngBL8QCfh9_2OyI_5jV4F0,20 +test/test_evaluate/namespace_package/ns2/pkg/ns2_folder/nested/__init__.py,sha256=ULi_Ogi046zAybqNEOtCkalNk9hH96OJHGVx_cNKk4M,16 +test/test_evaluate/nested_namespaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +test/test_evaluate/nested_namespaces/namespace/__init__.py,sha256=VIMfZQbMYGhKbjuveuawOViJlI8V0kqFnhAKeRHGND0,94 +test/test_evaluate/nested_namespaces/namespace/pkg/__init__.py,sha256=9H0YG2bDCiSNSPRvTVWXA1sQ6TIa9UhOHV3s16KJS_U,10 +test/test_evaluate/not_in_sys_path/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +test/test_evaluate/not_in_sys_path/not_in_sys_path.py,sha256=XGMk2Dok7Umoa6apR7CuZL1JXIbTnAkOHF8YUqfjWHQ,10 +test/test_evaluate/not_in_sys_path/not_in_sys_path_package/__init__.py,sha256=IJNMA3M0TsDJO8ye4SjT0OF_RVpanvZQiZDKbHFRkrE,18 +test/test_evaluate/not_in_sys_path/not_in_sys_path_package/module.py,sha256=aH28SKSSizrNYf0cZ22DSG2QiiSS-ttbg3qVf1uu9Kg,25 +test/test_evaluate/not_in_sys_path/pkg/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +test/test_evaluate/not_in_sys_path/pkg/module.py,sha256=IiPK-LSuI_6C-q5OGgRBUrsZUQ9-ruM_LIs30EDZmLg,221 +test/test_evaluate/sample_venvs/venv27/lib/python2.7/site-packages/egg_link.egg-link,sha256=woLYJdpfyLtCQRIt5ZecMPOEDXwrOANz-akSxLpmfGA,20 +test/test_evaluate/sample_venvs/venv27/lib/python2.7/site-packages/foo.pth,sha256=fRnMC9UXbnDNXdpThDpVs2C9vVKcPtRchSD-W9V3FS8,19 +test/test_evaluate/sample_venvs/venv27/lib/python2.7/site-packages/import_smth.pth,sha256=51z-kZosf8-sS4zASDOCa4-E3dShdyGOmFpwQyY5t2c,31 +test/test_evaluate/sample_venvs/venv27/lib/python2.7/site-packages/relative.egg-link,sha256=P-bTO1QzKV9IbhQaTWuXHM5LDJjG7CDzKxzpHgo-MsU,25 +test/test_evaluate/sample_venvs/venv27/lib/python2.7/site-packages/smth.py,sha256=zKJEAd1K6gfuQqfKpy6MER0yiNIAYcBLJVsHLqDMJP0,124 +test/test_evaluate/sample_venvs/venv27/lib/python2.7/site-packages/dir-from-foo-pth/__init__.py,sha256=EvQn8oTRl1t9p_CTb5JDXzL2q0r_GPjfiAqlMWFNb64,106 +test/test_evaluate/sample_venvs/venv34/lib/python3.4/site-packages/egg_link.egg-link,sha256=woLYJdpfyLtCQRIt5ZecMPOEDXwrOANz-akSxLpmfGA,20 +test/test_evaluate/sample_venvs/venv34/lib/python3.4/site-packages/foo.pth,sha256=fRnMC9UXbnDNXdpThDpVs2C9vVKcPtRchSD-W9V3FS8,19 +test/test_evaluate/sample_venvs/venv34/lib/python3.4/site-packages/import_smth.pth,sha256=51z-kZosf8-sS4zASDOCa4-E3dShdyGOmFpwQyY5t2c,31 +test/test_evaluate/sample_venvs/venv34/lib/python3.4/site-packages/relative.egg-link,sha256=P-bTO1QzKV9IbhQaTWuXHM5LDJjG7CDzKxzpHgo-MsU,25 +test/test_evaluate/sample_venvs/venv34/lib/python3.4/site-packages/smth.py,sha256=zKJEAd1K6gfuQqfKpy6MER0yiNIAYcBLJVsHLqDMJP0,124 +test/test_evaluate/sample_venvs/venv34/lib/python3.4/site-packages/dir-from-foo-pth/__init__.py,sha256=EvQn8oTRl1t9p_CTb5JDXzL2q0r_GPjfiAqlMWFNb64,106 +test/test_evaluate/zipped_imports/not_pkg.zip,sha256=uASDmvuVMewop1KR-kWKM0awm9nu5W5pnXpI7il45VA,204 +test/test_evaluate/zipped_imports/pkg.zip,sha256=3tGybC1JlI_OYzluICd6bKeYsrDJ-QF42gscoVvmNwQ,504 diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/EGG-INFO/WHEEL b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/EGG-INFO/WHEEL new file mode 100644 index 0000000..8b6dd1b --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/EGG-INFO/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.29.0) +Root-Is-Purelib: true +Tag: py2-none-any +Tag: py3-none-any + diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/EGG-INFO/metadata.json b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/EGG-INFO/metadata.json new file mode 100644 index 0000000..8596d97 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/EGG-INFO/metadata.json @@ -0,0 +1 @@ +{"classifiers": ["Development Status :: 4 - Beta", "Environment :: Plugins", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Text Editors :: Integrated Development Environments (IDE)", "Topic :: Utilities"], "extensions": {"python.details": {"contacts": [{"email": "davidhalter88@gmail.com", "name": "David Halter", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "https://github.com/davidhalter/jedi"}}}, "extras": ["dev"], "generator": "bdist_wheel (0.29.0)", "keywords": ["python", "completion", "refactoring", "vim"], "license": "MIT", "metadata_version": "2.0", "name": "jedi", "platform": "any", "run_requires": [{"extra": "dev", "requires": ["docopt"]}, {"requires": ["parso (==0.1.1)"]}], "summary": "An autocompletion tool for Python that can be used for text editors.", "version": "0.11.1"} \ No newline at end of file diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/EGG-INFO/requires.txt b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/EGG-INFO/requires.txt new file mode 100644 index 0000000..cba7acb --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/EGG-INFO/requires.txt @@ -0,0 +1,4 @@ +parso==0.1.1 + +[dev] +docopt diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/EGG-INFO/top_level.txt b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/EGG-INFO/top_level.txt new file mode 100644 index 0000000..e9c9ca9 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/EGG-INFO/top_level.txt @@ -0,0 +1,2 @@ +jedi +test diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/__init__.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/__init__.py new file mode 100644 index 0000000..1a1080a --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/__init__.py @@ -0,0 +1,43 @@ +""" +Jedi is a static analysis tool for Python that can be used in IDEs/editors. Its +historic focus is autocompletion, but does static analysis for now as well. +Jedi is fast and is very well tested. It understands Python on a deeper level +than all other static analysis frameworks for Python. + +Jedi has support for two different goto functions. It's possible to search for +related names and to list all names in a Python file and infer them. Jedi +understands docstrings and you can use Jedi autocompletion in your REPL as +well. + +Jedi uses a very simple API to connect with IDE's. There's a reference +implementation as a `VIM-Plugin `_, +which uses Jedi's autocompletion. We encourage you to use Jedi in your IDEs. +It's really easy. + +To give you a simple example how you can use the Jedi library, here is an +example for the autocompletion feature: + +>>> import jedi +>>> source = ''' +... import datetime +... datetime.da''' +>>> script = jedi.Script(source, 3, len('datetime.da'), 'example.py') +>>> script + +>>> completions = script.completions() +>>> completions #doctest: +ELLIPSIS +[, , ...] +>>> print(completions[0].complete) +te +>>> print(completions[0].name) +date + +As you see Jedi is pretty simple and allows you to concentrate on writing a +good text editor, while still having very good IDE features for Python. +""" + +__version__ = '0.11.1' + +from jedi.api import Script, Interpreter, set_debug_function, \ + preload_module, names +from jedi import settings diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/__main__.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/__main__.py new file mode 100644 index 0000000..f2ee047 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/__main__.py @@ -0,0 +1,48 @@ +import sys +from os.path import join, dirname, abspath, isdir + + +def _start_linter(): + """ + This is a pre-alpha API. You're not supposed to use it at all, except for + testing. It will very likely change. + """ + import jedi + + if '--debug' in sys.argv: + jedi.set_debug_function() + + for path in sys.argv[2:]: + if path.startswith('--'): + continue + if isdir(path): + import fnmatch + import os + + paths = [] + for root, dirnames, filenames in os.walk(path): + for filename in fnmatch.filter(filenames, '*.py'): + paths.append(os.path.join(root, filename)) + else: + paths = [path] + + try: + for path in paths: + for error in jedi.Script(path=path)._analysis(): + print(error) + except Exception: + if '--pdb' in sys.argv: + import traceback + traceback.print_exc() + import pdb + pdb.post_mortem() + else: + raise + + +if len(sys.argv) == 2 and sys.argv[1] == 'repl': + # don't want to use __main__ only for repl yet, maybe we want to use it for + # something else. So just use the keyword ``repl`` for now. + print(join(dirname(abspath(__file__)), 'api', 'replstartup.py')) +elif len(sys.argv) > 1 and sys.argv[1] == 'linter': + _start_linter() diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/_compatibility.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/_compatibility.py new file mode 100644 index 0000000..52a20fe --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/_compatibility.py @@ -0,0 +1,291 @@ +""" +To ensure compatibility from Python ``2.6`` - ``3.3``, a module has been +created. Clearly there is huge need to use conforming syntax. +""" +import sys +import imp +import os +import re +import pkgutil +import warnings +try: + import importlib +except ImportError: + pass + +# Cannot use sys.version.major and minor names, because in Python 2.6 it's not +# a namedtuple. +is_py3 = sys.version_info[0] >= 3 +is_py33 = is_py3 and sys.version_info[1] >= 3 +is_py34 = is_py3 and sys.version_info[1] >= 4 +is_py35 = is_py3 and sys.version_info[1] >= 5 +is_py26 = not is_py3 and sys.version_info[1] < 7 +py_version = int(str(sys.version_info[0]) + str(sys.version_info[1])) + + +class DummyFile(object): + def __init__(self, loader, string): + self.loader = loader + self.string = string + + def read(self): + return self.loader.get_source(self.string) + + def close(self): + del self.loader + + +def find_module_py34(string, path=None, fullname=None): + implicit_namespace_pkg = False + spec = None + loader = None + + spec = importlib.machinery.PathFinder.find_spec(string, path) + if hasattr(spec, 'origin'): + origin = spec.origin + implicit_namespace_pkg = origin == 'namespace' + + # We try to disambiguate implicit namespace pkgs with non implicit namespace pkgs + if implicit_namespace_pkg: + fullname = string if not path else fullname + implicit_ns_info = ImplicitNSInfo(fullname, spec.submodule_search_locations._path) + return None, implicit_ns_info, False + + # we have found the tail end of the dotted path + if hasattr(spec, 'loader'): + loader = spec.loader + return find_module_py33(string, path, loader) + +def find_module_py33(string, path=None, loader=None, fullname=None): + loader = loader or importlib.machinery.PathFinder.find_module(string, path) + + if loader is None and path is None: # Fallback to find builtins + try: + with warnings.catch_warnings(record=True): + # Mute "DeprecationWarning: Use importlib.util.find_spec() + # instead." While we should replace that in the future, it's + # probably good to wait until we deprecate Python 3.3, since + # it was added in Python 3.4 and find_loader hasn't been + # removed in 3.6. + loader = importlib.find_loader(string) + except ValueError as e: + # See #491. Importlib might raise a ValueError, to avoid this, we + # just raise an ImportError to fix the issue. + raise ImportError("Originally " + repr(e)) + + if loader is None: + raise ImportError("Couldn't find a loader for {0}".format(string)) + + try: + is_package = loader.is_package(string) + if is_package: + if hasattr(loader, 'path'): + module_path = os.path.dirname(loader.path) + else: + # At least zipimporter does not have path attribute + module_path = os.path.dirname(loader.get_filename(string)) + if hasattr(loader, 'archive'): + module_file = DummyFile(loader, string) + else: + module_file = None + else: + module_path = loader.get_filename(string) + module_file = DummyFile(loader, string) + except AttributeError: + # ExtensionLoader has not attribute get_filename, instead it has a + # path attribute that we can use to retrieve the module path + try: + module_path = loader.path + module_file = DummyFile(loader, string) + except AttributeError: + module_path = string + module_file = None + finally: + is_package = False + + if hasattr(loader, 'archive'): + module_path = loader.archive + + return module_file, module_path, is_package + + +def find_module_pre_py33(string, path=None, fullname=None): + try: + module_file, module_path, description = imp.find_module(string, path) + module_type = description[2] + return module_file, module_path, module_type is imp.PKG_DIRECTORY + except ImportError: + pass + + if path is None: + path = sys.path + for item in path: + loader = pkgutil.get_importer(item) + if loader: + try: + loader = loader.find_module(string) + if loader: + is_package = loader.is_package(string) + is_archive = hasattr(loader, 'archive') + try: + module_path = loader.get_filename(string) + except AttributeError: + # fallback for py26 + try: + module_path = loader._get_filename(string) + except AttributeError: + continue + if is_package: + module_path = os.path.dirname(module_path) + if is_archive: + module_path = loader.archive + file = None + if not is_package or is_archive: + file = DummyFile(loader, string) + return (file, module_path, is_package) + except ImportError: + pass + raise ImportError("No module named {0}".format(string)) + + +find_module = find_module_py33 if is_py33 else find_module_pre_py33 +find_module = find_module_py34 if is_py34 else find_module +find_module.__doc__ = """ +Provides information about a module. + +This function isolates the differences in importing libraries introduced with +python 3.3 on; it gets a module name and optionally a path. It will return a +tuple containin an open file for the module (if not builtin), the filename +or the name of the module if it is a builtin one and a boolean indicating +if the module is contained in a package. +""" + + +class ImplicitNSInfo(object): + """Stores information returned from an implicit namespace spec""" + def __init__(self, name, paths): + self.name = name + self.paths = paths + +# unicode function +try: + unicode = unicode +except NameError: + unicode = str + + +# re-raise function +if is_py3: + def reraise(exception, traceback): + raise exception.with_traceback(traceback) +else: + eval(compile(""" +def reraise(exception, traceback): + raise exception, None, traceback +""", 'blub', 'exec')) + +reraise.__doc__ = """ +Re-raise `exception` with a `traceback` object. + +Usage:: + + reraise(Exception, sys.exc_info()[2]) + +""" + +class Python3Method(object): + def __init__(self, func): + self.func = func + + def __get__(self, obj, objtype): + if obj is None: + return lambda *args, **kwargs: self.func(*args, **kwargs) + else: + return lambda *args, **kwargs: self.func(obj, *args, **kwargs) + + +def use_metaclass(meta, *bases): + """ Create a class with a metaclass. """ + if not bases: + bases = (object,) + return meta("HackClass", bases, {}) + + +try: + encoding = sys.stdout.encoding + if encoding is None: + encoding = 'utf-8' +except AttributeError: + encoding = 'ascii' + + +def u(string): + """Cast to unicode DAMMIT! + Written because Python2 repr always implicitly casts to a string, so we + have to cast back to a unicode (and we now that we always deal with valid + unicode, because we check that in the beginning). + """ + if is_py3: + return str(string) + + if not isinstance(string, unicode): + return unicode(str(string), 'UTF-8') + return string + +try: + import builtins # module name in python 3 +except ImportError: + import __builtin__ as builtins + + +import ast + + +def literal_eval(string): + # py3.0, py3.1 and py32 don't support unicode literals. Support those, I + # don't want to write two versions of the tokenizer. + if is_py3 and sys.version_info.minor < 3: + if re.match('[uU][\'"]', string): + string = string[1:] + return ast.literal_eval(string) + + +try: + from itertools import zip_longest +except ImportError: + from itertools import izip_longest as zip_longest # Python 2 + +try: + FileNotFoundError = FileNotFoundError +except NameError: + FileNotFoundError = IOError + + +def no_unicode_pprint(dct): + """ + Python 2/3 dict __repr__ may be different, because of unicode differens + (with or without a `u` prefix). Normally in doctests we could use `pprint` + to sort dicts and check for equality, but here we have to write a separate + function to do that. + """ + import pprint + s = pprint.pformat(dct) + print(re.sub("u'", "'", s)) + + +def utf8_repr(func): + """ + ``__repr__`` methods in Python 2 don't allow unicode objects to be + returned. Therefore cast them to utf-8 bytes in this decorator. + """ + def wrapper(self): + result = func(self) + if isinstance(result, unicode): + return result.encode('utf-8') + else: + return result + + if is_py3: + return func + else: + return wrapper diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/api/__init__.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/api/__init__.py new file mode 100644 index 0000000..871dc84 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/api/__init__.py @@ -0,0 +1,431 @@ +""" +The API basically only provides one class. You can create a :class:`Script` and +use its methods. + +Additionally you can add a debug function with :func:`set_debug_function`. +Alternatively, if you don't need a custom function and are happy with printing +debug messages to stdout, simply call :func:`set_debug_function` without +arguments. + +.. warning:: Please, note that Jedi is **not thread safe**. +""" +import os +import sys + +import parso +from parso.python import tree +from parso import python_bytes_to_unicode, split_lines + +from jedi.parser_utils import get_executable_nodes, get_statement_of_position +from jedi import debug +from jedi import settings +from jedi import cache +from jedi.api import classes +from jedi.api import interpreter +from jedi.api import helpers +from jedi.api.completion import Completion +from jedi.evaluate import Evaluator +from jedi.evaluate import imports +from jedi.evaluate import usages +from jedi.evaluate.project import Project +from jedi.evaluate.arguments import try_iter_content +from jedi.evaluate.helpers import get_module_names, evaluate_call_of_leaf +from jedi.evaluate.sys_path import dotted_path_in_sys_path +from jedi.evaluate.filters import TreeNameDefinition +from jedi.evaluate.syntax_tree import tree_name_to_contexts +from jedi.evaluate.context import ModuleContext +from jedi.evaluate.context.module import ModuleName +from jedi.evaluate.context.iterable import unpack_tuple_to_dict + +# Jedi uses lots and lots of recursion. By setting this a little bit higher, we +# can remove some "maximum recursion depth" errors. +sys.setrecursionlimit(3000) + + +class Script(object): + """ + A Script is the base for completions, goto or whatever you want to do with + |jedi|. + + You can either use the ``source`` parameter or ``path`` to read a file. + Usually you're going to want to use both of them (in an editor). + + The script might be analyzed in a different ``sys.path`` than |jedi|: + + - if `sys_path` parameter is not ``None``, it will be used as ``sys.path`` + for the script; + + - if `sys_path` parameter is ``None`` and ``VIRTUAL_ENV`` environment + variable is defined, ``sys.path`` for the specified environment will be + guessed (see :func:`jedi.evaluate.sys_path.get_venv_path`) and used for + the script; + + - otherwise ``sys.path`` will match that of |jedi|. + + :param source: The source code of the current file, separated by newlines. + :type source: str + :param line: The line to perform actions on (starting with 1). + :type line: int + :param column: The column of the cursor (starting with 0). + :type column: int + :param path: The path of the file in the file system, or ``''`` if + it hasn't been saved yet. + :type path: str or None + :param encoding: The encoding of ``source``, if it is not a + ``unicode`` object (default ``'utf-8'``). + :type encoding: str + :param source_encoding: The encoding of ``source``, if it is not a + ``unicode`` object (default ``'utf-8'``). + :type encoding: str + :param sys_path: ``sys.path`` to use during analysis of the script + :type sys_path: list + + """ + def __init__(self, source=None, line=None, column=None, path=None, + encoding='utf-8', sys_path=None): + self._orig_path = path + # An empty path (also empty string) should always result in no path. + self.path = os.path.abspath(path) if path else None + + if source is None: + # TODO add a better warning than the traceback! + with open(path, 'rb') as f: + source = f.read() + + # TODO do we really want that? + self._source = python_bytes_to_unicode(source, encoding, errors='replace') + self._code_lines = split_lines(self._source) + line = max(len(self._code_lines), 1) if line is None else line + if not (0 < line <= len(self._code_lines)): + raise ValueError('`line` parameter is not in a valid range.') + + line_len = len(self._code_lines[line - 1]) + column = line_len if column is None else column + if not (0 <= column <= line_len): + raise ValueError('`column` parameter is not in a valid range.') + self._pos = line, column + self._path = path + + cache.clear_time_caches() + debug.reset_time() + + # Load the Python grammar of the current interpreter. + self._grammar = parso.load_grammar() + project = Project(sys_path=sys_path) + self._evaluator = Evaluator(self._grammar, project) + project.add_script_path(self.path) + debug.speed('init') + + @cache.memoize_method + def _get_module_node(self): + return self._grammar.parse( + code=self._source, + path=self.path, + cache=False, # No disk cache, because the current script often changes. + diff_cache=True, + cache_path=settings.cache_directory + ) + + @cache.memoize_method + def _get_module(self): + module = ModuleContext( + self._evaluator, + self._get_module_node(), + self.path + ) + if self.path is not None: + name = dotted_path_in_sys_path(self._evaluator.project.sys_path, self.path) + if name is not None: + imports.add_module(self._evaluator, name, module) + return module + + def __repr__(self): + return '<%s: %s>' % (self.__class__.__name__, repr(self._orig_path)) + + def completions(self): + """ + Return :class:`classes.Completion` objects. Those objects contain + information about the completions, more than just names. + + :return: Completion objects, sorted by name and __ comes last. + :rtype: list of :class:`classes.Completion` + """ + debug.speed('completions start') + completion = Completion( + self._evaluator, self._get_module(), self._code_lines, + self._pos, self.call_signatures + ) + completions = completion.completions() + debug.speed('completions end') + return completions + + def goto_definitions(self): + """ + Return the definitions of a the path under the cursor. goto function! + This follows complicated paths and returns the end, not the first + definition. The big difference between :meth:`goto_assignments` and + :meth:`goto_definitions` is that :meth:`goto_assignments` doesn't + follow imports and statements. Multiple objects may be returned, + because Python itself is a dynamic language, which means depending on + an option you can have two different versions of a function. + + :rtype: list of :class:`classes.Definition` + """ + module_node = self._get_module_node() + leaf = module_node.get_name_of_position(self._pos) + if leaf is None: + leaf = module_node.get_leaf_for_position(self._pos) + if leaf is None: + return [] + + context = self._evaluator.create_context(self._get_module(), leaf) + definitions = helpers.evaluate_goto_definition(self._evaluator, context, leaf) + + names = [s.name for s in definitions] + defs = [classes.Definition(self._evaluator, name) for name in names] + # The additional set here allows the definitions to become unique in an + # API sense. In the internals we want to separate more things than in + # the API. + return helpers.sorted_definitions(set(defs)) + + def goto_assignments(self, follow_imports=False): + """ + Return the first definition found, while optionally following imports. + Multiple objects may be returned, because Python itself is a + dynamic language, which means depending on an option you can have two + different versions of a function. + + :rtype: list of :class:`classes.Definition` + """ + def filter_follow_imports(names, check): + for name in names: + if check(name): + for result in filter_follow_imports(name.goto(), check): + yield result + else: + yield name + + tree_name = self._get_module_node().get_name_of_position(self._pos) + if tree_name is None: + return [] + context = self._evaluator.create_context(self._get_module(), tree_name) + names = list(self._evaluator.goto(context, tree_name)) + + if follow_imports: + def check(name): + if isinstance(name, ModuleName): + return False + return name.api_type == 'module' + else: + def check(name): + return isinstance(name, imports.SubModuleName) + + names = filter_follow_imports(names, check) + + defs = [classes.Definition(self._evaluator, d) for d in set(names)] + return helpers.sorted_definitions(defs) + + def usages(self, additional_module_paths=()): + """ + Return :class:`classes.Definition` objects, which contain all + names that point to the definition of the name under the cursor. This + is very useful for refactoring (renaming), or to show all usages of a + variable. + + .. todo:: Implement additional_module_paths + + :rtype: list of :class:`classes.Definition` + """ + tree_name = self._get_module_node().get_name_of_position(self._pos) + if tree_name is None: + # Must be syntax + return [] + + names = usages.usages(self._get_module(), tree_name) + + definitions = [classes.Definition(self._evaluator, n) for n in names] + return helpers.sorted_definitions(definitions) + + def call_signatures(self): + """ + Return the function object of the call you're currently in. + + E.g. if the cursor is here:: + + abs(# <-- cursor is here + + This would return the ``abs`` function. On the other hand:: + + abs()# <-- cursor is here + + This would return an empty list.. + + :rtype: list of :class:`classes.CallSignature` + """ + call_signature_details = \ + helpers.get_call_signature_details(self._get_module_node(), self._pos) + if call_signature_details is None: + return [] + + context = self._evaluator.create_context( + self._get_module(), + call_signature_details.bracket_leaf + ) + definitions = helpers.cache_call_signatures( + self._evaluator, + context, + call_signature_details.bracket_leaf, + self._code_lines, + self._pos + ) + debug.speed('func_call followed') + + return [classes.CallSignature(self._evaluator, d.name, + call_signature_details.bracket_leaf.start_pos, + call_signature_details.call_index, + call_signature_details.keyword_name_str) + for d in definitions if hasattr(d, 'py__call__')] + + def _analysis(self): + self._evaluator.is_analysis = True + module_node = self._get_module_node() + self._evaluator.analysis_modules = [module_node] + try: + for node in get_executable_nodes(module_node): + context = self._get_module().create_context(node) + if node.type in ('funcdef', 'classdef'): + # Resolve the decorators. + tree_name_to_contexts(self._evaluator, context, node.children[1]) + elif isinstance(node, tree.Import): + import_names = set(node.get_defined_names()) + if node.is_nested(): + import_names |= set(path[-1] for path in node.get_paths()) + for n in import_names: + imports.infer_import(context, n) + elif node.type == 'expr_stmt': + types = context.eval_node(node) + for testlist in node.children[:-1:2]: + # Iterate tuples. + unpack_tuple_to_dict(context, types, testlist) + else: + if node.type == 'name': + defs = self._evaluator.goto_definitions(context, node) + else: + defs = evaluate_call_of_leaf(context, node) + try_iter_content(defs) + self._evaluator.reset_recursion_limitations() + + ana = [a for a in self._evaluator.analysis if self.path == a.path] + return sorted(set(ana), key=lambda x: x.line) + finally: + self._evaluator.is_analysis = False + + +class Interpreter(Script): + """ + Jedi API for Python REPLs. + + In addition to completion of simple attribute access, Jedi + supports code completion based on static code analysis. + Jedi can complete attributes of object which is not initialized + yet. + + >>> from os.path import join + >>> namespace = locals() + >>> script = Interpreter('join("").up', [namespace]) + >>> print(script.completions()[0].name) + upper + """ + + def __init__(self, source, namespaces, **kwds): + """ + Parse `source` and mixin interpreted Python objects from `namespaces`. + + :type source: str + :arg source: Code to parse. + :type namespaces: list of dict + :arg namespaces: a list of namespace dictionaries such as the one + returned by :func:`locals`. + + Other optional arguments are same as the ones for :class:`Script`. + If `line` and `column` are None, they are assumed be at the end of + `source`. + """ + try: + namespaces = [dict(n) for n in namespaces] + except Exception: + raise TypeError("namespaces must be a non-empty list of dicts.") + + super(Interpreter, self).__init__(source, **kwds) + self.namespaces = namespaces + + def _get_module(self): + parser_module = super(Interpreter, self)._get_module_node() + return interpreter.MixedModuleContext( + self._evaluator, + parser_module, + self.namespaces, + path=self.path + ) + + +def names(source=None, path=None, encoding='utf-8', all_scopes=False, + definitions=True, references=False): + """ + Returns a list of `Definition` objects, containing name parts. + This means you can call ``Definition.goto_assignments()`` and get the + reference of a name. + The parameters are the same as in :py:class:`Script`, except or the + following ones: + + :param all_scopes: If True lists the names of all scopes instead of only + the module namespace. + :param definitions: If True lists the names that have been defined by a + class, function or a statement (``a = b`` returns ``a``). + :param references: If True lists all the names that are not listed by + ``definitions=True``. E.g. ``a = b`` returns ``b``. + """ + def def_ref_filter(_def): + is_def = _def._name.tree_name.is_definition() + return definitions and is_def or references and not is_def + + # Set line/column to a random position, because they don't matter. + script = Script(source, line=1, column=0, path=path, encoding=encoding) + module_context = script._get_module() + defs = [ + classes.Definition( + script._evaluator, + TreeNameDefinition( + module_context.create_context(name if name.parent.type == 'file_input' else name.parent), + name + ) + ) for name in get_module_names(script._get_module_node(), all_scopes) + ] + return sorted(filter(def_ref_filter, defs), key=lambda x: (x.line, x.column)) + + +def preload_module(*modules): + """ + Preloading modules tells Jedi to load a module now, instead of lazy parsing + of modules. Usful for IDEs, to control which modules to load on startup. + + :param modules: different module names, list of string. + """ + for m in modules: + s = "import %s as x; x." % m + Script(s, 1, len(s), None).completions() + + +def set_debug_function(func_cb=debug.print_to_stdout, warnings=True, + notices=True, speed=True): + """ + Define a callback debug function to get all the debug messages. + + If you don't specify any arguments, debug messages will be printed to stdout. + + :param func_cb: The callback function for debug messages, with n params. + """ + debug.debug_function = func_cb + debug.enable_warning = warnings + debug.enable_notice = notices + debug.enable_speed = speed diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/api/classes.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/api/classes.py new file mode 100644 index 0000000..1937cc6 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/api/classes.py @@ -0,0 +1,678 @@ +""" +The :mod:`jedi.api.classes` module contains the return classes of the API. +These classes are the much bigger part of the whole API, because they contain +the interesting information about completion and goto operations. +""" +import re + +from parso.cache import parser_cache +from parso.python.tree import search_ancestor + +from jedi._compatibility import u +from jedi import settings +from jedi.evaluate.utils import ignored, unite +from jedi.cache import memoize_method +from jedi.evaluate import imports +from jedi.evaluate import compiled +from jedi.evaluate.filters import ParamName +from jedi.evaluate.imports import ImportName +from jedi.evaluate.context import instance +from jedi.evaluate.context import ClassContext, FunctionContext, FunctionExecutionContext +from jedi.api.keywords import KeywordName + + +def _sort_names_by_start_pos(names): + return sorted(names, key=lambda s: s.start_pos or (0, 0)) + + +def defined_names(evaluator, context): + """ + List sub-definitions (e.g., methods in class). + + :type scope: Scope + :rtype: list of Definition + """ + filter = next(context.get_filters(search_global=True)) + names = [name for name in filter.values()] + return [Definition(evaluator, n) for n in _sort_names_by_start_pos(names)] + + +class BaseDefinition(object): + _mapping = { + 'posixpath': 'os.path', + 'riscospath': 'os.path', + 'ntpath': 'os.path', + 'os2emxpath': 'os.path', + 'macpath': 'os.path', + 'genericpath': 'os.path', + 'posix': 'os', + '_io': 'io', + '_functools': 'functools', + '_sqlite3': 'sqlite3', + '__builtin__': '', + 'builtins': '', + } + + _tuple_mapping = dict((tuple(k.split('.')), v) for (k, v) in { + 'argparse._ActionsContainer': 'argparse.ArgumentParser', + }.items()) + + def __init__(self, evaluator, name): + self._evaluator = evaluator + self._name = name + """ + An instance of :class:`parso.reprsentation.Name` subclass. + """ + self.is_keyword = isinstance(self._name, KeywordName) + + # generate a path to the definition + self._module = name.get_root_context() + if self.in_builtin_module(): + self.module_path = None + else: + self.module_path = self._module.py__file__() + """Shows the file path of a module. e.g. ``/usr/lib/python2.7/os.py``""" + + @property + def name(self): + """ + Name of variable/function/class/module. + + For example, for ``x = None`` it returns ``'x'``. + + :rtype: str or None + """ + return self._name.string_name + + @property + def type(self): + """ + The type of the definition. + + Here is an example of the value of this attribute. Let's consider + the following source. As what is in ``variable`` is unambiguous + to Jedi, :meth:`jedi.Script.goto_definitions` should return a list of + definition for ``sys``, ``f``, ``C`` and ``x``. + + >>> from jedi import Script + >>> source = ''' + ... import keyword + ... + ... class C: + ... pass + ... + ... class D: + ... pass + ... + ... x = D() + ... + ... def f(): + ... pass + ... + ... for variable in [keyword, f, C, x]: + ... variable''' + + >>> script = Script(source) + >>> defs = script.goto_definitions() + + Before showing what is in ``defs``, let's sort it by :attr:`line` + so that it is easy to relate the result to the source code. + + >>> defs = sorted(defs, key=lambda d: d.line) + >>> defs # doctest: +NORMALIZE_WHITESPACE + [, , + , ] + + Finally, here is what you can get from :attr:`type`: + + >>> defs[0].type + 'module' + >>> defs[1].type + 'class' + >>> defs[2].type + 'instance' + >>> defs[3].type + 'function' + + """ + tree_name = self._name.tree_name + resolve = False + if tree_name is not None: + # TODO move this to their respective names. + definition = tree_name.get_definition() + if definition is not None and definition.type == 'import_from' and \ + tree_name.is_definition(): + resolve = True + + if isinstance(self._name, imports.SubModuleName) or resolve: + for context in self._name.infer(): + return context.api_type + return self._name.api_type + + def _path(self): + """The path to a module/class/function definition.""" + def to_reverse(): + name = self._name + if name.api_type == 'module': + try: + name = list(name.infer())[0].name + except IndexError: + pass + + if name.api_type == 'module': + module_contexts = name.infer() + if module_contexts: + module_context, = module_contexts + for n in reversed(module_context.py__name__().split('.')): + yield n + else: + # We don't really know anything about the path here. This + # module is just an import that would lead in an + # ImportError. So simply return the name. + yield name.string_name + return + else: + yield name.string_name + + parent_context = name.parent_context + while parent_context is not None: + try: + method = parent_context.py__name__ + except AttributeError: + try: + yield parent_context.name.string_name + except AttributeError: + pass + else: + for name in reversed(method().split('.')): + yield name + parent_context = parent_context.parent_context + return reversed(list(to_reverse())) + + @property + def module_name(self): + """ + The module name. + + >>> from jedi import Script + >>> source = 'import json' + >>> script = Script(source, path='example.py') + >>> d = script.goto_definitions()[0] + >>> print(d.module_name) # doctest: +ELLIPSIS + json + """ + return self._module.name.string_name + + def in_builtin_module(self): + """Whether this is a builtin module.""" + return isinstance(self._module, compiled.CompiledObject) + + @property + def line(self): + """The line where the definition occurs (starting with 1).""" + start_pos = self._name.start_pos + if start_pos is None: + return None + return start_pos[0] + + @property + def column(self): + """The column where the definition occurs (starting with 0).""" + start_pos = self._name.start_pos + if start_pos is None: + return None + return start_pos[1] + + def docstring(self, raw=False, fast=True): + r""" + Return a document string for this completion object. + + Example: + + >>> from jedi import Script + >>> source = '''\ + ... def f(a, b=1): + ... "Document for function f." + ... ''' + >>> script = Script(source, 1, len('def f'), 'example.py') + >>> doc = script.goto_definitions()[0].docstring() + >>> print(doc) + f(a, b=1) + + Document for function f. + + Notice that useful extra information is added to the actual + docstring. For function, it is call signature. If you need + actual docstring, use ``raw=True`` instead. + + >>> print(script.goto_definitions()[0].docstring(raw=True)) + Document for function f. + + :param fast: Don't follow imports that are only one level deep like + ``import foo``, but follow ``from foo import bar``. This makes + sense for speed reasons. Completing `import a` is slow if you use + the ``foo.docstring(fast=False)`` on every object, because it + parses all libraries starting with ``a``. + """ + return _Help(self._name).docstring(fast=fast, raw=raw) + + @property + def description(self): + """A textual description of the object.""" + return u(self._name.string_name) + + @property + def full_name(self): + """ + Dot-separated path of this object. + + It is in the form of ``[.[...]][.]``. + It is useful when you want to look up Python manual of the + object at hand. + + Example: + + >>> from jedi import Script + >>> source = ''' + ... import os + ... os.path.join''' + >>> script = Script(source, 3, len('os.path.join'), 'example.py') + >>> print(script.goto_definitions()[0].full_name) + os.path.join + + Notice that it returns ``'os.path.join'`` instead of (for example) + ``'posixpath.join'``. This is not correct, since the modules name would + be `````. However most users find the latter + more practical. + """ + path = list(self._path()) + # TODO add further checks, the mapping should only occur on stdlib. + if not path: + return None # for keywords the path is empty + + with ignored(KeyError): + path[0] = self._mapping[path[0]] + for key, repl in self._tuple_mapping.items(): + if tuple(path[:len(key)]) == key: + path = [repl] + path[len(key):] + + return '.'.join(path if path[0] else path[1:]) + + def goto_assignments(self): + if self._name.tree_name is None: + return self + + names = self._evaluator.goto(self._name.parent_context, self._name.tree_name) + return [Definition(self._evaluator, n) for n in names] + + def _goto_definitions(self): + # TODO make this function public. + return [Definition(self._evaluator, d.name) for d in self._name.infer()] + + @property + @memoize_method + def params(self): + """ + Raises an ``AttributeError``if the definition is not callable. + Otherwise returns a list of `Definition` that represents the params. + """ + def get_param_names(context): + param_names = [] + if context.api_type == 'function': + param_names = list(context.get_param_names()) + if isinstance(context, instance.BoundMethod): + param_names = param_names[1:] + elif isinstance(context, (instance.AbstractInstanceContext, ClassContext)): + if isinstance(context, ClassContext): + search = '__init__' + else: + search = '__call__' + names = context.get_function_slot_names(search) + if not names: + return [] + + # Just take the first one here, not optimal, but currently + # there's no better solution. + inferred = names[0].infer() + param_names = get_param_names(next(iter(inferred))) + if isinstance(context, ClassContext): + param_names = param_names[1:] + return param_names + elif isinstance(context, compiled.CompiledObject): + return list(context.get_param_names()) + return param_names + + followed = list(self._name.infer()) + if not followed or not hasattr(followed[0], 'py__call__'): + raise AttributeError() + context = followed[0] # only check the first one. + + return [Definition(self._evaluator, n) for n in get_param_names(context)] + + def parent(self): + context = self._name.parent_context + if context is None: + return None + + if isinstance(context, FunctionExecutionContext): + # TODO the function context should be a part of the function + # execution context. + context = FunctionContext( + self._evaluator, context.parent_context, context.tree_node) + return Definition(self._evaluator, context.name) + + def __repr__(self): + return "<%s %s>" % (type(self).__name__, self.description) + + def get_line_code(self, before=0, after=0): + """ + Returns the line of code where this object was defined. + + :param before: Add n lines before the current line to the output. + :param after: Add n lines after the current line to the output. + + :return str: Returns the line(s) of code or an empty string if it's a + builtin. + """ + if self.in_builtin_module(): + return '' + + path = self._name.get_root_context().py__file__() + lines = parser_cache[self._evaluator.grammar._hashed][path].lines + + index = self._name.start_pos[0] - 1 + start_index = max(index - before, 0) + return ''.join(lines[start_index:index + after + 1]) + + +class Completion(BaseDefinition): + """ + `Completion` objects are returned from :meth:`api.Script.completions`. They + provide additional information about a completion. + """ + def __init__(self, evaluator, name, stack, like_name_length): + super(Completion, self).__init__(evaluator, name) + + self._like_name_length = like_name_length + self._stack = stack + + # Completion objects with the same Completion name (which means + # duplicate items in the completion) + self._same_name_completions = [] + + def _complete(self, like_name): + append = '' + if settings.add_bracket_after_function \ + and self.type == 'Function': + append = '(' + + if isinstance(self._name, ParamName) and self._stack is not None: + node_names = list(self._stack.get_node_names(self._evaluator.grammar._pgen_grammar)) + if 'trailer' in node_names and 'argument' not in node_names: + append += '=' + + name = self._name.string_name + if like_name: + name = name[self._like_name_length:] + return name + append + + @property + def complete(self): + """ + Return the rest of the word, e.g. completing ``isinstance``:: + + isinstan# <-- Cursor is here + + would return the string 'ce'. It also adds additional stuff, depending + on your `settings.py`. + + Assuming the following function definition:: + + def foo(param=0): + pass + + completing ``foo(par`` would give a ``Completion`` which `complete` + would be `am=` + + + """ + return self._complete(True) + + @property + def name_with_symbols(self): + """ + Similar to :attr:`name`, but like :attr:`name` returns also the + symbols, for example assuming the following function definition:: + + def foo(param=0): + pass + + completing ``foo(`` would give a ``Completion`` which + ``name_with_symbols`` would be "param=". + + """ + return self._complete(False) + + def docstring(self, raw=False, fast=True): + if self._like_name_length >= 3: + # In this case we can just resolve the like name, because we + # wouldn't load like > 100 Python modules anymore. + fast = False + return super(Completion, self).docstring(raw=raw, fast=fast) + + @property + def description(self): + """Provide a description of the completion object.""" + # TODO improve the class structure. + return Definition.description.__get__(self) + + def __repr__(self): + return '<%s: %s>' % (type(self).__name__, self._name.string_name) + + @memoize_method + def follow_definition(self): + """ + Return the original definitions. I strongly recommend not using it for + your completions, because it might slow down |jedi|. If you want to + read only a few objects (<=20), it might be useful, especially to get + the original docstrings. The basic problem of this function is that it + follows all results. This means with 1000 completions (e.g. numpy), + it's just PITA-slow. + """ + defs = self._name.infer() + return [Definition(self._evaluator, d.name) for d in defs] + + +class Definition(BaseDefinition): + """ + *Definition* objects are returned from :meth:`api.Script.goto_assignments` + or :meth:`api.Script.goto_definitions`. + """ + def __init__(self, evaluator, definition): + super(Definition, self).__init__(evaluator, definition) + + @property + def description(self): + """ + A description of the :class:`.Definition` object, which is heavily used + in testing. e.g. for ``isinstance`` it returns ``def isinstance``. + + Example: + + >>> from jedi import Script + >>> source = ''' + ... def f(): + ... pass + ... + ... class C: + ... pass + ... + ... variable = f if random.choice([0,1]) else C''' + >>> script = Script(source, column=3) # line is maximum by default + >>> defs = script.goto_definitions() + >>> defs = sorted(defs, key=lambda d: d.line) + >>> defs + [, ] + >>> str(defs[0].description) # strip literals in python2 + 'def f' + >>> str(defs[1].description) + 'class C' + + """ + typ = self.type + tree_name = self._name.tree_name + if typ in ('function', 'class', 'module', 'instance') or tree_name is None: + if typ == 'function': + # For the description we want a short and a pythonic way. + typ = 'def' + return typ + ' ' + u(self._name.string_name) + elif typ == 'param': + code = search_ancestor(tree_name, 'param').get_code( + include_prefix=False, + include_comma=False + ) + return typ + ' ' + code + + + definition = tree_name.get_definition() or tree_name + # Remove the prefix, because that's not what we want for get_code + # here. + txt = definition.get_code(include_prefix=False) + # Delete comments: + txt = re.sub('#[^\n]+\n', ' ', txt) + # Delete multi spaces/newlines + txt = re.sub('\s+', ' ', txt).strip() + return txt + + @property + def desc_with_module(self): + """ + In addition to the definition, also return the module. + + .. warning:: Don't use this function yet, its behaviour may change. If + you really need it, talk to me. + + .. todo:: Add full path. This function is should return a + `module.class.function` path. + """ + position = '' if self.in_builtin_module else '@%s' % (self.line) + return "%s:%s%s" % (self.module_name, self.description, position) + + @memoize_method + def defined_names(self): + """ + List sub-definitions (e.g., methods in class). + + :rtype: list of Definition + """ + defs = self._name.infer() + return sorted( + unite(defined_names(self._evaluator, d) for d in defs), + key=lambda s: s._name.start_pos or (0, 0) + ) + + def is_definition(self): + """ + Returns True, if defined as a name in a statement, function or class. + Returns False, if it's a reference to such a definition. + """ + if self._name.tree_name is None: + return True + else: + return self._name.tree_name.is_definition() + + def __eq__(self, other): + return self._name.start_pos == other._name.start_pos \ + and self.module_path == other.module_path \ + and self.name == other.name \ + and self._evaluator == other._evaluator + + def __ne__(self, other): + return not self.__eq__(other) + + def __hash__(self): + return hash((self._name.start_pos, self.module_path, self.name, self._evaluator)) + + +class CallSignature(Definition): + """ + `CallSignature` objects is the return value of `Script.function_definition`. + It knows what functions you are currently in. e.g. `isinstance(` would + return the `isinstance` function. without `(` it would return nothing. + """ + def __init__(self, evaluator, executable_name, bracket_start_pos, index, key_name_str): + super(CallSignature, self).__init__(evaluator, executable_name) + self._index = index + self._key_name_str = key_name_str + self._bracket_start_pos = bracket_start_pos + + @property + def index(self): + """ + The Param index of the current call. + Returns None if the index cannot be found in the curent call. + """ + if self._key_name_str is not None: + for i, param in enumerate(self.params): + if self._key_name_str == param.name: + return i + if self.params: + param_name = self.params[-1]._name + if param_name.tree_name is not None: + if param_name.tree_name.get_definition().star_count == 2: + return i + return None + + if self._index >= len(self.params): + for i, param in enumerate(self.params): + tree_name = param._name.tree_name + if tree_name is not None: + # *args case + if tree_name.get_definition().star_count == 1: + return i + return None + return self._index + + @property + def bracket_start(self): + """ + The indent of the bracket that is responsible for the last function + call. + """ + return self._bracket_start_pos + + def __repr__(self): + return '<%s: %s index %s>' % \ + (type(self).__name__, self._name.string_name, self.index) + + +class _Help(object): + """ + Temporary implementation, will be used as `Script.help() or something in + the future. + """ + def __init__(self, definition): + self._name = definition + + @memoize_method + def _get_contexts(self, fast): + if isinstance(self._name, ImportName) and fast: + return {} + + if self._name.api_type == 'statement': + return {} + + return self._name.infer() + + def docstring(self, fast=True, raw=True): + """ + The docstring ``__doc__`` for any object. + + See :attr:`doc` for example. + """ + # TODO: Use all of the followed objects as output. Possibly divinding + # them by a few dashes. + for context in self._get_contexts(fast=fast): + return context.py__doc__(include_call_signature=not raw) + + return '' diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/api/completion.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/api/completion.py new file mode 100644 index 0000000..559a4d3 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/api/completion.py @@ -0,0 +1,291 @@ +from parso.python import token +from parso.python import tree +from parso.tree import search_ancestor, Leaf + +from jedi import debug +from jedi import settings +from jedi.api import classes +from jedi.api import helpers +from jedi.evaluate import imports +from jedi.api import keywords +from jedi.evaluate.helpers import evaluate_call_of_leaf +from jedi.evaluate.filters import get_global_filters +from jedi.parser_utils import get_statement_of_position + + +def get_call_signature_param_names(call_signatures): + # add named params + for call_sig in call_signatures: + for p in call_sig.params: + # Allow protected access, because it's a public API. + tree_name = p._name.tree_name + # Compiled modules typically don't allow keyword arguments. + if tree_name is not None: + # Allow access on _definition here, because it's a + # public API and we don't want to make the internal + # Name object public. + tree_param = tree.search_ancestor(tree_name, 'param') + if tree_param.star_count == 0: # no *args/**kwargs + yield p._name + + +def filter_names(evaluator, completion_names, stack, like_name): + comp_dct = {} + for name in completion_names: + if settings.case_insensitive_completion \ + and name.string_name.lower().startswith(like_name.lower()) \ + or name.string_name.startswith(like_name): + + new = classes.Completion( + evaluator, + name, + stack, + len(like_name) + ) + k = (new.name, new.complete) # key + if k in comp_dct and settings.no_completion_duplicates: + comp_dct[k]._same_name_completions.append(new) + else: + comp_dct[k] = new + yield new + + +def get_user_scope(module_context, position): + """ + Returns the scope in which the user resides. This includes flows. + """ + user_stmt = get_statement_of_position(module_context.tree_node, position) + if user_stmt is None: + def scan(scope): + for s in scope.children: + if s.start_pos <= position <= s.end_pos: + if isinstance(s, (tree.Scope, tree.Flow)): + return scan(s) or s + elif s.type in ('suite', 'decorated'): + return scan(s) + return None + + scanned_node = scan(module_context.tree_node) + if scanned_node: + return module_context.create_context(scanned_node, node_is_context=True) + return module_context + else: + return module_context.create_context(user_stmt) + + +def get_flow_scope_node(module_node, position): + node = module_node.get_leaf_for_position(position, include_prefixes=True) + while not isinstance(node, (tree.Scope, tree.Flow)): + node = node.parent + + return node + + +class Completion: + def __init__(self, evaluator, module, code_lines, position, call_signatures_method): + self._evaluator = evaluator + self._module_context = module + self._module_node = module.tree_node + self._code_lines = code_lines + + # The first step of completions is to get the name + self._like_name = helpers.get_on_completion_name(self._module_node, code_lines, position) + # The actual cursor position is not what we need to calculate + # everything. We want the start of the name we're on. + self._position = position[0], position[1] - len(self._like_name) + self._call_signatures_method = call_signatures_method + + def completions(self): + completion_names = self._get_context_completions() + + completions = filter_names(self._evaluator, completion_names, + self.stack, self._like_name) + + return sorted(completions, key=lambda x: (x.name.startswith('__'), + x.name.startswith('_'), + x.name.lower())) + + def _get_context_completions(self): + """ + Analyzes the context that a completion is made in and decides what to + return. + + Technically this works by generating a parser stack and analysing the + current stack for possible grammar nodes. + + Possible enhancements: + - global/nonlocal search global + - yield from / raise from <- could be only exceptions/generators + - In args: */**: no completion + - In params (also lambda): no completion before = + """ + + grammar = self._evaluator.grammar + + try: + self.stack = helpers.get_stack_at_position( + grammar, self._code_lines, self._module_node, self._position + ) + except helpers.OnErrorLeaf as e: + self.stack = None + if e.error_leaf.value == '.': + # After ErrorLeaf's that are dots, we will not do any + # completions since this probably just confuses the user. + return [] + # If we don't have a context, just use global completion. + + return self._global_completions() + + allowed_keywords, allowed_tokens = \ + helpers.get_possible_completion_types(grammar._pgen_grammar, self.stack) + + if 'if' in allowed_keywords: + leaf = self._module_node.get_leaf_for_position(self._position, include_prefixes=True) + previous_leaf = leaf.get_previous_leaf() + + indent = self._position[1] + if not (leaf.start_pos <= self._position <= leaf.end_pos): + indent = leaf.start_pos[1] + + if previous_leaf is not None: + stmt = previous_leaf + while True: + stmt = search_ancestor( + stmt, 'if_stmt', 'for_stmt', 'while_stmt', 'try_stmt', + 'error_node', + ) + if stmt is None: + break + + type_ = stmt.type + if type_ == 'error_node': + first = stmt.children[0] + if isinstance(first, Leaf): + type_ = first.value + '_stmt' + # Compare indents + if stmt.start_pos[1] == indent: + if type_ == 'if_stmt': + allowed_keywords += ['elif', 'else'] + elif type_ == 'try_stmt': + allowed_keywords += ['except', 'finally', 'else'] + elif type_ == 'for_stmt': + allowed_keywords.append('else') + + completion_names = list(self._get_keyword_completion_names(allowed_keywords)) + + if token.NAME in allowed_tokens or token.INDENT in allowed_tokens: + # This means that we actually have to do type inference. + + symbol_names = list(self.stack.get_node_names(grammar._pgen_grammar)) + + nodes = list(self.stack.get_nodes()) + + if nodes and nodes[-1] in ('as', 'def', 'class'): + # No completions for ``with x as foo`` and ``import x as foo``. + # Also true for defining names as a class or function. + return list(self._get_class_context_completions(is_function=True)) + elif "import_stmt" in symbol_names: + level, names = self._parse_dotted_names(nodes, "import_from" in symbol_names) + + only_modules = not ("import_from" in symbol_names and 'import' in nodes) + completion_names += self._get_importer_names( + names, + level, + only_modules=only_modules, + ) + elif symbol_names[-1] in ('trailer', 'dotted_name') and nodes[-1] == '.': + dot = self._module_node.get_leaf_for_position(self._position) + completion_names += self._trailer_completions(dot.get_previous_leaf()) + else: + completion_names += self._global_completions() + completion_names += self._get_class_context_completions(is_function=False) + + if 'trailer' in symbol_names: + call_signatures = self._call_signatures_method() + completion_names += get_call_signature_param_names(call_signatures) + + return completion_names + + def _get_keyword_completion_names(self, keywords_): + for k in keywords_: + yield keywords.keyword(self._evaluator, k).name + + def _global_completions(self): + context = get_user_scope(self._module_context, self._position) + debug.dbg('global completion scope: %s', context) + flow_scope_node = get_flow_scope_node(self._module_node, self._position) + filters = get_global_filters( + self._evaluator, + context, + self._position, + origin_scope=flow_scope_node + ) + completion_names = [] + for filter in filters: + completion_names += filter.values() + return completion_names + + def _trailer_completions(self, previous_leaf): + user_context = get_user_scope(self._module_context, self._position) + evaluation_context = self._evaluator.create_context( + self._module_context, previous_leaf + ) + contexts = evaluate_call_of_leaf(evaluation_context, previous_leaf) + completion_names = [] + debug.dbg('trailer completion contexts: %s', contexts) + for context in contexts: + for filter in context.get_filters( + search_global=False, origin_scope=user_context.tree_node): + completion_names += filter.values() + return completion_names + + def _parse_dotted_names(self, nodes, is_import_from): + level = 0 + names = [] + for node in nodes[1:]: + if node in ('.', '...'): + if not names: + level += len(node.value) + elif node.type == 'dotted_name': + names += node.children[::2] + elif node.type == 'name': + names.append(node) + elif node == ',': + if not is_import_from: + names = [] + else: + # Here if the keyword `import` comes along it stops checking + # for names. + break + return level, names + + def _get_importer_names(self, names, level=0, only_modules=True): + names = [n.value for n in names] + i = imports.Importer(self._evaluator, names, self._module_context, level) + return i.completion_names(self._evaluator, only_modules=only_modules) + + def _get_class_context_completions(self, is_function=True): + """ + Autocomplete inherited methods when overriding in child class. + """ + leaf = self._module_node.get_leaf_for_position(self._position, include_prefixes=True) + cls = tree.search_ancestor(leaf, 'classdef') + if isinstance(cls, (tree.Class, tree.Function)): + # Complete the methods that are defined in the super classes. + random_context = self._module_context.create_context( + cls, + node_is_context=True + ) + else: + return + + if cls.start_pos[1] >= leaf.start_pos[1]: + return + + filters = random_context.get_filters(search_global=False, is_instance=True) + # The first dict is the dictionary of class itself. + next(filters) + for filter in filters: + for name in filter.values(): + if (name.api_type == 'function') == is_function: + yield name diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/api/helpers.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/api/helpers.py new file mode 100644 index 0000000..2c4d8e0 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/api/helpers.py @@ -0,0 +1,316 @@ +""" +Helpers for the API +""" +import re +from collections import namedtuple +from textwrap import dedent + +from parso.python.parser import Parser +from parso.python import tree +from parso import split_lines + +from jedi._compatibility import u +from jedi.evaluate.syntax_tree import eval_atom +from jedi.evaluate.helpers import evaluate_call_of_leaf +from jedi.cache import time_cache + + +CompletionParts = namedtuple('CompletionParts', ['path', 'has_dot', 'name']) + + +def sorted_definitions(defs): + # Note: `or ''` below is required because `module_path` could be + return sorted(defs, key=lambda x: (x.module_path or '', x.line or 0, x.column or 0)) + + +def get_on_completion_name(module_node, lines, position): + leaf = module_node.get_leaf_for_position(position) + if leaf is None or leaf.type in ('string', 'error_leaf'): + # Completions inside strings are a bit special, we need to parse the + # string. The same is true for comments and error_leafs. + line = lines[position[0] - 1] + # The first step of completions is to get the name + return re.search(r'(?!\d)\w+$|$', line[:position[1]]).group(0) + elif leaf.type not in ('name', 'keyword'): + return '' + + return leaf.value[:position[1] - leaf.start_pos[1]] + + +def _get_code(code_lines, start_pos, end_pos): + # Get relevant lines. + lines = code_lines[start_pos[0] - 1:end_pos[0]] + # Remove the parts at the end of the line. + lines[-1] = lines[-1][:end_pos[1]] + # Remove first line indentation. + lines[0] = lines[0][start_pos[1]:] + return '\n'.join(lines) + + +class OnErrorLeaf(Exception): + @property + def error_leaf(self): + return self.args[0] + + +def _is_on_comment(leaf, position): + comment_lines = split_lines(leaf.prefix) + difference = leaf.start_pos[0] - position[0] + prefix_start_pos = leaf.get_start_pos_of_prefix() + if difference == 0: + indent = leaf.start_pos[1] + elif position[0] == prefix_start_pos[0]: + indent = prefix_start_pos[1] + else: + indent = 0 + line = comment_lines[-difference - 1][:position[1] - indent] + return '#' in line + + +def _get_code_for_stack(code_lines, module_node, position): + leaf = module_node.get_leaf_for_position(position, include_prefixes=True) + # It might happen that we're on whitespace or on a comment. This means + # that we would not get the right leaf. + if leaf.start_pos >= position: + if _is_on_comment(leaf, position): + return u('') + + # If we're not on a comment simply get the previous leaf and proceed. + leaf = leaf.get_previous_leaf() + if leaf is None: + return u('') # At the beginning of the file. + + is_after_newline = leaf.type == 'newline' + while leaf.type == 'newline': + leaf = leaf.get_previous_leaf() + if leaf is None: + return u('') + + if leaf.type == 'error_leaf' or leaf.type == 'string': + if leaf.start_pos[0] < position[0]: + # On a different line, we just begin anew. + return u('') + + # Error leafs cannot be parsed, completion in strings is also + # impossible. + raise OnErrorLeaf(leaf) + else: + user_stmt = leaf + while True: + if user_stmt.parent.type in ('file_input', 'suite', 'simple_stmt'): + break + user_stmt = user_stmt.parent + + if is_after_newline: + if user_stmt.start_pos[1] > position[1]: + # This means that it's actually a dedent and that means that we + # start without context (part of a suite). + return u('') + + # This is basically getting the relevant lines. + return _get_code(code_lines, user_stmt.get_start_pos_of_prefix(), position) + + +def get_stack_at_position(grammar, code_lines, module_node, pos): + """ + Returns the possible node names (e.g. import_from, xor_test or yield_stmt). + """ + class EndMarkerReached(Exception): + pass + + def tokenize_without_endmarker(code): + # TODO This is for now not an official parso API that exists purely + # for Jedi. + tokens = grammar._tokenize(code) + for token_ in tokens: + if token_.string == safeword: + raise EndMarkerReached() + else: + yield token_ + + # The code might be indedented, just remove it. + code = dedent(_get_code_for_stack(code_lines, module_node, pos)) + # We use a word to tell Jedi when we have reached the start of the + # completion. + # Use Z as a prefix because it's not part of a number suffix. + safeword = 'ZZZ_USER_WANTS_TO_COMPLETE_HERE_WITH_JEDI' + code = code + safeword + + p = Parser(grammar._pgen_grammar, error_recovery=True) + try: + p.parse(tokens=tokenize_without_endmarker(code)) + except EndMarkerReached: + return Stack(p.pgen_parser.stack) + raise SystemError("This really shouldn't happen. There's a bug in Jedi.") + + +class Stack(list): + def get_node_names(self, grammar): + for dfa, state, (node_number, nodes) in self: + yield grammar.number2symbol[node_number] + + def get_nodes(self): + for dfa, state, (node_number, nodes) in self: + for node in nodes: + yield node + + +def get_possible_completion_types(pgen_grammar, stack): + def add_results(label_index): + try: + grammar_labels.append(inversed_tokens[label_index]) + except KeyError: + try: + keywords.append(inversed_keywords[label_index]) + except KeyError: + t, v = pgen_grammar.labels[label_index] + assert t >= 256 + # See if it's a symbol and if we're in its first set + inversed_keywords + itsdfa = pgen_grammar.dfas[t] + itsstates, itsfirst = itsdfa + for first_label_index in itsfirst.keys(): + add_results(first_label_index) + + inversed_keywords = dict((v, k) for k, v in pgen_grammar.keywords.items()) + inversed_tokens = dict((v, k) for k, v in pgen_grammar.tokens.items()) + + keywords = [] + grammar_labels = [] + + def scan_stack(index): + dfa, state, node = stack[index] + states, first = dfa + arcs = states[state] + + for label_index, new_state in arcs: + if label_index == 0: + # An accepting state, check the stack below. + scan_stack(index - 1) + else: + add_results(label_index) + + scan_stack(-1) + + return keywords, grammar_labels + + +def evaluate_goto_definition(evaluator, context, leaf): + if leaf.type == 'name': + # In case of a name we can just use goto_definition which does all the + # magic itself. + return evaluator.goto_definitions(context, leaf) + + parent = leaf.parent + if parent.type == 'atom': + return context.eval_node(leaf.parent) + elif parent.type == 'trailer': + return evaluate_call_of_leaf(context, leaf) + elif isinstance(leaf, tree.Literal): + return eval_atom(context, leaf) + return [] + + +CallSignatureDetails = namedtuple( + 'CallSignatureDetails', + ['bracket_leaf', 'call_index', 'keyword_name_str'] +) + + +def _get_index_and_key(nodes, position): + """ + Returns the amount of commas and the keyword argument string. + """ + nodes_before = [c for c in nodes if c.start_pos < position] + if nodes_before[-1].type == 'arglist': + nodes_before = [c for c in nodes_before[-1].children if c.start_pos < position] + + key_str = None + + if nodes_before: + last = nodes_before[-1] + if last.type == 'argument' and last.children[1].end_pos <= position: + # Checked if the argument + key_str = last.children[0].value + elif last == '=': + key_str = nodes_before[-2].value + + return nodes_before.count(','), key_str + + +def _get_call_signature_details_from_error_node(node, position): + for index, element in reversed(list(enumerate(node.children))): + # `index > 0` means that it's a trailer and not an atom. + if element == '(' and element.end_pos <= position and index > 0: + # It's an error node, we don't want to match too much, just + # until the parentheses is enough. + children = node.children[index:] + name = element.get_previous_leaf() + if name is None: + continue + if name.type == 'name' or name.parent.type in ('trailer', 'atom'): + return CallSignatureDetails( + element, + *_get_index_and_key(children, position) + ) + + +def get_call_signature_details(module, position): + leaf = module.get_leaf_for_position(position, include_prefixes=True) + if leaf.start_pos >= position: + # Whitespace / comments after the leaf count towards the previous leaf. + leaf = leaf.get_previous_leaf() + if leaf is None: + return None + + if leaf == ')': + if leaf.end_pos == position: + leaf = leaf.get_next_leaf() + + # Now that we know where we are in the syntax tree, we start to look at + # parents for possible function definitions. + node = leaf.parent + while node is not None: + if node.type in ('funcdef', 'classdef'): + # Don't show call signatures if there's stuff before it that just + # makes it feel strange to have a call signature. + return None + + for n in node.children[::-1]: + if n.start_pos < position and n.type == 'error_node': + result = _get_call_signature_details_from_error_node(n, position) + if result is not None: + return result + + if node.type == 'trailer' and node.children[0] == '(': + leaf = node.get_previous_leaf() + if leaf is None: + return None + return CallSignatureDetails( + node.children[0], *_get_index_and_key(node.children, position)) + + node = node.parent + + return None + + +@time_cache("call_signatures_validity") +def cache_call_signatures(evaluator, context, bracket_leaf, code_lines, user_pos): + """This function calculates the cache key.""" + index = user_pos[0] - 1 + + before_cursor = code_lines[index][:user_pos[1]] + other_lines = code_lines[bracket_leaf.start_pos[0]:index] + whole = '\n'.join(other_lines + [before_cursor]) + before_bracket = re.match(r'.*\(', whole, re.DOTALL) + + module_path = context.get_root_context().py__file__() + if module_path is None: + yield None # Don't cache! + else: + yield (module_path, before_bracket, bracket_leaf.start_pos) + yield evaluate_goto_definition( + evaluator, + context, + bracket_leaf.get_previous_leaf() + ) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/api/interpreter.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/api/interpreter.py new file mode 100644 index 0000000..202f345 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/api/interpreter.py @@ -0,0 +1,47 @@ +""" +TODO Some parts of this module are still not well documented. +""" + +from jedi.evaluate.context import ModuleContext +from jedi.evaluate import compiled +from jedi.evaluate.compiled import mixed +from jedi.evaluate.base_context import Context + + +class NamespaceObject(object): + def __init__(self, dct): + self.__dict__ = dct + + +class MixedModuleContext(Context): + resets_positions = True + type = 'mixed_module' + + def __init__(self, evaluator, tree_module, namespaces, path): + self.evaluator = evaluator + self._namespaces = namespaces + + self._namespace_objects = [NamespaceObject(n) for n in namespaces] + self._module_context = ModuleContext(evaluator, tree_module, path=path) + self.tree_node = tree_module + + def get_node(self): + return self.tree_node + + def get_filters(self, *args, **kwargs): + for filter in self._module_context.get_filters(*args, **kwargs): + yield filter + + for namespace_obj in self._namespace_objects: + compiled_object = compiled.create(self.evaluator, namespace_obj) + mixed_object = mixed.MixedObject( + self.evaluator, + parent_context=self, + compiled_object=compiled_object, + tree_context=self._module_context + ) + for filter in mixed_object.get_filters(*args, **kwargs): + yield filter + + def __getattr__(self, name): + return getattr(self._module_context, name) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/api/keywords.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/api/keywords.py new file mode 100644 index 0000000..a1bc4e7 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/api/keywords.py @@ -0,0 +1,144 @@ +import pydoc +import keyword + +from jedi._compatibility import is_py3, is_py35 +from jedi.evaluate.utils import ignored +from jedi.evaluate.filters import AbstractNameDefinition +from parso.python.tree import Leaf + +try: + from pydoc_data import topics as pydoc_topics +except ImportError: + # Python 2 + try: + import pydoc_topics + except ImportError: + # This is for Python 3 embeddable version, which dont have + # pydoc_data module in its file python3x.zip. + pydoc_topics = None + +if is_py3: + if is_py35: + # in python 3.5 async and await are not proper keywords, but for + # completion pursposes should as as though they are + keys = keyword.kwlist + ["async", "await"] + else: + keys = keyword.kwlist +else: + keys = keyword.kwlist + ['None', 'False', 'True'] + + +def has_inappropriate_leaf_keyword(pos, module): + relevant_errors = filter( + lambda error: error.first_pos[0] == pos[0], + module.error_statement_stacks) + + for error in relevant_errors: + if error.next_token in keys: + return True + + return False + + +def completion_names(evaluator, stmt, pos, module): + keyword_list = all_keywords(evaluator) + + if not isinstance(stmt, Leaf) or has_inappropriate_leaf_keyword(pos, module): + keyword_list = filter( + lambda keyword: not keyword.only_valid_as_leaf, + keyword_list + ) + return [keyword.name for keyword in keyword_list] + + +def all_keywords(evaluator, pos=(0, 0)): + return set([Keyword(evaluator, k, pos) for k in keys]) + + +def keyword(evaluator, string, pos=(0, 0)): + if string in keys: + return Keyword(evaluator, string, pos) + else: + return None + + +def get_operator(evaluator, string, pos): + return Keyword(evaluator, string, pos) + + +keywords_only_valid_as_leaf = ( + 'continue', + 'break', +) + + +class KeywordName(AbstractNameDefinition): + api_type = 'keyword' + + def __init__(self, evaluator, name): + self.evaluator = evaluator + self.string_name = name + self.parent_context = evaluator.BUILTINS + + def eval(self): + return set() + + def infer(self): + return [Keyword(self.evaluator, self.string_name, (0, 0))] + + +class Keyword(object): + api_type = 'keyword' + + def __init__(self, evaluator, name, pos): + self.name = KeywordName(evaluator, name) + self.start_pos = pos + self.parent = evaluator.BUILTINS + + @property + def only_valid_as_leaf(self): + return self.name.value in keywords_only_valid_as_leaf + + @property + def names(self): + """ For a `parsing.Name` like comparision """ + return [self.name] + + def py__doc__(self, include_call_signature=False): + return imitate_pydoc(self.name.string_name) + + def __repr__(self): + return '<%s: %s>' % (type(self).__name__, self.name) + + +def imitate_pydoc(string): + """ + It's not possible to get the pydoc's without starting the annoying pager + stuff. + """ + if pydoc_topics is None: + return '' + + # str needed because of possible unicode stuff in py2k (pydoc doesn't work + # with unicode strings) + string = str(string) + h = pydoc.help + with ignored(KeyError): + # try to access symbols + string = h.symbols[string] + string, _, related = string.partition(' ') + + get_target = lambda s: h.topics.get(s, h.keywords.get(s)) + while isinstance(string, str): + string = get_target(string) + + try: + # is a tuple now + label, related = string + except TypeError: + return '' + + try: + return pydoc_topics.topics[label].strip() if pydoc_topics else '' + except KeyError: + return '' diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/api/replstartup.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/api/replstartup.py new file mode 100644 index 0000000..5bfcc8c --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/api/replstartup.py @@ -0,0 +1,27 @@ +""" +To use Jedi completion in Python interpreter, add the following in your shell +setup (e.g., ``.bashrc``):: + + export PYTHONSTARTUP="$(python -m jedi repl)" + +Then you will be able to use Jedi completer in your Python interpreter:: + + $ python + Python 2.7.2+ (default, Jul 20 2012, 22:15:08) + [GCC 4.6.1] on linux2 + Type "help", "copyright", "credits" or "license" for more information. + >>> import os + >>> os.path.join().split().in # doctest: +SKIP + os.path.join().split().index os.path.join().split().insert + +""" +import jedi.utils +from jedi import __version__ as __jedi_version__ + +print('REPL completion using Jedi %s' % __jedi_version__) +jedi.utils.setup_readline() + +del jedi + +# Note: try not to do many things here, as it will contaminate global +# namespace of the interpreter. diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/cache.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/cache.py new file mode 100644 index 0000000..01138e7 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/cache.py @@ -0,0 +1,121 @@ +""" +This caching is very important for speed and memory optimizations. There's +nothing really spectacular, just some decorators. The following cache types are +available: + +- ``time_cache`` can be used to cache something for just a limited time span, + which can be useful if there's user interaction and the user cannot react + faster than a certain time. + +This module is one of the reasons why |jedi| is not thread-safe. As you can see +there are global variables, which are holding the cache information. Some of +these variables are being cleaned after every API usage. +""" +import time + +from jedi import settings +from parso.cache import parser_cache + +_time_caches = {} + + +def underscore_memoization(func): + """ + Decorator for methods:: + + class A(object): + def x(self): + if self._x: + self._x = 10 + return self._x + + Becomes:: + + class A(object): + @underscore_memoization + def x(self): + return 10 + + A now has an attribute ``_x`` written by this decorator. + """ + name = '_' + func.__name__ + + def wrapper(self): + try: + return getattr(self, name) + except AttributeError: + result = func(self) + setattr(self, name, result) + return result + + return wrapper + + +def clear_time_caches(delete_all=False): + """ Jedi caches many things, that should be completed after each completion + finishes. + + :param delete_all: Deletes also the cache that is normally not deleted, + like parser cache, which is important for faster parsing. + """ + global _time_caches + + if delete_all: + for cache in _time_caches.values(): + cache.clear() + parser_cache.clear() + else: + # normally just kill the expired entries, not all + for tc in _time_caches.values(): + # check time_cache for expired entries + for key, (t, value) in list(tc.items()): + if t < time.time(): + # delete expired entries + del tc[key] + + +def time_cache(time_add_setting): + """ + This decorator works as follows: Call it with a setting and after that + use the function with a callable that returns the key. + But: This function is only called if the key is not available. After a + certain amount of time (`time_add_setting`) the cache is invalid. + + If the given key is None, the function will not be cached. + """ + def _temp(key_func): + dct = {} + _time_caches[time_add_setting] = dct + + def wrapper(*args, **kwargs): + generator = key_func(*args, **kwargs) + key = next(generator) + try: + expiry, value = dct[key] + if expiry > time.time(): + return value + except KeyError: + pass + + value = next(generator) + time_add = getattr(settings, time_add_setting) + if key is not None: + dct[key] = time.time() + time_add, value + return value + return wrapper + return _temp + + +def memoize_method(method): + """A normal memoize function.""" + def wrapper(self, *args, **kwargs): + cache_dict = self.__dict__.setdefault('_memoize_method_dct', {}) + dct = cache_dict.setdefault(method, {}) + key = (args, frozenset(kwargs.items())) + try: + return dct[key] + except KeyError: + result = method(self, *args, **kwargs) + dct[key] = result + return result + return wrapper diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/common/__init__.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/common/__init__.py new file mode 100644 index 0000000..702a5e6 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/common/__init__.py @@ -0,0 +1 @@ +from jedi.common.context import BaseContextSet, BaseContext diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/common/context.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/common/context.py new file mode 100644 index 0000000..dfcf5a9 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/common/context.py @@ -0,0 +1,67 @@ +class BaseContext(object): + def __init__(self, evaluator, parent_context=None): + self.evaluator = evaluator + self.parent_context = parent_context + + def get_root_context(self): + context = self + while True: + if context.parent_context is None: + return context + context = context.parent_context + + +class BaseContextSet(object): + def __init__(self, *args): + self._set = set(args) + + @classmethod + def from_iterable(cls, iterable): + return cls.from_set(set(iterable)) + + @classmethod + def from_set(cls, set_): + self = cls() + self._set = set_ + return self + + @classmethod + def from_sets(cls, sets): + """ + Used to work with an iterable of set. + """ + aggregated = set() + sets = list(sets) + for set_ in sets: + if isinstance(set_, BaseContextSet): + aggregated |= set_._set + else: + aggregated |= set_ + return cls.from_set(aggregated) + + def __or__(self, other): + return type(self).from_set(self._set | other._set) + + def __iter__(self): + for element in self._set: + yield element + + def __bool__(self): + return bool(self._set) + + def __len__(self): + return len(self._set) + + def __repr__(self): + return '%s(%s)' % (self.__class__.__name__, ', '.join(str(s) for s in self._set)) + + def filter(self, filter_func): + return type(self).from_iterable(filter(filter_func, self._set)) + + def __getattr__(self, name): + def mapper(*args, **kwargs): + return type(self).from_sets( + getattr(context, name)(*args, **kwargs) + for context in self._set + ) + return mapper diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/debug.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/debug.py new file mode 100644 index 0000000..8caf1ac --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/debug.py @@ -0,0 +1,128 @@ +from jedi._compatibility import encoding, is_py3, u +import os +import time + +def _lazy_colorama_init(): + """ + Lazily init colorama if necessary, not to screw up stdout is debug not + enabled. + + This version of the function does nothing. + """ + pass + +_inited=False + +try: + if os.name == 'nt': + # Does not work on Windows, as pyreadline and colorama interfere + raise ImportError + else: + # Use colorama for nicer console output. + from colorama import Fore, init + from colorama import initialise + def _lazy_colorama_init(): + """ + Lazily init colorama if necessary, not to screw up stdout is + debug not enabled. + + This version of the function does init colorama. + """ + global _inited + if not _inited: + # pytest resets the stream at the end - causes troubles. Since + # after every output the stream is reset automatically we don't + # need this. + initialise.atexit_done = True + try: + init() + except Exception: + # Colorama fails with initializing under vim and is buggy in + # version 0.3.6. + pass + _inited = True + +except ImportError: + class Fore(object): + RED = '' + GREEN = '' + YELLOW = '' + MAGENTA = '' + RESET = '' + +NOTICE = object() +WARNING = object() +SPEED = object() + +enable_speed = False +enable_warning = False +enable_notice = False + +# callback, interface: level, str +debug_function = None +_debug_indent = 0 +_start_time = time.time() + + +def reset_time(): + global _start_time, _debug_indent + _start_time = time.time() + _debug_indent = 0 + + +def increase_indent(func): + """Decorator for makin """ + def wrapper(*args, **kwargs): + global _debug_indent + _debug_indent += 1 + try: + return func(*args, **kwargs) + finally: + _debug_indent -= 1 + return wrapper + + +def dbg(message, *args, **kwargs): + """ Looks at the stack, to see if a debug message should be printed. """ + # Python 2 compatibility, because it doesn't understand default args + color = kwargs.pop('color', 'GREEN') + assert color + + if debug_function and enable_notice: + i = ' ' * _debug_indent + _lazy_colorama_init() + debug_function(color, i + 'dbg: ' + message % tuple(u(repr(a)) for a in args)) + + +def warning(message, *args, **kwargs): + format = kwargs.pop('format', True) + assert not kwargs + + if debug_function and enable_warning: + i = ' ' * _debug_indent + if format: + message = message % tuple(u(repr(a)) for a in args) + debug_function('RED', i + 'warning: ' + message) + + +def speed(name): + if debug_function and enable_speed: + now = time.time() + i = ' ' * _debug_indent + debug_function('YELLOW', i + 'speed: ' + '%s %s' % (name, now - _start_time)) + + +def print_to_stdout(color, str_out): + """ + The default debug function that prints to standard out. + + :param str color: A string that is an attribute of ``colorama.Fore``. + """ + col = getattr(Fore, color) + _lazy_colorama_init() + if not is_py3: + str_out = str_out.encode(encoding, 'replace') + print(col + str_out + Fore.RESET) + + +# debug_function = print_to_stdout diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/__init__.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/__init__.py new file mode 100644 index 0000000..2046107 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/__init__.py @@ -0,0 +1,359 @@ +""" +Evaluation of Python code in |jedi| is based on three assumptions: + +* The code uses as least side effects as possible. Jedi understands certain + list/tuple/set modifications, but there's no guarantee that Jedi detects + everything (list.append in different modules for example). +* No magic is being used: + + - metaclasses + - ``setattr()`` / ``__import__()`` + - writing to ``globals()``, ``locals()``, ``object.__dict__`` +* The programmer is not a total dick, e.g. like `this + `_ :-) + +The actual algorithm is based on a principle called lazy evaluation. That +said, the typical entry point for static analysis is calling +``eval_expr_stmt``. There's separate logic for autocompletion in the API, the +evaluator is all about evaluating an expression. + +TODO this paragraph is not what jedi does anymore. + +Now you need to understand what follows after ``eval_expr_stmt``. Let's +make an example:: + + import datetime + datetime.date.toda# <-- cursor here + +First of all, this module doesn't care about completion. It really just cares +about ``datetime.date``. At the end of the procedure ``eval_expr_stmt`` will +return the ``date`` class. + +To *visualize* this (simplified): + +- ``Evaluator.eval_expr_stmt`` doesn't do much, because there's no assignment. +- ``Context.eval_node`` cares for resolving the dotted path +- ``Evaluator.find_types`` searches for global definitions of datetime, which + it finds in the definition of an import, by scanning the syntax tree. +- Using the import logic, the datetime module is found. +- Now ``find_types`` is called again by ``eval_node`` to find ``date`` + inside the datetime module. + +Now what would happen if we wanted ``datetime.date.foo.bar``? Two more +calls to ``find_types``. However the second call would be ignored, because the +first one would return nothing (there's no foo attribute in ``date``). + +What if the import would contain another ``ExprStmt`` like this:: + + from foo import bar + Date = bar.baz + +Well... You get it. Just another ``eval_expr_stmt`` recursion. It's really +easy. Python can obviously get way more complicated then this. To understand +tuple assignments, list comprehensions and everything else, a lot more code had +to be written. + +Jedi has been tested very well, so you can just start modifying code. It's best +to write your own test first for your "new" feature. Don't be scared of +breaking stuff. As long as the tests pass, you're most likely to be fine. + +I need to mention now that lazy evaluation is really good because it +only *evaluates* what needs to be *evaluated*. All the statements and modules +that are not used are just being ignored. +""" + +import sys + +from parso.python import tree +import parso + +from jedi import debug +from jedi import parser_utils +from jedi.evaluate.utils import unite +from jedi.evaluate import imports +from jedi.evaluate import recursion +from jedi.evaluate.cache import evaluator_function_cache +from jedi.evaluate import compiled +from jedi.evaluate import helpers +from jedi.evaluate.filters import TreeNameDefinition, ParamName +from jedi.evaluate.base_context import ContextualizedName, ContextualizedNode, \ + ContextSet, NO_CONTEXTS, iterate_contexts +from jedi.evaluate.context import ClassContext, FunctionContext, \ + AnonymousInstance, BoundMethod +from jedi.evaluate.context.iterable import CompForContext +from jedi.evaluate.syntax_tree import eval_trailer, eval_expr_stmt, \ + eval_node, check_tuple_assignments + + +class Evaluator(object): + def __init__(self, grammar, project): + self.grammar = grammar + self.latest_grammar = parso.load_grammar(version='3.6') + self.memoize_cache = {} # for memoize decorators + # To memorize modules -> equals `sys.modules`. + self.modules = {} # like `sys.modules`. + self.compiled_cache = {} # see `evaluate.compiled.create()` + self.inferred_element_counts = {} + self.mixed_cache = {} # see `evaluate.compiled.mixed._create()` + self.analysis = [] + self.dynamic_params_depth = 0 + self.is_analysis = False + self.python_version = sys.version_info[:2] + self.project = project + project.add_evaluator(self) + + self.reset_recursion_limitations() + + # Constants + self.BUILTINS = compiled.get_special_object(self, 'BUILTINS') + + def reset_recursion_limitations(self): + self.recursion_detector = recursion.RecursionDetector() + self.execution_recursion_detector = recursion.ExecutionRecursionDetector(self) + + def eval_element(self, context, element): + if isinstance(context, CompForContext): + return eval_node(context, element) + + if_stmt = element + while if_stmt is not None: + if_stmt = if_stmt.parent + if if_stmt.type in ('if_stmt', 'for_stmt'): + break + if parser_utils.is_scope(if_stmt): + if_stmt = None + break + predefined_if_name_dict = context.predefined_names.get(if_stmt) + if predefined_if_name_dict is None and if_stmt and if_stmt.type == 'if_stmt': + if_stmt_test = if_stmt.children[1] + name_dicts = [{}] + # If we already did a check, we don't want to do it again -> If + # context.predefined_names is filled, we stop. + # We don't want to check the if stmt itself, it's just about + # the content. + if element.start_pos > if_stmt_test.end_pos: + # Now we need to check if the names in the if_stmt match the + # names in the suite. + if_names = helpers.get_names_of_node(if_stmt_test) + element_names = helpers.get_names_of_node(element) + str_element_names = [e.value for e in element_names] + if any(i.value in str_element_names for i in if_names): + for if_name in if_names: + definitions = self.goto_definitions(context, if_name) + # Every name that has multiple different definitions + # causes the complexity to rise. The complexity should + # never fall below 1. + if len(definitions) > 1: + if len(name_dicts) * len(definitions) > 16: + debug.dbg('Too many options for if branch evaluation %s.', if_stmt) + # There's only a certain amount of branches + # Jedi can evaluate, otherwise it will take to + # long. + name_dicts = [{}] + break + + original_name_dicts = list(name_dicts) + name_dicts = [] + for definition in definitions: + new_name_dicts = list(original_name_dicts) + for i, name_dict in enumerate(new_name_dicts): + new_name_dicts[i] = name_dict.copy() + new_name_dicts[i][if_name.value] = ContextSet(definition) + + name_dicts += new_name_dicts + else: + for name_dict in name_dicts: + name_dict[if_name.value] = definitions + if len(name_dicts) > 1: + result = ContextSet() + for name_dict in name_dicts: + with helpers.predefine_names(context, if_stmt, name_dict): + result |= eval_node(context, element) + return result + else: + return self._eval_element_if_evaluated(context, element) + else: + if predefined_if_name_dict: + return eval_node(context, element) + else: + return self._eval_element_if_evaluated(context, element) + + def _eval_element_if_evaluated(self, context, element): + """ + TODO This function is temporary: Merge with eval_element. + """ + parent = element + while parent is not None: + parent = parent.parent + predefined_if_name_dict = context.predefined_names.get(parent) + if predefined_if_name_dict is not None: + return eval_node(context, element) + return self._eval_element_cached(context, element) + + @evaluator_function_cache(default=NO_CONTEXTS) + def _eval_element_cached(self, context, element): + return eval_node(context, element) + + def goto_definitions(self, context, name): + def_ = name.get_definition(import_name_always=True) + if def_ is not None: + type_ = def_.type + if type_ == 'classdef': + return [ClassContext(self, context, name.parent)] + elif type_ == 'funcdef': + return [FunctionContext(self, context, name.parent)] + + if type_ == 'expr_stmt': + is_simple_name = name.parent.type not in ('power', 'trailer') + if is_simple_name: + return eval_expr_stmt(context, def_, name) + if type_ == 'for_stmt': + container_types = context.eval_node(def_.children[3]) + cn = ContextualizedNode(context, def_.children[3]) + for_types = iterate_contexts(container_types, cn) + c_node = ContextualizedName(context, name) + return check_tuple_assignments(self, c_node, for_types) + if type_ in ('import_from', 'import_name'): + return imports.infer_import(context, name) + + return helpers.evaluate_call_of_leaf(context, name) + + def goto(self, context, name): + definition = name.get_definition(import_name_always=True) + if definition is not None: + type_ = definition.type + if type_ == 'expr_stmt': + # Only take the parent, because if it's more complicated than just + # a name it's something you can "goto" again. + is_simple_name = name.parent.type not in ('power', 'trailer') + if is_simple_name: + return [TreeNameDefinition(context, name)] + elif type_ == 'param': + return [ParamName(context, name)] + elif type_ in ('funcdef', 'classdef'): + return [TreeNameDefinition(context, name)] + elif type_ in ('import_from', 'import_name'): + module_names = imports.infer_import(context, name, is_goto=True) + return module_names + + par = name.parent + node_type = par.type + if node_type == 'argument' and par.children[1] == '=' and par.children[0] == name: + # Named param goto. + trailer = par.parent + if trailer.type == 'arglist': + trailer = trailer.parent + if trailer.type != 'classdef': + if trailer.type == 'decorator': + context_set = context.eval_node(trailer.children[1]) + else: + i = trailer.parent.children.index(trailer) + to_evaluate = trailer.parent.children[:i] + if to_evaluate[0] == 'await': + to_evaluate.pop(0) + context_set = context.eval_node(to_evaluate[0]) + for trailer in to_evaluate[1:]: + context_set = eval_trailer(context, context_set, trailer) + param_names = [] + for context in context_set: + try: + get_param_names = context.get_param_names + except AttributeError: + pass + else: + for param_name in get_param_names(): + if param_name.string_name == name.value: + param_names.append(param_name) + return param_names + elif node_type == 'dotted_name': # Is a decorator. + index = par.children.index(name) + if index > 0: + new_dotted = helpers.deep_ast_copy(par) + new_dotted.children[index - 1:] = [] + values = context.eval_node(new_dotted) + return unite( + value.py__getattribute__(name, name_context=context, is_goto=True) + for value in values + ) + + if node_type == 'trailer' and par.children[0] == '.': + values = helpers.evaluate_call_of_leaf(context, name, cut_own_trailer=True) + return unite( + value.py__getattribute__(name, name_context=context, is_goto=True) + for value in values + ) + else: + stmt = tree.search_ancestor( + name, 'expr_stmt', 'lambdef' + ) or name + if stmt.type == 'lambdef': + stmt = name + return context.py__getattribute__( + name, + position=stmt.start_pos, + search_global=True, is_goto=True + ) + + def create_context(self, base_context, node, node_is_context=False, node_is_object=False): + def parent_scope(node): + while True: + node = node.parent + + if parser_utils.is_scope(node): + return node + elif node.type in ('argument', 'testlist_comp'): + if node.children[1].type == 'comp_for': + return node.children[1] + elif node.type == 'dictorsetmaker': + for n in node.children[1:4]: + # In dictionaries it can be pretty much anything. + if n.type == 'comp_for': + return n + + def from_scope_node(scope_node, child_is_funcdef=None, is_nested=True, node_is_object=False): + if scope_node == base_node: + return base_context + + is_funcdef = scope_node.type in ('funcdef', 'lambdef') + parent_scope = parser_utils.get_parent_scope(scope_node) + parent_context = from_scope_node(parent_scope, child_is_funcdef=is_funcdef) + + if is_funcdef: + if isinstance(parent_context, AnonymousInstance): + func = BoundMethod( + self, parent_context, parent_context.class_context, + parent_context.parent_context, scope_node + ) + else: + func = FunctionContext( + self, + parent_context, + scope_node + ) + if is_nested and not node_is_object: + return func.get_function_execution() + return func + elif scope_node.type == 'classdef': + class_context = ClassContext(self, parent_context, scope_node) + if child_is_funcdef: + # anonymous instance + return AnonymousInstance(self, parent_context, class_context) + else: + return class_context + elif scope_node.type == 'comp_for': + if node.start_pos >= scope_node.children[-1].start_pos: + return parent_context + return CompForContext.from_comp_for(parent_context, scope_node) + raise Exception("There's a scope that was not managed.") + + base_node = base_context.tree_node + + if node_is_context and parser_utils.is_scope(node): + scope_node = node + else: + if node.parent.type in ('funcdef', 'classdef') and node.parent.name == node: + # When we're on class/function names/leafs that define the + # object itself and not its contents. + node = node.parent + scope_node = parent_scope(node) + return from_scope_node(scope_node, is_nested=True, node_is_object=node_is_object) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/analysis.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/analysis.py new file mode 100644 index 0000000..c825e5f --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/analysis.py @@ -0,0 +1,214 @@ +""" +Module for statical analysis. +""" +from jedi import debug +from parso.python import tree +from jedi.evaluate.compiled import CompiledObject + + +CODES = { + 'attribute-error': (1, AttributeError, 'Potential AttributeError.'), + 'name-error': (2, NameError, 'Potential NameError.'), + 'import-error': (3, ImportError, 'Potential ImportError.'), + 'type-error-too-many-arguments': (4, TypeError, None), + 'type-error-too-few-arguments': (5, TypeError, None), + 'type-error-keyword-argument': (6, TypeError, None), + 'type-error-multiple-values': (7, TypeError, None), + 'type-error-star-star': (8, TypeError, None), + 'type-error-star': (9, TypeError, None), + 'type-error-operation': (10, TypeError, None), + 'type-error-not-iterable': (11, TypeError, None), + 'type-error-isinstance': (12, TypeError, None), + 'type-error-not-subscriptable': (13, TypeError, None), + 'value-error-too-many-values': (14, ValueError, None), + 'value-error-too-few-values': (15, ValueError, None), +} + + +class Error(object): + def __init__(self, name, module_path, start_pos, message=None): + self.path = module_path + self._start_pos = start_pos + self.name = name + if message is None: + message = CODES[self.name][2] + self.message = message + + @property + def line(self): + return self._start_pos[0] + + @property + def column(self): + return self._start_pos[1] + + @property + def code(self): + # The class name start + first = self.__class__.__name__[0] + return first + str(CODES[self.name][0]) + + def __unicode__(self): + return '%s:%s:%s: %s %s' % (self.path, self.line, self.column, + self.code, self.message) + + def __str__(self): + return self.__unicode__() + + def __eq__(self, other): + return (self.path == other.path and self.name == other.name and + self._start_pos == other._start_pos) + + def __ne__(self, other): + return not self.__eq__(other) + + def __hash__(self): + return hash((self.path, self._start_pos, self.name)) + + def __repr__(self): + return '<%s %s: %s@%s,%s>' % (self.__class__.__name__, + self.name, self.path, + self._start_pos[0], self._start_pos[1]) + + +class Warning(Error): + pass + + +def add(node_context, error_name, node, message=None, typ=Error, payload=None): + exception = CODES[error_name][1] + if _check_for_exception_catch(node_context, node, exception, payload): + return + + # TODO this path is probably not right + module_context = node_context.get_root_context() + module_path = module_context.py__file__() + instance = typ(error_name, module_path, node.start_pos, message) + debug.warning(str(instance), format=False) + node_context.evaluator.analysis.append(instance) + + +def _check_for_setattr(instance): + """ + Check if there's any setattr method inside an instance. If so, return True. + """ + from jedi.evaluate.context import ModuleContext + module = instance.get_root_context() + if not isinstance(module, ModuleContext): + return False + + node = module.tree_node + try: + stmts = node.get_used_names()['setattr'] + except KeyError: + return False + + return any(node.start_pos < stmt.start_pos < node.end_pos + for stmt in stmts) + + +def add_attribute_error(name_context, lookup_context, name): + message = ('AttributeError: %s has no attribute %s.' % (lookup_context, name)) + from jedi.evaluate.context.instance import AbstractInstanceContext, CompiledInstanceName + # Check for __getattr__/__getattribute__ existance and issue a warning + # instead of an error, if that happens. + typ = Error + if isinstance(lookup_context, AbstractInstanceContext): + slot_names = lookup_context.get_function_slot_names('__getattr__') + \ + lookup_context.get_function_slot_names('__getattribute__') + for n in slot_names: + if isinstance(name, CompiledInstanceName) and \ + n.parent_context.obj == object: + typ = Warning + break + + if _check_for_setattr(lookup_context): + typ = Warning + + payload = lookup_context, name + add(name_context, 'attribute-error', name, message, typ, payload) + + +def _check_for_exception_catch(node_context, jedi_name, exception, payload=None): + """ + Checks if a jedi object (e.g. `Statement`) sits inside a try/catch and + doesn't count as an error (if equal to `exception`). + Also checks `hasattr` for AttributeErrors and uses the `payload` to compare + it. + Returns True if the exception was catched. + """ + def check_match(cls, exception): + try: + return isinstance(cls, CompiledObject) and issubclass(exception, cls.obj) + except TypeError: + return False + + def check_try_for_except(obj, exception): + # Only nodes in try + iterator = iter(obj.children) + for branch_type in iterator: + colon = next(iterator) + suite = next(iterator) + if branch_type == 'try' \ + and not (branch_type.start_pos < jedi_name.start_pos <= suite.end_pos): + return False + + for node in obj.get_except_clause_tests(): + if node is None: + return True # An exception block that catches everything. + else: + except_classes = node_context.eval_node(node) + for cls in except_classes: + from jedi.evaluate.context import iterable + if isinstance(cls, iterable.AbstractIterable) and \ + cls.array_type == 'tuple': + # multiple exceptions + for lazy_context in cls.py__iter__(): + for typ in lazy_context.infer(): + if check_match(typ, exception): + return True + else: + if check_match(cls, exception): + return True + + def check_hasattr(node, suite): + try: + assert suite.start_pos <= jedi_name.start_pos < suite.end_pos + assert node.type in ('power', 'atom_expr') + base = node.children[0] + assert base.type == 'name' and base.value == 'hasattr' + trailer = node.children[1] + assert trailer.type == 'trailer' + arglist = trailer.children[1] + assert arglist.type == 'arglist' + from jedi.evaluate.arguments import TreeArguments + args = list(TreeArguments(node_context.evaluator, node_context, arglist).unpack()) + # Arguments should be very simple + assert len(args) == 2 + + # Check name + key, lazy_context = args[1] + names = list(lazy_context.infer()) + assert len(names) == 1 and isinstance(names[0], CompiledObject) + assert names[0].obj == payload[1].value + + # Check objects + key, lazy_context = args[0] + objects = lazy_context.infer() + return payload[0] in objects + except AssertionError: + return False + + obj = jedi_name + while obj is not None and not isinstance(obj, (tree.Function, tree.Class)): + if isinstance(obj, tree.Flow): + # try/except catch check + if obj.type == 'try_stmt' and check_try_for_except(obj, exception): + return True + # hasattr check + if exception == AttributeError and obj.type in ('if_stmt', 'while_stmt'): + if check_hasattr(obj.children[1], obj.children[3]): + return True + obj = obj.parent + + return False diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/arguments.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/arguments.py new file mode 100644 index 0000000..32b9238 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/arguments.py @@ -0,0 +1,245 @@ +from parso.python import tree + +from jedi._compatibility import zip_longest +from jedi import debug +from jedi.evaluate import analysis +from jedi.evaluate.lazy_context import LazyKnownContext, LazyKnownContexts, \ + LazyTreeContext, get_merged_lazy_context +from jedi.evaluate.filters import ParamName +from jedi.evaluate.base_context import NO_CONTEXTS +from jedi.evaluate.context import iterable +from jedi.evaluate.param import get_params, ExecutedParam + +def try_iter_content(types, depth=0): + """Helper method for static analysis.""" + if depth > 10: + # It's possible that a loop has references on itself (especially with + # CompiledObject). Therefore don't loop infinitely. + return + + for typ in types: + try: + f = typ.py__iter__ + except AttributeError: + pass + else: + for lazy_context in f(): + try_iter_content(lazy_context.infer(), depth + 1) + + +class AbstractArguments(object): + context = None + + def eval_argument_clinic(self, parameters): + """Uses a list with argument clinic information (see PEP 436).""" + iterator = self.unpack() + for i, (name, optional, allow_kwargs) in enumerate(parameters): + key, argument = next(iterator, (None, None)) + if key is not None: + raise NotImplementedError + if argument is None and not optional: + debug.warning('TypeError: %s expected at least %s arguments, got %s', + name, len(parameters), i) + raise ValueError + values = NO_CONTEXTS if argument is None else argument.infer() + + if not values and not optional: + # For the stdlib we always want values. If we don't get them, + # that's ok, maybe something is too hard to resolve, however, + # we will not proceed with the evaluation of that function. + debug.warning('argument_clinic "%s" not resolvable.', name) + raise ValueError + yield values + + def eval_all(self, funcdef=None): + """ + Evaluates all arguments as a support for static analysis + (normally Jedi). + """ + for key, lazy_context in self.unpack(): + types = lazy_context.infer() + try_iter_content(types) + + def get_calling_nodes(self): + raise NotImplementedError + + def unpack(self, funcdef=None): + raise NotImplementedError + + def get_params(self, execution_context): + return get_params(execution_context, self) + + +class AnonymousArguments(AbstractArguments): + def get_params(self, execution_context): + from jedi.evaluate.dynamic import search_params + return search_params( + execution_context.evaluator, + execution_context, + execution_context.tree_node + ) + + +class TreeArguments(AbstractArguments): + def __init__(self, evaluator, context, argument_node, trailer=None): + """ + The argument_node is either a parser node or a list of evaluated + objects. Those evaluated objects may be lists of evaluated objects + themselves (one list for the first argument, one for the second, etc). + + :param argument_node: May be an argument_node or a list of nodes. + """ + self.argument_node = argument_node + self.context = context + self._evaluator = evaluator + self.trailer = trailer # Can be None, e.g. in a class definition. + + def _split(self): + if isinstance(self.argument_node, (tuple, list)): + for el in self.argument_node: + yield 0, el + else: + if not (self.argument_node.type == 'arglist' or ( + # in python 3.5 **arg is an argument, not arglist + (self.argument_node.type == 'argument') and + self.argument_node.children[0] in ('*', '**'))): + yield 0, self.argument_node + return + + iterator = iter(self.argument_node.children) + for child in iterator: + if child == ',': + continue + elif child in ('*', '**'): + yield len(child.value), next(iterator) + elif child.type == 'argument' and \ + child.children[0] in ('*', '**'): + assert len(child.children) == 2 + yield len(child.children[0].value), child.children[1] + else: + yield 0, child + + def unpack(self, funcdef=None): + named_args = [] + for star_count, el in self._split(): + if star_count == 1: + arrays = self.context.eval_node(el) + iterators = [_iterate_star_args(self.context, a, el, funcdef) + for a in arrays] + iterators = list(iterators) + for values in list(zip_longest(*iterators)): + # TODO zip_longest yields None, that means this would raise + # an exception? + yield None, get_merged_lazy_context( + [v for v in values if v is not None] + ) + elif star_count == 2: + arrays = self._evaluator.eval_element(self.context, el) + for dct in arrays: + for key, values in _star_star_dict(self.context, dct, el, funcdef): + yield key, values + else: + if el.type == 'argument': + c = el.children + if len(c) == 3: # Keyword argument. + named_args.append((c[0].value, LazyTreeContext(self.context, c[2]),)) + else: # Generator comprehension. + # Include the brackets with the parent. + comp = iterable.GeneratorComprehension( + self._evaluator, self.context, self.argument_node.parent) + yield None, LazyKnownContext(comp) + else: + yield None, LazyTreeContext(self.context, el) + + # Reordering var_args is necessary, because star args sometimes appear + # after named argument, but in the actual order it's prepended. + for named_arg in named_args: + yield named_arg + + def as_tree_tuple_objects(self): + for star_count, argument in self._split(): + if argument.type == 'argument': + argument, default = argument.children[::2] + else: + default = None + yield argument, default, star_count + + def __repr__(self): + return '<%s: %s>' % (self.__class__.__name__, self.argument_node) + + def get_calling_nodes(self): + from jedi.evaluate.dynamic import MergedExecutedParams + old_arguments_list = [] + arguments = self + + while arguments not in old_arguments_list: + if not isinstance(arguments, TreeArguments): + break + + old_arguments_list.append(arguments) + for name, default, star_count in reversed(list(arguments.as_tree_tuple_objects())): + if not star_count or not isinstance(name, tree.Name): + continue + + names = self._evaluator.goto(arguments.context, name) + if len(names) != 1: + break + if not isinstance(names[0], ParamName): + break + param = names[0].get_param() + if isinstance(param, MergedExecutedParams): + # For dynamic searches we don't even want to see errors. + return [] + if not isinstance(param, ExecutedParam): + break + if param.var_args is None: + break + arguments = param.var_args + break + + return [arguments.argument_node or arguments.trailer] + + +class ValuesArguments(AbstractArguments): + def __init__(self, values_list): + self._values_list = values_list + + def unpack(self, funcdef=None): + for values in self._values_list: + yield None, LazyKnownContexts(values) + + def get_calling_nodes(self): + return [] + + def __repr__(self): + return '<%s: %s>' % (self.__class__.__name__, self._values_list) + + +def _iterate_star_args(context, array, input_node, funcdef=None): + try: + iter_ = array.py__iter__ + except AttributeError: + if funcdef is not None: + # TODO this funcdef should not be needed. + m = "TypeError: %s() argument after * must be a sequence, not %s" \ + % (funcdef.name.value, array) + analysis.add(context, 'type-error-star', input_node, message=m) + else: + for lazy_context in iter_(): + yield lazy_context + + +def _star_star_dict(context, array, input_node, funcdef): + from jedi.evaluate.context.instance import CompiledInstance + if isinstance(array, CompiledInstance) and array.name.string_name == 'dict': + # For now ignore this case. In the future add proper iterators and just + # make one call without crazy isinstance checks. + return {} + elif isinstance(array, iterable.AbstractIterable) and array.array_type == 'dict': + return array.exact_key_items() + else: + if funcdef is not None: + m = "TypeError: %s argument after ** must be a mapping, not %s" \ + % (funcdef.name.value, array) + analysis.add(context, 'type-error-star-star', input_node, message=m) + return {} diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/base_context.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/base_context.py new file mode 100644 index 0000000..693a99a --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/base_context.py @@ -0,0 +1,260 @@ +from parso.python.tree import ExprStmt, CompFor + +from jedi import debug +from jedi._compatibility import Python3Method, zip_longest, unicode +from jedi.parser_utils import clean_scope_docstring, get_doc_with_call_signature +from jedi.common import BaseContextSet, BaseContext + + +class Context(BaseContext): + """ + Should be defined, otherwise the API returns empty types. + """ + + predefined_names = {} + tree_node = None + """ + To be defined by subclasses. + """ + + @property + def api_type(self): + # By default just lower name of the class. Can and should be + # overwritten. + return self.__class__.__name__.lower() + + @debug.increase_indent + def execute(self, arguments): + """ + In contrast to py__call__ this function is always available. + + `hasattr(x, py__call__)` can also be checked to see if a context is + executable. + """ + if self.evaluator.is_analysis: + arguments.eval_all() + + debug.dbg('execute: %s %s', self, arguments) + from jedi.evaluate import stdlib + try: + # Some stdlib functions like super(), namedtuple(), etc. have been + # hard-coded in Jedi to support them. + return stdlib.execute(self.evaluator, self, arguments) + except stdlib.NotInStdLib: + pass + + try: + func = self.py__call__ + except AttributeError: + debug.warning("no execution possible %s", self) + return NO_CONTEXTS + else: + context_set = func(arguments) + debug.dbg('execute result: %s in %s', context_set, self) + return context_set + + return self.evaluator.execute(self, arguments) + + def execute_evaluated(self, *value_list): + """ + Execute a function with already executed arguments. + """ + from jedi.evaluate.arguments import ValuesArguments + arguments = ValuesArguments([ContextSet(value) for value in value_list]) + return self.execute(arguments) + + def iterate(self, contextualized_node=None): + debug.dbg('iterate') + try: + iter_method = self.py__iter__ + except AttributeError: + if contextualized_node is not None: + from jedi.evaluate import analysis + analysis.add( + contextualized_node.context, + 'type-error-not-iterable', + contextualized_node.node, + message="TypeError: '%s' object is not iterable" % self) + return iter([]) + else: + return iter_method() + + def get_item(self, index_contexts, contextualized_node): + from jedi.evaluate.compiled import CompiledObject + from jedi.evaluate.context.iterable import Slice, AbstractIterable + result = ContextSet() + + for index in index_contexts: + if isinstance(index, (CompiledObject, Slice)): + index = index.obj + + if type(index) not in (float, int, str, unicode, slice, type(Ellipsis)): + # If the index is not clearly defined, we have to get all the + # possiblities. + if isinstance(self, AbstractIterable) and self.array_type == 'dict': + result |= self.dict_values() + else: + result |= iterate_contexts(ContextSet(self)) + continue + + # The actual getitem call. + try: + getitem = self.py__getitem__ + except AttributeError: + from jedi.evaluate import analysis + # TODO this context is probably not right. + analysis.add( + contextualized_node.context, + 'type-error-not-subscriptable', + contextualized_node.node, + message="TypeError: '%s' object is not subscriptable" % self + ) + else: + try: + result |= getitem(index) + except IndexError: + result |= iterate_contexts(ContextSet(self)) + except KeyError: + # Must be a dict. Lists don't raise KeyErrors. + result |= self.dict_values() + return result + + def eval_node(self, node): + return self.evaluator.eval_element(self, node) + + @Python3Method + def py__getattribute__(self, name_or_str, name_context=None, position=None, + search_global=False, is_goto=False, + analysis_errors=True): + """ + :param position: Position of the last statement -> tuple of line, column + """ + if name_context is None: + name_context = self + from jedi.evaluate import finder + f = finder.NameFinder(self.evaluator, self, name_context, name_or_str, + position, analysis_errors=analysis_errors) + filters = f.get_filters(search_global) + if is_goto: + return f.filter_name(filters) + return f.find(filters, attribute_lookup=not search_global) + + return self.evaluator.find_types( + self, name_or_str, name_context, position, search_global, is_goto, + analysis_errors) + + def create_context(self, node, node_is_context=False, node_is_object=False): + return self.evaluator.create_context(self, node, node_is_context, node_is_object) + + def is_class(self): + return False + + def py__bool__(self): + """ + Since Wrapper is a super class for classes, functions and modules, + the return value will always be true. + """ + return True + + def py__doc__(self, include_call_signature=False): + try: + self.tree_node.get_doc_node + except AttributeError: + return '' + else: + if include_call_signature: + return get_doc_with_call_signature(self.tree_node) + else: + return clean_scope_docstring(self.tree_node) + return None + + +def iterate_contexts(contexts, contextualized_node=None): + """ + Calls `iterate`, on all contexts but ignores the ordering and just returns + all contexts that the iterate functions yield. + """ + return ContextSet.from_sets( + lazy_context.infer() + for lazy_context in contexts.iterate(contextualized_node) + ) + + +class TreeContext(Context): + def __init__(self, evaluator, parent_context=None): + super(TreeContext, self).__init__(evaluator, parent_context) + self.predefined_names = {} + + def __repr__(self): + return '<%s: %s>' % (self.__class__.__name__, self.tree_node) + + +class ContextualizedNode(object): + def __init__(self, context, node): + self.context = context + self.node = node + + def get_root_context(self): + return self.context.get_root_context() + + def infer(self): + return self.context.eval_node(self.node) + + +class ContextualizedName(ContextualizedNode): + # TODO merge with TreeNameDefinition?! + @property + def name(self): + return self.node + + def assignment_indexes(self): + """ + Returns an array of tuple(int, node) of the indexes that are used in + tuple assignments. + + For example if the name is ``y`` in the following code:: + + x, (y, z) = 2, '' + + would result in ``[(1, xyz_node), (0, yz_node)]``. + """ + indexes = [] + node = self.node.parent + compare = self.node + while node is not None: + if node.type in ('testlist', 'testlist_comp', 'testlist_star_expr', 'exprlist'): + for i, child in enumerate(node.children): + if child == compare: + indexes.insert(0, (int(i / 2), node)) + break + else: + raise LookupError("Couldn't find the assignment.") + elif isinstance(node, (ExprStmt, CompFor)): + break + + compare = node + node = node.parent + return indexes + + +class ContextSet(BaseContextSet): + def py__class__(self): + return ContextSet.from_iterable(c.py__class__() for c in self._set) + + def iterate(self, contextualized_node=None): + from jedi.evaluate.lazy_context import get_merged_lazy_context + type_iters = [c.iterate(contextualized_node) for c in self._set] + for lazy_contexts in zip_longest(*type_iters): + yield get_merged_lazy_context( + [l for l in lazy_contexts if l is not None] + ) + + +NO_CONTEXTS = ContextSet() + + +def iterator_to_context_set(func): + def wrapper(*args, **kwargs): + return ContextSet.from_iterable(func(*args, **kwargs)) + + return wrapper diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/cache.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/cache.py new file mode 100644 index 0000000..b7c7cd7 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/cache.py @@ -0,0 +1,77 @@ +""" +- the popular ``_memoize_default`` works like a typical memoize and returns the + default otherwise. +- ``CachedMetaClass`` uses ``_memoize_default`` to do the same with classes. +""" + +_NO_DEFAULT = object() + + +def _memoize_default(default=_NO_DEFAULT, evaluator_is_first_arg=False, second_arg_is_evaluator=False): + """ This is a typical memoization decorator, BUT there is one difference: + To prevent recursion it sets defaults. + + Preventing recursion is in this case the much bigger use than speed. I + don't think, that there is a big speed difference, but there are many cases + where recursion could happen (think about a = b; b = a). + """ + def func(function): + def wrapper(obj, *args, **kwargs): + # TODO These checks are kind of ugly and slow. + if evaluator_is_first_arg: + cache = obj.memoize_cache + elif second_arg_is_evaluator: + cache = args[0].memoize_cache # needed for meta classes + else: + cache = obj.evaluator.memoize_cache + + try: + memo = cache[function] + except KeyError: + memo = {} + cache[function] = memo + + key = (obj, args, frozenset(kwargs.items())) + if key in memo: + return memo[key] + else: + if default is not _NO_DEFAULT: + memo[key] = default + rv = function(obj, *args, **kwargs) + memo[key] = rv + return rv + return wrapper + + return func + + +def evaluator_function_cache(default=_NO_DEFAULT): + def decorator(func): + return _memoize_default(default=default, evaluator_is_first_arg=True)(func) + + return decorator + + +def evaluator_method_cache(default=_NO_DEFAULT): + def decorator(func): + return _memoize_default(default=default)(func) + + return decorator + + +def _memoize_meta_class(): + def decorator(call): + return _memoize_default(second_arg_is_evaluator=True)(call) + + return decorator + + +class CachedMetaClass(type): + """ + This is basically almost the same than the decorator above, it just caches + class initializations. Either you do it this way or with decorators, but + with decorators you lose class access (isinstance, etc). + """ + @_memoize_meta_class() + def __call__(self, *args, **kwargs): + return super(CachedMetaClass, self).__call__(*args, **kwargs) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/__init__.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/__init__.py new file mode 100644 index 0000000..f9f2e07 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/__init__.py @@ -0,0 +1,638 @@ +""" +Imitate the parser representation. +""" +import inspect +import re +import sys +import os +import types +from functools import partial + +from jedi._compatibility import builtins as _builtins, unicode, py_version +from jedi import debug +from jedi.cache import underscore_memoization, memoize_method +from jedi.evaluate.filters import AbstractFilter, AbstractNameDefinition, \ + ContextNameMixin +from jedi.evaluate.base_context import Context, ContextSet +from jedi.evaluate.lazy_context import LazyKnownContext +from jedi.evaluate.compiled.getattr_static import getattr_static +from . import fake + + +_sep = os.path.sep +if os.path.altsep is not None: + _sep += os.path.altsep +_path_re = re.compile('(?:\.[^{0}]+|[{0}]__init__\.py)$'.format(re.escape(_sep))) +del _sep + +# Those types don't exist in typing. +MethodDescriptorType = type(str.replace) +WrapperDescriptorType = type(set.__iter__) +# `object.__subclasshook__` is an already executed descriptor. +object_class_dict = type.__dict__["__dict__"].__get__(object) +ClassMethodDescriptorType = type(object_class_dict['__subclasshook__']) + +ALLOWED_DESCRIPTOR_ACCESS = ( + types.FunctionType, + types.GetSetDescriptorType, + types.MemberDescriptorType, + MethodDescriptorType, + WrapperDescriptorType, + ClassMethodDescriptorType, + staticmethod, + classmethod, +) + +class CheckAttribute(object): + """Raises an AttributeError if the attribute X isn't available.""" + def __init__(self, func): + self.func = func + # Remove the py in front of e.g. py__call__. + self.check_name = func.__name__[2:] + + def __get__(self, instance, owner): + # This might raise an AttributeError. That's wanted. + if self.check_name == '__iter__': + # Python iterators are a bit strange, because there's no need for + # the __iter__ function as long as __getitem__ is defined (it will + # just start with __getitem__(0). This is especially true for + # Python 2 strings, where `str.__iter__` is not even defined. + try: + iter(instance.obj) + except TypeError: + raise AttributeError + else: + getattr(instance.obj, self.check_name) + return partial(self.func, instance) + + +class CompiledObject(Context): + path = None # modules have this attribute - set it to None. + used_names = lambda self: {} # To be consistent with modules. + + def __init__(self, evaluator, obj, parent_context=None, faked_class=None): + super(CompiledObject, self).__init__(evaluator, parent_context) + self.obj = obj + # This attribute will not be set for most classes, except for fakes. + self.tree_node = faked_class + + def get_root_node(self): + # To make things a bit easier with filters we add this method here. + return self.get_root_context() + + @CheckAttribute + def py__call__(self, params): + if inspect.isclass(self.obj): + from jedi.evaluate.context import CompiledInstance + return ContextSet(CompiledInstance(self.evaluator, self.parent_context, self, params)) + else: + return ContextSet.from_iterable(self._execute_function(params)) + + @CheckAttribute + def py__class__(self): + return create(self.evaluator, self.obj.__class__) + + @CheckAttribute + def py__mro__(self): + return (self,) + tuple(create(self.evaluator, cls) for cls in self.obj.__mro__[1:]) + + @CheckAttribute + def py__bases__(self): + return tuple(create(self.evaluator, cls) for cls in self.obj.__bases__) + + def py__bool__(self): + return bool(self.obj) + + def py__file__(self): + try: + return self.obj.__file__ + except AttributeError: + return None + + def is_class(self): + return inspect.isclass(self.obj) + + def py__doc__(self, include_call_signature=False): + return inspect.getdoc(self.obj) or '' + + def get_param_names(self): + obj = self.obj + try: + if py_version < 33: + raise ValueError("inspect.signature was introduced in 3.3") + if py_version == 34: + # In 3.4 inspect.signature are wrong for str and int. This has + # been fixed in 3.5. The signature of object is returned, + # because no signature was found for str. Here we imitate 3.5 + # logic and just ignore the signature if the magic methods + # don't match object. + # 3.3 doesn't even have the logic and returns nothing for str + # and classes that inherit from object. + user_def = inspect._signature_get_user_defined_method + if (inspect.isclass(obj) + and not user_def(type(obj), '__init__') + and not user_def(type(obj), '__new__') + and (obj.__init__ != object.__init__ + or obj.__new__ != object.__new__)): + raise ValueError + + signature = inspect.signature(obj) + except ValueError: # Has no signature + params_str, ret = self._parse_function_doc() + tokens = params_str.split(',') + if inspect.ismethoddescriptor(obj): + tokens.insert(0, 'self') + for p in tokens: + parts = p.strip().split('=') + yield UnresolvableParamName(self, parts[0]) + else: + for signature_param in signature.parameters.values(): + yield SignatureParamName(self, signature_param) + + def __repr__(self): + return '<%s: %s>' % (self.__class__.__name__, repr(self.obj)) + + @underscore_memoization + def _parse_function_doc(self): + doc = self.py__doc__() + if doc is None: + return '', '' + + return _parse_function_doc(doc) + + @property + def api_type(self): + obj = self.obj + if inspect.isclass(obj): + return 'class' + elif inspect.ismodule(obj): + return 'module' + elif inspect.isbuiltin(obj) or inspect.ismethod(obj) \ + or inspect.ismethoddescriptor(obj) or inspect.isfunction(obj): + return 'function' + # Everything else... + return 'instance' + + @property + def type(self): + """Imitate the tree.Node.type values.""" + cls = self._get_class() + if inspect.isclass(cls): + return 'classdef' + elif inspect.ismodule(cls): + return 'file_input' + elif inspect.isbuiltin(cls) or inspect.ismethod(cls) or \ + inspect.ismethoddescriptor(cls): + return 'funcdef' + + @underscore_memoization + def _cls(self): + """ + We used to limit the lookups for instantiated objects like list(), but + this is not the case anymore. Python itself + """ + # Ensures that a CompiledObject is returned that is not an instance (like list) + return self + + def _get_class(self): + if not fake.is_class_instance(self.obj) or \ + inspect.ismethoddescriptor(self.obj): # slots + return self.obj + + try: + return self.obj.__class__ + except AttributeError: + # happens with numpy.core.umath._UFUNC_API (you get it + # automatically by doing `import numpy`. + return type + + def get_filters(self, search_global=False, is_instance=False, + until_position=None, origin_scope=None): + yield self._ensure_one_filter(is_instance) + + @memoize_method + def _ensure_one_filter(self, is_instance): + """ + search_global shouldn't change the fact that there's one dict, this way + there's only one `object`. + """ + return CompiledObjectFilter(self.evaluator, self, is_instance) + + @CheckAttribute + def py__getitem__(self, index): + if type(self.obj) not in (str, list, tuple, unicode, bytes, bytearray, dict): + # Get rid of side effects, we won't call custom `__getitem__`s. + return ContextSet() + + return ContextSet(create(self.evaluator, self.obj[index])) + + @CheckAttribute + def py__iter__(self): + if type(self.obj) not in (str, list, tuple, unicode, bytes, bytearray, dict): + # Get rid of side effects, we won't call custom `__getitem__`s. + return + + for i, part in enumerate(self.obj): + if i > 20: + # Should not go crazy with large iterators + break + yield LazyKnownContext(create(self.evaluator, part)) + + def py__name__(self): + try: + return self._get_class().__name__ + except AttributeError: + return None + + @property + def name(self): + try: + name = self._get_class().__name__ + except AttributeError: + name = repr(self.obj) + return CompiledContextName(self, name) + + def _execute_function(self, params): + from jedi.evaluate import docstrings + if self.type != 'funcdef': + return + for name in self._parse_function_doc()[1].split(): + try: + bltn_obj = getattr(_builtins, name) + except AttributeError: + continue + else: + if bltn_obj is None: + # We want to evaluate everything except None. + # TODO do we? + continue + bltn_obj = create(self.evaluator, bltn_obj) + for result in bltn_obj.execute(params): + yield result + for type_ in docstrings.infer_return_types(self): + yield type_ + + def get_self_attributes(self): + return [] # Instance compatibility + + def get_imports(self): + return [] # Builtins don't have imports + + def dict_values(self): + return ContextSet.from_iterable( + create(self.evaluator, v) for v in self.obj.values() + ) + + +class CompiledName(AbstractNameDefinition): + def __init__(self, evaluator, parent_context, name): + self._evaluator = evaluator + self.parent_context = parent_context + self.string_name = name + + def __repr__(self): + try: + name = self.parent_context.name # __name__ is not defined all the time + except AttributeError: + name = None + return '<%s: (%s).%s>' % (self.__class__.__name__, name, self.string_name) + + @property + def api_type(self): + return next(iter(self.infer())).api_type + + @underscore_memoization + def infer(self): + module = self.parent_context.get_root_context() + return ContextSet(_create_from_name( + self._evaluator, module, self.parent_context, self.string_name + )) + + +class SignatureParamName(AbstractNameDefinition): + api_type = 'param' + + def __init__(self, compiled_obj, signature_param): + self.parent_context = compiled_obj.parent_context + self._signature_param = signature_param + + @property + def string_name(self): + return self._signature_param.name + + def infer(self): + p = self._signature_param + evaluator = self.parent_context.evaluator + contexts = ContextSet() + if p.default is not p.empty: + contexts = ContextSet(create(evaluator, p.default)) + if p.annotation is not p.empty: + annotation = create(evaluator, p.annotation) + contexts |= annotation.execute_evaluated() + return contexts + + +class UnresolvableParamName(AbstractNameDefinition): + api_type = 'param' + + def __init__(self, compiled_obj, name): + self.parent_context = compiled_obj.parent_context + self.string_name = name + + def infer(self): + return ContextSet() + + +class CompiledContextName(ContextNameMixin, AbstractNameDefinition): + def __init__(self, context, name): + self.string_name = name + self._context = context + self.parent_context = context.parent_context + + +class EmptyCompiledName(AbstractNameDefinition): + """ + Accessing some names will raise an exception. To avoid not having any + completions, just give Jedi the option to return this object. It infers to + nothing. + """ + def __init__(self, evaluator, name): + self.parent_context = evaluator.BUILTINS + self.string_name = name + + def infer(self): + return ContextSet() + + +class CompiledObjectFilter(AbstractFilter): + name_class = CompiledName + + def __init__(self, evaluator, compiled_object, is_instance=False): + self._evaluator = evaluator + self._compiled_object = compiled_object + self._is_instance = is_instance + + @memoize_method + def get(self, name): + name = str(name) + obj = self._compiled_object.obj + try: + attr, is_get_descriptor = getattr_static(obj, name) + except AttributeError: + return [] + else: + if is_get_descriptor \ + and not type(attr) in ALLOWED_DESCRIPTOR_ACCESS: + # In case of descriptors that have get methods we cannot return + # it's value, because that would mean code execution. + return [EmptyCompiledName(self._evaluator, name)] + if self._is_instance and name not in dir(obj): + return [] + return [self._create_name(name)] + + def values(self): + obj = self._compiled_object.obj + + names = [] + for name in dir(obj): + names += self.get(name) + + is_instance = self._is_instance or fake.is_class_instance(obj) + # ``dir`` doesn't include the type names. + if not inspect.ismodule(obj) and (obj is not type) and not is_instance: + for filter in create(self._evaluator, type).get_filters(): + names += filter.values() + return names + + def _create_name(self, name): + return self.name_class(self._evaluator, self._compiled_object, name) + + +def dotted_from_fs_path(fs_path, sys_path): + """ + Changes `/usr/lib/python3.4/email/utils.py` to `email.utils`. I.e. + compares the path with sys.path and then returns the dotted_path. If the + path is not in the sys.path, just returns None. + """ + if os.path.basename(fs_path).startswith('__init__.'): + # We are calculating the path. __init__ files are not interesting. + fs_path = os.path.dirname(fs_path) + + # prefer + # - UNIX + # /path/to/pythonX.Y/lib-dynload + # /path/to/pythonX.Y/site-packages + # - Windows + # C:\path\to\DLLs + # C:\path\to\Lib\site-packages + # over + # - UNIX + # /path/to/pythonX.Y + # - Windows + # C:\path\to\Lib + path = '' + for s in sys_path: + if (fs_path.startswith(s) and len(path) < len(s)): + path = s + + # - Window + # X:\path\to\lib-dynload/datetime.pyd => datetime + module_path = fs_path[len(path):].lstrip(os.path.sep).lstrip('/') + # - Window + # Replace like X:\path\to\something/foo/bar.py + return _path_re.sub('', module_path).replace(os.path.sep, '.').replace('/', '.') + + +def load_module(evaluator, path=None, name=None): + sys_path = list(evaluator.project.sys_path) + if path is not None: + dotted_path = dotted_from_fs_path(path, sys_path=sys_path) + else: + dotted_path = name + + temp, sys.path = sys.path, sys_path + try: + __import__(dotted_path) + except RuntimeError: + if 'PySide' in dotted_path or 'PyQt' in dotted_path: + # RuntimeError: the PyQt4.QtCore and PyQt5.QtCore modules both wrap + # the QObject class. + # See https://github.com/davidhalter/jedi/pull/483 + return None + raise + except ImportError: + # If a module is "corrupt" or not really a Python module or whatever. + debug.warning('Module %s not importable in path %s.', dotted_path, path) + return None + finally: + sys.path = temp + + # Just access the cache after import, because of #59 as well as the very + # complicated import structure of Python. + module = sys.modules[dotted_path] + + return create(evaluator, module) + + +docstr_defaults = { + 'floating point number': 'float', + 'character': 'str', + 'integer': 'int', + 'dictionary': 'dict', + 'string': 'str', +} + + +def _parse_function_doc(doc): + """ + Takes a function and returns the params and return value as a tuple. + This is nothing more than a docstring parser. + + TODO docstrings like utime(path, (atime, mtime)) and a(b [, b]) -> None + TODO docstrings like 'tuple of integers' + """ + # parse round parentheses: def func(a, (b,c)) + try: + count = 0 + start = doc.index('(') + for i, s in enumerate(doc[start:]): + if s == '(': + count += 1 + elif s == ')': + count -= 1 + if count == 0: + end = start + i + break + param_str = doc[start + 1:end] + except (ValueError, UnboundLocalError): + # ValueError for doc.index + # UnboundLocalError for undefined end in last line + debug.dbg('no brackets found - no param') + end = 0 + param_str = '' + else: + # remove square brackets, that show an optional param ( = None) + def change_options(m): + args = m.group(1).split(',') + for i, a in enumerate(args): + if a and '=' not in a: + args[i] += '=None' + return ','.join(args) + + while True: + param_str, changes = re.subn(r' ?\[([^\[\]]+)\]', + change_options, param_str) + if changes == 0: + break + param_str = param_str.replace('-', '_') # see: isinstance.__doc__ + + # parse return value + r = re.search('-[>-]* ', doc[end:end + 7]) + if r is None: + ret = '' + else: + index = end + r.end() + # get result type, which can contain newlines + pattern = re.compile(r'(,\n|[^\n-])+') + ret_str = pattern.match(doc, index).group(0).strip() + # New object -> object() + ret_str = re.sub(r'[nN]ew (.*)', r'\1()', ret_str) + + ret = docstr_defaults.get(ret_str, ret_str) + + return param_str, ret + + +def _create_from_name(evaluator, module, compiled_object, name): + obj = compiled_object.obj + faked = None + try: + faked = fake.get_faked(evaluator, module, obj, parent_context=compiled_object, name=name) + if faked.type == 'funcdef': + from jedi.evaluate.context.function import FunctionContext + return FunctionContext(evaluator, compiled_object, faked) + except fake.FakeDoesNotExist: + pass + + try: + obj = getattr(obj, name) + except AttributeError: + # Happens e.g. in properties of + # PyQt4.QtGui.QStyleOptionComboBox.currentText + # -> just set it to None + obj = None + return create(evaluator, obj, parent_context=compiled_object, faked=faked) + + +def builtin_from_name(evaluator, string): + bltn_obj = getattr(_builtins, string) + return create(evaluator, bltn_obj) + + +def _a_generator(foo): + """Used to have an object to return for generators.""" + yield 42 + yield foo + + +_SPECIAL_OBJECTS = { + 'FUNCTION_CLASS': type(load_module), + 'METHOD_CLASS': type(CompiledObject.is_class), + 'MODULE_CLASS': type(os), + 'GENERATOR_OBJECT': _a_generator(1.0), + 'BUILTINS': _builtins, +} + + +def get_special_object(evaluator, identifier): + obj = _SPECIAL_OBJECTS[identifier] + return create(evaluator, obj, parent_context=create(evaluator, _builtins)) + + +def compiled_objects_cache(attribute_name): + def decorator(func): + """ + This decorator caches just the ids, oopposed to caching the object itself. + Caching the id has the advantage that an object doesn't need to be + hashable. + """ + def wrapper(evaluator, obj, parent_context=None, module=None, faked=None): + cache = getattr(evaluator, attribute_name) + # Do a very cheap form of caching here. + key = id(obj), id(parent_context) + try: + return cache[key][0] + except KeyError: + # TODO this whole decorator is way too ugly + result = func(evaluator, obj, parent_context, module, faked) + # Need to cache all of them, otherwise the id could be overwritten. + cache[key] = result, obj, parent_context, module, faked + return result + return wrapper + + return decorator + + +@compiled_objects_cache('compiled_cache') +def create(evaluator, obj, parent_context=None, module=None, faked=None): + """ + A very weird interface class to this module. The more options provided the + more acurate loading compiled objects is. + """ + if inspect.ismodule(obj): + if parent_context is not None: + # Modules don't have parents, be careful with caching: recurse. + return create(evaluator, obj) + else: + if parent_context is None and obj is not _builtins: + return create(evaluator, obj, create(evaluator, _builtins)) + + try: + faked = fake.get_faked(evaluator, module, obj, parent_context=parent_context) + if faked.type == 'funcdef': + from jedi.evaluate.context.function import FunctionContext + return FunctionContext(evaluator, parent_context, faked) + except fake.FakeDoesNotExist: + pass + + return CompiledObject(evaluator, obj, parent_context, faked) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake.py new file mode 100644 index 0000000..60dbefe --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake.py @@ -0,0 +1,213 @@ +""" +Loads functions that are mixed in to the standard library. E.g. builtins are +written in C (binaries), but my autocompletion only understands Python code. By +mixing in Python code, the autocompletion should work much better for builtins. +""" + +import os +import inspect +import types +from itertools import chain + +from parso.python import tree + +from jedi._compatibility import is_py3, builtins, unicode, is_py34 + +modules = {} + + +MethodDescriptorType = type(str.replace) +# These are not considered classes and access is granted even though they have +# a __class__ attribute. +NOT_CLASS_TYPES = ( + types.BuiltinFunctionType, + types.CodeType, + types.FrameType, + types.FunctionType, + types.GeneratorType, + types.GetSetDescriptorType, + types.LambdaType, + types.MemberDescriptorType, + types.MethodType, + types.ModuleType, + types.TracebackType, + MethodDescriptorType +) + +if is_py3: + NOT_CLASS_TYPES += ( + types.MappingProxyType, + types.SimpleNamespace + ) + if is_py34: + NOT_CLASS_TYPES += (types.DynamicClassAttribute,) + + +class FakeDoesNotExist(Exception): + pass + + +def _load_faked_module(grammar, module): + module_name = module.__name__ + if module_name == '__builtin__' and not is_py3: + module_name = 'builtins' + + try: + return modules[module_name] + except KeyError: + path = os.path.dirname(os.path.abspath(__file__)) + try: + with open(os.path.join(path, 'fake', module_name) + '.pym') as f: + source = f.read() + except IOError: + modules[module_name] = None + return + modules[module_name] = m = grammar.parse(unicode(source)) + + if module_name == 'builtins' and not is_py3: + # There are two implementations of `open` for either python 2/3. + # -> Rename the python2 version (`look at fake/builtins.pym`). + open_func = _search_scope(m, 'open') + open_func.children[1].value = 'open_python3' + open_func = _search_scope(m, 'open_python2') + open_func.children[1].value = 'open' + return m + + +def _search_scope(scope, obj_name): + for s in chain(scope.iter_classdefs(), scope.iter_funcdefs()): + if s.name.value == obj_name: + return s + + +def get_module(obj): + if inspect.ismodule(obj): + return obj + try: + obj = obj.__objclass__ + except AttributeError: + pass + + try: + imp_plz = obj.__module__ + except AttributeError: + # Unfortunately in some cases like `int` there's no __module__ + return builtins + else: + if imp_plz is None: + # Happens for example in `(_ for _ in []).send.__module__`. + return builtins + else: + try: + return __import__(imp_plz) + except ImportError: + # __module__ can be something arbitrary that doesn't exist. + return builtins + + +def _faked(grammar, module, obj, name): + # Crazy underscore actions to try to escape all the internal madness. + if module is None: + module = get_module(obj) + + faked_mod = _load_faked_module(grammar, module) + if faked_mod is None: + return None, None + + # Having the module as a `parser.python.tree.Module`, we need to scan + # for methods. + if name is None: + if inspect.isbuiltin(obj) or inspect.isclass(obj): + return _search_scope(faked_mod, obj.__name__), faked_mod + elif not inspect.isclass(obj): + # object is a method or descriptor + try: + objclass = obj.__objclass__ + except AttributeError: + return None, None + else: + cls = _search_scope(faked_mod, objclass.__name__) + if cls is None: + return None, None + return _search_scope(cls, obj.__name__), faked_mod + else: + if obj is module: + return _search_scope(faked_mod, name), faked_mod + else: + try: + cls_name = obj.__name__ + except AttributeError: + return None, None + cls = _search_scope(faked_mod, cls_name) + if cls is None: + return None, None + return _search_scope(cls, name), faked_mod + return None, None + + +def memoize_faked(obj): + """ + A typical memoize function that ignores issues with non hashable results. + """ + cache = obj.cache = {} + + def memoizer(*args, **kwargs): + key = (obj, args, frozenset(kwargs.items())) + try: + result = cache[key] + except (TypeError, ValueError): + return obj(*args, **kwargs) + except KeyError: + result = obj(*args, **kwargs) + if result is not None: + cache[key] = obj(*args, **kwargs) + return result + else: + return result + return memoizer + + +@memoize_faked +def _get_faked(grammar, module, obj, name=None): + result, fake_module = _faked(grammar, module, obj, name) + if result is None: + # We're not interested in classes. What we want is functions. + raise FakeDoesNotExist + elif result.type == 'classdef': + return result, fake_module + else: + # Set the docstr which was previously not set (faked modules don't + # contain it). + assert result.type == 'funcdef' + doc = '"""%s"""' % obj.__doc__ # TODO need escapes. + suite = result.children[-1] + string = tree.String(doc, (0, 0), '') + new_line = tree.Newline('\n', (0, 0)) + docstr_node = tree.PythonNode('simple_stmt', [string, new_line]) + suite.children.insert(1, docstr_node) + return result, fake_module + + +def get_faked(evaluator, module, obj, name=None, parent_context=None): + if parent_context and parent_context.tree_node is not None: + # Try to search in already clearly defined stuff. + found = _search_scope(parent_context.tree_node, name) + if found is not None: + return found + else: + raise FakeDoesNotExist + + faked, fake_module = _get_faked(evaluator.latest_grammar, module and module.obj, obj, name) + if module is not None: + module.get_used_names = fake_module.get_used_names + return faked + + +def is_class_instance(obj): + """Like inspect.* methods.""" + try: + cls = obj.__class__ + except AttributeError: + return False + else: + return cls != type and not issubclass(cls, NOT_CLASS_TYPES) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake/_functools.pym b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake/_functools.pym new file mode 100644 index 0000000..909ef03 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake/_functools.pym @@ -0,0 +1,9 @@ +class partial(): + def __init__(self, func, *args, **keywords): + self.__func = func + self.__args = args + self.__keywords = keywords + + def __call__(self, *args, **kwargs): + # TODO should be **dict(self.__keywords, **kwargs) + return self.__func(*(self.__args + args), **self.__keywords) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake/_sqlite3.pym b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake/_sqlite3.pym new file mode 100644 index 0000000..2151e65 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake/_sqlite3.pym @@ -0,0 +1,26 @@ +def connect(database, timeout=None, isolation_level=None, detect_types=None, factory=None): + return Connection() + + +class Connection(): + def cursor(self): + return Cursor() + + +class Cursor(): + def cursor(self): + return Cursor() + + def fetchone(self): + return Row() + + def fetchmany(self, size=cursor.arraysize): + return [self.fetchone()] + + def fetchall(self): + return [self.fetchone()] + + +class Row(): + def keys(self): + return [''] diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake/_sre.pym b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake/_sre.pym new file mode 100644 index 0000000..217be56 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake/_sre.pym @@ -0,0 +1,99 @@ +def compile(): + class SRE_Match(): + endpos = int() + lastgroup = int() + lastindex = int() + pos = int() + string = str() + regs = ((int(), int()),) + + def __init__(self, pattern): + self.re = pattern + + def start(self): + return int() + + def end(self): + return int() + + def span(self): + return int(), int() + + def expand(self): + return str() + + def group(self, nr): + return str() + + def groupdict(self): + return {str(): str()} + + def groups(self): + return (str(),) + + class SRE_Pattern(): + flags = int() + groupindex = {} + groups = int() + pattern = str() + + def findall(self, string, pos=None, endpos=None): + """ + findall(string[, pos[, endpos]]) --> list. + Return a list of all non-overlapping matches of pattern in string. + """ + return [str()] + + def finditer(self, string, pos=None, endpos=None): + """ + finditer(string[, pos[, endpos]]) --> iterator. + Return an iterator over all non-overlapping matches for the + RE pattern in string. For each match, the iterator returns a + match object. + """ + yield SRE_Match(self) + + def match(self, string, pos=None, endpos=None): + """ + match(string[, pos[, endpos]]) --> match object or None. + Matches zero or more characters at the beginning of the string + pattern + """ + return SRE_Match(self) + + def scanner(self, string, pos=None, endpos=None): + pass + + def search(self, string, pos=None, endpos=None): + """ + search(string[, pos[, endpos]]) --> match object or None. + Scan through string looking for a match, and return a corresponding + MatchObject instance. Return None if no position in the string matches. + """ + return SRE_Match(self) + + def split(self, string, maxsplit=0]): + """ + split(string[, maxsplit = 0]) --> list. + Split string by the occurrences of pattern. + """ + return [str()] + + def sub(self, repl, string, count=0): + """ + sub(repl, string[, count = 0]) --> newstring + Return the string obtained by replacing the leftmost non-overlapping + occurrences of pattern in string by the replacement repl. + """ + return str() + + def subn(self, repl, string, count=0): + """ + subn(repl, string[, count = 0]) --> (newstring, number of subs) + Return the tuple (new_string, number_of_subs_made) found by replacing + the leftmost non-overlapping occurrences of pattern with the + replacement repl. + """ + return (str(), int()) + + return SRE_Pattern() diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake/_weakref.pym b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake/_weakref.pym new file mode 100644 index 0000000..298d0b0 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake/_weakref.pym @@ -0,0 +1,9 @@ +def proxy(object, callback=None): + return object + +class ref(): + def __init__(self, object, callback=None): + self.__object = object + + def __call__(self): + return self.__object diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake/builtins.pym b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake/builtins.pym new file mode 100644 index 0000000..1225929 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake/builtins.pym @@ -0,0 +1,274 @@ +""" +Pure Python implementation of some builtins. +This code is not going to be executed anywhere. +These implementations are not always correct, but should work as good as +possible for the auto completion. +""" + + +def next(iterator, default=None): + if random.choice([0, 1]): + if hasattr("next"): + return iterator.next() + else: + return iterator.__next__() + else: + if default is not None: + return default + + +def iter(collection, sentinel=None): + if sentinel: + yield collection() + else: + for c in collection: + yield c + + +def range(start, stop=None, step=1): + return [0] + + +class file(): + def __iter__(self): + yield '' + + def next(self): + return '' + + def readlines(self): + return [''] + + def __enter__(self): + return self + + +class xrange(): + # Attention: this function doesn't exist in Py3k (there it is range). + def __iter__(self): + yield 1 + + def count(self): + return 1 + + def index(self): + return 1 + + +def open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True): + import io + return io.TextIOWrapper(file, mode, buffering, encoding, errors, newline, closefd) + + +def open_python2(name, mode=None, buffering=None): + return file(name, mode, buffering) + + +#-------------------------------------------------------- +# descriptors +#-------------------------------------------------------- +class property(): + def __init__(self, fget, fset=None, fdel=None, doc=None): + self.fget = fget + self.fset = fset + self.fdel = fdel + self.__doc__ = doc + + def __get__(self, obj, cls): + return self.fget(obj) + + def __set__(self, obj, value): + self.fset(obj, value) + + def __delete__(self, obj): + self.fdel(obj) + + def setter(self, func): + self.fset = func + return self + + def getter(self, func): + self.fget = func + return self + + def deleter(self, func): + self.fdel = func + return self + + +class staticmethod(): + def __init__(self, func): + self.__func = func + + def __get__(self, obj, cls): + return self.__func + + +class classmethod(): + def __init__(self, func): + self.__func = func + + def __get__(self, obj, cls): + def _method(*args, **kwargs): + return self.__func(cls, *args, **kwargs) + return _method + + +#-------------------------------------------------------- +# array stuff +#-------------------------------------------------------- +class list(): + def __init__(self, iterable=[]): + self.__iterable = [] + for i in iterable: + self.__iterable += [i] + + def __iter__(self): + for i in self.__iterable: + yield i + + def __getitem__(self, y): + return self.__iterable[y] + + def pop(self): + return self.__iterable[int()] + + +class tuple(): + def __init__(self, iterable=[]): + self.__iterable = [] + for i in iterable: + self.__iterable += [i] + + def __iter__(self): + for i in self.__iterable: + yield i + + def __getitem__(self, y): + return self.__iterable[y] + + def index(self): + return 1 + + def count(self): + return 1 + + +class set(): + def __init__(self, iterable=[]): + self.__iterable = iterable + + def __iter__(self): + for i in self.__iterable: + yield i + + def pop(self): + return list(self.__iterable)[-1] + + def copy(self): + return self + + def difference(self, other): + return self - other + + def intersection(self, other): + return self & other + + def symmetric_difference(self, other): + return self ^ other + + def union(self, other): + return self | other + + +class frozenset(): + def __init__(self, iterable=[]): + self.__iterable = iterable + + def __iter__(self): + for i in self.__iterable: + yield i + + def copy(self): + return self + + +class dict(): + def __init__(self, **elements): + self.__elements = elements + + def clear(self): + # has a strange docstr + pass + + def get(self, k, d=None): + # TODO implement + try: + #return self.__elements[k] + pass + except KeyError: + return d + + def values(self): + return self.__elements.values() + + def setdefault(self, k, d): + # TODO maybe also return the content + return d + + +class enumerate(): + def __init__(self, sequence, start=0): + self.__sequence = sequence + + def __iter__(self): + for i in self.__sequence: + yield 1, i + + def __next__(self): + return next(self.__iter__()) + + def next(self): + return next(self.__iter__()) + + +class reversed(): + def __init__(self, sequence): + self.__sequence = sequence + + def __iter__(self): + for i in self.__sequence: + yield i + + def __next__(self): + return next(self.__iter__()) + + def next(self): + return next(self.__iter__()) + + +def sorted(iterable, cmp=None, key=None, reverse=False): + return iterable + + +#-------------------------------------------------------- +# basic types +#-------------------------------------------------------- +class int(): + def __init__(self, x, base=None): + pass + + +class str(): + def __init__(self, obj): + pass + + def strip(self): + return str() + + def split(self): + return [str()] + +class type(): + def mro(): + return [object] diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake/datetime.pym b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake/datetime.pym new file mode 100644 index 0000000..823ac5b --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake/datetime.pym @@ -0,0 +1,4 @@ +class datetime(): + @staticmethod + def now(): + return datetime() diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake/io.pym b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake/io.pym new file mode 100644 index 0000000..c1f4fc0 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake/io.pym @@ -0,0 +1,12 @@ +class TextIOWrapper(): + def __next__(self): + return str() + + def __iter__(self): + yield str() + + def readlines(self): + return [''] + + def __enter__(self): + return self diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake/operator.pym b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake/operator.pym new file mode 100644 index 0000000..d40d468 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake/operator.pym @@ -0,0 +1,33 @@ +# Just copied this code from Python 3.6. + +class itemgetter: + """ + Return a callable object that fetches the given item(s) from its operand. + After f = itemgetter(2), the call f(r) returns r[2]. + After g = itemgetter(2, 5, 3), the call g(r) returns (r[2], r[5], r[3]) + """ + __slots__ = ('_items', '_call') + + def __init__(self, item, *items): + if not items: + self._items = (item,) + def func(obj): + return obj[item] + self._call = func + else: + self._items = items = (item,) + items + def func(obj): + return tuple(obj[i] for i in items) + self._call = func + + def __call__(self, obj): + return self._call(obj) + + def __repr__(self): + return '%s.%s(%s)' % (self.__class__.__module__, + self.__class__.__name__, + ', '.join(map(repr, self._items))) + + def __reduce__(self): + return self.__class__, self._items + diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake/posix.pym b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake/posix.pym new file mode 100644 index 0000000..4417f7c --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/fake/posix.pym @@ -0,0 +1,5 @@ +def getcwd(): + return '' + +def getcwdu(): + return '' diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/getattr_static.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/getattr_static.py new file mode 100644 index 0000000..9f8cd8a --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/getattr_static.py @@ -0,0 +1,175 @@ +""" +A static version of getattr. +This is a backport of the Python 3 code with a little bit of additional +information returned to enable Jedi to make decisions. +""" + +import types + +from jedi._compatibility import py_version + +_sentinel = object() + +def _check_instance(obj, attr): + instance_dict = {} + try: + instance_dict = object.__getattribute__(obj, "__dict__") + except AttributeError: + pass + return dict.get(instance_dict, attr, _sentinel) + + +def _check_class(klass, attr): + for entry in _static_getmro(klass): + if _shadowed_dict(type(entry)) is _sentinel: + try: + return entry.__dict__[attr] + except KeyError: + pass + return _sentinel + +def _is_type(obj): + try: + _static_getmro(obj) + except TypeError: + return False + return True + + +def _shadowed_dict_newstyle(klass): + dict_attr = type.__dict__["__dict__"] + for entry in _static_getmro(klass): + try: + class_dict = dict_attr.__get__(entry)["__dict__"] + except KeyError: + pass + else: + if not (type(class_dict) is types.GetSetDescriptorType and + class_dict.__name__ == "__dict__" and + class_dict.__objclass__ is entry): + return class_dict + return _sentinel + + +def _static_getmro_newstyle(klass): + return type.__dict__['__mro__'].__get__(klass) + + +if py_version >= 30: + _shadowed_dict = _shadowed_dict_newstyle + _get_type = type + _static_getmro = _static_getmro_newstyle +else: + def _shadowed_dict(klass): + """ + In Python 2 __dict__ is not overwritable: + + class Foo(object): pass + setattr(Foo, '__dict__', 4) + + Traceback (most recent call last): + File "", line 1, in + TypeError: __dict__ must be a dictionary object + + It applies to both newstyle and oldstyle classes: + + class Foo(object): pass + setattr(Foo, '__dict__', 4) + Traceback (most recent call last): + File "", line 1, in + AttributeError: attribute '__dict__' of 'type' objects is not writable + + It also applies to instances of those objects. However to keep things + straight forward, newstyle classes always use the complicated way of + accessing it while oldstyle classes just use getattr. + """ + if type(klass) is _oldstyle_class_type: + return getattr(klass, '__dict__', _sentinel) + return _shadowed_dict_newstyle(klass) + + class _OldStyleClass(): + pass + + _oldstyle_instance_type = type(_OldStyleClass()) + _oldstyle_class_type = type(_OldStyleClass) + + def _get_type(obj): + type_ = object.__getattribute__(obj, '__class__') + if type_ is _oldstyle_instance_type: + # Somehow for old style classes we need to access it directly. + return obj.__class__ + return type_ + + def _static_getmro(klass): + if type(klass) is _oldstyle_class_type: + def oldstyle_mro(klass): + """ + Oldstyle mro is a really simplistic way of look up mro: + https://stackoverflow.com/questions/54867/what-is-the-difference-between-old-style-and-new-style-classes-in-python + """ + yield klass + for base in klass.__bases__: + for yield_from in oldstyle_mro(base): + yield yield_from + + return oldstyle_mro(klass) + + return _static_getmro_newstyle(klass) + + +def _safe_hasattr(obj, name): + return _check_class(_get_type(obj), name) is not _sentinel + + +def _safe_is_data_descriptor(obj): + return (_safe_hasattr(obj, '__set__') or _safe_hasattr(obj, '__delete__')) + + +def getattr_static(obj, attr, default=_sentinel): + """Retrieve attributes without triggering dynamic lookup via the + descriptor protocol, __getattr__ or __getattribute__. + + Note: this function may not be able to retrieve all attributes + that getattr can fetch (like dynamically created attributes) + and may find attributes that getattr can't (like descriptors + that raise AttributeError). It can also return descriptor objects + instead of instance members in some cases. See the + documentation for details. + + Returns a tuple `(attr, is_get_descriptor)`. is_get_descripter means that + the attribute is a descriptor that has a `__get__` attribute. + """ + instance_result = _sentinel + if not _is_type(obj): + klass = _get_type(obj) + dict_attr = _shadowed_dict(klass) + if (dict_attr is _sentinel or + type(dict_attr) is types.MemberDescriptorType): + instance_result = _check_instance(obj, attr) + else: + klass = obj + + klass_result = _check_class(klass, attr) + + if instance_result is not _sentinel and klass_result is not _sentinel: + if _safe_hasattr(klass_result, '__get__') \ + and _safe_is_data_descriptor(klass_result): + # A get/set descriptor has priority over everything. + return klass_result, True + + if instance_result is not _sentinel: + return instance_result, False + if klass_result is not _sentinel: + return klass_result, _safe_hasattr(klass_result, '__get__') + + if obj is klass: + # for types we check the metaclass too + for entry in _static_getmro(type(klass)): + if _shadowed_dict(type(entry)) is _sentinel: + try: + return entry.__dict__[attr], False + except KeyError: + pass + if default is not _sentinel: + return default, False + raise AttributeError(attr) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/mixed.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/mixed.py new file mode 100644 index 0000000..ac0f6dd --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/compiled/mixed.py @@ -0,0 +1,231 @@ +""" +Used only for REPL Completion. +""" + +import inspect +import os + +from jedi import settings +from jedi.evaluate import compiled +from jedi.cache import underscore_memoization +from jedi.evaluate import imports +from jedi.evaluate.base_context import Context, ContextSet +from jedi.evaluate.context import ModuleContext +from jedi.evaluate.cache import evaluator_function_cache +from jedi.evaluate.compiled.getattr_static import getattr_static + + +class MixedObject(object): + """ + A ``MixedObject`` is used in two ways: + + 1. It uses the default logic of ``parser.python.tree`` objects, + 2. except for getattr calls. The names dicts are generated in a fashion + like ``CompiledObject``. + + This combined logic makes it possible to provide more powerful REPL + completion. It allows side effects that are not noticable with the default + parser structure to still be completeable. + + The biggest difference from CompiledObject to MixedObject is that we are + generally dealing with Python code and not with C code. This will generate + fewer special cases, because we in Python you don't have the same freedoms + to modify the runtime. + """ + def __init__(self, evaluator, parent_context, compiled_object, tree_context): + self.evaluator = evaluator + self.parent_context = parent_context + self.compiled_object = compiled_object + self._context = tree_context + self.obj = compiled_object.obj + + # We have to overwrite everything that has to do with trailers, name + # lookups and filters to make it possible to route name lookups towards + # compiled objects and the rest towards tree node contexts. + def py__getattribute__(*args, **kwargs): + return Context.py__getattribute__(*args, **kwargs) + + def get_filters(self, *args, **kwargs): + yield MixedObjectFilter(self.evaluator, self) + + def __repr__(self): + return '<%s: %s>' % (type(self).__name__, repr(self.obj)) + + def __getattr__(self, name): + return getattr(self._context, name) + + +class MixedName(compiled.CompiledName): + """ + The ``CompiledName._compiled_object`` is our MixedObject. + """ + @property + def start_pos(self): + contexts = list(self.infer()) + if not contexts: + # This means a start_pos that doesn't exist (compiled objects). + return (0, 0) + return contexts[0].name.start_pos + + @start_pos.setter + def start_pos(self, value): + # Ignore the __init__'s start_pos setter call. + pass + + @underscore_memoization + def infer(self): + obj = self.parent_context.obj + try: + # TODO use logic from compiled.CompiledObjectFilter + obj = getattr(obj, self.string_name) + except AttributeError: + # Happens e.g. in properties of + # PyQt4.QtGui.QStyleOptionComboBox.currentText + # -> just set it to None + obj = None + return ContextSet( + _create(self._evaluator, obj, parent_context=self.parent_context) + ) + + @property + def api_type(self): + return next(iter(self.infer())).api_type + + +class MixedObjectFilter(compiled.CompiledObjectFilter): + name_class = MixedName + + def __init__(self, evaluator, mixed_object, is_instance=False): + super(MixedObjectFilter, self).__init__( + evaluator, mixed_object, is_instance) + self._mixed_object = mixed_object + + #def _create(self, name): + #return MixedName(self._evaluator, self._compiled_object, name) + + +@evaluator_function_cache() +def _load_module(evaluator, path, python_object): + module = evaluator.grammar.parse( + path=path, + cache=True, + diff_cache=True, + cache_path=settings.cache_directory + ).get_root_node() + python_module = inspect.getmodule(python_object) + + evaluator.modules[python_module.__name__] = module + return module + + +def _get_object_to_check(python_object): + """Check if inspect.getfile has a chance to find the source.""" + if (inspect.ismodule(python_object) or + inspect.isclass(python_object) or + inspect.ismethod(python_object) or + inspect.isfunction(python_object) or + inspect.istraceback(python_object) or + inspect.isframe(python_object) or + inspect.iscode(python_object)): + return python_object + + try: + return python_object.__class__ + except AttributeError: + raise TypeError # Prevents computation of `repr` within inspect. + + +def find_syntax_node_name(evaluator, python_object): + try: + python_object = _get_object_to_check(python_object) + path = inspect.getsourcefile(python_object) + except TypeError: + # The type might not be known (e.g. class_with_dict.__weakref__) + return None, None + if path is None or not os.path.exists(path): + # The path might not exist or be e.g. . + return None, None + + module = _load_module(evaluator, path, python_object) + + if inspect.ismodule(python_object): + # We don't need to check names for modules, because there's not really + # a way to write a module in a module in Python (and also __name__ can + # be something like ``email.utils``). + return module, path + + try: + name_str = python_object.__name__ + except AttributeError: + # Stuff like python_function.__code__. + return None, None + + if name_str == '': + return None, None # It's too hard to find lambdas. + + # Doesn't always work (e.g. os.stat_result) + try: + names = module.get_used_names()[name_str] + except KeyError: + return None, None + names = [n for n in names if n.is_definition()] + + try: + code = python_object.__code__ + # By using the line number of a code object we make the lookup in a + # file pretty easy. There's still a possibility of people defining + # stuff like ``a = 3; foo(a); a = 4`` on the same line, but if people + # do so we just don't care. + line_nr = code.co_firstlineno + except AttributeError: + pass + else: + line_names = [name for name in names if name.start_pos[0] == line_nr] + # There's a chance that the object is not available anymore, because + # the code has changed in the background. + if line_names: + return line_names[-1].parent, path + + # It's really hard to actually get the right definition, here as a last + # resort we just return the last one. This chance might lead to odd + # completions at some points but will lead to mostly correct type + # inference, because people tend to define a public name in a module only + # once. + return names[-1].parent, path + + +@compiled.compiled_objects_cache('mixed_cache') +def _create(evaluator, obj, parent_context=None, *args): + tree_node, path = find_syntax_node_name(evaluator, obj) + + compiled_object = compiled.create( + evaluator, obj, parent_context=parent_context.compiled_object) + if tree_node is None: + return compiled_object + + module_node = tree_node.get_root_node() + if parent_context.tree_node.get_root_node() == module_node: + module_context = parent_context.get_root_context() + else: + module_context = ModuleContext(evaluator, module_node, path=path) + # TODO this __name__ is probably wrong. + name = compiled_object.get_root_context().py__name__() + imports.add_module(evaluator, name, module_context) + + tree_context = module_context.create_context( + tree_node, + node_is_context=True, + node_is_object=True + ) + if tree_node.type == 'classdef': + if not inspect.isclass(obj): + # Is an instance, not a class. + tree_context, = tree_context.execute_evaluated() + + return MixedObject( + evaluator, + parent_context, + compiled_object, + tree_context=tree_context + ) + diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/context/__init__.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/context/__init__.py new file mode 100644 index 0000000..4e7ce4d --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/context/__init__.py @@ -0,0 +1,5 @@ +from jedi.evaluate.context.module import ModuleContext +from jedi.evaluate.context.klass import ClassContext +from jedi.evaluate.context.function import FunctionContext, FunctionExecutionContext +from jedi.evaluate.context.instance import AnonymousInstance, BoundMethod, \ + CompiledInstance, AbstractInstanceContext, TreeInstance diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/context/function.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/context/function.py new file mode 100644 index 0000000..0dba9c9 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/context/function.py @@ -0,0 +1,226 @@ +from parso.python import tree + +from jedi._compatibility import use_metaclass +from jedi import debug +from jedi.evaluate.cache import evaluator_method_cache, CachedMetaClass +from jedi.evaluate import compiled +from jedi.evaluate import recursion +from jedi.evaluate import docstrings +from jedi.evaluate import pep0484 +from jedi.evaluate import flow_analysis +from jedi.evaluate import helpers +from jedi.evaluate.arguments import AnonymousArguments +from jedi.evaluate.filters import ParserTreeFilter, FunctionExecutionFilter, \ + ContextName, AbstractNameDefinition, ParamName +from jedi.evaluate.base_context import ContextualizedNode, NO_CONTEXTS, \ + ContextSet, TreeContext +from jedi.evaluate.lazy_context import LazyKnownContexts, LazyKnownContext, \ + LazyTreeContext +from jedi.evaluate.context import iterable +from jedi import parser_utils +from jedi.evaluate.parser_cache import get_yield_exprs + + +class LambdaName(AbstractNameDefinition): + string_name = '' + + def __init__(self, lambda_context): + self._lambda_context = lambda_context + self.parent_context = lambda_context.parent_context + + def start_pos(self): + return self._lambda_context.tree_node.start_pos + + def infer(self): + return ContextSet(self._lambda_context) + + +class FunctionContext(use_metaclass(CachedMetaClass, TreeContext)): + """ + Needed because of decorators. Decorators are evaluated here. + """ + api_type = 'function' + + def __init__(self, evaluator, parent_context, funcdef): + """ This should not be called directly """ + super(FunctionContext, self).__init__(evaluator, parent_context) + self.tree_node = funcdef + + def get_filters(self, search_global, until_position=None, origin_scope=None): + if search_global: + yield ParserTreeFilter( + self.evaluator, + context=self, + until_position=until_position, + origin_scope=origin_scope + ) + else: + scope = self.py__class__() + for filter in scope.get_filters(search_global=False, origin_scope=origin_scope): + yield filter + + def infer_function_execution(self, function_execution): + """ + Created to be used by inheritance. + """ + yield_exprs = get_yield_exprs(self.evaluator, self.tree_node) + if yield_exprs: + return ContextSet(iterable.Generator(self.evaluator, function_execution)) + else: + return function_execution.get_return_values() + + def get_function_execution(self, arguments=None): + if arguments is None: + arguments = AnonymousArguments() + + return FunctionExecutionContext(self.evaluator, self.parent_context, self, arguments) + + def py__call__(self, arguments): + function_execution = self.get_function_execution(arguments) + return self.infer_function_execution(function_execution) + + def py__class__(self): + # This differentiation is only necessary for Python2. Python3 does not + # use a different method class. + if isinstance(parser_utils.get_parent_scope(self.tree_node), tree.Class): + name = 'METHOD_CLASS' + else: + name = 'FUNCTION_CLASS' + return compiled.get_special_object(self.evaluator, name) + + @property + def name(self): + if self.tree_node.type == 'lambdef': + return LambdaName(self) + return ContextName(self, self.tree_node.name) + + def get_param_names(self): + function_execution = self.get_function_execution() + return [ParamName(function_execution, param.name) + for param in self.tree_node.get_params()] + + +class FunctionExecutionContext(TreeContext): + """ + This class is used to evaluate functions and their returns. + + This is the most complicated class, because it contains the logic to + transfer parameters. It is even more complicated, because there may be + multiple calls to functions and recursion has to be avoided. But this is + responsibility of the decorators. + """ + function_execution_filter = FunctionExecutionFilter + + def __init__(self, evaluator, parent_context, function_context, var_args): + super(FunctionExecutionContext, self).__init__(evaluator, parent_context) + self.function_context = function_context + self.tree_node = function_context.tree_node + self.var_args = var_args + + @evaluator_method_cache(default=NO_CONTEXTS) + @recursion.execution_recursion_decorator() + def get_return_values(self, check_yields=False): + funcdef = self.tree_node + if funcdef.type == 'lambdef': + return self.evaluator.eval_element(self, funcdef.children[-1]) + + if check_yields: + context_set = NO_CONTEXTS + returns = get_yield_exprs(self.evaluator, funcdef) + else: + returns = funcdef.iter_return_stmts() + context_set = docstrings.infer_return_types(self.function_context) + context_set |= pep0484.infer_return_types(self.function_context) + + for r in returns: + check = flow_analysis.reachability_check(self, funcdef, r) + if check is flow_analysis.UNREACHABLE: + debug.dbg('Return unreachable: %s', r) + else: + if check_yields: + context_set |= ContextSet.from_sets( + lazy_context.infer() + for lazy_context in self._eval_yield(r) + ) + else: + try: + children = r.children + except AttributeError: + context_set |= ContextSet(compiled.create(self.evaluator, None)) + else: + context_set |= self.eval_node(children[1]) + if check is flow_analysis.REACHABLE: + debug.dbg('Return reachable: %s', r) + break + return context_set + + def _eval_yield(self, yield_expr): + if yield_expr.type == 'keyword': + # `yield` just yields None. + yield LazyKnownContext(compiled.create(self.evaluator, None)) + return + + node = yield_expr.children[1] + if node.type == 'yield_arg': # It must be a yield from. + cn = ContextualizedNode(self, node.children[1]) + for lazy_context in cn.infer().iterate(cn): + yield lazy_context + else: + yield LazyTreeContext(self, node) + + @recursion.execution_recursion_decorator(default=iter([])) + def get_yield_values(self): + for_parents = [(y, tree.search_ancestor(y, 'for_stmt', 'funcdef', + 'while_stmt', 'if_stmt')) + for y in get_yield_exprs(self.evaluator, self.tree_node)] + + # Calculate if the yields are placed within the same for loop. + yields_order = [] + last_for_stmt = None + for yield_, for_stmt in for_parents: + # For really simple for loops we can predict the order. Otherwise + # we just ignore it. + parent = for_stmt.parent + if parent.type == 'suite': + parent = parent.parent + if for_stmt.type == 'for_stmt' and parent == self.tree_node \ + and parser_utils.for_stmt_defines_one_name(for_stmt): # Simplicity for now. + if for_stmt == last_for_stmt: + yields_order[-1][1].append(yield_) + else: + yields_order.append((for_stmt, [yield_])) + elif for_stmt == self.tree_node: + yields_order.append((None, [yield_])) + else: + types = self.get_return_values(check_yields=True) + if types: + yield LazyKnownContexts(types) + return + last_for_stmt = for_stmt + + for for_stmt, yields in yields_order: + if for_stmt is None: + # No for_stmt, just normal yields. + for yield_ in yields: + for result in self._eval_yield(yield_): + yield result + else: + input_node = for_stmt.get_testlist() + cn = ContextualizedNode(self, input_node) + ordered = cn.infer().iterate(cn) + ordered = list(ordered) + for lazy_context in ordered: + dct = {str(for_stmt.children[1].value): lazy_context.infer()} + with helpers.predefine_names(self, for_stmt, dct): + for yield_in_same_for_stmt in yields: + for result in self._eval_yield(yield_in_same_for_stmt): + yield result + + def get_filters(self, search_global, until_position=None, origin_scope=None): + yield self.function_execution_filter(self.evaluator, self, + until_position=until_position, + origin_scope=origin_scope) + + @evaluator_method_cache() + def get_params(self): + return self.var_args.get_params(self) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/context/instance.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/context/instance.py new file mode 100644 index 0000000..2c8d796 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/context/instance.py @@ -0,0 +1,435 @@ +from abc import abstractproperty + +from jedi._compatibility import is_py3 +from jedi import debug +from jedi.evaluate import compiled +from jedi.evaluate import filters +from jedi.evaluate.base_context import Context, NO_CONTEXTS, ContextSet, \ + iterator_to_context_set +from jedi.evaluate.lazy_context import LazyKnownContext, LazyKnownContexts +from jedi.evaluate.cache import evaluator_method_cache +from jedi.evaluate.arguments import AbstractArguments, AnonymousArguments +from jedi.cache import memoize_method +from jedi.evaluate.context.function import FunctionExecutionContext, FunctionContext +from jedi.evaluate.context.klass import ClassContext, apply_py__get__ +from jedi.evaluate.context import iterable +from jedi.parser_utils import get_parent_scope + + + +class InstanceFunctionExecution(FunctionExecutionContext): + def __init__(self, instance, parent_context, function_context, var_args): + self.instance = instance + var_args = InstanceVarArgs(self, var_args) + + super(InstanceFunctionExecution, self).__init__( + instance.evaluator, parent_context, function_context, var_args) + + +class AnonymousInstanceFunctionExecution(FunctionExecutionContext): + function_execution_filter = filters.AnonymousInstanceFunctionExecutionFilter + + def __init__(self, instance, parent_context, function_context, var_args): + self.instance = instance + super(AnonymousInstanceFunctionExecution, self).__init__( + instance.evaluator, parent_context, function_context, var_args) + + +class AbstractInstanceContext(Context): + """ + This class is used to evaluate instances. + """ + api_type = 'instance' + function_execution_cls = InstanceFunctionExecution + + def __init__(self, evaluator, parent_context, class_context, var_args): + super(AbstractInstanceContext, self).__init__(evaluator, parent_context) + # Generated instances are classes that are just generated by self + # (No var_args) used. + self.class_context = class_context + self.var_args = var_args + + def is_class(self): + return False + + @property + def py__call__(self): + names = self.get_function_slot_names('__call__') + if not names: + # Means the Instance is not callable. + raise AttributeError + + def execute(arguments): + return ContextSet.from_sets(name.execute(arguments) for name in names) + + return execute + + def py__class__(self): + return self.class_context + + def py__bool__(self): + # Signalize that we don't know about the bool type. + return None + + def get_function_slot_names(self, name): + # Python classes don't look at the dictionary of the instance when + # looking up `__call__`. This is something that has to do with Python's + # internal slot system (note: not __slots__, but C slots). + for filter in self.get_filters(include_self_names=False): + names = filter.get(name) + if names: + return names + return [] + + def execute_function_slots(self, names, *evaluated_args): + return ContextSet.from_sets( + name.execute_evaluated(*evaluated_args) + for name in names + ) + + def py__get__(self, obj): + # Arguments in __get__ descriptors are obj, class. + # `method` is the new parent of the array, don't know if that's good. + names = self.get_function_slot_names('__get__') + if names: + if isinstance(obj, AbstractInstanceContext): + return self.execute_function_slots(names, obj, obj.class_context) + else: + none_obj = compiled.create(self.evaluator, None) + return self.execute_function_slots(names, none_obj, obj) + else: + return ContextSet(self) + + def get_filters(self, search_global=None, until_position=None, + origin_scope=None, include_self_names=True): + if include_self_names: + for cls in self.class_context.py__mro__(): + if isinstance(cls, compiled.CompiledObject): + if cls.tree_node is not None: + # In this case we're talking about a fake object, it + # doesn't make sense for normal compiled objects to + # search for self variables. + yield SelfNameFilter(self.evaluator, self, cls, origin_scope) + else: + yield SelfNameFilter(self.evaluator, self, cls, origin_scope) + + for cls in self.class_context.py__mro__(): + if isinstance(cls, compiled.CompiledObject): + yield CompiledInstanceClassFilter(self.evaluator, self, cls) + else: + yield InstanceClassFilter(self.evaluator, self, cls, origin_scope) + + def py__getitem__(self, index): + try: + names = self.get_function_slot_names('__getitem__') + except KeyError: + debug.warning('No __getitem__, cannot access the array.') + return NO_CONTEXTS + else: + index_obj = compiled.create(self.evaluator, index) + return self.execute_function_slots(names, index_obj) + + def py__iter__(self): + iter_slot_names = self.get_function_slot_names('__iter__') + if not iter_slot_names: + debug.warning('No __iter__ on %s.' % self) + return + + for generator in self.execute_function_slots(iter_slot_names): + if isinstance(generator, AbstractInstanceContext): + # `__next__` logic. + name = '__next__' if is_py3 else 'next' + iter_slot_names = generator.get_function_slot_names(name) + if iter_slot_names: + yield LazyKnownContexts( + generator.execute_function_slots(iter_slot_names) + ) + else: + debug.warning('Instance has no __next__ function in %s.', generator) + else: + for lazy_context in generator.py__iter__(): + yield lazy_context + + @abstractproperty + def name(self): + pass + + def _create_init_execution(self, class_context, func_node): + bound_method = BoundMethod( + self.evaluator, self, class_context, self.parent_context, func_node + ) + return self.function_execution_cls( + self, + class_context.parent_context, + bound_method, + self.var_args + ) + + def create_init_executions(self): + for name in self.get_function_slot_names('__init__'): + if isinstance(name, LazyInstanceName): + yield self._create_init_execution(name.class_context, name.tree_name.parent) + + @evaluator_method_cache() + def create_instance_context(self, class_context, node): + if node.parent.type in ('funcdef', 'classdef'): + node = node.parent + scope = get_parent_scope(node) + if scope == class_context.tree_node: + return class_context + else: + parent_context = self.create_instance_context(class_context, scope) + if scope.type == 'funcdef': + if scope.name.value == '__init__' and parent_context == class_context: + return self._create_init_execution(class_context, scope) + else: + bound_method = BoundMethod( + self.evaluator, self, class_context, + parent_context, scope + ) + return bound_method.get_function_execution() + elif scope.type == 'classdef': + class_context = ClassContext(self.evaluator, scope, parent_context) + return class_context + elif scope.type == 'comp_for': + # Comprehensions currently don't have a special scope in Jedi. + return self.create_instance_context(class_context, scope) + else: + raise NotImplementedError + return class_context + + def __repr__(self): + return "<%s of %s(%s)>" % (self.__class__.__name__, self.class_context, + self.var_args) + + +class CompiledInstance(AbstractInstanceContext): + def __init__(self, *args, **kwargs): + super(CompiledInstance, self).__init__(*args, **kwargs) + # I don't think that dynamic append lookups should happen here. That + # sounds more like something that should go to py__iter__. + if self.class_context.name.string_name in ['list', 'set'] \ + and self.parent_context.get_root_context() == self.evaluator.BUILTINS: + # compare the module path with the builtin name. + self.var_args = iterable.get_dynamic_array_instance(self) + + @property + def name(self): + return compiled.CompiledContextName(self, self.class_context.name.string_name) + + def create_instance_context(self, class_context, node): + if get_parent_scope(node).type == 'classdef': + return class_context + else: + return super(CompiledInstance, self).create_instance_context(class_context, node) + + +class TreeInstance(AbstractInstanceContext): + def __init__(self, evaluator, parent_context, class_context, var_args): + super(TreeInstance, self).__init__(evaluator, parent_context, + class_context, var_args) + self.tree_node = class_context.tree_node + + @property + def name(self): + return filters.ContextName(self, self.class_context.name.tree_name) + + +class AnonymousInstance(TreeInstance): + function_execution_cls = AnonymousInstanceFunctionExecution + + def __init__(self, evaluator, parent_context, class_context): + super(AnonymousInstance, self).__init__( + evaluator, + parent_context, + class_context, + var_args=AnonymousArguments(), + ) + + +class CompiledInstanceName(compiled.CompiledName): + def __init__(self, evaluator, instance, parent_context, name): + super(CompiledInstanceName, self).__init__(evaluator, parent_context, name) + self._instance = instance + + @iterator_to_context_set + def infer(self): + for result_context in super(CompiledInstanceName, self).infer(): + if isinstance(result_context, FunctionContext): + parent_context = result_context.parent_context + while parent_context.is_class(): + parent_context = parent_context.parent_context + + yield BoundMethod( + result_context.evaluator, self._instance, self.parent_context, + parent_context, result_context.tree_node + ) + else: + if result_context.api_type == 'function': + yield CompiledBoundMethod(result_context) + else: + yield result_context + + +class CompiledInstanceClassFilter(compiled.CompiledObjectFilter): + name_class = CompiledInstanceName + + def __init__(self, evaluator, instance, compiled_object): + super(CompiledInstanceClassFilter, self).__init__( + evaluator, + compiled_object, + is_instance=True, + ) + self._instance = instance + + def _create_name(self, name): + return self.name_class( + self._evaluator, self._instance, self._compiled_object, name) + + +class BoundMethod(FunctionContext): + def __init__(self, evaluator, instance, class_context, *args, **kwargs): + super(BoundMethod, self).__init__(evaluator, *args, **kwargs) + self._instance = instance + self._class_context = class_context + + def get_function_execution(self, arguments=None): + if arguments is None: + arguments = AnonymousArguments() + return AnonymousInstanceFunctionExecution( + self._instance, self.parent_context, self, arguments) + else: + return InstanceFunctionExecution( + self._instance, self.parent_context, self, arguments) + + +class CompiledBoundMethod(compiled.CompiledObject): + def __init__(self, func): + super(CompiledBoundMethod, self).__init__( + func.evaluator, func.obj, func.parent_context, func.tree_node) + + def get_param_names(self): + return list(super(CompiledBoundMethod, self).get_param_names())[1:] + + +class InstanceNameDefinition(filters.TreeNameDefinition): + def infer(self): + return super(InstanceNameDefinition, self).infer() + + +class LazyInstanceName(filters.TreeNameDefinition): + """ + This name calculates the parent_context lazily. + """ + def __init__(self, instance, class_context, tree_name): + self._instance = instance + self.class_context = class_context + self.tree_name = tree_name + + @property + def parent_context(self): + return self._instance.create_instance_context(self.class_context, self.tree_name) + + +class LazyInstanceClassName(LazyInstanceName): + @iterator_to_context_set + def infer(self): + for result_context in super(LazyInstanceClassName, self).infer(): + if isinstance(result_context, FunctionContext): + # Classes are never used to resolve anything within the + # functions. Only other functions and modules will resolve + # those things. + parent_context = result_context.parent_context + while parent_context.is_class(): + parent_context = parent_context.parent_context + + yield BoundMethod( + result_context.evaluator, self._instance, self.class_context, + parent_context, result_context.tree_node + ) + else: + for c in apply_py__get__(result_context, self._instance): + yield c + + +class InstanceClassFilter(filters.ParserTreeFilter): + name_class = LazyInstanceClassName + + def __init__(self, evaluator, context, class_context, origin_scope): + super(InstanceClassFilter, self).__init__( + evaluator=evaluator, + context=context, + node_context=class_context, + origin_scope=origin_scope + ) + self._class_context = class_context + + def _equals_origin_scope(self): + node = self._origin_scope + while node is not None: + if node == self._parser_scope or node == self.context: + return True + node = get_parent_scope(node) + return False + + def _access_possible(self, name): + return not name.value.startswith('__') or name.value.endswith('__') \ + or self._equals_origin_scope() + + def _filter(self, names): + names = super(InstanceClassFilter, self)._filter(names) + return [name for name in names if self._access_possible(name)] + + def _convert_names(self, names): + return [self.name_class(self.context, self._class_context, name) for name in names] + + +class SelfNameFilter(InstanceClassFilter): + name_class = LazyInstanceName + + def _filter(self, names): + names = self._filter_self_names(names) + if isinstance(self._parser_scope, compiled.CompiledObject) and False: + # This would be for builtin skeletons, which are not yet supported. + return list(names) + else: + start, end = self._parser_scope.start_pos, self._parser_scope.end_pos + return [n for n in names if start < n.start_pos < end] + + def _filter_self_names(self, names): + for name in names: + trailer = name.parent + if trailer.type == 'trailer' \ + and len(trailer.children) == 2 \ + and trailer.children[0] == '.': + if name.is_definition() and self._access_possible(name): + yield name + + def _check_flows(self, names): + return names + + +class InstanceVarArgs(AbstractArguments): + def __init__(self, execution_context, var_args): + self._execution_context = execution_context + self._var_args = var_args + + @memoize_method + def _get_var_args(self): + return self._var_args + + @property + def argument_node(self): + return self._var_args.argument_node + + @property + def trailer(self): + return self._var_args.trailer + + def unpack(self, func=None): + yield None, LazyKnownContext(self._execution_context.instance) + for values in self._get_var_args().unpack(func): + yield values + + def get_calling_nodes(self): + return self._get_var_args().get_calling_nodes() diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/context/iterable.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/context/iterable.py new file mode 100644 index 0000000..d0f468e --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/context/iterable.py @@ -0,0 +1,691 @@ +""" +Contains all classes and functions to deal with lists, dicts, generators and +iterators in general. + +Array modifications +******************* + +If the content of an array (``set``/``list``) is requested somewhere, the +current module will be checked for appearances of ``arr.append``, +``arr.insert``, etc. If the ``arr`` name points to an actual array, the +content will be added + +This can be really cpu intensive, as you can imagine. Because |jedi| has to +follow **every** ``append`` and check wheter it's the right array. However this +works pretty good, because in *slow* cases, the recursion detector and other +settings will stop this process. + +It is important to note that: + +1. Array modfications work only in the current module. +2. Jedi only checks Array additions; ``list.pop``, etc are ignored. +""" +from jedi import debug +from jedi import settings +from jedi.evaluate import compiled +from jedi.evaluate import analysis +from jedi.evaluate import recursion +from jedi.evaluate.lazy_context import LazyKnownContext, LazyKnownContexts, \ + LazyTreeContext +from jedi.evaluate.helpers import is_string, predefine_names, evaluate_call_of_leaf +from jedi.evaluate.utils import safe_property +from jedi.evaluate.utils import to_list +from jedi.evaluate.cache import evaluator_method_cache +from jedi.evaluate.filters import ParserTreeFilter, has_builtin_methods, \ + register_builtin_method, SpecialMethodFilter +from jedi.evaluate.base_context import ContextSet, NO_CONTEXTS, Context, \ + TreeContext, ContextualizedNode +from jedi.parser_utils import get_comp_fors + + +class AbstractIterable(Context): + builtin_methods = {} + api_type = 'instance' + + def __init__(self, evaluator): + super(AbstractIterable, self).__init__(evaluator, evaluator.BUILTINS) + + def get_filters(self, search_global, until_position=None, origin_scope=None): + raise NotImplementedError + + @property + def name(self): + return compiled.CompiledContextName(self, self.array_type) + + +@has_builtin_methods +class GeneratorMixin(object): + array_type = None + + @register_builtin_method('send') + @register_builtin_method('next', python_version_match=2) + @register_builtin_method('__next__', python_version_match=3) + def py__next__(self): + # TODO add TypeError if params are given. + return ContextSet.from_sets(lazy_context.infer() for lazy_context in self.py__iter__()) + + def get_filters(self, search_global, until_position=None, origin_scope=None): + gen_obj = compiled.get_special_object(self.evaluator, 'GENERATOR_OBJECT') + yield SpecialMethodFilter(self, self.builtin_methods, gen_obj) + for filter in gen_obj.get_filters(search_global): + yield filter + + def py__bool__(self): + return True + + def py__class__(self): + gen_obj = compiled.get_special_object(self.evaluator, 'GENERATOR_OBJECT') + return gen_obj.py__class__() + + @property + def name(self): + return compiled.CompiledContextName(self, 'generator') + + +class Generator(GeneratorMixin, Context): + """Handling of `yield` functions.""" + def __init__(self, evaluator, func_execution_context): + super(Generator, self).__init__(evaluator, parent_context=evaluator.BUILTINS) + self._func_execution_context = func_execution_context + + def py__iter__(self): + return self._func_execution_context.get_yield_values() + + def __repr__(self): + return "<%s of %s>" % (type(self).__name__, self._func_execution_context) + + +class CompForContext(TreeContext): + @classmethod + def from_comp_for(cls, parent_context, comp_for): + return cls(parent_context.evaluator, parent_context, comp_for) + + def __init__(self, evaluator, parent_context, comp_for): + super(CompForContext, self).__init__(evaluator, parent_context) + self.tree_node = comp_for + + def get_node(self): + return self.tree_node + + def get_filters(self, search_global, until_position=None, origin_scope=None): + yield ParserTreeFilter(self.evaluator, self) + + +class Comprehension(AbstractIterable): + @staticmethod + def from_atom(evaluator, context, atom): + bracket = atom.children[0] + if bracket == '{': + if atom.children[1].children[1] == ':': + cls = DictComprehension + else: + cls = SetComprehension + elif bracket == '(': + cls = GeneratorComprehension + elif bracket == '[': + cls = ListComprehension + return cls(evaluator, context, atom) + + def __init__(self, evaluator, defining_context, atom): + super(Comprehension, self).__init__(evaluator) + self._defining_context = defining_context + self._atom = atom + + def _get_comprehension(self): + # The atom contains a testlist_comp + return self._atom.children[1] + + def _get_comp_for(self): + # The atom contains a testlist_comp + return self._get_comprehension().children[1] + + def _eval_node(self, index=0): + """ + The first part `x + 1` of the list comprehension: + + [x + 1 for x in foo] + """ + return self._get_comprehension().children[index] + + @evaluator_method_cache() + def _get_comp_for_context(self, parent_context, comp_for): + # TODO shouldn't this be part of create_context? + return CompForContext.from_comp_for(parent_context, comp_for) + + def _nested(self, comp_fors, parent_context=None): + comp_for = comp_fors[0] + input_node = comp_for.children[3] + parent_context = parent_context or self._defining_context + input_types = parent_context.eval_node(input_node) + + cn = ContextualizedNode(parent_context, input_node) + iterated = input_types.iterate(cn) + exprlist = comp_for.children[1] + for i, lazy_context in enumerate(iterated): + types = lazy_context.infer() + dct = unpack_tuple_to_dict(parent_context, types, exprlist) + context_ = self._get_comp_for_context( + parent_context, + comp_for, + ) + with predefine_names(context_, comp_for, dct): + try: + for result in self._nested(comp_fors[1:], context_): + yield result + except IndexError: + iterated = context_.eval_node(self._eval_node()) + if self.array_type == 'dict': + yield iterated, context_.eval_node(self._eval_node(2)) + else: + yield iterated + + @evaluator_method_cache(default=[]) + @to_list + def _iterate(self): + comp_fors = tuple(get_comp_fors(self._get_comp_for())) + for result in self._nested(comp_fors): + yield result + + def py__iter__(self): + for set_ in self._iterate(): + yield LazyKnownContexts(set_) + + def __repr__(self): + return "<%s of %s>" % (type(self).__name__, self._atom) + + +class ArrayMixin(object): + def get_filters(self, search_global, until_position=None, origin_scope=None): + # `array.type` is a string with the type, e.g. 'list'. + compiled_obj = compiled.builtin_from_name(self.evaluator, self.array_type) + yield SpecialMethodFilter(self, self.builtin_methods, compiled_obj) + for typ in compiled_obj.execute_evaluated(self): + for filter in typ.get_filters(): + yield filter + + def py__bool__(self): + return None # We don't know the length, because of appends. + + def py__class__(self): + return compiled.builtin_from_name(self.evaluator, self.array_type) + + @safe_property + def parent(self): + return self.evaluator.BUILTINS + + def dict_values(self): + return ContextSet.from_sets( + self._defining_context.eval_node(v) + for k, v in self._items() + ) + + +class ListComprehension(ArrayMixin, Comprehension): + array_type = 'list' + + def py__getitem__(self, index): + if isinstance(index, slice): + return ContextSet(self) + + all_types = list(self.py__iter__()) + return all_types[index].infer() + + +class SetComprehension(ArrayMixin, Comprehension): + array_type = 'set' + + +@has_builtin_methods +class DictComprehension(ArrayMixin, Comprehension): + array_type = 'dict' + + def _get_comp_for(self): + return self._get_comprehension().children[3] + + def py__iter__(self): + for keys, values in self._iterate(): + yield LazyKnownContexts(keys) + + def py__getitem__(self, index): + for keys, values in self._iterate(): + for k in keys: + if isinstance(k, compiled.CompiledObject): + if k.obj == index: + return values + return self.dict_values() + + def dict_values(self): + return ContextSet.from_sets(values for keys, values in self._iterate()) + + @register_builtin_method('values') + def _imitate_values(self): + lazy_context = LazyKnownContexts(self.dict_values()) + return ContextSet(FakeSequence(self.evaluator, 'list', [lazy_context])) + + @register_builtin_method('items') + def _imitate_items(self): + items = ContextSet.from_iterable( + FakeSequence( + self.evaluator, 'tuple' + (LazyKnownContexts(keys), LazyKnownContexts(values)) + ) for keys, values in self._iterate() + ) + + return create_evaluated_sequence_set(self.evaluator, items, sequence_type='list') + + +class GeneratorComprehension(GeneratorMixin, Comprehension): + pass + + +class SequenceLiteralContext(ArrayMixin, AbstractIterable): + mapping = {'(': 'tuple', + '[': 'list', + '{': 'set'} + + def __init__(self, evaluator, defining_context, atom): + super(SequenceLiteralContext, self).__init__(evaluator) + self.atom = atom + self._defining_context = defining_context + + if self.atom.type in ('testlist_star_expr', 'testlist'): + self.array_type = 'tuple' + else: + self.array_type = SequenceLiteralContext.mapping[atom.children[0]] + """The builtin name of the array (list, set, tuple or dict).""" + + def py__getitem__(self, index): + """Here the index is an int/str. Raises IndexError/KeyError.""" + if self.array_type == 'dict': + for key, value in self._items(): + for k in self._defining_context.eval_node(key): + if isinstance(k, compiled.CompiledObject) \ + and index == k.obj: + return self._defining_context.eval_node(value) + raise KeyError('No key found in dictionary %s.' % self) + + # Can raise an IndexError + if isinstance(index, slice): + return ContextSet(self) + else: + return self._defining_context.eval_node(self._items()[index]) + + def py__iter__(self): + """ + While values returns the possible values for any array field, this + function returns the value for a certain index. + """ + if self.array_type == 'dict': + # Get keys. + types = ContextSet() + for k, _ in self._items(): + types |= self._defining_context.eval_node(k) + # We don't know which dict index comes first, therefore always + # yield all the types. + for _ in types: + yield LazyKnownContexts(types) + else: + for node in self._items(): + yield LazyTreeContext(self._defining_context, node) + + for addition in check_array_additions(self._defining_context, self): + yield addition + + def _values(self): + """Returns a list of a list of node.""" + if self.array_type == 'dict': + return ContextSet.from_sets(v for k, v in self._items()) + else: + return self._items() + + def _items(self): + c = self.atom.children + + if self.atom.type in ('testlist_star_expr', 'testlist'): + return c[::2] + + array_node = c[1] + if array_node in (']', '}', ')'): + return [] # Direct closing bracket, doesn't contain items. + + if array_node.type == 'testlist_comp': + return array_node.children[::2] + elif array_node.type == 'dictorsetmaker': + kv = [] + iterator = iter(array_node.children) + for key in iterator: + op = next(iterator, None) + if op is None or op == ',': + kv.append(key) # A set. + else: + assert op == ':' # A dict. + kv.append((key, next(iterator))) + next(iterator, None) # Possible comma. + return kv + else: + return [array_node] + + def exact_key_items(self): + """ + Returns a generator of tuples like dict.items(), where the key is + resolved (as a string) and the values are still lazy contexts. + """ + for key_node, value in self._items(): + for key in self._defining_context.eval_node(key_node): + if is_string(key): + yield key.obj, LazyTreeContext(self._defining_context, value) + + def __repr__(self): + return "<%s of %s>" % (self.__class__.__name__, self.atom) + + +@has_builtin_methods +class DictLiteralContext(SequenceLiteralContext): + array_type = 'dict' + + def __init__(self, evaluator, defining_context, atom): + super(SequenceLiteralContext, self).__init__(evaluator) + self._defining_context = defining_context + self.atom = atom + + @register_builtin_method('values') + def _imitate_values(self): + lazy_context = LazyKnownContexts(self.dict_values()) + return ContextSet(FakeSequence(self.evaluator, 'list', [lazy_context])) + + @register_builtin_method('items') + def _imitate_items(self): + lazy_contexts = [ + LazyKnownContext(FakeSequence( + self.evaluator, 'tuple', + (LazyTreeContext(self._defining_context, key_node), + LazyTreeContext(self._defining_context, value_node)) + )) for key_node, value_node in self._items() + ] + + return ContextSet(FakeSequence(self.evaluator, 'list', lazy_contexts)) + + +class _FakeArray(SequenceLiteralContext): + def __init__(self, evaluator, container, type): + super(SequenceLiteralContext, self).__init__(evaluator) + self.array_type = type + self.atom = container + # TODO is this class really needed? + + +class FakeSequence(_FakeArray): + def __init__(self, evaluator, array_type, lazy_context_list): + """ + type should be one of "tuple", "list" + """ + super(FakeSequence, self).__init__(evaluator, None, array_type) + self._lazy_context_list = lazy_context_list + + def py__getitem__(self, index): + return self._lazy_context_list[index].infer() + + def py__iter__(self): + return self._lazy_context_list + + def py__bool__(self): + return bool(len(self._lazy_context_list)) + + def __repr__(self): + return "<%s of %s>" % (type(self).__name__, self._lazy_context_list) + + +class FakeDict(_FakeArray): + def __init__(self, evaluator, dct): + super(FakeDict, self).__init__(evaluator, dct, 'dict') + self._dct = dct + + def py__iter__(self): + for key in self._dct: + yield LazyKnownContext(compiled.create(self.evaluator, key)) + + def py__getitem__(self, index): + return self._dct[index].infer() + + def dict_values(self): + return ContextSet.from_sets(lazy_context.infer() for lazy_context in self._dct.values()) + + def exact_key_items(self): + return self._dct.items() + + +class MergedArray(_FakeArray): + def __init__(self, evaluator, arrays): + super(MergedArray, self).__init__(evaluator, arrays, arrays[-1].array_type) + self._arrays = arrays + + def py__iter__(self): + for array in self._arrays: + for lazy_context in array.py__iter__(): + yield lazy_context + + def py__getitem__(self, index): + return ContextSet.from_sets(lazy_context.infer() for lazy_context in self.py__iter__()) + + def _items(self): + for array in self._arrays: + for a in array._items(): + yield a + + def __len__(self): + return sum(len(a) for a in self._arrays) + + +def unpack_tuple_to_dict(context, types, exprlist): + """ + Unpacking tuple assignments in for statements and expr_stmts. + """ + if exprlist.type == 'name': + return {exprlist.value: types} + elif exprlist.type == 'atom' and exprlist.children[0] in '([': + return unpack_tuple_to_dict(context, types, exprlist.children[1]) + elif exprlist.type in ('testlist', 'testlist_comp', 'exprlist', + 'testlist_star_expr'): + dct = {} + parts = iter(exprlist.children[::2]) + n = 0 + for lazy_context in types.iterate(exprlist): + n += 1 + try: + part = next(parts) + except StopIteration: + # TODO this context is probably not right. + analysis.add(context, 'value-error-too-many-values', part, + message="ValueError: too many values to unpack (expected %s)" % n) + else: + dct.update(unpack_tuple_to_dict(context, lazy_context.infer(), part)) + has_parts = next(parts, None) + if types and has_parts is not None: + # TODO this context is probably not right. + analysis.add(context, 'value-error-too-few-values', has_parts, + message="ValueError: need more than %s values to unpack" % n) + return dct + elif exprlist.type == 'power' or exprlist.type == 'atom_expr': + # Something like ``arr[x], var = ...``. + # This is something that is not yet supported, would also be difficult + # to write into a dict. + return {} + elif exprlist.type == 'star_expr': # `a, *b, c = x` type unpackings + # Currently we're not supporting them. + return {} + raise NotImplementedError + + +def check_array_additions(context, sequence): + """ Just a mapper function for the internal _check_array_additions """ + if sequence.array_type not in ('list', 'set'): + # TODO also check for dict updates + return NO_CONTEXTS + + return _check_array_additions(context, sequence) + + +@evaluator_method_cache(default=NO_CONTEXTS) +@debug.increase_indent +def _check_array_additions(context, sequence): + """ + Checks if a `Array` has "add" (append, insert, extend) statements: + + >>> a = [""] + >>> a.append(1) + """ + from jedi.evaluate import arguments + + debug.dbg('Dynamic array search for %s' % sequence, color='MAGENTA') + module_context = context.get_root_context() + if not settings.dynamic_array_additions or isinstance(module_context, compiled.CompiledObject): + debug.dbg('Dynamic array search aborted.', color='MAGENTA') + return ContextSet() + + def find_additions(context, arglist, add_name): + params = list(arguments.TreeArguments(context.evaluator, context, arglist).unpack()) + result = set() + if add_name in ['insert']: + params = params[1:] + if add_name in ['append', 'add', 'insert']: + for key, whatever in params: + result.add(whatever) + elif add_name in ['extend', 'update']: + for key, lazy_context in params: + result |= set(lazy_context.infer().iterate()) + return result + + temp_param_add, settings.dynamic_params_for_other_modules = \ + settings.dynamic_params_for_other_modules, False + + is_list = sequence.name.string_name == 'list' + search_names = (['append', 'extend', 'insert'] if is_list else ['add', 'update']) + + added_types = set() + for add_name in search_names: + try: + possible_names = module_context.tree_node.get_used_names()[add_name] + except KeyError: + continue + else: + for name in possible_names: + context_node = context.tree_node + if not (context_node.start_pos < name.start_pos < context_node.end_pos): + continue + trailer = name.parent + power = trailer.parent + trailer_pos = power.children.index(trailer) + try: + execution_trailer = power.children[trailer_pos + 1] + except IndexError: + continue + else: + if execution_trailer.type != 'trailer' \ + or execution_trailer.children[0] != '(' \ + or execution_trailer.children[1] == ')': + continue + + random_context = context.create_context(name) + + with recursion.execution_allowed(context.evaluator, power) as allowed: + if allowed: + found = evaluate_call_of_leaf( + random_context, + name, + cut_own_trailer=True + ) + if sequence in found: + # The arrays match. Now add the results + added_types |= find_additions( + random_context, + execution_trailer.children[1], + add_name + ) + + # reset settings + settings.dynamic_params_for_other_modules = temp_param_add + debug.dbg('Dynamic array result %s' % added_types, color='MAGENTA') + return added_types + + +def get_dynamic_array_instance(instance): + """Used for set() and list() instances.""" + if not settings.dynamic_array_additions: + return instance.var_args + + ai = _ArrayInstance(instance) + from jedi.evaluate import arguments + return arguments.ValuesArguments([ContextSet(ai)]) + + +class _ArrayInstance(object): + """ + Used for the usage of set() and list(). + This is definitely a hack, but a good one :-) + It makes it possible to use set/list conversions. + + In contrast to Array, ListComprehension and all other iterable types, this + is something that is only used inside `evaluate/compiled/fake/builtins.py` + and therefore doesn't need filters, `py__bool__` and so on, because + we don't use these operations in `builtins.py`. + """ + def __init__(self, instance): + self.instance = instance + self.var_args = instance.var_args + + def py__iter__(self): + var_args = self.var_args + try: + _, lazy_context = next(var_args.unpack()) + except StopIteration: + pass + else: + for lazy in lazy_context.infer().iterate(): + yield lazy + + from jedi.evaluate import arguments + if isinstance(var_args, arguments.TreeArguments): + additions = _check_array_additions(var_args.context, self.instance) + for addition in additions: + yield addition + + def iterate(self, contextualized_node=None): + return self.py__iter__() + + +class Slice(Context): + def __init__(self, context, start, stop, step): + super(Slice, self).__init__( + context.evaluator, + parent_context=context.evaluator.BUILTINS + ) + self._context = context + # all of them are either a Precedence or None. + self._start = start + self._stop = stop + self._step = step + + @property + def obj(self): + """ + Imitate CompiledObject.obj behavior and return a ``builtin.slice()`` + object. + """ + def get(element): + if element is None: + return None + + result = self._context.eval_node(element) + if len(result) != 1: + # For simplicity, we want slices to be clear defined with just + # one type. Otherwise we will return an empty slice object. + raise IndexError + try: + return list(result)[0].obj + except AttributeError: + return None + + try: + return slice(get(self._start), get(self._stop), get(self._step)) + except IndexError: + return slice(None, None, None) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/context/klass.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/context/klass.py new file mode 100644 index 0000000..b7d61d3 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/context/klass.py @@ -0,0 +1,197 @@ +""" +Like described in the :mod:`parso.python.tree` module, +there's a need for an ast like module to represent the states of parsed +modules. + +But now there are also structures in Python that need a little bit more than +that. An ``Instance`` for example is only a ``Class`` before it is +instantiated. This class represents these cases. + +So, why is there also a ``Class`` class here? Well, there are decorators and +they change classes in Python 3. + +Representation modules also define "magic methods". Those methods look like +``py__foo__`` and are typically mappable to the Python equivalents ``__call__`` +and others. Here's a list: + +====================================== ======================================== +**Method** **Description** +-------------------------------------- ---------------------------------------- +py__call__(params: Array) On callable objects, returns types. +py__bool__() Returns True/False/None; None means that + there's no certainty. +py__bases__() Returns a list of base classes. +py__mro__() Returns a list of classes (the mro). +py__iter__() Returns a generator of a set of types. +py__class__() Returns the class of an instance. +py__getitem__(index: int/str) Returns a a set of types of the index. + Can raise an IndexError/KeyError. +py__file__() Only on modules. Returns None if does + not exist. +py__package__() Only on modules. For the import system. +py__path__() Only on modules. For the import system. +py__get__(call_object) Only on instances. Simulates + descriptors. +py__doc__(include_call_signature: Returns the docstring for a context. + bool) +====================================== ======================================== + +""" +from jedi._compatibility import use_metaclass +from jedi.evaluate.cache import evaluator_method_cache, CachedMetaClass +from jedi.evaluate import compiled +from jedi.evaluate.lazy_context import LazyKnownContext +from jedi.evaluate.filters import ParserTreeFilter, TreeNameDefinition, \ + ContextName, AnonymousInstanceParamName +from jedi.evaluate.base_context import ContextSet, iterator_to_context_set, \ + TreeContext + + +def apply_py__get__(context, base_context): + try: + method = context.py__get__ + except AttributeError: + yield context + else: + for descriptor_context in method(base_context): + yield descriptor_context + + +class ClassName(TreeNameDefinition): + def __init__(self, parent_context, tree_name, name_context): + super(ClassName, self).__init__(parent_context, tree_name) + self._name_context = name_context + + @iterator_to_context_set + def infer(self): + # TODO this _name_to_types might get refactored and be a part of the + # parent class. Once it is, we can probably just overwrite method to + # achieve this. + from jedi.evaluate.syntax_tree import tree_name_to_contexts + inferred = tree_name_to_contexts( + self.parent_context.evaluator, self._name_context, self.tree_name) + + for result_context in inferred: + for c in apply_py__get__(result_context, self.parent_context): + yield c + + +class ClassFilter(ParserTreeFilter): + name_class = ClassName + + def _convert_names(self, names): + return [self.name_class(self.context, name, self._node_context) + for name in names] + + +class ClassContext(use_metaclass(CachedMetaClass, TreeContext)): + """ + This class is not only important to extend `tree.Class`, it is also a + important for descriptors (if the descriptor methods are evaluated or not). + """ + api_type = 'class' + + def __init__(self, evaluator, parent_context, classdef): + super(ClassContext, self).__init__(evaluator, parent_context=parent_context) + self.tree_node = classdef + + @evaluator_method_cache(default=()) + def py__mro__(self): + def add(cls): + if cls not in mro: + mro.append(cls) + + mro = [self] + # TODO Do a proper mro resolution. Currently we are just listing + # classes. However, it's a complicated algorithm. + for lazy_cls in self.py__bases__(): + # TODO there's multiple different mro paths possible if this yields + # multiple possibilities. Could be changed to be more correct. + for cls in lazy_cls.infer(): + # TODO detect for TypeError: duplicate base class str, + # e.g. `class X(str, str): pass` + try: + mro_method = cls.py__mro__ + except AttributeError: + # TODO add a TypeError like: + """ + >>> class Y(lambda: test): pass + Traceback (most recent call last): + File "", line 1, in + TypeError: function() argument 1 must be code, not str + >>> class Y(1): pass + Traceback (most recent call last): + File "", line 1, in + TypeError: int() takes at most 2 arguments (3 given) + """ + pass + else: + add(cls) + for cls_new in mro_method(): + add(cls_new) + return tuple(mro) + + @evaluator_method_cache(default=()) + def py__bases__(self): + arglist = self.tree_node.get_super_arglist() + if arglist: + from jedi.evaluate import arguments + args = arguments.TreeArguments(self.evaluator, self, arglist) + return [value for key, value in args.unpack() if key is None] + else: + return [LazyKnownContext(compiled.create(self.evaluator, object))] + + def py__call__(self, params): + from jedi.evaluate.context import TreeInstance + return ContextSet(TreeInstance(self.evaluator, self.parent_context, self, params)) + + def py__class__(self): + return compiled.create(self.evaluator, type) + + def get_params(self): + from jedi.evaluate.context import AnonymousInstance + anon = AnonymousInstance(self.evaluator, self.parent_context, self) + return [AnonymousInstanceParamName(anon, param.name) for param in self.funcdef.get_params()] + + def get_filters(self, search_global, until_position=None, origin_scope=None, is_instance=False): + if search_global: + yield ParserTreeFilter( + self.evaluator, + context=self, + until_position=until_position, + origin_scope=origin_scope + ) + else: + for cls in self.py__mro__(): + if isinstance(cls, compiled.CompiledObject): + for filter in cls.get_filters(is_instance=is_instance): + yield filter + else: + yield ClassFilter( + self.evaluator, self, node_context=cls, + origin_scope=origin_scope) + + def is_class(self): + return True + + def get_function_slot_names(self, name): + for filter in self.get_filters(search_global=False): + names = filter.get(name) + if names: + return names + return [] + + def get_param_names(self): + for name in self.get_function_slot_names('__init__'): + for context_ in name.infer(): + try: + method = context_.get_param_names + except AttributeError: + pass + else: + return list(method())[1:] + return [] + + @property + def name(self): + return ContextName(self, self.tree_node.name) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/context/module.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/context/module.py new file mode 100644 index 0000000..5ba92cd --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/context/module.py @@ -0,0 +1,213 @@ +import pkgutil +import imp +import re +import os + +from parso import python_bytes_to_unicode + +from jedi._compatibility import use_metaclass +from jedi.evaluate.cache import CachedMetaClass, evaluator_method_cache +from jedi.evaluate.filters import GlobalNameFilter, ContextNameMixin, \ + AbstractNameDefinition, ParserTreeFilter, DictFilter +from jedi.evaluate import compiled +from jedi.evaluate.base_context import TreeContext +from jedi.evaluate.imports import SubModuleName, infer_import + + +class _ModuleAttributeName(AbstractNameDefinition): + """ + For module attributes like __file__, __str__ and so on. + """ + api_type = 'instance' + + def __init__(self, parent_module, string_name): + self.parent_context = parent_module + self.string_name = string_name + + def infer(self): + return compiled.create(self.parent_context.evaluator, str).execute_evaluated() + + +class ModuleName(ContextNameMixin, AbstractNameDefinition): + start_pos = 1, 0 + + def __init__(self, context, name): + self._context = context + self._name = name + + @property + def string_name(self): + return self._name + + +class ModuleContext(use_metaclass(CachedMetaClass, TreeContext)): + api_type = 'module' + parent_context = None + + def __init__(self, evaluator, module_node, path): + super(ModuleContext, self).__init__(evaluator, parent_context=None) + self.tree_node = module_node + self._path = path + + def get_filters(self, search_global, until_position=None, origin_scope=None): + yield ParserTreeFilter( + self.evaluator, + context=self, + until_position=until_position, + origin_scope=origin_scope + ) + yield GlobalNameFilter(self, self.tree_node) + yield DictFilter(self._sub_modules_dict()) + yield DictFilter(self._module_attributes_dict()) + for star_module in self.star_imports(): + yield next(star_module.get_filters(search_global)) + + # I'm not sure if the star import cache is really that effective anymore + # with all the other really fast import caches. Recheck. Also we would need + # to push the star imports into Evaluator.modules, if we reenable this. + @evaluator_method_cache([]) + def star_imports(self): + modules = [] + for i in self.tree_node.iter_imports(): + if i.is_star_import(): + name = i.get_paths()[-1][-1] + new = infer_import(self, name) + for module in new: + if isinstance(module, ModuleContext): + modules += module.star_imports() + modules += new + return modules + + @evaluator_method_cache() + def _module_attributes_dict(self): + names = ['__file__', '__package__', '__doc__', '__name__'] + # All the additional module attributes are strings. + return dict((n, _ModuleAttributeName(self, n)) for n in names) + + @property + def _string_name(self): + """ This is used for the goto functions. """ + if self._path is None: + return '' # no path -> empty name + else: + sep = (re.escape(os.path.sep),) * 2 + r = re.search(r'([^%s]*?)(%s__init__)?(\.py|\.so)?$' % sep, self._path) + # Remove PEP 3149 names + return re.sub('\.[a-z]+-\d{2}[mud]{0,3}$', '', r.group(1)) + + @property + @evaluator_method_cache() + def name(self): + return ModuleName(self, self._string_name) + + def _get_init_directory(self): + """ + :return: The path to the directory of a package. None in case it's not + a package. + """ + for suffix, _, _ in imp.get_suffixes(): + ending = '__init__' + suffix + py__file__ = self.py__file__() + if py__file__ is not None and py__file__.endswith(ending): + # Remove the ending, including the separator. + return self.py__file__()[:-len(ending) - 1] + return None + + def py__name__(self): + for name, module in self.evaluator.modules.items(): + if module == self and name != '': + return name + + return '__main__' + + def py__file__(self): + """ + In contrast to Python's __file__ can be None. + """ + if self._path is None: + return None + + return os.path.abspath(self._path) + + def py__package__(self): + if self._get_init_directory() is None: + return re.sub(r'\.?[^\.]+$', '', self.py__name__()) + else: + return self.py__name__() + + def _py__path__(self): + search_path = self.evaluator.project.sys_path + init_path = self.py__file__() + if os.path.basename(init_path) == '__init__.py': + with open(init_path, 'rb') as f: + content = python_bytes_to_unicode(f.read(), errors='replace') + # these are strings that need to be used for namespace packages, + # the first one is ``pkgutil``, the second ``pkg_resources``. + options = ('declare_namespace(__name__)', 'extend_path(__path__') + if options[0] in content or options[1] in content: + # It is a namespace, now try to find the rest of the + # modules on sys_path or whatever the search_path is. + paths = set() + for s in search_path: + other = os.path.join(s, self.name.string_name) + if os.path.isdir(other): + paths.add(other) + if paths: + return list(paths) + # TODO I'm not sure if this is how nested namespace + # packages work. The tests are not really good enough to + # show that. + # Default to this. + return [self._get_init_directory()] + + @property + def py__path__(self): + """ + Not seen here, since it's a property. The callback actually uses a + variable, so use it like:: + + foo.py__path__(sys_path) + + In case of a package, this returns Python's __path__ attribute, which + is a list of paths (strings). + Raises an AttributeError if the module is not a package. + """ + path = self._get_init_directory() + + if path is None: + raise AttributeError('Only packages have __path__ attributes.') + else: + return self._py__path__ + + @evaluator_method_cache() + def _sub_modules_dict(self): + """ + Lists modules in the directory of this module (if this module is a + package). + """ + path = self._path + names = {} + if path is not None and path.endswith(os.path.sep + '__init__.py'): + mods = pkgutil.iter_modules([os.path.dirname(path)]) + for module_loader, name, is_pkg in mods: + # It's obviously a relative import to the current module. + names[name] = SubModuleName(self, name) + + # TODO add something like this in the future, its cleaner than the + # import hacks. + # ``os.path`` is a hardcoded exception, because it's a + # ``sys.modules`` modification. + # if str(self.name) == 'os': + # names.append(Name('path', parent_context=self)) + + return names + + def py__class__(self): + return compiled.get_special_object(self.evaluator, 'MODULE_CLASS') + + def __repr__(self): + return "<%s: %s@%s-%s>" % ( + self.__class__.__name__, self._string_name, + self.tree_node.start_pos[0], self.tree_node.end_pos[0]) + + diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/context/namespace.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/context/namespace.py new file mode 100644 index 0000000..e40c23a --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/context/namespace.py @@ -0,0 +1,74 @@ +import os +from itertools import chain + +from jedi._compatibility import use_metaclass +from jedi.evaluate.cache import evaluator_method_cache, CachedMetaClass +from jedi.evaluate import imports +from jedi.evaluate.filters import DictFilter, AbstractNameDefinition +from jedi.evaluate.base_context import NO_CONTEXTS, TreeContext + + +class ImplicitNSName(AbstractNameDefinition): + """ + Accessing names for implicit namespace packages should infer to nothing. + This object will prevent Jedi from raising exceptions + """ + def __init__(self, implicit_ns_context, string_name): + self.implicit_ns_context = implicit_ns_context + self.string_name = string_name + + def infer(self): + return NO_CONTEXTS + + def get_root_context(self): + return self.implicit_ns_context + + +class ImplicitNamespaceContext(use_metaclass(CachedMetaClass, TreeContext)): + """ + Provides support for implicit namespace packages + """ + api_type = 'module' + parent_context = None + + def __init__(self, evaluator, fullname): + super(ImplicitNamespaceContext, self).__init__(evaluator, parent_context=None) + self.evaluator = evaluator + self.fullname = fullname + + def get_filters(self, search_global, until_position=None, origin_scope=None): + yield DictFilter(self._sub_modules_dict()) + + @property + @evaluator_method_cache() + def name(self): + string_name = self.py__package__().rpartition('.')[-1] + return ImplicitNSName(self, string_name) + + def py__file__(self): + return None + + def py__package__(self): + """Return the fullname + """ + return self.fullname + + @property + def py__path__(self): + return lambda: [self.paths] + + @evaluator_method_cache() + def _sub_modules_dict(self): + names = {} + + paths = self.paths + file_names = chain.from_iterable(os.listdir(path) for path in paths) + mods = [ + file_name.rpartition('.')[0] if '.' in file_name else file_name + for file_name in file_names + if file_name != '__pycache__' + ] + + for name in mods: + names[name] = imports.SubModuleName(self, name) + return names diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/docstrings.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/docstrings.py new file mode 100644 index 0000000..f9c1141 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/docstrings.py @@ -0,0 +1,289 @@ +""" +Docstrings are another source of information for functions and classes. +:mod:`jedi.evaluate.dynamic` tries to find all executions of functions, while +the docstring parsing is much easier. There are three different types of +docstrings that |jedi| understands: + +- `Sphinx `_ +- `Epydoc `_ +- `Numpydoc `_ + +For example, the sphinx annotation ``:type foo: str`` clearly states that the +type of ``foo`` is ``str``. + +As an addition to parameter searching, this module also provides return +annotations. +""" + +import re +from textwrap import dedent + +from parso import parse + +from jedi._compatibility import u +from jedi.evaluate.utils import indent_block +from jedi.evaluate.cache import evaluator_method_cache +from jedi.evaluate.base_context import iterator_to_context_set, ContextSet, \ + NO_CONTEXTS +from jedi.evaluate.lazy_context import LazyKnownContexts + + +DOCSTRING_PARAM_PATTERNS = [ + r'\s*:type\s+%s:\s*([^\n]+)', # Sphinx + r'\s*:param\s+(\w+)\s+%s:[^\n]*', # Sphinx param with type + r'\s*@type\s+%s:\s*([^\n]+)', # Epydoc +] + +DOCSTRING_RETURN_PATTERNS = [ + re.compile(r'\s*:rtype:\s*([^\n]+)', re.M), # Sphinx + re.compile(r'\s*@rtype:\s*([^\n]+)', re.M), # Epydoc +] + +REST_ROLE_PATTERN = re.compile(r':[^`]+:`([^`]+)`') + + +try: + from numpydoc.docscrape import NumpyDocString +except ImportError: + def _search_param_in_numpydocstr(docstr, param_str): + return [] + + def _search_return_in_numpydocstr(docstr): + return [] +else: + def _search_param_in_numpydocstr(docstr, param_str): + """Search `docstr` (in numpydoc format) for type(-s) of `param_str`.""" + try: + # This is a non-public API. If it ever changes we should be + # prepared and return gracefully. + params = NumpyDocString(docstr)._parsed_data['Parameters'] + except (KeyError, AttributeError): + return [] + for p_name, p_type, p_descr in params: + if p_name == param_str: + m = re.match('([^,]+(,[^,]+)*?)(,[ ]*optional)?$', p_type) + if m: + p_type = m.group(1) + return list(_expand_typestr(p_type)) + return [] + + def _search_return_in_numpydocstr(docstr): + """ + Search `docstr` (in numpydoc format) for type(-s) of function returns. + """ + doc = NumpyDocString(docstr) + try: + # This is a non-public API. If it ever changes we should be + # prepared and return gracefully. + returns = doc._parsed_data['Returns'] + returns += doc._parsed_data['Yields'] + except (KeyError, AttributeError): + raise StopIteration + for r_name, r_type, r_descr in returns: + #Return names are optional and if so the type is in the name + if not r_type: + r_type = r_name + for type_ in _expand_typestr(r_type): + yield type_ + + +def _expand_typestr(type_str): + """ + Attempts to interpret the possible types in `type_str` + """ + # Check if alternative types are specified with 'or' + if re.search('\\bor\\b', type_str): + for t in type_str.split('or'): + yield t.split('of')[0].strip() + # Check if like "list of `type`" and set type to list + elif re.search('\\bof\\b', type_str): + yield type_str.split('of')[0] + # Check if type has is a set of valid literal values eg: {'C', 'F', 'A'} + elif type_str.startswith('{'): + node = parse(type_str, version='3.6').children[0] + if node.type == 'atom': + for leaf in node.children[1].children: + if leaf.type == 'number': + if '.' in leaf.value: + yield 'float' + else: + yield 'int' + elif leaf.type == 'string': + if 'b' in leaf.string_prefix.lower(): + yield 'bytes' + else: + yield 'str' + # Ignore everything else. + + # Otherwise just work with what we have. + else: + yield type_str + + +def _search_param_in_docstr(docstr, param_str): + """ + Search `docstr` for type(-s) of `param_str`. + + >>> _search_param_in_docstr(':type param: int', 'param') + ['int'] + >>> _search_param_in_docstr('@type param: int', 'param') + ['int'] + >>> _search_param_in_docstr( + ... ':type param: :class:`threading.Thread`', 'param') + ['threading.Thread'] + >>> bool(_search_param_in_docstr('no document', 'param')) + False + >>> _search_param_in_docstr(':param int param: some description', 'param') + ['int'] + + """ + # look at #40 to see definitions of those params + patterns = [re.compile(p % re.escape(param_str)) + for p in DOCSTRING_PARAM_PATTERNS] + for pattern in patterns: + match = pattern.search(docstr) + if match: + return [_strip_rst_role(match.group(1))] + + return (_search_param_in_numpydocstr(docstr, param_str) or + []) + + +def _strip_rst_role(type_str): + """ + Strip off the part looks like a ReST role in `type_str`. + + >>> _strip_rst_role(':class:`ClassName`') # strip off :class: + 'ClassName' + >>> _strip_rst_role(':py:obj:`module.Object`') # works with domain + 'module.Object' + >>> _strip_rst_role('ClassName') # do nothing when not ReST role + 'ClassName' + + See also: + http://sphinx-doc.org/domains.html#cross-referencing-python-objects + + """ + match = REST_ROLE_PATTERN.match(type_str) + if match: + return match.group(1) + else: + return type_str + + +def _evaluate_for_statement_string(module_context, string): + code = dedent(u(""" + def pseudo_docstring_stuff(): + ''' + Create a pseudo function for docstring statements. + Need this docstring so that if the below part is not valid Python this + is still a function. + ''' + {0} + """)) + if string is None: + return [] + + for element in re.findall('((?:\w+\.)*\w+)\.', string): + # Try to import module part in dotted name. + # (e.g., 'threading' in 'threading.Thread'). + string = 'import %s\n' % element + string + + # Take the default grammar here, if we load the Python 2.7 grammar here, it + # will be impossible to use `...` (Ellipsis) as a token. Docstring types + # don't need to conform with the current grammar. + grammar = module_context.evaluator.latest_grammar + module = grammar.parse(code.format(indent_block(string))) + try: + funcdef = next(module.iter_funcdefs()) + # First pick suite, then simple_stmt and then the node, + # which is also not the last item, because there's a newline. + stmt = funcdef.children[-1].children[-1].children[-2] + except (AttributeError, IndexError): + return [] + + from jedi.evaluate.context import FunctionContext + function_context = FunctionContext( + module_context.evaluator, + module_context, + funcdef + ) + func_execution_context = function_context.get_function_execution() + # Use the module of the param. + # TODO this module is not the module of the param in case of a function + # call. In that case it's the module of the function call. + # stuffed with content from a function call. + return list(_execute_types_in_stmt(func_execution_context, stmt)) + + +def _execute_types_in_stmt(module_context, stmt): + """ + Executing all types or general elements that we find in a statement. This + doesn't include tuple, list and dict literals, because the stuff they + contain is executed. (Used as type information). + """ + definitions = module_context.eval_node(stmt) + return ContextSet.from_sets( + _execute_array_values(module_context.evaluator, d) + for d in definitions + ) + + +def _execute_array_values(evaluator, array): + """ + Tuples indicate that there's not just one return value, but the listed + ones. `(str, int)` means that it returns a tuple with both types. + """ + from jedi.evaluate.context.iterable import SequenceLiteralContext, FakeSequence + if isinstance(array, SequenceLiteralContext): + values = [] + for lazy_context in array.py__iter__(): + objects = ContextSet.from_sets( + _execute_array_values(evaluator, typ) + for typ in lazy_context.infer() + ) + values.append(LazyKnownContexts(objects)) + return set([FakeSequence(evaluator, array.array_type, values)]) + else: + return array.execute_evaluated() + + +@evaluator_method_cache() +def infer_param(execution_context, param): + from jedi.evaluate.context.instance import AnonymousInstanceFunctionExecution + + def eval_docstring(docstring): + return ContextSet.from_iterable( + p + for param_str in _search_param_in_docstr(docstring, param.name.value) + for p in _evaluate_for_statement_string(module_context, param_str) + ) + module_context = execution_context.get_root_context() + func = param.get_parent_function() + if func.type == 'lambdef': + return NO_CONTEXTS + + types = eval_docstring(execution_context.py__doc__()) + if isinstance(execution_context, AnonymousInstanceFunctionExecution) and \ + execution_context.function_context.name.string_name == '__init__': + class_context = execution_context.instance.class_context + types |= eval_docstring(class_context.py__doc__()) + + return types + + +@evaluator_method_cache() +@iterator_to_context_set +def infer_return_types(function_context): + def search_return_in_docstr(code): + for p in DOCSTRING_RETURN_PATTERNS: + match = p.search(code) + if match: + yield _strip_rst_role(match.group(1)) + # Check for numpy style return hint + for type_ in _search_return_in_numpydocstr(code): + yield type_ + + for type_str in search_return_in_docstr(function_context.py__doc__()): + for type_eval in _evaluate_for_statement_string(function_context.get_root_context(), type_str): + yield type_eval diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/dynamic.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/dynamic.py new file mode 100644 index 0000000..7d05000 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/dynamic.py @@ -0,0 +1,203 @@ +""" +One of the really important features of |jedi| is to have an option to +understand code like this:: + + def foo(bar): + bar. # completion here + foo(1) + +There's no doubt wheter bar is an ``int`` or not, but if there's also a call +like ``foo('str')``, what would happen? Well, we'll just show both. Because +that's what a human would expect. + +It works as follows: + +- |Jedi| sees a param +- search for function calls named ``foo`` +- execute these calls and check the input. +""" + +from parso.python import tree +from jedi import settings +from jedi import debug +from jedi.evaluate.cache import evaluator_function_cache +from jedi.evaluate import imports +from jedi.evaluate.arguments import TreeArguments +from jedi.evaluate.param import create_default_params +from jedi.evaluate.helpers import is_stdlib_path +from jedi.evaluate.utils import to_list +from jedi.parser_utils import get_parent_scope +from jedi.evaluate.context import ModuleContext, instance +from jedi.evaluate.base_context import ContextSet + + + +MAX_PARAM_SEARCHES = 20 + + +class MergedExecutedParams(object): + """ + Simulates being a parameter while actually just being multiple params. + """ + def __init__(self, executed_params): + self._executed_params = executed_params + + def infer(self): + return ContextSet.from_sets(p.infer() for p in self._executed_params) + + +@debug.increase_indent +def search_params(evaluator, execution_context, funcdef): + """ + A dynamic search for param values. If you try to complete a type: + + >>> def func(foo): + ... foo + >>> func(1) + >>> func("") + + It is not known what the type ``foo`` without analysing the whole code. You + have to look for all calls to ``func`` to find out what ``foo`` possibly + is. + """ + if not settings.dynamic_params: + return create_default_params(execution_context, funcdef) + + evaluator.dynamic_params_depth += 1 + try: + path = execution_context.get_root_context().py__file__() + if path is not None and is_stdlib_path(path): + # We don't want to search for usages in the stdlib. Usually people + # don't work with it (except if you are a core maintainer, sorry). + # This makes everything slower. Just disable it and run the tests, + # you will see the slowdown, especially in 3.6. + return create_default_params(execution_context, funcdef) + + debug.dbg('Dynamic param search in %s.', funcdef.name.value, color='MAGENTA') + + module_context = execution_context.get_root_context() + function_executions = _search_function_executions( + evaluator, + module_context, + funcdef + ) + if function_executions: + zipped_params = zip(*list( + function_execution.get_params() + for function_execution in function_executions + )) + params = [MergedExecutedParams(executed_params) for executed_params in zipped_params] + # Evaluate the ExecutedParams to types. + else: + return create_default_params(execution_context, funcdef) + debug.dbg('Dynamic param result finished', color='MAGENTA') + return params + finally: + evaluator.dynamic_params_depth -= 1 + + +@evaluator_function_cache(default=None) +@to_list +def _search_function_executions(evaluator, module_context, funcdef): + """ + Returns a list of param names. + """ + func_string_name = funcdef.name.value + compare_node = funcdef + if func_string_name == '__init__': + cls = get_parent_scope(funcdef) + if isinstance(cls, tree.Class): + func_string_name = cls.name.value + compare_node = cls + + found_executions = False + i = 0 + for for_mod_context in imports.get_modules_containing_name( + evaluator, [module_context], func_string_name): + if not isinstance(module_context, ModuleContext): + return + for name, trailer in _get_possible_nodes(for_mod_context, func_string_name): + i += 1 + + # This is a simple way to stop Jedi's dynamic param recursion + # from going wild: The deeper Jedi's in the recursion, the less + # code should be evaluated. + if i * evaluator.dynamic_params_depth > MAX_PARAM_SEARCHES: + return + + random_context = evaluator.create_context(for_mod_context, name) + for function_execution in _check_name_for_execution( + evaluator, random_context, compare_node, name, trailer): + found_executions = True + yield function_execution + + # If there are results after processing a module, we're probably + # good to process. This is a speed optimization. + if found_executions: + return + + +def _get_possible_nodes(module_context, func_string_name): + try: + names = module_context.tree_node.get_used_names()[func_string_name] + except KeyError: + return + + for name in names: + bracket = name.get_next_leaf() + trailer = bracket.parent + if trailer.type == 'trailer' and bracket == '(': + yield name, trailer + + +def _check_name_for_execution(evaluator, context, compare_node, name, trailer): + from jedi.evaluate.context.function import FunctionExecutionContext + + def create_func_excs(): + arglist = trailer.children[1] + if arglist == ')': + arglist = () + args = TreeArguments(evaluator, context, arglist, trailer) + if value_node.type == 'funcdef': + yield value.get_function_execution(args) + else: + created_instance = instance.TreeInstance( + evaluator, + value.parent_context, + value, + args + ) + for execution in created_instance.create_init_executions(): + yield execution + + for value in evaluator.goto_definitions(context, name): + value_node = value.tree_node + if compare_node == value_node: + for func_execution in create_func_excs(): + yield func_execution + elif isinstance(value.parent_context, FunctionExecutionContext) and \ + compare_node.type == 'funcdef': + # Here we're trying to find decorators by checking the first + # parameter. It's not very generic though. Should find a better + # solution that also applies to nested decorators. + params = value.parent_context.get_params() + if len(params) != 1: + continue + values = params[0].infer() + nodes = [v.tree_node for v in values] + if nodes == [compare_node]: + # Found a decorator. + module_context = context.get_root_context() + execution_context = next(create_func_excs()) + for name, trailer in _get_possible_nodes(module_context, params[0].string_name): + if value_node.start_pos < name.start_pos < value_node.end_pos: + random_context = evaluator.create_context(execution_context, name) + iterator = _check_name_for_execution( + evaluator, + random_context, + compare_node, + name, + trailer + ) + for function_execution in iterator: + yield function_execution diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/filters.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/filters.py new file mode 100644 index 0000000..35dff9d --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/filters.py @@ -0,0 +1,434 @@ +""" +Filters are objects that you can use to filter names in different scopes. They +are needed for name resolution. +""" +from abc import abstractmethod + +from parso.tree import search_ancestor + +from jedi._compatibility import is_py3 +from jedi.evaluate import flow_analysis +from jedi.evaluate.base_context import ContextSet, Context +from jedi.parser_utils import get_parent_scope +from jedi.evaluate.utils import to_list + + +class AbstractNameDefinition(object): + start_pos = None + string_name = None + parent_context = None + tree_name = None + + @abstractmethod + def infer(self): + raise NotImplementedError + + @abstractmethod + def goto(self): + # Typically names are already definitions and therefore a goto on that + # name will always result on itself. + return set([self]) + + def get_root_context(self): + return self.parent_context.get_root_context() + + def __repr__(self): + if self.start_pos is None: + return '<%s: %s>' % (self.__class__.__name__, self.string_name) + return '<%s: %s@%s>' % (self.__class__.__name__, self.string_name, self.start_pos) + + def execute(self, arguments): + return self.infer().execute(arguments) + + def execute_evaluated(self, *args, **kwargs): + return self.infer().execute_evaluated(*args, **kwargs) + + @property + def api_type(self): + return self.parent_context.api_type + + +class AbstractTreeName(AbstractNameDefinition): + def __init__(self, parent_context, tree_name): + self.parent_context = parent_context + self.tree_name = tree_name + + def goto(self): + return self.parent_context.evaluator.goto(self.parent_context, self.tree_name) + + @property + def string_name(self): + return self.tree_name.value + + @property + def start_pos(self): + return self.tree_name.start_pos + + +class ContextNameMixin(object): + def infer(self): + return ContextSet(self._context) + + def get_root_context(self): + if self.parent_context is None: + return self._context + return super(ContextNameMixin, self).get_root_context() + + @property + def api_type(self): + return self._context.api_type + + +class ContextName(ContextNameMixin, AbstractTreeName): + def __init__(self, context, tree_name): + super(ContextName, self).__init__(context.parent_context, tree_name) + self._context = context + + +class TreeNameDefinition(AbstractTreeName): + _API_TYPES = dict( + import_name='module', + import_from='module', + funcdef='function', + param='param', + classdef='class', + ) + + def infer(self): + # Refactor this, should probably be here. + from jedi.evaluate.syntax_tree import tree_name_to_contexts + return tree_name_to_contexts(self.parent_context.evaluator, self.parent_context, self.tree_name) + + @property + def api_type(self): + definition = self.tree_name.get_definition(import_name_always=True) + if definition is None: + return 'statement' + return self._API_TYPES.get(definition.type, 'statement') + + +class ParamName(AbstractTreeName): + api_type = 'param' + + def __init__(self, parent_context, tree_name): + self.parent_context = parent_context + self.tree_name = tree_name + + def infer(self): + return self.get_param().infer() + + def get_param(self): + params = self.parent_context.get_params() + param_node = search_ancestor(self.tree_name, 'param') + return params[param_node.position_index] + + +class AnonymousInstanceParamName(ParamName): + def infer(self): + param_node = search_ancestor(self.tree_name, 'param') + # TODO I think this should not belong here. It's not even really true, + # because classmethod and other descriptors can change it. + if param_node.position_index == 0: + # This is a speed optimization, to return the self param (because + # it's known). This only affects anonymous instances. + return ContextSet(self.parent_context.instance) + else: + return self.get_param().infer() + + +class AbstractFilter(object): + _until_position = None + + def _filter(self, names): + if self._until_position is not None: + return [n for n in names if n.start_pos < self._until_position] + return names + + @abstractmethod + def get(self, name): + raise NotImplementedError + + @abstractmethod + def values(self): + raise NotImplementedError + + +class AbstractUsedNamesFilter(AbstractFilter): + name_class = TreeNameDefinition + + def __init__(self, context, parser_scope): + self._parser_scope = parser_scope + self._used_names = self._parser_scope.get_root_node().get_used_names() + self.context = context + + def get(self, name): + try: + names = self._used_names[str(name)] + except KeyError: + return [] + + return self._convert_names(self._filter(names)) + + def _convert_names(self, names): + return [self.name_class(self.context, name) for name in names] + + def values(self): + return self._convert_names(name for name_list in self._used_names.values() + for name in self._filter(name_list)) + + def __repr__(self): + return '<%s: %s>' % (self.__class__.__name__, self.context) + + +class ParserTreeFilter(AbstractUsedNamesFilter): + def __init__(self, evaluator, context, node_context=None, until_position=None, + origin_scope=None): + """ + node_context is an option to specify a second context for use cases + like the class mro where the parent class of a new name would be the + context, but for some type inference it's important to have a local + context of the other classes. + """ + if node_context is None: + node_context = context + super(ParserTreeFilter, self).__init__(context, node_context.tree_node) + self._node_context = node_context + self._origin_scope = origin_scope + self._until_position = until_position + + def _filter(self, names): + names = super(ParserTreeFilter, self)._filter(names) + names = [n for n in names if self._is_name_reachable(n)] + return list(self._check_flows(names)) + + def _is_name_reachable(self, name): + if not name.is_definition(): + return False + parent = name.parent + if parent.type == 'trailer': + return False + base_node = parent if parent.type in ('classdef', 'funcdef') else name + return get_parent_scope(base_node) == self._parser_scope + + def _check_flows(self, names): + for name in sorted(names, key=lambda name: name.start_pos, reverse=True): + check = flow_analysis.reachability_check( + self._node_context, self._parser_scope, name, self._origin_scope + ) + if check is not flow_analysis.UNREACHABLE: + yield name + + if check is flow_analysis.REACHABLE: + break + + +class FunctionExecutionFilter(ParserTreeFilter): + param_name = ParamName + + def __init__(self, evaluator, context, node_context=None, + until_position=None, origin_scope=None): + super(FunctionExecutionFilter, self).__init__( + evaluator, + context, + node_context, + until_position, + origin_scope + ) + + @to_list + def _convert_names(self, names): + for name in names: + param = search_ancestor(name, 'param') + if param: + yield self.param_name(self.context, name) + else: + yield TreeNameDefinition(self.context, name) + + +class AnonymousInstanceFunctionExecutionFilter(FunctionExecutionFilter): + param_name = AnonymousInstanceParamName + + +class GlobalNameFilter(AbstractUsedNamesFilter): + def __init__(self, context, parser_scope): + super(GlobalNameFilter, self).__init__(context, parser_scope) + + @to_list + def _filter(self, names): + for name in names: + if name.parent.type == 'global_stmt': + yield name + + +class DictFilter(AbstractFilter): + def __init__(self, dct): + self._dct = dct + + def get(self, name): + try: + value = self._convert(name, self._dct[str(name)]) + except KeyError: + return [] + + return list(self._filter([value])) + + def values(self): + return self._filter(self._convert(*item) for item in self._dct.items()) + + def _convert(self, name, value): + return value + + +class _BuiltinMappedMethod(Context): + """``Generator.__next__`` ``dict.values`` methods and so on.""" + api_type = 'function' + + def __init__(self, builtin_context, method, builtin_func): + super(_BuiltinMappedMethod, self).__init__( + builtin_context.evaluator, + parent_context=builtin_context + ) + self._method = method + self._builtin_func = builtin_func + + def py__call__(self, params): + return self._method(self.parent_context) + + def __getattr__(self, name): + return getattr(self._builtin_func, name) + + +class SpecialMethodFilter(DictFilter): + """ + A filter for methods that are defined in this module on the corresponding + classes like Generator (for __next__, etc). + """ + class SpecialMethodName(AbstractNameDefinition): + api_type = 'function' + + def __init__(self, parent_context, string_name, callable_, builtin_context): + self.parent_context = parent_context + self.string_name = string_name + self._callable = callable_ + self._builtin_context = builtin_context + + def infer(self): + filter = next(self._builtin_context.get_filters()) + # We can take the first index, because on builtin methods there's + # always only going to be one name. The same is true for the + # inferred values. + builtin_func = next(iter(filter.get(self.string_name)[0].infer())) + return ContextSet(_BuiltinMappedMethod(self.parent_context, self._callable, builtin_func)) + + def __init__(self, context, dct, builtin_context): + super(SpecialMethodFilter, self).__init__(dct) + self.context = context + self._builtin_context = builtin_context + """ + This context is what will be used to introspect the name, where as the + other context will be used to execute the function. + + We distinguish, because we have to. + """ + + def _convert(self, name, value): + return self.SpecialMethodName(self.context, name, value, self._builtin_context) + + +def has_builtin_methods(cls): + base_dct = {} + # Need to care properly about inheritance. Builtin Methods should not get + # lost, just because they are not mentioned in a class. + for base_cls in reversed(cls.__bases__): + try: + base_dct.update(base_cls.builtin_methods) + except AttributeError: + pass + + cls.builtin_methods = base_dct + for func in cls.__dict__.values(): + try: + cls.builtin_methods.update(func.registered_builtin_methods) + except AttributeError: + pass + return cls + + +def register_builtin_method(method_name, python_version_match=None): + def wrapper(func): + if python_version_match and python_version_match != 2 + int(is_py3): + # Some functions do only apply to certain versions. + return func + dct = func.__dict__.setdefault('registered_builtin_methods', {}) + dct[method_name] = func + return func + return wrapper + + +def get_global_filters(evaluator, context, until_position, origin_scope): + """ + Returns all filters in order of priority for name resolution. + + For global name lookups. The filters will handle name resolution + themselves, but here we gather possible filters downwards. + + >>> from jedi._compatibility import u, no_unicode_pprint + >>> from jedi import Script + >>> script = Script(u(''' + ... x = ['a', 'b', 'c'] + ... def func(): + ... y = None + ... ''')) + >>> module_node = script._get_module_node() + >>> scope = next(module_node.iter_funcdefs()) + >>> scope + + >>> context = script._get_module().create_context(scope) + >>> filters = list(get_global_filters(context.evaluator, context, (4, 0), None)) + + First we get the names names from the function scope. + + >>> no_unicode_pprint(filters[0]) + > + >>> sorted(str(n) for n in filters[0].values()) + ['', ''] + >>> filters[0]._until_position + (4, 0) + + Then it yields the names from one level "lower". In this example, this is + the module scope. As a side note, you can see, that the position in the + filter is now None, because typically the whole module is loaded before the + function is called. + + >>> filters[1].values() # global names -> there are none in our example. + [] + >>> list(filters[2].values()) # package modules -> Also empty. + [] + >>> sorted(name.string_name for name in filters[3].values()) # Module attributes + ['__doc__', '__file__', '__name__', '__package__'] + >>> print(filters[1]._until_position) + None + + Finally, it yields the builtin filter, if `include_builtin` is + true (default). + + >>> filters[4].values() #doctest: +ELLIPSIS + [, ...] + """ + from jedi.evaluate.context.function import FunctionExecutionContext + while context is not None: + # Names in methods cannot be resolved within the class. + for filter in context.get_filters( + search_global=True, + until_position=until_position, + origin_scope=origin_scope): + yield filter + if isinstance(context, FunctionExecutionContext): + # The position should be reset if the current scope is a function. + until_position = None + + context = context.parent_context + + # Add builtins to the global scope. + for filter in evaluator.BUILTINS.get_filters(search_global=True): + yield filter diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/finder.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/finder.py new file mode 100644 index 0000000..96032ae --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/finder.py @@ -0,0 +1,258 @@ +""" +Searching for names with given scope and name. This is very central in Jedi and +Python. The name resolution is quite complicated with descripter, +``__getattribute__``, ``__getattr__``, ``global``, etc. + +If you want to understand name resolution, please read the first few chapters +in http://blog.ionelmc.ro/2015/02/09/understanding-python-metaclasses/. + +Flow checks ++++++++++++ + +Flow checks are not really mature. There's only a check for ``isinstance``. It +would check whether a flow has the form of ``if isinstance(a, type_or_tuple)``. +Unfortunately every other thing is being ignored (e.g. a == '' would be easy to +check for -> a is a string). There's big potential in these checks. +""" + +from parso.python import tree +from parso.tree import search_ancestor +from jedi import debug +from jedi import settings +from jedi.evaluate.context import AbstractInstanceContext +from jedi.evaluate import compiled +from jedi.evaluate import analysis +from jedi.evaluate import flow_analysis +from jedi.evaluate.arguments import TreeArguments +from jedi.evaluate import helpers +from jedi.evaluate.context import iterable +from jedi.evaluate.filters import get_global_filters, TreeNameDefinition +from jedi.evaluate.base_context import ContextSet +from jedi.parser_utils import is_scope, get_parent_scope + + +class NameFinder(object): + def __init__(self, evaluator, context, name_context, name_or_str, + position=None, analysis_errors=True): + self._evaluator = evaluator + # Make sure that it's not just a syntax tree node. + self._context = context + self._name_context = name_context + self._name = name_or_str + if isinstance(name_or_str, tree.Name): + self._string_name = name_or_str.value + else: + self._string_name = name_or_str + self._position = position + self._found_predefined_types = None + self._analysis_errors = analysis_errors + + @debug.increase_indent + def find(self, filters, attribute_lookup): + """ + :params bool attribute_lookup: Tell to logic if we're accessing the + attribute or the contents of e.g. a function. + """ + names = self.filter_name(filters) + if self._found_predefined_types is not None and names: + check = flow_analysis.reachability_check( + self._context, self._context.tree_node, self._name) + if check is flow_analysis.UNREACHABLE: + return ContextSet() + return self._found_predefined_types + + types = self._names_to_types(names, attribute_lookup) + + if not names and self._analysis_errors and not types \ + and not (isinstance(self._name, tree.Name) and + isinstance(self._name.parent.parent, tree.Param)): + if isinstance(self._name, tree.Name): + if attribute_lookup: + analysis.add_attribute_error( + self._name_context, self._context, self._name) + else: + message = ("NameError: name '%s' is not defined." + % self._string_name) + analysis.add(self._name_context, 'name-error', self._name, message) + + return types + + def _get_origin_scope(self): + if isinstance(self._name, tree.Name): + scope = self._name + while scope.parent is not None: + # TODO why if classes? + if not isinstance(scope, tree.Scope): + break + scope = scope.parent + return scope + else: + return None + + def get_filters(self, search_global=False): + origin_scope = self._get_origin_scope() + if search_global: + return get_global_filters(self._evaluator, self._context, self._position, origin_scope) + else: + return self._context.get_filters(search_global, self._position, origin_scope=origin_scope) + + def filter_name(self, filters): + """ + Searches names that are defined in a scope (the different + ``filters``), until a name fits. + """ + names = [] + if self._context.predefined_names: + # TODO is this ok? node might not always be a tree.Name + node = self._name + while node is not None and not is_scope(node): + node = node.parent + if node.type in ("if_stmt", "for_stmt", "comp_for"): + try: + name_dict = self._context.predefined_names[node] + types = name_dict[self._string_name] + except KeyError: + continue + else: + self._found_predefined_types = types + break + + for filter in filters: + names = filter.get(self._string_name) + if names: + if len(names) == 1: + n, = names + if isinstance(n, TreeNameDefinition): + # Something somewhere went terribly wrong. This + # typically happens when using goto on an import in an + # __init__ file. I think we need a better solution, but + # it's kind of hard, because for Jedi it's not clear + # that that name has not been defined, yet. + if n.tree_name == self._name: + if self._name.get_definition().type == 'import_from': + continue + break + + debug.dbg('finder.filter_name "%s" in (%s): %s@%s', self._string_name, + self._context, names, self._position) + return list(names) + + def _check_getattr(self, inst): + """Checks for both __getattr__ and __getattribute__ methods""" + # str is important, because it shouldn't be `Name`! + name = compiled.create(self._evaluator, self._string_name) + + # This is a little bit special. `__getattribute__` is in Python + # executed before `__getattr__`. But: I know no use case, where + # this could be practical and where Jedi would return wrong types. + # If you ever find something, let me know! + # We are inversing this, because a hand-crafted `__getattribute__` + # could still call another hand-crafted `__getattr__`, but not the + # other way around. + names = (inst.get_function_slot_names('__getattr__') or + inst.get_function_slot_names('__getattribute__')) + return inst.execute_function_slots(names, name) + + def _names_to_types(self, names, attribute_lookup): + contexts = ContextSet.from_sets(name.infer() for name in names) + + debug.dbg('finder._names_to_types: %s -> %s', names, contexts) + if not names and isinstance(self._context, AbstractInstanceContext): + # handling __getattr__ / __getattribute__ + return self._check_getattr(self._context) + + # Add isinstance and other if/assert knowledge. + if not contexts and isinstance(self._name, tree.Name) and \ + not isinstance(self._name_context, AbstractInstanceContext): + flow_scope = self._name + base_node = self._name_context.tree_node + if base_node.type == 'comp_for': + return contexts + while True: + flow_scope = get_parent_scope(flow_scope, include_flows=True) + n = _check_flow_information(self._name_context, flow_scope, + self._name, self._position) + if n is not None: + return n + if flow_scope == base_node: + break + return contexts + + +def _check_flow_information(context, flow, search_name, pos): + """ Try to find out the type of a variable just with the information that + is given by the flows: e.g. It is also responsible for assert checks.:: + + if isinstance(k, str): + k. # <- completion here + + ensures that `k` is a string. + """ + if not settings.dynamic_flow_information: + return None + + result = None + if is_scope(flow): + # Check for asserts. + module_node = flow.get_root_node() + try: + names = module_node.get_used_names()[search_name.value] + except KeyError: + return None + names = reversed([ + n for n in names + if flow.start_pos <= n.start_pos < (pos or flow.end_pos) + ]) + + for name in names: + ass = search_ancestor(name, 'assert_stmt') + if ass is not None: + result = _check_isinstance_type(context, ass.assertion, search_name) + if result is not None: + return result + + if flow.type in ('if_stmt', 'while_stmt'): + potential_ifs = [c for c in flow.children[1::4] if c != ':'] + for if_test in reversed(potential_ifs): + if search_name.start_pos > if_test.end_pos: + return _check_isinstance_type(context, if_test, search_name) + return result + + +def _check_isinstance_type(context, element, search_name): + try: + assert element.type in ('power', 'atom_expr') + # this might be removed if we analyze and, etc + assert len(element.children) == 2 + first, trailer = element.children + assert first.type == 'name' and first.value == 'isinstance' + assert trailer.type == 'trailer' and trailer.children[0] == '(' + assert len(trailer.children) == 3 + + # arglist stuff + arglist = trailer.children[1] + args = TreeArguments(context.evaluator, context, arglist, trailer) + param_list = list(args.unpack()) + # Disallow keyword arguments + assert len(param_list) == 2 + (key1, lazy_context_object), (key2, lazy_context_cls) = param_list + assert key1 is None and key2 is None + call = helpers.call_of_leaf(search_name) + is_instance_call = helpers.call_of_leaf(lazy_context_object.data) + # Do a simple get_code comparison. They should just have the same code, + # and everything will be all right. + normalize = context.evaluator.grammar._normalize + assert normalize(is_instance_call) == normalize(call) + except AssertionError: + return None + + context_set = ContextSet() + for cls_or_tup in lazy_context_cls.infer(): + if isinstance(cls_or_tup, iterable.AbstractIterable) and \ + cls_or_tup.array_type == 'tuple': + for lazy_context in cls_or_tup.py__iter__(): + for context in lazy_context.infer(): + context_set |= context.execute_evaluated() + else: + context_set |= cls_or_tup.execute_evaluated() + return context_set diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/flow_analysis.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/flow_analysis.py new file mode 100644 index 0000000..670b7a7 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/flow_analysis.py @@ -0,0 +1,112 @@ +from jedi.parser_utils import get_flow_branch_keyword, is_scope, get_parent_scope + + +class Status(object): + lookup_table = {} + + def __init__(self, value, name): + self._value = value + self._name = name + Status.lookup_table[value] = self + + def invert(self): + if self is REACHABLE: + return UNREACHABLE + elif self is UNREACHABLE: + return REACHABLE + else: + return UNSURE + + def __and__(self, other): + if UNSURE in (self, other): + return UNSURE + else: + return REACHABLE if self._value and other._value else UNREACHABLE + + def __repr__(self): + return '<%s: %s>' % (type(self).__name__, self._name) + + +REACHABLE = Status(True, 'reachable') +UNREACHABLE = Status(False, 'unreachable') +UNSURE = Status(None, 'unsure') + + +def _get_flow_scopes(node): + while True: + node = get_parent_scope(node, include_flows=True) + if node is None or is_scope(node): + return + yield node + + +def reachability_check(context, context_scope, node, origin_scope=None): + first_flow_scope = get_parent_scope(node, include_flows=True) + if origin_scope is not None: + origin_flow_scopes = list(_get_flow_scopes(origin_scope)) + node_flow_scopes = list(_get_flow_scopes(node)) + + branch_matches = True + for flow_scope in origin_flow_scopes: + if flow_scope in node_flow_scopes: + node_keyword = get_flow_branch_keyword(flow_scope, node) + origin_keyword = get_flow_branch_keyword(flow_scope, origin_scope) + branch_matches = node_keyword == origin_keyword + if flow_scope.type == 'if_stmt': + if not branch_matches: + return UNREACHABLE + elif flow_scope.type == 'try_stmt': + if not branch_matches and origin_keyword == 'else' \ + and node_keyword == 'except': + return UNREACHABLE + break + + # Direct parents get resolved, we filter scopes that are separate + # branches. This makes sense for autocompletion and static analysis. + # For actual Python it doesn't matter, because we're talking about + # potentially unreachable code. + # e.g. `if 0:` would cause all name lookup within the flow make + # unaccessible. This is not a "problem" in Python, because the code is + # never called. In Jedi though, we still want to infer types. + while origin_scope is not None: + if first_flow_scope == origin_scope and branch_matches: + return REACHABLE + origin_scope = origin_scope.parent + + return _break_check(context, context_scope, first_flow_scope, node) + + +def _break_check(context, context_scope, flow_scope, node): + reachable = REACHABLE + if flow_scope.type == 'if_stmt': + if flow_scope.is_node_after_else(node): + for check_node in flow_scope.get_test_nodes(): + reachable = _check_if(context, check_node) + if reachable in (REACHABLE, UNSURE): + break + reachable = reachable.invert() + else: + flow_node = flow_scope.get_corresponding_test_node(node) + if flow_node is not None: + reachable = _check_if(context, flow_node) + elif flow_scope.type in ('try_stmt', 'while_stmt'): + return UNSURE + + # Only reachable branches need to be examined further. + if reachable in (UNREACHABLE, UNSURE): + return reachable + + if context_scope != flow_scope and context_scope != flow_scope.parent: + flow_scope = get_parent_scope(flow_scope, include_flows=True) + return reachable & _break_check(context, context_scope, flow_scope, node) + else: + return reachable + + +def _check_if(context, node): + types = context.eval_node(node) + values = set(x.py__bool__() for x in types) + if len(values) == 1: + return Status.lookup_table[values.pop()] + else: + return UNSURE diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/helpers.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/helpers.py new file mode 100644 index 0000000..3b21e01 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/helpers.py @@ -0,0 +1,201 @@ +import copy +import sys +import re +import os +from itertools import chain +from contextlib import contextmanager + +from parso.python import tree + +from jedi._compatibility import unicode +from jedi.parser_utils import get_parent_scope +from jedi.evaluate.compiled import CompiledObject + + +def is_stdlib_path(path): + # Python standard library paths look like this: + # /usr/lib/python3.5/... + # TODO The implementation below is probably incorrect and not complete. + if 'dist-packages' in path or 'site-packages' in path: + return False + + base_path = os.path.join(sys.prefix, 'lib', 'python') + return bool(re.match(re.escape(base_path) + '\d.\d', path)) + + +def deep_ast_copy(obj): + """ + Much, much faster than copy.deepcopy, but just for parser tree nodes. + """ + # If it's already in the cache, just return it. + new_obj = copy.copy(obj) + + # Copy children + new_children = [] + for child in obj.children: + if isinstance(child, tree.Leaf): + new_child = copy.copy(child) + new_child.parent = new_obj + else: + new_child = deep_ast_copy(child) + new_child.parent = new_obj + new_children.append(new_child) + new_obj.children = new_children + + return new_obj + + +def evaluate_call_of_leaf(context, leaf, cut_own_trailer=False): + """ + Creates a "call" node that consist of all ``trailer`` and ``power`` + objects. E.g. if you call it with ``append``:: + + list([]).append(3) or None + + You would get a node with the content ``list([]).append`` back. + + This generates a copy of the original ast node. + + If you're using the leaf, e.g. the bracket `)` it will return ``list([])``. + + We use this function for two purposes. Given an expression ``bar.foo``, + we may want to + - infer the type of ``foo`` to offer completions after foo + - infer the type of ``bar`` to be able to jump to the definition of foo + The option ``cut_own_trailer`` must be set to true for the second purpose. + """ + trailer = leaf.parent + # The leaf may not be the last or first child, because there exist three + # different trailers: `( x )`, `[ x ]` and `.x`. In the first two examples + # we should not match anything more than x. + if trailer.type != 'trailer' or leaf not in (trailer.children[0], trailer.children[-1]): + if trailer.type == 'atom': + return context.eval_node(trailer) + return context.eval_node(leaf) + + power = trailer.parent + index = power.children.index(trailer) + if cut_own_trailer: + cut = index + else: + cut = index + 1 + + if power.type == 'error_node': + start = index + while True: + start -= 1 + base = power.children[start] + if base.type != 'trailer': + break + trailers = power.children[start + 1: index + 1] + else: + base = power.children[0] + trailers = power.children[1:cut] + + if base == 'await': + base = trailers[0] + trailers = trailers[1:] + + values = context.eval_node(base) + from jedi.evaluate.syntax_tree import eval_trailer + for trailer in trailers: + values = eval_trailer(context, values, trailer) + return values + + +def call_of_leaf(leaf): + """ + Creates a "call" node that consist of all ``trailer`` and ``power`` + objects. E.g. if you call it with ``append``:: + + list([]).append(3) or None + + You would get a node with the content ``list([]).append`` back. + + This generates a copy of the original ast node. + + If you're using the leaf, e.g. the bracket `)` it will return ``list([])``. + """ + # TODO this is the old version of this call. Try to remove it. + trailer = leaf.parent + # The leaf may not be the last or first child, because there exist three + # different trailers: `( x )`, `[ x ]` and `.x`. In the first two examples + # we should not match anything more than x. + if trailer.type != 'trailer' or leaf not in (trailer.children[0], trailer.children[-1]): + if trailer.type == 'atom': + return trailer + return leaf + + power = trailer.parent + index = power.children.index(trailer) + + new_power = copy.copy(power) + new_power.children = list(new_power.children) + new_power.children[index + 1:] = [] + + if power.type == 'error_node': + start = index + while True: + start -= 1 + if power.children[start].type != 'trailer': + break + transformed = tree.Node('power', power.children[start:]) + transformed.parent = power.parent + return transformed + + return power + + +def get_names_of_node(node): + try: + children = node.children + except AttributeError: + if node.type == 'name': + return [node] + else: + return [] + else: + return list(chain.from_iterable(get_names_of_node(c) for c in children)) + + +def get_module_names(module, all_scopes): + """ + Returns a dictionary with name parts as keys and their call paths as + values. + """ + names = chain.from_iterable(module.get_used_names().values()) + if not all_scopes: + # We have to filter all the names that don't have the module as a + # parent_scope. There's None as a parent, because nodes in the module + # node have the parent module and not suite as all the others. + # Therefore it's important to catch that case. + names = [n for n in names if get_parent_scope(n).parent in (module, None)] + return names + + +@contextmanager +def predefine_names(context, flow_scope, dct): + predefined = context.predefined_names + if flow_scope in predefined: + raise NotImplementedError('Why does this happen?') + predefined[flow_scope] = dct + try: + yield + finally: + del predefined[flow_scope] + + +def is_compiled(context): + return isinstance(context, CompiledObject) + + +def is_string(context): + return is_compiled(context) and isinstance(context.obj, (str, unicode)) + + +def is_literal(context): + return is_number(context) or is_string(context) + + +def is_number(context): + return is_compiled(context) and isinstance(context.obj, (int, float)) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/imports.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/imports.py new file mode 100644 index 0000000..ecf656b --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/imports.py @@ -0,0 +1,570 @@ +""" +:mod:`jedi.evaluate.imports` is here to resolve import statements and return +the modules/classes/functions/whatever, which they stand for. However there's +not any actual importing done. This module is about finding modules in the +filesystem. This can be quite tricky sometimes, because Python imports are not +always that simple. + +This module uses imp for python up to 3.2 and importlib for python 3.3 on; the +correct implementation is delegated to _compatibility. + +This module also supports import autocompletion, which means to complete +statements like ``from datetim`` (curser at the end would return ``datetime``). +""" +import imp +import os +import pkgutil +import sys + +from parso.python import tree +from parso.tree import search_ancestor +from parso.cache import parser_cache +from parso import python_bytes_to_unicode + +from jedi._compatibility import find_module, unicode, ImplicitNSInfo +from jedi import debug +from jedi import settings +from jedi.evaluate import sys_path +from jedi.evaluate import helpers +from jedi.evaluate import compiled +from jedi.evaluate import analysis +from jedi.evaluate.utils import unite +from jedi.evaluate.cache import evaluator_method_cache +from jedi.evaluate.filters import AbstractNameDefinition +from jedi.evaluate.base_context import ContextSet, NO_CONTEXTS + + +# This memoization is needed, because otherwise we will infinitely loop on +# certain imports. +@evaluator_method_cache(default=NO_CONTEXTS) +def infer_import(context, tree_name, is_goto=False): + module_context = context.get_root_context() + import_node = search_ancestor(tree_name, 'import_name', 'import_from') + import_path = import_node.get_path_for_name(tree_name) + from_import_name = None + evaluator = context.evaluator + try: + from_names = import_node.get_from_names() + except AttributeError: + # Is an import_name + pass + else: + if len(from_names) + 1 == len(import_path): + # We have to fetch the from_names part first and then check + # if from_names exists in the modules. + from_import_name = import_path[-1] + import_path = from_names + + importer = Importer(evaluator, tuple(import_path), + module_context, import_node.level) + + types = importer.follow() + + #if import_node.is_nested() and not self.nested_resolve: + # scopes = [NestedImportModule(module, import_node)] + + if not types: + return NO_CONTEXTS + + if from_import_name is not None: + types = unite( + t.py__getattribute__( + from_import_name, + name_context=context, + is_goto=is_goto, + analysis_errors=False + ) + for t in types + ) + if not is_goto: + types = ContextSet.from_set(types) + + if not types: + path = import_path + [from_import_name] + importer = Importer(evaluator, tuple(path), + module_context, import_node.level) + types = importer.follow() + # goto only accepts `Name` + if is_goto: + types = set(s.name for s in types) + else: + # goto only accepts `Name` + if is_goto: + types = set(s.name for s in types) + + debug.dbg('after import: %s', types) + return types + + +class NestedImportModule(tree.Module): + """ + TODO while there's no use case for nested import module right now, we might + be able to use them for static analysis checks later on. + """ + def __init__(self, module, nested_import): + self._module = module + self._nested_import = nested_import + + def _get_nested_import_name(self): + """ + Generates an Import statement, that can be used to fake nested imports. + """ + i = self._nested_import + # This is not an existing Import statement. Therefore, set position to + # 0 (0 is not a valid line number). + zero = (0, 0) + names = [unicode(name) for name in i.namespace_names[1:]] + name = helpers.FakeName(names, self._nested_import) + new = tree.Import(i._sub_module, zero, zero, name) + new.parent = self._module + debug.dbg('Generated a nested import: %s', new) + return helpers.FakeName(str(i.namespace_names[1]), new) + + def __getattr__(self, name): + return getattr(self._module, name) + + def __repr__(self): + return "<%s: %s of %s>" % (self.__class__.__name__, self._module, + self._nested_import) + + +def _add_error(context, name, message=None): + # Should be a name, not a string! + if hasattr(name, 'parent'): + analysis.add(context, 'import-error', name, message) + + +def get_init_path(directory_path): + """ + The __init__ file can be searched in a directory. If found return it, else + None. + """ + for suffix, _, _ in imp.get_suffixes(): + path = os.path.join(directory_path, '__init__' + suffix) + if os.path.exists(path): + return path + return None + + +class ImportName(AbstractNameDefinition): + start_pos = (1, 0) + _level = 0 + + def __init__(self, parent_context, string_name): + self.parent_context = parent_context + self.string_name = string_name + + def infer(self): + return Importer( + self.parent_context.evaluator, + [self.string_name], + self.parent_context, + level=self._level, + ).follow() + + def goto(self): + return [m.name for m in self.infer()] + + def get_root_context(self): + # Not sure if this is correct. + return self.parent_context.get_root_context() + + @property + def api_type(self): + return 'module' + + +class SubModuleName(ImportName): + _level = 1 + + +class Importer(object): + def __init__(self, evaluator, import_path, module_context, level=0): + """ + An implementation similar to ``__import__``. Use `follow` + to actually follow the imports. + + *level* specifies whether to use absolute or relative imports. 0 (the + default) means only perform absolute imports. Positive values for level + indicate the number of parent directories to search relative to the + directory of the module calling ``__import__()`` (see PEP 328 for the + details). + + :param import_path: List of namespaces (strings or Names). + """ + debug.speed('import %s' % (import_path,)) + self._evaluator = evaluator + self.level = level + self.module_context = module_context + try: + self.file_path = module_context.py__file__() + except AttributeError: + # Can be None for certain compiled modules like 'builtins'. + self.file_path = None + + if level: + base = module_context.py__package__().split('.') + if base == ['']: + base = [] + if level > len(base): + path = module_context.py__file__() + if path is not None: + import_path = list(import_path) + p = path + for i in range(level): + p = os.path.dirname(p) + dir_name = os.path.basename(p) + # This is not the proper way to do relative imports. However, since + # Jedi cannot be sure about the entry point, we just calculate an + # absolute path here. + if dir_name: + # TODO those sys.modules modifications are getting + # really stupid. this is the 3rd time that we're using + # this. We should probably refactor. + if path.endswith(os.path.sep + 'os.py'): + import_path.insert(0, 'os') + else: + import_path.insert(0, dir_name) + else: + _add_error(module_context, import_path[-1]) + import_path = [] + # TODO add import error. + debug.warning('Attempted relative import beyond top-level package.') + # If no path is defined in the module we have no ideas where we + # are in the file system. Therefore we cannot know what to do. + # In this case we just let the path there and ignore that it's + # a relative path. Not sure if that's a good idea. + else: + # Here we basically rewrite the level to 0. + base = tuple(base) + if level > 1: + base = base[:-level + 1] + + import_path = base + tuple(import_path) + self.import_path = import_path + + @property + def str_import_path(self): + """Returns the import path as pure strings instead of `Name`.""" + return tuple( + name.value if isinstance(name, tree.Name) else name + for name in self.import_path) + + def sys_path_with_modifications(self): + in_path = [] + sys_path_mod = self._evaluator.project.sys_path \ + + sys_path.check_sys_path_modifications(self.module_context) + if self.file_path is not None: + # If you edit e.g. gunicorn, there will be imports like this: + # `from gunicorn import something`. But gunicorn is not in the + # sys.path. Therefore look if gunicorn is a parent directory, #56. + if self.import_path: # TODO is this check really needed? + for path in sys_path.traverse_parents(self.file_path): + if os.path.basename(path) == self.str_import_path[0]: + in_path.append(os.path.dirname(path)) + + # Since we know nothing about the call location of the sys.path, + # it's a possibility that the current directory is the origin of + # the Python execution. + sys_path_mod.insert(0, os.path.dirname(self.file_path)) + + return in_path + sys_path_mod + + def follow(self): + if not self.import_path: + return NO_CONTEXTS + return self._do_import(self.import_path, self.sys_path_with_modifications()) + + def _do_import(self, import_path, sys_path): + """ + This method is very similar to importlib's `_gcd_import`. + """ + import_parts = [ + i.value if isinstance(i, tree.Name) else i + for i in import_path + ] + + # Handle "magic" Flask extension imports: + # ``flask.ext.foo`` is really ``flask_foo`` or ``flaskext.foo``. + if len(import_path) > 2 and import_parts[:2] == ['flask', 'ext']: + # New style. + ipath = ('flask_' + str(import_parts[2]),) + import_path[3:] + modules = self._do_import(ipath, sys_path) + if modules: + return modules + else: + # Old style + return self._do_import(('flaskext',) + import_path[2:], sys_path) + + module_name = '.'.join(import_parts) + try: + return ContextSet(self._evaluator.modules[module_name]) + except KeyError: + pass + + if len(import_path) > 1: + # This is a recursive way of importing that works great with + # the module cache. + bases = self._do_import(import_path[:-1], sys_path) + if not bases: + return NO_CONTEXTS + # We can take the first element, because only the os special + # case yields multiple modules, which is not important for + # further imports. + parent_module = list(bases)[0] + + # This is a huge exception, we follow a nested import + # ``os.path``, because it's a very important one in Python + # that is being achieved by messing with ``sys.modules`` in + # ``os``. + if import_parts == ['os', 'path']: + return parent_module.py__getattribute__('path') + + try: + method = parent_module.py__path__ + except AttributeError: + # The module is not a package. + _add_error(self.module_context, import_path[-1]) + return NO_CONTEXTS + else: + paths = method() + debug.dbg('search_module %s in paths %s', module_name, paths) + for path in paths: + # At the moment we are only using one path. So this is + # not important to be correct. + try: + if not isinstance(path, list): + path = [path] + module_file, module_path, is_pkg = \ + find_module(import_parts[-1], path, fullname=module_name) + break + except ImportError: + module_path = None + if module_path is None: + _add_error(self.module_context, import_path[-1]) + return NO_CONTEXTS + else: + parent_module = None + try: + debug.dbg('search_module %s in %s', import_parts[-1], self.file_path) + # Override the sys.path. It works only good that way. + # Injecting the path directly into `find_module` did not work. + sys.path, temp = sys_path, sys.path + try: + module_file, module_path, is_pkg = \ + find_module(import_parts[-1], fullname=module_name) + finally: + sys.path = temp + except ImportError: + # The module is not a package. + _add_error(self.module_context, import_path[-1]) + return NO_CONTEXTS + + code = None + if is_pkg: + # In this case, we don't have a file yet. Search for the + # __init__ file. + if module_path.endswith(('.zip', '.egg')): + code = module_file.loader.get_source(module_name) + else: + module_path = get_init_path(module_path) + elif module_file: + code = module_file.read() + module_file.close() + + if isinstance(module_path, ImplicitNSInfo): + from jedi.evaluate.context.namespace import ImplicitNamespaceContext + fullname, paths = module_path.name, module_path.paths + module = ImplicitNamespaceContext(self._evaluator, fullname=fullname) + module.paths = paths + elif module_file is None and not module_path.endswith(('.py', '.zip', '.egg')): + module = compiled.load_module(self._evaluator, module_path) + else: + module = _load_module(self._evaluator, module_path, code, sys_path, parent_module) + + if module is None: + # The file might raise an ImportError e.g. and therefore not be + # importable. + return NO_CONTEXTS + + self._evaluator.modules[module_name] = module + return ContextSet(module) + + def _generate_name(self, name, in_module=None): + # Create a pseudo import to be able to follow them. + if in_module is None: + return ImportName(self.module_context, name) + return SubModuleName(in_module, name) + + def _get_module_names(self, search_path=None, in_module=None): + """ + Get the names of all modules in the search_path. This means file names + and not names defined in the files. + """ + + names = [] + # add builtin module names + if search_path is None and in_module is None: + names += [self._generate_name(name) for name in sys.builtin_module_names] + + if search_path is None: + search_path = self.sys_path_with_modifications() + for module_loader, name, is_pkg in pkgutil.iter_modules(search_path): + names.append(self._generate_name(name, in_module=in_module)) + return names + + def completion_names(self, evaluator, only_modules=False): + """ + :param only_modules: Indicates wheter it's possible to import a + definition that is not defined in a module. + """ + from jedi.evaluate.context import ModuleContext + from jedi.evaluate.context.namespace import ImplicitNamespaceContext + names = [] + if self.import_path: + # flask + if self.str_import_path == ('flask', 'ext'): + # List Flask extensions like ``flask_foo`` + for mod in self._get_module_names(): + modname = mod.string_name + if modname.startswith('flask_'): + extname = modname[len('flask_'):] + names.append(self._generate_name(extname)) + # Now the old style: ``flaskext.foo`` + for dir in self.sys_path_with_modifications(): + flaskext = os.path.join(dir, 'flaskext') + if os.path.isdir(flaskext): + names += self._get_module_names([flaskext]) + + for context in self.follow(): + # Non-modules are not completable. + if context.api_type != 'module': # not a module + continue + # namespace packages + if isinstance(context, ModuleContext) and context.py__file__().endswith('__init__.py'): + paths = context.py__path__() + names += self._get_module_names(paths, in_module=context) + + # implicit namespace packages + elif isinstance(context, ImplicitNamespaceContext): + paths = context.paths + names += self._get_module_names(paths) + + if only_modules: + # In the case of an import like `from x.` we don't need to + # add all the variables. + if ('os',) == self.str_import_path and not self.level: + # os.path is a hardcoded exception, because it's a + # ``sys.modules`` modification. + names.append(self._generate_name('path', context)) + + continue + + for filter in context.get_filters(search_global=False): + names += filter.values() + else: + # Empty import path=completion after import + if not self.level: + names += self._get_module_names() + + if self.file_path is not None: + path = os.path.abspath(self.file_path) + for i in range(self.level - 1): + path = os.path.dirname(path) + names += self._get_module_names([path]) + + return names + + +def _load_module(evaluator, path=None, code=None, sys_path=None, parent_module=None): + if sys_path is None: + sys_path = evaluator.project.sys_path + + dotted_path = path and compiled.dotted_from_fs_path(path, sys_path) + if path is not None and path.endswith(('.py', '.zip', '.egg')) \ + and dotted_path not in settings.auto_import_modules: + + module_node = evaluator.grammar.parse( + code=code, path=path, cache=True, diff_cache=True, + cache_path=settings.cache_directory) + + from jedi.evaluate.context import ModuleContext + return ModuleContext(evaluator, module_node, path=path) + else: + return compiled.load_module(evaluator, path) + + +def add_module(evaluator, module_name, module): + if '.' not in module_name: + # We cannot add paths with dots, because that would collide with + # the sepatator dots for nested packages. Therefore we return + # `__main__` in ModuleWrapper.py__name__(), which is similar to + # Python behavior. + evaluator.modules[module_name] = module + + +def get_modules_containing_name(evaluator, modules, name): + """ + Search a name in the directories of modules. + """ + from jedi.evaluate.context import ModuleContext + def check_directories(paths): + for p in paths: + if p is not None: + # We need abspath, because the seetings paths might not already + # have been converted to absolute paths. + d = os.path.dirname(os.path.abspath(p)) + for file_name in os.listdir(d): + path = os.path.join(d, file_name) + if file_name.endswith('.py'): + yield path + + def check_python_file(path): + try: + # TODO I don't think we should use the cache here?! + node_cache_item = parser_cache[evaluator.grammar._hashed][path] + except KeyError: + try: + return check_fs(path) + except IOError: + return None + else: + module_node = node_cache_item.node + return ModuleContext(evaluator, module_node, path=path) + + def check_fs(path): + with open(path, 'rb') as f: + code = python_bytes_to_unicode(f.read(), errors='replace') + if name in code: + module = _load_module(evaluator, path, code) + + module_name = sys_path.dotted_path_in_sys_path(evaluator.project.sys_path, path) + if module_name is not None: + add_module(evaluator, module_name, module) + return module + + # skip non python modules + used_mod_paths = set() + for m in modules: + try: + path = m.py__file__() + except AttributeError: + pass + else: + used_mod_paths.add(path) + yield m + + if not settings.dynamic_params_for_other_modules: + return + + additional = set(os.path.abspath(p) for p in settings.additional_dynamic_modules) + # Check the directories of used modules. + paths = (additional | set(check_directories(used_mod_paths))) \ + - used_mod_paths + + # Sort here to make issues less random. + for p in sorted(paths): + # make testing easier, sort it - same results on every interpreter + m = check_python_file(p) + if m is not None and not isinstance(m, compiled.CompiledObject): + yield m diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/jedi_typing.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/jedi_typing.py new file mode 100644 index 0000000..f48a567 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/jedi_typing.py @@ -0,0 +1,100 @@ +""" +This module is not intended to be used in jedi, rather it will be fed to the +jedi-parser to replace classes in the typing module +""" + +try: + from collections import abc +except ImportError: + # python 2 + import collections as abc + + +def factory(typing_name, indextypes): + class Iterable(abc.Iterable): + def __iter__(self): + while True: + yield indextypes[0]() + + class Iterator(Iterable, abc.Iterator): + def next(self): + """ needed for python 2 """ + return self.__next__() + + def __next__(self): + return indextypes[0]() + + class Sequence(abc.Sequence): + def __getitem__(self, index): + return indextypes[0]() + + class MutableSequence(Sequence, abc.MutableSequence): + pass + + class List(MutableSequence, list): + pass + + class Tuple(Sequence, tuple): + def __getitem__(self, index): + if indextypes[1] == Ellipsis: + # https://www.python.org/dev/peps/pep-0484/#the-typing-module + # Tuple[int, ...] means a tuple of ints of indetermined length + return indextypes[0]() + else: + return indextypes[index]() + + class AbstractSet(Iterable, abc.Set): + pass + + class MutableSet(AbstractSet, abc.MutableSet): + pass + + class KeysView(Iterable, abc.KeysView): + pass + + class ValuesView(abc.ValuesView): + def __iter__(self): + while True: + yield indextypes[1]() + + class ItemsView(abc.ItemsView): + def __iter__(self): + while True: + yield (indextypes[0](), indextypes[1]()) + + class Mapping(Iterable, abc.Mapping): + def __getitem__(self, item): + return indextypes[1]() + + def keys(self): + return KeysView() + + def values(self): + return ValuesView() + + def items(self): + return ItemsView() + + class MutableMapping(Mapping, abc.MutableMapping): + pass + + class Dict(MutableMapping, dict): + pass + + dct = { + "Sequence": Sequence, + "MutableSequence": MutableSequence, + "List": List, + "Iterable": Iterable, + "Iterator": Iterator, + "AbstractSet": AbstractSet, + "MutableSet": MutableSet, + "Mapping": Mapping, + "MutableMapping": MutableMapping, + "Tuple": Tuple, + "KeysView": KeysView, + "ItemsView": ItemsView, + "ValuesView": ValuesView, + "Dict": Dict, + } + return dct[typing_name] diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/lazy_context.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/lazy_context.py new file mode 100644 index 0000000..9380212 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/lazy_context.py @@ -0,0 +1,61 @@ +from jedi.evaluate.base_context import ContextSet, NO_CONTEXTS + +class AbstractLazyContext(object): + def __init__(self, data): + self.data = data + + def __repr__(self): + return '<%s: %s>' % (self.__class__.__name__, self.data) + + def infer(self): + raise NotImplementedError + + +class LazyKnownContext(AbstractLazyContext): + """data is a context.""" + def infer(self): + return ContextSet(self.data) + + +class LazyKnownContexts(AbstractLazyContext): + """data is a ContextSet.""" + def infer(self): + return self.data + + +class LazyUnknownContext(AbstractLazyContext): + def __init__(self): + super(LazyUnknownContext, self).__init__(None) + + def infer(self): + return NO_CONTEXTS + + +class LazyTreeContext(AbstractLazyContext): + def __init__(self, context, node): + super(LazyTreeContext, self).__init__(node) + self._context = context + # We need to save the predefined names. It's an unfortunate side effect + # that needs to be tracked otherwise results will be wrong. + self._predefined_names = dict(context.predefined_names) + + def infer(self): + old, self._context.predefined_names = \ + self._context.predefined_names, self._predefined_names + try: + return self._context.eval_node(self.data) + finally: + self._context.predefined_names = old + + +def get_merged_lazy_context(lazy_contexts): + if len(lazy_contexts) > 1: + return MergedLazyContexts(lazy_contexts) + else: + return lazy_contexts[0] + + +class MergedLazyContexts(AbstractLazyContext): + """data is a list of lazy contexts.""" + def infer(self): + return ContextSet.from_sets(l.infer() for l in self.data) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/param.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/param.py new file mode 100644 index 0000000..a46394c --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/param.py @@ -0,0 +1,195 @@ +from collections import defaultdict + +from jedi.evaluate.utils import PushBackIterator +from jedi.evaluate import analysis +from jedi.evaluate.lazy_context import LazyKnownContext, \ + LazyTreeContext, LazyUnknownContext +from jedi.evaluate import docstrings +from jedi.evaluate import pep0484 +from jedi.evaluate.context import iterable + + +def _add_argument_issue(parent_context, error_name, lazy_context, message): + if isinstance(lazy_context, LazyTreeContext): + node = lazy_context.data + if node.parent.type == 'argument': + node = node.parent + analysis.add(parent_context, error_name, node, message) + + +class ExecutedParam(object): + """Fake a param and give it values.""" + def __init__(self, execution_context, param_node, lazy_context): + self._execution_context = execution_context + self._param_node = param_node + self._lazy_context = lazy_context + self.string_name = param_node.name.value + + def infer(self): + pep0484_hints = pep0484.infer_param(self._execution_context, self._param_node) + doc_params = docstrings.infer_param(self._execution_context, self._param_node) + if pep0484_hints or doc_params: + return pep0484_hints | doc_params + + return self._lazy_context.infer() + + @property + def var_args(self): + return self._execution_context.var_args + + def __repr__(self): + return '<%s: %s>' % (self.__class__.__name__, self.string_name) + + +def get_params(execution_context, var_args): + result_params = [] + param_dict = {} + funcdef = execution_context.tree_node + parent_context = execution_context.parent_context + + for param in funcdef.get_params(): + param_dict[param.name.value] = param + unpacked_va = list(var_args.unpack(funcdef)) + var_arg_iterator = PushBackIterator(iter(unpacked_va)) + + non_matching_keys = defaultdict(lambda: []) + keys_used = {} + keys_only = False + had_multiple_value_error = False + for param in funcdef.get_params(): + # The value and key can both be null. There, the defaults apply. + # args / kwargs will just be empty arrays / dicts, respectively. + # Wrong value count is just ignored. If you try to test cases that are + # not allowed in Python, Jedi will maybe not show any completions. + key, argument = next(var_arg_iterator, (None, None)) + while key is not None: + keys_only = True + try: + key_param = param_dict[key] + except KeyError: + non_matching_keys[key] = argument + else: + if key in keys_used: + had_multiple_value_error = True + m = ("TypeError: %s() got multiple values for keyword argument '%s'." + % (funcdef.name, key)) + for node in var_args.get_calling_nodes(): + analysis.add(parent_context, 'type-error-multiple-values', + node, message=m) + else: + keys_used[key] = ExecutedParam(execution_context, key_param, argument) + key, argument = next(var_arg_iterator, (None, None)) + + try: + result_params.append(keys_used[param.name.value]) + continue + except KeyError: + pass + + if param.star_count == 1: + # *args param + lazy_context_list = [] + if argument is not None: + lazy_context_list.append(argument) + for key, argument in var_arg_iterator: + # Iterate until a key argument is found. + if key: + var_arg_iterator.push_back((key, argument)) + break + lazy_context_list.append(argument) + seq = iterable.FakeSequence(execution_context.evaluator, 'tuple', lazy_context_list) + result_arg = LazyKnownContext(seq) + elif param.star_count == 2: + # **kwargs param + dct = iterable.FakeDict(execution_context.evaluator, dict(non_matching_keys)) + result_arg = LazyKnownContext(dct) + non_matching_keys = {} + else: + # normal param + if argument is None: + # No value: Return an empty container + if param.default is None: + result_arg = LazyUnknownContext() + if not keys_only: + for node in var_args.get_calling_nodes(): + m = _error_argument_count(funcdef, len(unpacked_va)) + analysis.add(parent_context, 'type-error-too-few-arguments', + node, message=m) + else: + result_arg = LazyTreeContext(parent_context, param.default) + else: + result_arg = argument + + result_params.append(ExecutedParam(execution_context, param, result_arg)) + if not isinstance(result_arg, LazyUnknownContext): + keys_used[param.name.value] = result_params[-1] + + if keys_only: + # All arguments should be handed over to the next function. It's not + # about the values inside, it's about the names. Jedi needs to now that + # there's nothing to find for certain names. + for k in set(param_dict) - set(keys_used): + param = param_dict[k] + + if not (non_matching_keys or had_multiple_value_error or + param.star_count or param.default): + # add a warning only if there's not another one. + for node in var_args.get_calling_nodes(): + m = _error_argument_count(funcdef, len(unpacked_va)) + analysis.add(parent_context, 'type-error-too-few-arguments', + node, message=m) + + for key, lazy_context in non_matching_keys.items(): + m = "TypeError: %s() got an unexpected keyword argument '%s'." \ + % (funcdef.name, key) + _add_argument_issue( + parent_context, + 'type-error-keyword-argument', + lazy_context, + message=m + ) + + remaining_arguments = list(var_arg_iterator) + if remaining_arguments: + m = _error_argument_count(funcdef, len(unpacked_va)) + # Just report an error for the first param that is not needed (like + # cPython). + first_key, lazy_context = remaining_arguments[0] + if var_args.get_calling_nodes(): + # There might not be a valid calling node so check for that first. + _add_argument_issue(parent_context, 'type-error-too-many-arguments', lazy_context, message=m) + return result_params + + +def _error_argument_count(funcdef, actual_count): + params = funcdef.get_params() + default_arguments = sum(1 for p in params if p.default or p.star_count) + + if default_arguments == 0: + before = 'exactly ' + else: + before = 'from %s to ' % (len(params) - default_arguments) + return ('TypeError: %s() takes %s%s arguments (%s given).' + % (funcdef.name, before, len(params), actual_count)) + + +def _create_default_param(execution_context, param): + if param.star_count == 1: + result_arg = LazyKnownContext( + iterable.FakeSequence(execution_context.evaluator, 'tuple', []) + ) + elif param.star_count == 2: + result_arg = LazyKnownContext( + iterable.FakeDict(execution_context.evaluator, {}) + ) + elif param.default is None: + result_arg = LazyUnknownContext() + else: + result_arg = LazyTreeContext(execution_context.parent_context, param.default) + return ExecutedParam(execution_context, param, result_arg) + + +def create_default_params(execution_context, funcdef): + return [_create_default_param(execution_context, p) + for p in funcdef.get_params()] + diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/parser_cache.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/parser_cache.py new file mode 100644 index 0000000..84fe52d --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/parser_cache.py @@ -0,0 +1,6 @@ +from jedi.evaluate.cache import evaluator_function_cache + + +@evaluator_function_cache() +def get_yield_exprs(evaluator, funcdef): + return list(funcdef.iter_yield_exprs()) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/pep0484.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/pep0484.py new file mode 100644 index 0000000..820f112 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/pep0484.py @@ -0,0 +1,222 @@ +""" +PEP 0484 ( https://www.python.org/dev/peps/pep-0484/ ) describes type hints +through function annotations. There is a strong suggestion in this document +that only the type of type hinting defined in PEP0484 should be allowed +as annotations in future python versions. + +The (initial / probably incomplete) implementation todo list for pep-0484: +v Function parameter annotations with builtin/custom type classes +v Function returntype annotations with builtin/custom type classes +v Function parameter annotations with strings (forward reference) +v Function return type annotations with strings (forward reference) +v Local variable type hints +v Assigned types: `Url = str\ndef get(url:Url) -> str:` +v Type hints in `with` statements +x Stub files support +x support `@no_type_check` and `@no_type_check_decorator` +x support for typing.cast() operator +x support for type hint comments for functions, `# type: (int, str) -> int`. + See comment from Guido https://github.com/davidhalter/jedi/issues/662 +""" + +import os +import re + +from parso import ParserSyntaxError +from parso.python import tree + +from jedi.evaluate.cache import evaluator_method_cache +from jedi.evaluate import compiled +from jedi.evaluate.base_context import NO_CONTEXTS, ContextSet +from jedi.evaluate.lazy_context import LazyTreeContext +from jedi.evaluate.context import ModuleContext +from jedi import debug +from jedi import _compatibility +from jedi import parser_utils + + +def _evaluate_for_annotation(context, annotation, index=None): + """ + Evaluates a string-node, looking for an annotation + If index is not None, the annotation is expected to be a tuple + and we're interested in that index + """ + if annotation is not None: + context_set = context.eval_node(_fix_forward_reference(context, annotation)) + if index is not None: + context_set = context_set.filter( + lambda context: context.array_type == 'tuple' \ + and len(list(context.py__iter__())) >= index + ).py__getitem__(index) + return context_set.execute_evaluated() + else: + return NO_CONTEXTS + + +def _fix_forward_reference(context, node): + evaled_nodes = context.eval_node(node) + if len(evaled_nodes) != 1: + debug.warning("Eval'ed typing index %s should lead to 1 object, " + " not %s" % (node, evaled_nodes)) + return node + evaled_node = list(evaled_nodes)[0] + if isinstance(evaled_node, compiled.CompiledObject) and \ + isinstance(evaled_node.obj, str): + try: + new_node = context.evaluator.grammar.parse( + _compatibility.unicode(evaled_node.obj), + start_symbol='eval_input', + error_recovery=False + ) + except ParserSyntaxError: + debug.warning('Annotation not parsed: %s' % evaled_node.obj) + return node + else: + module = node.get_root_node() + parser_utils.move(new_node, module.end_pos[0]) + new_node.parent = context.tree_node + return new_node + else: + return node + + +@evaluator_method_cache() +def infer_param(execution_context, param): + annotation = param.annotation + module_context = execution_context.get_root_context() + return _evaluate_for_annotation(module_context, annotation) + + +def py__annotations__(funcdef): + return_annotation = funcdef.annotation + if return_annotation: + dct = {'return': return_annotation} + else: + dct = {} + for function_param in funcdef.get_params(): + param_annotation = function_param.annotation + if param_annotation is not None: + dct[function_param.name.value] = param_annotation + return dct + + +@evaluator_method_cache() +def infer_return_types(function_context): + annotation = py__annotations__(function_context.tree_node).get("return", None) + module_context = function_context.get_root_context() + return _evaluate_for_annotation(module_context, annotation) + + +_typing_module = None + + +def _get_typing_replacement_module(grammar): + """ + The idea is to return our jedi replacement for the PEP-0484 typing module + as discussed at https://github.com/davidhalter/jedi/issues/663 + """ + global _typing_module + if _typing_module is None: + typing_path = \ + os.path.abspath(os.path.join(__file__, "../jedi_typing.py")) + with open(typing_path) as f: + code = _compatibility.unicode(f.read()) + _typing_module = grammar.parse(code) + return _typing_module + + +def py__getitem__(context, typ, node): + if not typ.get_root_context().name.string_name == "typing": + return None + # we assume that any class using [] in a module called + # "typing" with a name for which we have a replacement + # should be replaced by that class. This is not 100% + # airtight but I don't have a better idea to check that it's + # actually the PEP-0484 typing module and not some other + if node.type == "subscriptlist": + nodes = node.children[::2] # skip the commas + else: + nodes = [node] + del node + + nodes = [_fix_forward_reference(context, node) for node in nodes] + type_name = typ.name.string_name + + # hacked in Union and Optional, since it's hard to do nicely in parsed code + if type_name in ("Union", '_Union'): + # In Python 3.6 it's still called typing.Union but it's an instance + # called _Union. + return ContextSet.from_sets(context.eval_node(node) for node in nodes) + if type_name in ("Optional", '_Optional'): + # Here we have the same issue like in Union. Therefore we also need to + # check for the instance typing._Optional (Python 3.6). + return context.eval_node(nodes[0]) + + typing = ModuleContext( + context.evaluator, + module_node=_get_typing_replacement_module(context.evaluator.latest_grammar), + path=None + ) + factories = typing.py__getattribute__("factory") + assert len(factories) == 1 + factory = list(factories)[0] + assert factory + function_body_nodes = factory.tree_node.children[4].children + valid_classnames = set(child.name.value + for child in function_body_nodes + if isinstance(child, tree.Class)) + if type_name not in valid_classnames: + return None + compiled_classname = compiled.create(context.evaluator, type_name) + + from jedi.evaluate.context.iterable import FakeSequence + args = FakeSequence( + context.evaluator, + "tuple", + [LazyTreeContext(context, n) for n in nodes] + ) + + result = factory.execute_evaluated(compiled_classname, args) + return result + + +def find_type_from_comment_hint_for(context, node, name): + return _find_type_from_comment_hint(context, node, node.children[1], name) + + +def find_type_from_comment_hint_with(context, node, name): + assert len(node.children[1].children) == 3, \ + "Can only be here when children[1] is 'foo() as f'" + varlist = node.children[1].children[2] + return _find_type_from_comment_hint(context, node, varlist, name) + + +def find_type_from_comment_hint_assign(context, node, name): + return _find_type_from_comment_hint(context, node, node.children[0], name) + + +def _find_type_from_comment_hint(context, node, varlist, name): + index = None + if varlist.type in ("testlist_star_expr", "exprlist", "testlist"): + # something like "a, b = 1, 2" + index = 0 + for child in varlist.children: + if child == name: + break + if child.type == "operator": + continue + index += 1 + else: + return [] + + comment = parser_utils.get_following_comment_same_line(node) + if comment is None: + return [] + match = re.match(r"^#\s*type:\s*([^#]*)", comment) + if not match: + return [] + annotation = tree.String( + repr(str(match.group(1).strip())), + node.start_pos) + annotation.parent = node.parent + return _evaluate_for_annotation(context, annotation, index) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/project.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/project.py new file mode 100644 index 0000000..b90f0f0 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/project.py @@ -0,0 +1,40 @@ +import os +import sys + +from jedi.evaluate.sys_path import get_venv_path, detect_additional_paths +from jedi.cache import underscore_memoization + + +class Project(object): + def __init__(self, sys_path=None): + if sys_path is not None: + self._sys_path = sys_path + + venv = os.getenv('VIRTUAL_ENV') + if venv: + sys_path = get_venv_path(venv) + + if sys_path is None: + sys_path = sys.path + + base_sys_path = list(sys_path) + try: + base_sys_path.remove('') + except ValueError: + pass + + self._base_sys_path = base_sys_path + + def add_script_path(self, script_path): + self._script_path = script_path + + def add_evaluator(self, evaluator): + self._evaluator = evaluator + + @property + @underscore_memoization + def sys_path(self): + if self._script_path is None: + return self._base_sys_path + + return self._base_sys_path + detect_additional_paths(self._evaluator, self._script_path) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/recursion.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/recursion.py new file mode 100644 index 0000000..e2f34a4 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/recursion.py @@ -0,0 +1,135 @@ +""" +Recursions are the recipe of |jedi| to conquer Python code. However, someone +must stop recursions going mad. Some settings are here to make |jedi| stop at +the right time. You can read more about them :ref:`here `. + +Next to :mod:`jedi.evaluate.cache` this module also makes |jedi| not +thread-safe. Why? ``execution_recursion_decorator`` uses class variables to +count the function calls. + +.. _settings-recursion: + +Settings +~~~~~~~~~~ + +Recursion settings are important if you don't want extremly +recursive python code to go absolutely crazy. + +The default values are based on experiments while completing the |jedi| library +itself (inception!). But I don't think there's any other Python library that +uses recursion in a similarly extreme way. Completion should also be fast and +therefore the quality might not always be maximal. + +.. autodata:: recursion_limit +.. autodata:: total_function_execution_limit +.. autodata:: per_function_execution_limit +.. autodata:: per_function_recursion_limit +""" + +from contextlib import contextmanager + +from jedi import debug +from jedi.evaluate.base_context import NO_CONTEXTS + + +recursion_limit = 15 +""" +Like ``sys.getrecursionlimit()``, just for |jedi|. +""" +total_function_execution_limit = 200 +""" +This is a hard limit of how many non-builtin functions can be executed. +""" +per_function_execution_limit = 6 +""" +The maximal amount of times a specific function may be executed. +""" +per_function_recursion_limit = 2 +""" +A function may not be executed more than this number of times recursively. +""" + +class RecursionDetector(object): + def __init__(self): + self.pushed_nodes = [] + + +@contextmanager +def execution_allowed(evaluator, node): + """ + A decorator to detect recursions in statements. In a recursion a statement + at the same place, in the same module may not be executed two times. + """ + pushed_nodes = evaluator.recursion_detector.pushed_nodes + + if node in pushed_nodes: + debug.warning('catched stmt recursion: %s @%s', node, + node.start_pos) + yield False + else: + pushed_nodes.append(node) + yield True + pushed_nodes.pop() + + +def execution_recursion_decorator(default=NO_CONTEXTS): + def decorator(func): + def wrapper(execution, **kwargs): + detector = execution.evaluator.execution_recursion_detector + allowed = detector.push_execution(execution) + try: + if allowed: + result = default + else: + result = func(execution, **kwargs) + finally: + detector.pop_execution() + return result + return wrapper + return decorator + + +class ExecutionRecursionDetector(object): + """ + Catches recursions of executions. + """ + def __init__(self, evaluator): + self._evaluator = evaluator + + self._recursion_level = 0 + self._parent_execution_funcs = [] + self._funcdef_execution_counts = {} + self._execution_count = 0 + + def pop_execution(self): + self._parent_execution_funcs.pop() + self._recursion_level -= 1 + + def push_execution(self, execution): + funcdef = execution.tree_node + + # These two will be undone in pop_execution. + self._recursion_level += 1 + self._parent_execution_funcs.append(funcdef) + + module = execution.get_root_context() + if module == self._evaluator.BUILTINS: + # We have control over builtins so we know they are not recursing + # like crazy. Therefore we just let them execute always, because + # they usually just help a lot with getting good results. + return False + + if self._recursion_level > recursion_limit: + return True + + if self._execution_count >= total_function_execution_limit: + return True + self._execution_count += 1 + + if self._funcdef_execution_counts.setdefault(funcdef, 0) >= per_function_execution_limit: + return True + self._funcdef_execution_counts[funcdef] += 1 + + if self._parent_execution_funcs.count(funcdef) > per_function_recursion_limit: + return True + return False diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/site.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/site.py new file mode 100644 index 0000000..bf884fa --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/site.py @@ -0,0 +1,110 @@ +"""An adapted copy of relevant site-packages functionality from Python stdlib. + +This file contains some functions related to handling site-packages in Python +with jedi-specific modifications: + +- the functions operate on sys_path argument rather than global sys.path + +- in .pth files "import ..." lines that allow execution of arbitrary code are + skipped to prevent code injection into jedi interpreter + +""" + +# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +# 2011, 2012, 2013, 2014, 2015 Python Software Foundation; All Rights Reserved + +from __future__ import print_function + +import sys +import os + + +def makepath(*paths): + dir = os.path.join(*paths) + try: + dir = os.path.abspath(dir) + except OSError: + pass + return dir, os.path.normcase(dir) + + +def _init_pathinfo(sys_path): + """Return a set containing all existing directory entries from sys_path""" + d = set() + for dir in sys_path: + try: + if os.path.isdir(dir): + dir, dircase = makepath(dir) + d.add(dircase) + except TypeError: + continue + return d + + +def addpackage(sys_path, sitedir, name, known_paths): + """Process a .pth file within the site-packages directory: + For each line in the file, either combine it with sitedir to a path + and add that to known_paths, or execute it if it starts with 'import '. + """ + if known_paths is None: + known_paths = _init_pathinfo(sys_path) + reset = 1 + else: + reset = 0 + fullname = os.path.join(sitedir, name) + try: + f = open(fullname, "r") + except OSError: + return + with f: + for n, line in enumerate(f): + if line.startswith("#"): + continue + try: + if line.startswith(("import ", "import\t")): + # Change by immerrr: don't evaluate import lines to prevent + # code injection into jedi through pth files. + # + # exec(line) + continue + line = line.rstrip() + dir, dircase = makepath(sitedir, line) + if not dircase in known_paths and os.path.exists(dir): + sys_path.append(dir) + known_paths.add(dircase) + except Exception: + print("Error processing line {:d} of {}:\n".format(n+1, fullname), + file=sys.stderr) + import traceback + for record in traceback.format_exception(*sys.exc_info()): + for line in record.splitlines(): + print(' '+line, file=sys.stderr) + print("\nRemainder of file ignored", file=sys.stderr) + break + if reset: + known_paths = None + return known_paths + + +def addsitedir(sys_path, sitedir, known_paths=None): + """Add 'sitedir' argument to sys_path if missing and handle .pth files in + 'sitedir'""" + if known_paths is None: + known_paths = _init_pathinfo(sys_path) + reset = 1 + else: + reset = 0 + sitedir, sitedircase = makepath(sitedir) + if not sitedircase in known_paths: + sys_path.append(sitedir) # Add path component + known_paths.add(sitedircase) + try: + names = os.listdir(sitedir) + except OSError: + return + names = [name for name in names if name.endswith(".pth")] + for name in sorted(names): + addpackage(sys_path, sitedir, name, known_paths) + if reset: + known_paths = None + return known_paths diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/stdlib.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/stdlib.py new file mode 100644 index 0000000..259d692 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/stdlib.py @@ -0,0 +1,325 @@ +""" +Implementations of standard library functions, because it's not possible to +understand them with Jedi. + +To add a new implementation, create a function and add it to the +``_implemented`` dict at the bottom of this module. + +Note that this module exists only to implement very specific functionality in +the standard library. The usual way to understand the standard library is the +compiled module that returns the types for C-builtins. +""" +import collections +import re + +from jedi import debug +from jedi.evaluate.arguments import ValuesArguments +from jedi.evaluate import analysis +from jedi.evaluate import compiled +from jedi.evaluate.context.instance import InstanceFunctionExecution, \ + AbstractInstanceContext, CompiledInstance, BoundMethod, \ + AnonymousInstanceFunctionExecution +from jedi.evaluate.base_context import ContextualizedNode, \ + NO_CONTEXTS, ContextSet +from jedi.evaluate.context import ClassContext, ModuleContext +from jedi.evaluate.context import iterable +from jedi.evaluate.lazy_context import LazyTreeContext +from jedi.evaluate.syntax_tree import is_string + +# Now this is all part of fake tuples in Jedi. However super doesn't work on +# __init__ and __new__ doesn't work at all. So adding this to nametuples is +# just the easiest way. +_NAMEDTUPLE_INIT = """ + def __init__(_cls, {arg_list}): + 'A helper function for namedtuple.' + self.__iterable = ({arg_list}) + + def __iter__(self): + for i in self.__iterable: + yield i + + def __getitem__(self, y): + return self.__iterable[y] + +""" + + +class NotInStdLib(LookupError): + pass + + +def execute(evaluator, obj, arguments): + if isinstance(obj, BoundMethod): + raise NotInStdLib() + + try: + obj_name = obj.name.string_name + except AttributeError: + pass + else: + if obj.parent_context == evaluator.BUILTINS: + module_name = 'builtins' + elif isinstance(obj.parent_context, ModuleContext): + module_name = obj.parent_context.name.string_name + else: + module_name = '' + + # for now we just support builtin functions. + try: + func = _implemented[module_name][obj_name] + except KeyError: + pass + else: + return func(evaluator, obj, arguments) + raise NotInStdLib() + + +def _follow_param(evaluator, arguments, index): + try: + key, lazy_context = list(arguments.unpack())[index] + except IndexError: + return NO_CONTEXTS + else: + return lazy_context.infer() + + +def argument_clinic(string, want_obj=False, want_context=False, want_arguments=False): + """ + Works like Argument Clinic (PEP 436), to validate function params. + """ + clinic_args = [] + allow_kwargs = False + optional = False + while string: + # Optional arguments have to begin with a bracket. And should always be + # at the end of the arguments. This is therefore not a proper argument + # clinic implementation. `range()` for exmple allows an optional start + # value at the beginning. + match = re.match('(?:(?:(\[),? ?|, ?|)(\w+)|, ?/)\]*', string) + string = string[len(match.group(0)):] + if not match.group(2): # A slash -> allow named arguments + allow_kwargs = True + continue + optional = optional or bool(match.group(1)) + word = match.group(2) + clinic_args.append((word, optional, allow_kwargs)) + + def f(func): + def wrapper(evaluator, obj, arguments): + debug.dbg('builtin start %s' % obj, color='MAGENTA') + try: + lst = list(arguments.eval_argument_clinic(clinic_args)) + except ValueError: + return NO_CONTEXTS + else: + kwargs = {} + if want_context: + kwargs['context'] = arguments.context + if want_obj: + kwargs['obj'] = obj + if want_arguments: + kwargs['arguments'] = arguments + return func(evaluator, *lst, **kwargs) + finally: + debug.dbg('builtin end', color='MAGENTA') + + return wrapper + return f + + +@argument_clinic('iterator[, default], /') +def builtins_next(evaluator, iterators, defaults): + """ + TODO this function is currently not used. It's a stab at implementing next + in a different way than fake objects. This would be a bit more flexible. + """ + if evaluator.python_version[0] == 2: + name = 'next' + else: + name = '__next__' + + context_set = NO_CONTEXTS + for iterator in iterators: + if isinstance(iterator, AbstractInstanceContext): + context_set = ContextSet.from_sets( + n.infer() + for filter in iterator.get_filters(include_self_names=True) + for n in filter.get(name) + ).execute_evaluated() + if context_set: + return context_set + return defaults + + +@argument_clinic('object, name[, default], /') +def builtins_getattr(evaluator, objects, names, defaults=None): + # follow the first param + for obj in objects: + for name in names: + if is_string(name): + return obj.py__getattribute__(name.obj) + else: + debug.warning('getattr called without str') + continue + return NO_CONTEXTS + + +@argument_clinic('object[, bases, dict], /') +def builtins_type(evaluator, objects, bases, dicts): + if bases or dicts: + # It's a type creation... maybe someday... + return NO_CONTEXTS + else: + return objects.py__class__() + + +class SuperInstance(AbstractInstanceContext): + """To be used like the object ``super`` returns.""" + def __init__(self, evaluator, cls): + su = cls.py_mro()[1] + super().__init__(evaluator, su and su[0] or self) + + +@argument_clinic('[type[, obj]], /', want_context=True) +def builtins_super(evaluator, types, objects, context): + # TODO make this able to detect multiple inheritance super + if isinstance(context, (InstanceFunctionExecution, + AnonymousInstanceFunctionExecution)): + su = context.instance.py__class__().py__bases__() + return su[0].infer().execute_evaluated() + return NO_CONTEXTS + + +@argument_clinic('sequence, /', want_obj=True, want_arguments=True) +def builtins_reversed(evaluator, sequences, obj, arguments): + # While we could do without this variable (just by using sequences), we + # want static analysis to work well. Therefore we need to generated the + # values again. + key, lazy_context = next(arguments.unpack()) + cn = None + if isinstance(lazy_context, LazyTreeContext): + # TODO access private + cn = ContextualizedNode(lazy_context._context, lazy_context.data) + ordered = list(sequences.iterate(cn)) + + rev = list(reversed(ordered)) + # Repack iterator values and then run it the normal way. This is + # necessary, because `reversed` is a function and autocompletion + # would fail in certain cases like `reversed(x).__iter__` if we + # just returned the result directly. + seq = iterable.FakeSequence(evaluator, 'list', rev) + arguments = ValuesArguments([ContextSet(seq)]) + return ContextSet(CompiledInstance(evaluator, evaluator.BUILTINS, obj, arguments)) + + +@argument_clinic('obj, type, /', want_arguments=True) +def builtins_isinstance(evaluator, objects, types, arguments): + bool_results = set() + for o in objects: + try: + mro_func = o.py__class__().py__mro__ + except AttributeError: + # This is temporary. Everything should have a class attribute in + # Python?! Maybe we'll leave it here, because some numpy objects or + # whatever might not. + return ContextSet(compiled.create(True), compiled.create(False)) + + mro = mro_func() + + for cls_or_tup in types: + if cls_or_tup.is_class(): + bool_results.add(cls_or_tup in mro) + elif cls_or_tup.name.string_name == 'tuple' \ + and cls_or_tup.get_root_context() == evaluator.BUILTINS: + # Check for tuples. + classes = ContextSet.from_sets( + lazy_context.infer() + for lazy_context in cls_or_tup.iterate() + ) + bool_results.add(any(cls in mro for cls in classes)) + else: + _, lazy_context = list(arguments.unpack())[1] + if isinstance(lazy_context, LazyTreeContext): + node = lazy_context.data + message = 'TypeError: isinstance() arg 2 must be a ' \ + 'class, type, or tuple of classes and types, ' \ + 'not %s.' % cls_or_tup + analysis.add(lazy_context._context, 'type-error-isinstance', node, message) + + return ContextSet.from_iterable(compiled.create(evaluator, x) for x in bool_results) + + +def collections_namedtuple(evaluator, obj, arguments): + """ + Implementation of the namedtuple function. + + This has to be done by processing the namedtuple class template and + evaluating the result. + + .. note:: |jedi| only supports namedtuples on Python >2.6. + + """ + # Namedtuples are not supported on Python 2.6 + if not hasattr(collections, '_class_template'): + return NO_CONTEXTS + + # Process arguments + # TODO here we only use one of the types, we should use all. + name = list(_follow_param(evaluator, arguments, 0))[0].obj + _fields = list(_follow_param(evaluator, arguments, 1))[0] + if isinstance(_fields, compiled.CompiledObject): + fields = _fields.obj.replace(',', ' ').split() + elif isinstance(_fields, iterable.AbstractIterable): + fields = [ + v.obj + for lazy_context in _fields.py__iter__() + for v in lazy_context.infer() if hasattr(v, 'obj') + ] + else: + return NO_CONTEXTS + + base = collections._class_template + base += _NAMEDTUPLE_INIT + # Build source + source = base.format( + typename=name, + field_names=tuple(fields), + num_fields=len(fields), + arg_list = repr(tuple(fields)).replace("'", "")[1:-1], + repr_fmt=', '.join(collections._repr_template.format(name=name) for name in fields), + field_defs='\n'.join(collections._field_template.format(index=index, name=name) + for index, name in enumerate(fields)) + ) + + # Parse source + module = evaluator.grammar.parse(source) + generated_class = next(module.iter_classdefs()) + parent_context = ModuleContext(evaluator, module, '') + return ContextSet(ClassContext(evaluator, parent_context, generated_class)) + + +@argument_clinic('first, /') +def _return_first_param(evaluator, firsts): + return firsts + + +_implemented = { + 'builtins': { + 'getattr': builtins_getattr, + 'type': builtins_type, + 'super': builtins_super, + 'reversed': builtins_reversed, + 'isinstance': builtins_isinstance, + }, + 'copy': { + 'copy': _return_first_param, + 'deepcopy': _return_first_param, + }, + 'json': { + 'load': lambda *args: NO_CONTEXTS, + 'loads': lambda *args: NO_CONTEXTS, + }, + 'collections': { + 'namedtuple': collections_namedtuple, + }, +} diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/syntax_tree.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/syntax_tree.py new file mode 100644 index 0000000..1d847a4 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/syntax_tree.py @@ -0,0 +1,588 @@ +""" +Functions evaluating the syntax tree. +""" +import copy +import operator as op + +from parso.python import tree + +from jedi import debug +from jedi import parser_utils +from jedi.evaluate.base_context import ContextSet, NO_CONTEXTS, ContextualizedNode, \ + ContextualizedName, iterator_to_context_set, iterate_contexts +from jedi.evaluate import compiled +from jedi.evaluate import pep0484 +from jedi.evaluate import recursion +from jedi.evaluate import helpers +from jedi.evaluate import analysis +from jedi.evaluate import imports +from jedi.evaluate import arguments +from jedi.evaluate.context import ClassContext, FunctionContext +from jedi.evaluate.context import iterable +from jedi.evaluate.context import TreeInstance, CompiledInstance +from jedi.evaluate.finder import NameFinder +from jedi.evaluate.helpers import is_string, is_literal, is_number, is_compiled + + +def _limit_context_infers(func): + """ + This is for now the way how we limit type inference going wild. There are + other ways to ensure recursion limits as well. This is mostly necessary + because of instance (self) access that can be quite tricky to limit. + + I'm still not sure this is the way to go, but it looks okay for now and we + can still go anther way in the future. Tests are there. ~ dave + """ + def wrapper(context, *args, **kwargs): + n = context.tree_node + evaluator = context.evaluator + try: + evaluator.inferred_element_counts[n] += 1 + if evaluator.inferred_element_counts[n] > 300: + debug.warning('In context %s there were too many inferences.', n) + return NO_CONTEXTS + except KeyError: + evaluator.inferred_element_counts[n] = 1 + return func(context, *args, **kwargs) + + return wrapper + + +@debug.increase_indent +@_limit_context_infers +def eval_node(context, element): + debug.dbg('eval_element %s@%s', element, element.start_pos) + evaluator = context.evaluator + typ = element.type + if typ in ('name', 'number', 'string', 'atom'): + return eval_atom(context, element) + elif typ == 'keyword': + # For False/True/None + if element.value in ('False', 'True', 'None'): + return ContextSet(compiled.builtin_from_name(evaluator, element.value)) + # else: print e.g. could be evaluated like this in Python 2.7 + return NO_CONTEXTS + elif typ == 'lambdef': + return ContextSet(FunctionContext(evaluator, context, element)) + elif typ == 'expr_stmt': + return eval_expr_stmt(context, element) + elif typ in ('power', 'atom_expr'): + first_child = element.children[0] + if not (first_child.type == 'keyword' and first_child.value == 'await'): + context_set = eval_atom(context, first_child) + for trailer in element.children[1:]: + if trailer == '**': # has a power operation. + right = evaluator.eval_element(context, element.children[2]) + context_set = _eval_comparison( + evaluator, + context, + context_set, + trailer, + right + ) + break + context_set = eval_trailer(context, context_set, trailer) + return context_set + return NO_CONTEXTS + elif typ in ('testlist_star_expr', 'testlist',): + # The implicit tuple in statements. + return ContextSet(iterable.SequenceLiteralContext(evaluator, context, element)) + elif typ in ('not_test', 'factor'): + context_set = context.eval_node(element.children[-1]) + for operator in element.children[:-1]: + context_set = eval_factor(context_set, operator) + return context_set + elif typ == 'test': + # `x if foo else y` case. + return (context.eval_node(element.children[0]) | + context.eval_node(element.children[-1])) + elif typ == 'operator': + # Must be an ellipsis, other operators are not evaluated. + # In Python 2 ellipsis is coded as three single dot tokens, not + # as one token 3 dot token. + assert element.value in ('.', '...') + return ContextSet(compiled.create(evaluator, Ellipsis)) + elif typ == 'dotted_name': + context_set = eval_atom(context, element.children[0]) + for next_name in element.children[2::2]: + # TODO add search_global=True? + context_set = context_set.py__getattribute__(next_name, name_context=context) + return context_set + elif typ == 'eval_input': + return eval_node(context, element.children[0]) + elif typ == 'annassign': + return pep0484._evaluate_for_annotation(context, element.children[1]) + else: + return eval_or_test(context, element) + + +def eval_trailer(context, base_contexts, trailer): + trailer_op, node = trailer.children[:2] + if node == ')': # `arglist` is optional. + node = () + + if trailer_op == '[': + trailer_op, node, _ = trailer.children + + # TODO It's kind of stupid to cast this from a context set to a set. + foo = set(base_contexts) + # special case: PEP0484 typing module, see + # https://github.com/davidhalter/jedi/issues/663 + result = ContextSet() + for typ in list(foo): + if isinstance(typ, (ClassContext, TreeInstance)): + typing_module_types = pep0484.py__getitem__(context, typ, node) + if typing_module_types is not None: + foo.remove(typ) + result |= typing_module_types + + return result | base_contexts.get_item( + eval_subscript_list(context.evaluator, context, node), + ContextualizedNode(context, trailer) + ) + else: + debug.dbg('eval_trailer: %s in %s', trailer, base_contexts) + if trailer_op == '.': + return base_contexts.py__getattribute__( + name_context=context, + name_or_str=node + ) + else: + assert trailer_op == '(' + args = arguments.TreeArguments(context.evaluator, context, node, trailer) + return base_contexts.execute(args) + + +def eval_atom(context, atom): + """ + Basically to process ``atom`` nodes. The parser sometimes doesn't + generate the node (because it has just one child). In that case an atom + might be a name or a literal as well. + """ + if atom.type == 'name': + # This is the first global lookup. + stmt = tree.search_ancestor( + atom, 'expr_stmt', 'lambdef' + ) or atom + if stmt.type == 'lambdef': + stmt = atom + return context.py__getattribute__( + name_or_str=atom, + position=stmt.start_pos, + search_global=True + ) + + elif isinstance(atom, tree.Literal): + string = parser_utils.safe_literal_eval(atom.value) + return ContextSet(compiled.create(context.evaluator, string)) + else: + c = atom.children + if c[0].type == 'string': + # Will be one string. + context_set = eval_atom(context, c[0]) + for string in c[1:]: + right = eval_atom(context, string) + context_set = _eval_comparison(context.evaluator, context, context_set, '+', right) + return context_set + # Parentheses without commas are not tuples. + elif c[0] == '(' and not len(c) == 2 \ + and not(c[1].type == 'testlist_comp' and + len(c[1].children) > 1): + return context.eval_node(c[1]) + + try: + comp_for = c[1].children[1] + except (IndexError, AttributeError): + pass + else: + if comp_for == ':': + # Dict comprehensions have a colon at the 3rd index. + try: + comp_for = c[1].children[3] + except IndexError: + pass + + if comp_for.type == 'comp_for': + return ContextSet(iterable.Comprehension.from_atom(context.evaluator, context, atom)) + + # It's a dict/list/tuple literal. + array_node = c[1] + try: + array_node_c = array_node.children + except AttributeError: + array_node_c = [] + if c[0] == '{' and (array_node == '}' or ':' in array_node_c): + context = iterable.DictLiteralContext(context.evaluator, context, atom) + else: + context = iterable.SequenceLiteralContext(context.evaluator, context, atom) + return ContextSet(context) + + +@_limit_context_infers +def eval_expr_stmt(context, stmt, seek_name=None): + with recursion.execution_allowed(context.evaluator, stmt) as allowed: + if allowed or context.get_root_context() == context.evaluator.BUILTINS: + return _eval_expr_stmt(context, stmt, seek_name) + return NO_CONTEXTS + + +@debug.increase_indent +def _eval_expr_stmt(context, stmt, seek_name=None): + """ + The starting point of the completion. A statement always owns a call + list, which are the calls, that a statement does. In case multiple + names are defined in the statement, `seek_name` returns the result for + this name. + + :param stmt: A `tree.ExprStmt`. + """ + debug.dbg('eval_expr_stmt %s (%s)', stmt, seek_name) + rhs = stmt.get_rhs() + context_set = context.eval_node(rhs) + + if seek_name: + c_node = ContextualizedName(context, seek_name) + context_set = check_tuple_assignments(context.evaluator, c_node, context_set) + + first_operator = next(stmt.yield_operators(), None) + if first_operator not in ('=', None) and first_operator.type == 'operator': + # `=` is always the last character in aug assignments -> -1 + operator = copy.copy(first_operator) + operator.value = operator.value[:-1] + name = stmt.get_defined_names()[0].value + left = context.py__getattribute__( + name, position=stmt.start_pos, search_global=True) + + for_stmt = tree.search_ancestor(stmt, 'for_stmt') + if for_stmt is not None and for_stmt.type == 'for_stmt' and context_set \ + and parser_utils.for_stmt_defines_one_name(for_stmt): + # Iterate through result and add the values, that's possible + # only in for loops without clutter, because they are + # predictable. Also only do it, if the variable is not a tuple. + node = for_stmt.get_testlist() + cn = ContextualizedNode(context, node) + ordered = list(cn.infer().iterate(cn)) + + for lazy_context in ordered: + dct = {for_stmt.children[1].value: lazy_context.infer()} + with helpers.predefine_names(context, for_stmt, dct): + t = context.eval_node(rhs) + left = _eval_comparison(context.evaluator, context, left, operator, t) + context_set = left + else: + context_set = _eval_comparison(context.evaluator, context, left, operator, context_set) + debug.dbg('eval_expr_stmt result %s', context_set) + return context_set + + +def eval_or_test(context, or_test): + iterator = iter(or_test.children) + types = context.eval_node(next(iterator)) + for operator in iterator: + right = next(iterator) + if operator.type == 'comp_op': # not in / is not + operator = ' '.join(c.value for c in operator.children) + + # handle lazy evaluation of and/or here. + if operator in ('and', 'or'): + left_bools = set(left.py__bool__() for left in types) + if left_bools == set([True]): + if operator == 'and': + types = context.eval_node(right) + elif left_bools == set([False]): + if operator != 'and': + types = context.eval_node(right) + # Otherwise continue, because of uncertainty. + else: + types = _eval_comparison(context.evaluator, context, types, operator, + context.eval_node(right)) + debug.dbg('eval_or_test types %s', types) + return types + + +@iterator_to_context_set +def eval_factor(context_set, operator): + """ + Calculates `+`, `-`, `~` and `not` prefixes. + """ + for context in context_set: + if operator == '-': + if is_number(context): + yield compiled.create(context.evaluator, -context.obj) + elif operator == 'not': + value = context.py__bool__() + if value is None: # Uncertainty. + return + yield compiled.create(context.evaluator, not value) + else: + yield context + + +# Maps Python syntax to the operator module. +COMPARISON_OPERATORS = { + '==': op.eq, + '!=': op.ne, + 'is': op.is_, + 'is not': op.is_not, + '<': op.lt, + '<=': op.le, + '>': op.gt, + '>=': op.ge, +} + + +def _literals_to_types(evaluator, result): + # Changes literals ('a', 1, 1.0, etc) to its type instances (str(), + # int(), float(), etc). + new_result = NO_CONTEXTS + for typ in result: + if is_literal(typ): + # Literals are only valid as long as the operations are + # correct. Otherwise add a value-free instance. + cls = compiled.builtin_from_name(evaluator, typ.name.string_name) + new_result |= cls.execute_evaluated() + else: + new_result |= ContextSet(typ) + return new_result + + +def _eval_comparison(evaluator, context, left_contexts, operator, right_contexts): + if not left_contexts or not right_contexts: + # illegal slices e.g. cause left/right_result to be None + result = (left_contexts or NO_CONTEXTS) | (right_contexts or NO_CONTEXTS) + return _literals_to_types(evaluator, result) + else: + # I don't think there's a reasonable chance that a string + # operation is still correct, once we pass something like six + # objects. + if len(left_contexts) * len(right_contexts) > 6: + return _literals_to_types(evaluator, left_contexts | right_contexts) + else: + return ContextSet.from_sets( + _eval_comparison_part(evaluator, context, left, operator, right) + for left in left_contexts + for right in right_contexts + ) + + +def _is_tuple(context): + return isinstance(context, iterable.AbstractIterable) and context.array_type == 'tuple' + + +def _is_list(context): + return isinstance(context, iterable.AbstractIterable) and context.array_type == 'list' + + +def _eval_comparison_part(evaluator, context, left, operator, right): + l_is_num = is_number(left) + r_is_num = is_number(right) + if operator == '*': + # for iterables, ignore * operations + if isinstance(left, iterable.AbstractIterable) or is_string(left): + return ContextSet(left) + elif isinstance(right, iterable.AbstractIterable) or is_string(right): + return ContextSet(right) + elif operator == '+': + if l_is_num and r_is_num or is_string(left) and is_string(right): + return ContextSet(compiled.create(evaluator, left.obj + right.obj)) + elif _is_tuple(left) and _is_tuple(right) or _is_list(left) and _is_list(right): + return ContextSet(iterable.MergedArray(evaluator, (left, right))) + elif operator == '-': + if l_is_num and r_is_num: + return ContextSet(compiled.create(evaluator, left.obj - right.obj)) + elif operator == '%': + # With strings and numbers the left type typically remains. Except for + # `int() % float()`. + return ContextSet(left) + elif operator in COMPARISON_OPERATORS: + operation = COMPARISON_OPERATORS[operator] + if is_compiled(left) and is_compiled(right): + # Possible, because the return is not an option. Just compare. + left = left.obj + right = right.obj + + try: + result = operation(left, right) + except TypeError: + # Could be True or False. + return ContextSet(compiled.create(evaluator, True), compiled.create(evaluator, False)) + else: + return ContextSet(compiled.create(evaluator, result)) + elif operator == 'in': + return NO_CONTEXTS + + def check(obj): + """Checks if a Jedi object is either a float or an int.""" + return isinstance(obj, CompiledInstance) and \ + obj.name.string_name in ('int', 'float') + + # Static analysis, one is a number, the other one is not. + if operator in ('+', '-') and l_is_num != r_is_num \ + and not (check(left) or check(right)): + message = "TypeError: unsupported operand type(s) for +: %s and %s" + analysis.add(context, 'type-error-operation', operator, + message % (left, right)) + + return ContextSet(left, right) + + +def _remove_statements(evaluator, context, stmt, name): + """ + This is the part where statements are being stripped. + + Due to lazy evaluation, statements like a = func; b = a; b() have to be + evaluated. + """ + pep0484_contexts = \ + pep0484.find_type_from_comment_hint_assign(context, stmt, name) + if pep0484_contexts: + return pep0484_contexts + + return eval_expr_stmt(context, stmt, seek_name=name) + + +def tree_name_to_contexts(evaluator, context, tree_name): + types = [] + node = tree_name.get_definition(import_name_always=True) + if node is None: + node = tree_name.parent + if node.type == 'global_stmt': + context = evaluator.create_context(context, tree_name) + finder = NameFinder(evaluator, context, context, tree_name.value) + filters = finder.get_filters(search_global=True) + # For global_stmt lookups, we only need the first possible scope, + # which means the function itself. + filters = [next(filters)] + return finder.find(filters, attribute_lookup=False) + elif node.type not in ('import_from', 'import_name'): + raise ValueError("Should not happen.") + + typ = node.type + if typ == 'for_stmt': + types = pep0484.find_type_from_comment_hint_for(context, node, tree_name) + if types: + return types + if typ == 'with_stmt': + types = pep0484.find_type_from_comment_hint_with(context, node, tree_name) + if types: + return types + + if typ in ('for_stmt', 'comp_for'): + try: + types = context.predefined_names[node][tree_name.value] + except KeyError: + cn = ContextualizedNode(context, node.children[3]) + for_types = iterate_contexts(cn.infer(), cn) + c_node = ContextualizedName(context, tree_name) + types = check_tuple_assignments(evaluator, c_node, for_types) + elif typ == 'expr_stmt': + types = _remove_statements(evaluator, context, node, tree_name) + elif typ == 'with_stmt': + context_managers = context.eval_node(node.get_test_node_from_name(tree_name)) + enter_methods = context_managers.py__getattribute__('__enter__') + return enter_methods.execute_evaluated() + elif typ in ('import_from', 'import_name'): + types = imports.infer_import(context, tree_name) + elif typ in ('funcdef', 'classdef'): + types = _apply_decorators(context, node) + elif typ == 'try_stmt': + # TODO an exception can also be a tuple. Check for those. + # TODO check for types that are not classes and add it to + # the static analysis report. + exceptions = context.eval_node(tree_name.get_previous_sibling().get_previous_sibling()) + types = exceptions.execute_evaluated() + else: + raise ValueError("Should not happen.") + return types + + +def _apply_decorators(context, node): + """ + Returns the function, that should to be executed in the end. + This is also the places where the decorators are processed. + """ + if node.type == 'classdef': + decoratee_context = ClassContext( + context.evaluator, + parent_context=context, + classdef=node + ) + else: + decoratee_context = FunctionContext( + context.evaluator, + parent_context=context, + funcdef=node + ) + initial = values = ContextSet(decoratee_context) + for dec in reversed(node.get_decorators()): + debug.dbg('decorator: %s %s', dec, values) + dec_values = context.eval_node(dec.children[1]) + trailer_nodes = dec.children[2:-1] + if trailer_nodes: + # Create a trailer and evaluate it. + trailer = tree.PythonNode('trailer', trailer_nodes) + trailer.parent = dec + dec_values = eval_trailer(context, dec_values, trailer) + + if not len(dec_values): + debug.warning('decorator not found: %s on %s', dec, node) + return initial + + values = dec_values.execute(arguments.ValuesArguments([values])) + if not len(values): + debug.warning('not possible to resolve wrappers found %s', node) + return initial + + debug.dbg('decorator end %s', values) + return values + + +def check_tuple_assignments(evaluator, contextualized_name, context_set): + """ + Checks if tuples are assigned. + """ + lazy_context = None + for index, node in contextualized_name.assignment_indexes(): + cn = ContextualizedNode(contextualized_name.context, node) + iterated = context_set.iterate(cn) + for _ in range(index + 1): + try: + lazy_context = next(iterated) + except StopIteration: + # We could do this with the default param in next. But this + # would allow this loop to run for a very long time if the + # index number is high. Therefore break if the loop is + # finished. + return ContextSet() + context_set = lazy_context.infer() + return context_set + + +def eval_subscript_list(evaluator, context, index): + """ + Handles slices in subscript nodes. + """ + if index == ':': + # Like array[:] + return ContextSet(iterable.Slice(context, None, None, None)) + + elif index.type == 'subscript' and not index.children[0] == '.': + # subscript basically implies a slice operation, except for Python 2's + # Ellipsis. + # e.g. array[:3] + result = [] + for el in index.children: + if el == ':': + if not result: + result.append(None) + elif el.type == 'sliceop': + if len(el.children) == 2: + result.append(el.children[1]) + else: + result.append(el) + result += [None] * (3 - len(result)) + + return ContextSet(iterable.Slice(context, *result)) + + # No slices + return context.eval_node(index) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/sys_path.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/sys_path.py new file mode 100644 index 0000000..82e5e9d --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/sys_path.py @@ -0,0 +1,308 @@ +import glob +import os +import sys +import imp +from jedi.evaluate.site import addsitedir + +from jedi._compatibility import unicode +from jedi.evaluate.cache import evaluator_method_cache +from jedi.evaluate.base_context import ContextualizedNode +from jedi.evaluate.helpers import is_string +from jedi import settings +from jedi import debug +from jedi.evaluate.utils import ignored + + +def get_venv_path(venv): + """Get sys.path for specified virtual environment.""" + sys_path = _get_venv_path_dirs(venv) + with ignored(ValueError): + sys_path.remove('') + sys_path = _get_sys_path_with_egglinks(sys_path) + # As of now, get_venv_path_dirs does not scan built-in pythonpath and + # user-local site-packages, let's approximate them using path from Jedi + # interpreter. + return sys_path + sys.path + + +def _get_sys_path_with_egglinks(sys_path): + """Find all paths including those referenced by egg-links. + + Egg-link-referenced directories are inserted into path immediately before + the directory on which their links were found. Such directories are not + taken into consideration by normal import mechanism, but they are traversed + when doing pkg_resources.require. + """ + result = [] + for p in sys_path: + # pkg_resources does not define a specific order for egg-link files + # using os.listdir to enumerate them, we're sorting them to have + # reproducible tests. + for egg_link in sorted(glob.glob(os.path.join(p, '*.egg-link'))): + with open(egg_link) as fd: + for line in fd: + line = line.strip() + if line: + result.append(os.path.join(p, line)) + # pkg_resources package only interprets the first + # non-empty line in egg-link files. + break + result.append(p) + return result + + +def _get_venv_path_dirs(venv): + """Get sys.path for venv without starting up the interpreter.""" + venv = os.path.abspath(venv) + sitedir = _get_venv_sitepackages(venv) + sys_path = [] + addsitedir(sys_path, sitedir) + return sys_path + + +def _get_venv_sitepackages(venv): + if os.name == 'nt': + p = os.path.join(venv, 'lib', 'site-packages') + else: + p = os.path.join(venv, 'lib', 'python%d.%d' % sys.version_info[:2], + 'site-packages') + return p + + +def _abs_path(module_context, path): + module_path = module_context.py__file__() + if os.path.isabs(path): + return path + + if module_path is None: + # In this case we have no idea where we actually are in the file + # system. + return None + + base_dir = os.path.dirname(module_path) + return os.path.abspath(os.path.join(base_dir, path)) + + +def _paths_from_assignment(module_context, expr_stmt): + """ + Extracts the assigned strings from an assignment that looks as follows:: + + >>> sys.path[0:0] = ['module/path', 'another/module/path'] + + This function is in general pretty tolerant (and therefore 'buggy'). + However, it's not a big issue usually to add more paths to Jedi's sys_path, + because it will only affect Jedi in very random situations and by adding + more paths than necessary, it usually benefits the general user. + """ + for assignee, operator in zip(expr_stmt.children[::2], expr_stmt.children[1::2]): + try: + assert operator in ['=', '+='] + assert assignee.type in ('power', 'atom_expr') and \ + len(assignee.children) > 1 + c = assignee.children + assert c[0].type == 'name' and c[0].value == 'sys' + trailer = c[1] + assert trailer.children[0] == '.' and trailer.children[1].value == 'path' + # TODO Essentially we're not checking details on sys.path + # manipulation. Both assigment of the sys.path and changing/adding + # parts of the sys.path are the same: They get added to the end of + # the current sys.path. + """ + execution = c[2] + assert execution.children[0] == '[' + subscript = execution.children[1] + assert subscript.type == 'subscript' + assert ':' in subscript.children + """ + except AssertionError: + continue + + cn = ContextualizedNode(module_context.create_context(expr_stmt), expr_stmt) + for lazy_context in cn.infer().iterate(cn): + for context in lazy_context.infer(): + if is_string(context): + abs_path = _abs_path(module_context, context.obj) + if abs_path is not None: + yield abs_path + + +def _paths_from_list_modifications(module_context, trailer1, trailer2): + """ extract the path from either "sys.path.append" or "sys.path.insert" """ + # Guarantee that both are trailers, the first one a name and the second one + # a function execution with at least one param. + if not (trailer1.type == 'trailer' and trailer1.children[0] == '.' + and trailer2.type == 'trailer' and trailer2.children[0] == '(' + and len(trailer2.children) == 3): + return + + name = trailer1.children[1].value + if name not in ['insert', 'append']: + return + arg = trailer2.children[1] + if name == 'insert' and len(arg.children) in (3, 4): # Possible trailing comma. + arg = arg.children[2] + + for context in module_context.create_context(arg).eval_node(arg): + if is_string(context): + abs_path = _abs_path(module_context, context.obj) + if abs_path is not None: + yield abs_path + + +@evaluator_method_cache(default=[]) +def check_sys_path_modifications(module_context): + """ + Detect sys.path modifications within module. + """ + def get_sys_path_powers(names): + for name in names: + power = name.parent.parent + if power.type in ('power', 'atom_expr'): + c = power.children + if c[0].type == 'name' and c[0].value == 'sys' \ + and c[1].type == 'trailer': + n = c[1].children[1] + if n.type == 'name' and n.value == 'path': + yield name, power + + if module_context.tree_node is None: + return [] + + added = [] + try: + possible_names = module_context.tree_node.get_used_names()['path'] + except KeyError: + pass + else: + for name, power in get_sys_path_powers(possible_names): + expr_stmt = power.parent + if len(power.children) >= 4: + added.extend( + _paths_from_list_modifications( + module_context, *power.children[2:4] + ) + ) + elif expr_stmt is not None and expr_stmt.type == 'expr_stmt': + added.extend(_paths_from_assignment(module_context, expr_stmt)) + return added + + +def sys_path_with_modifications(evaluator, module_context): + return evaluator.project.sys_path + check_sys_path_modifications(module_context) + + +def detect_additional_paths(evaluator, script_path): + django_paths = _detect_django_path(script_path) + buildout_script_paths = set() + + for buildout_script_path in _get_buildout_script_paths(script_path): + for path in _get_paths_from_buildout_script(evaluator, buildout_script_path): + buildout_script_paths.add(path) + + return django_paths + list(buildout_script_paths) + + +def _get_paths_from_buildout_script(evaluator, buildout_script_path): + try: + module_node = evaluator.grammar.parse( + path=buildout_script_path, + cache=True, + cache_path=settings.cache_directory + ) + except IOError: + debug.warning('Error trying to read buildout_script: %s', buildout_script_path) + return + + from jedi.evaluate.context import ModuleContext + module = ModuleContext(evaluator, module_node, buildout_script_path) + for path in check_sys_path_modifications(module): + yield path + + +def traverse_parents(path): + while True: + new = os.path.dirname(path) + if new == path: + return + path = new + yield path + + +def _get_parent_dir_with_file(path, filename): + for parent in traverse_parents(path): + if os.path.isfile(os.path.join(parent, filename)): + return parent + return None + + +def _detect_django_path(module_path): + """ Detects the path of the very well known Django library (if used) """ + result = [] + + for parent in traverse_parents(module_path): + with ignored(IOError): + with open(parent + os.path.sep + 'manage.py'): + debug.dbg('Found django path: %s', module_path) + result.append(parent) + return result + + +def _get_buildout_script_paths(module_path): + """ + if there is a 'buildout.cfg' file in one of the parent directories of the + given module it will return a list of all files in the buildout bin + directory that look like python files. + + :param module_path: absolute path to the module. + :type module_path: str + """ + project_root = _get_parent_dir_with_file(module_path, 'buildout.cfg') + if not project_root: + return [] + bin_path = os.path.join(project_root, 'bin') + if not os.path.exists(bin_path): + return [] + extra_module_paths = [] + for filename in os.listdir(bin_path): + try: + filepath = os.path.join(bin_path, filename) + with open(filepath, 'r') as f: + firstline = f.readline() + if firstline.startswith('#!') and 'python' in firstline: + extra_module_paths.append(filepath) + except (UnicodeDecodeError, IOError) as e: + # Probably a binary file; permission error or race cond. because file got deleted + # ignore + debug.warning(unicode(e)) + continue + return extra_module_paths + + +def dotted_path_in_sys_path(sys_path, module_path): + """ + Returns the dotted path inside a sys.path. + """ + # First remove the suffix. + for suffix, _, _ in imp.get_suffixes(): + if module_path.endswith(suffix): + module_path = module_path[:-len(suffix)] + break + else: + # There should always be a suffix in a valid Python file on the path. + return None + + if module_path.startswith(os.path.sep): + # The paths in sys.path most of the times don't end with a slash. + module_path = module_path[1:] + + for p in sys_path: + if module_path.startswith(p): + rest = module_path[len(p):] + if rest: + split = rest.split(os.path.sep) + for string in split: + if not string or '.' in string: + return None + return '.'.join(split) + + return None diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/usages.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/usages.py new file mode 100644 index 0000000..290c469 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/usages.py @@ -0,0 +1,62 @@ +from jedi.evaluate import imports +from jedi.evaluate.filters import TreeNameDefinition +from jedi.evaluate.context import ModuleContext + + +def _resolve_names(definition_names, avoid_names=()): + for name in definition_names: + if name in avoid_names: + # Avoiding recursions here, because goto on a module name lands + # on the same module. + continue + + if not isinstance(name, imports.SubModuleName): + # SubModuleNames are not actually existing names but created + # names when importing something like `import foo.bar.baz`. + yield name + + if name.api_type == 'module': + for name in _resolve_names(name.goto(), definition_names): + yield name + + +def _dictionarize(names): + return dict( + (n if n.tree_name is None else n.tree_name, n) + for n in names + ) + + +def _find_names(module_context, tree_name): + context = module_context.create_context(tree_name) + name = TreeNameDefinition(context, tree_name) + found_names = set(name.goto()) + found_names.add(name) + return _dictionarize(_resolve_names(found_names)) + + +def usages(module_context, tree_name): + search_name = tree_name.value + found_names = _find_names(module_context, tree_name) + modules = set(d.get_root_context() for d in found_names.values()) + modules = set(m for m in modules if isinstance(m, ModuleContext)) + + non_matching_usage_maps = {} + for m in imports.get_modules_containing_name(module_context.evaluator, modules, search_name): + for name_leaf in m.tree_node.get_used_names().get(search_name, []): + new = _find_names(m, name_leaf) + if any(tree_name in found_names for tree_name in new): + found_names.update(new) + for tree_name in new: + for dct in non_matching_usage_maps.get(tree_name, []): + # A usage that was previously searched for matches with + # a now found name. Merge. + found_names.update(dct) + try: + del non_matching_usage_maps[tree_name] + except KeyError: + pass + else: + for name in new: + non_matching_usage_maps.setdefault(name, []).append(new) + return found_names.values() diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/utils.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/utils.py new file mode 100644 index 0000000..7fc1c24 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/evaluate/utils.py @@ -0,0 +1,110 @@ +""" A universal module with functions / classes without dependencies. """ +import sys +import contextlib +import functools + +from jedi._compatibility import reraise + + +def to_list(func): + def wrapper(*args, **kwargs): + return list(func(*args, **kwargs)) + return wrapper + + +def unite(iterable): + """Turns a two dimensional array into a one dimensional.""" + return set(typ for types in iterable for typ in types) + + +class UncaughtAttributeError(Exception): + """ + Important, because `__getattr__` and `hasattr` catch AttributeErrors + implicitly. This is really evil (mainly because of `__getattr__`). + `hasattr` in Python 2 is even more evil, because it catches ALL exceptions. + Therefore this class originally had to be derived from `BaseException` + instead of `Exception`. But because I removed relevant `hasattr` from + the code base, we can now switch back to `Exception`. + + :param base: return values of sys.exc_info(). + """ + + +def safe_property(func): + return property(reraise_uncaught(func)) + + +def reraise_uncaught(func): + """ + Re-throw uncaught `AttributeError`. + + Usage: Put ``@rethrow_uncaught`` in front of the function + which does **not** suppose to raise `AttributeError`. + + AttributeError is easily get caught by `hasattr` and another + ``except AttributeError`` clause. This becomes problem when you use + a lot of "dynamic" attributes (e.g., using ``@property``) because you + can't distinguish if the property does not exist for real or some code + inside of the "dynamic" attribute through that error. In a well + written code, such error should not exist but getting there is very + difficult. This decorator is to help us getting there by changing + `AttributeError` to `UncaughtAttributeError` to avoid unexpected catch. + This helps us noticing bugs earlier and facilitates debugging. + + .. note:: Treating StopIteration here is easy. + Add that feature when needed. + """ + @functools.wraps(func) + def wrapper(*args, **kwds): + try: + return func(*args, **kwds) + except AttributeError: + exc_info = sys.exc_info() + reraise(UncaughtAttributeError(exc_info[1]), exc_info[2]) + return wrapper + + +class PushBackIterator(object): + def __init__(self, iterator): + self.pushes = [] + self.iterator = iterator + self.current = None + + def push_back(self, value): + self.pushes.append(value) + + def __iter__(self): + return self + + def next(self): + """ Python 2 Compatibility """ + return self.__next__() + + def __next__(self): + if self.pushes: + self.current = self.pushes.pop() + else: + self.current = next(self.iterator) + return self.current + + +@contextlib.contextmanager +def ignored(*exceptions): + """ + Context manager that ignores all of the specified exceptions. This will + be in the standard library starting with Python 3.4. + """ + try: + yield + except exceptions: + pass + + +def indent_block(text, indention=' '): + """This function indents a text block with a default of four spaces.""" + temp = '' + while text and text[-1] == '\n': + temp += text[-1] + text = text[:-1] + lines = text.split('\n') + return '\n'.join(map(lambda s: indention + s, lines)) + temp diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/parser_utils.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/parser_utils.py new file mode 100644 index 0000000..59c6408 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/parser_utils.py @@ -0,0 +1,241 @@ +import textwrap +from inspect import cleandoc + +from jedi._compatibility import literal_eval, is_py3 +from parso.python import tree + +_EXECUTE_NODES = set([ + 'funcdef', 'classdef', 'import_from', 'import_name', 'test', 'or_test', + 'and_test', 'not_test', 'comparison', 'expr', 'xor_expr', 'and_expr', + 'shift_expr', 'arith_expr', 'atom_expr', 'term', 'factor', 'power', 'atom' +]) + +_FLOW_KEYWORDS = ( + 'try', 'except', 'finally', 'else', 'if', 'elif', 'with', 'for', 'while' +) + + +def get_executable_nodes(node, last_added=False): + """ + For static analysis. + """ + result = [] + typ = node.type + if typ == 'name': + next_leaf = node.get_next_leaf() + if last_added is False and node.parent.type != 'param' and next_leaf != '=': + result.append(node) + elif typ == 'expr_stmt': + # I think evaluating the statement (and possibly returned arrays), + # should be enough for static analysis. + result.append(node) + for child in node.children: + result += get_executable_nodes(child, last_added=True) + elif typ == 'decorator': + # decorator + if node.children[-2] == ')': + node = node.children[-3] + if node != '(': + result += get_executable_nodes(node) + else: + try: + children = node.children + except AttributeError: + pass + else: + if node.type in _EXECUTE_NODES and not last_added: + result.append(node) + + for child in children: + result += get_executable_nodes(child, last_added) + + return result + + +def get_comp_fors(comp_for): + yield comp_for + last = comp_for.children[-1] + while True: + if last.type == 'comp_for': + yield last + elif not last.type == 'comp_if': + break + last = last.children[-1] + + +def for_stmt_defines_one_name(for_stmt): + """ + Returns True if only one name is returned: ``for x in y``. + Returns False if the for loop is more complicated: ``for x, z in y``. + + :returns: bool + """ + return for_stmt.children[1].type == 'name' + + +def get_flow_branch_keyword(flow_node, node): + start_pos = node.start_pos + if not (flow_node.start_pos < start_pos <= flow_node.end_pos): + raise ValueError('The node is not part of the flow.') + + keyword = None + for i, child in enumerate(flow_node.children): + if start_pos < child.start_pos: + return keyword + first_leaf = child.get_first_leaf() + if first_leaf in _FLOW_KEYWORDS: + keyword = first_leaf + return 0 + +def get_statement_of_position(node, pos): + for c in node.children: + if c.start_pos <= pos <= c.end_pos: + if c.type not in ('decorated', 'simple_stmt', 'suite') \ + and not isinstance(c, (tree.Flow, tree.ClassOrFunc)): + return c + else: + try: + return get_statement_of_position(c, pos) + except AttributeError: + pass # Must be a non-scope + return None + + +def clean_scope_docstring(scope_node): + """ Returns a cleaned version of the docstring token. """ + node = scope_node.get_doc_node() + if node is not None: + # TODO We have to check next leaves until there are no new + # leaves anymore that might be part of the docstring. A + # docstring can also look like this: ``'foo' 'bar' + # Returns a literal cleaned version of the ``Token``. + cleaned = cleandoc(safe_literal_eval(node.value)) + # Since we want the docstr output to be always unicode, just + # force it. + if is_py3 or isinstance(cleaned, unicode): + return cleaned + else: + return unicode(cleaned, 'UTF-8', 'replace') + return '' + + +def safe_literal_eval(value): + first_two = value[:2].lower() + if first_two[0] == 'f' or first_two in ('fr', 'rf'): + # literal_eval is not able to resovle f literals. We have to do that + # manually, but that's right now not implemented. + return '' + + try: + return literal_eval(value) + except SyntaxError: + # It's possible to create syntax errors with literals like rb'' in + # Python 2. This should not be possible and in that case just return an + # empty string. + # Before Python 3.3 there was a more strict definition in which order + # you could define literals. + return '' + + +def get_call_signature(funcdef, width=72, call_string=None): + """ + Generate call signature of this function. + + :param width: Fold lines if a line is longer than this value. + :type width: int + :arg func_name: Override function name when given. + :type func_name: str + + :rtype: str + """ + # Lambdas have no name. + if call_string is None: + if funcdef.type == 'lambdef': + call_string = '' + else: + call_string = funcdef.name.value + if funcdef.type == 'lambdef': + p = '(' + ''.join(param.get_code() for param in funcdef.get_params()).strip() + ')' + else: + p = funcdef.children[2].get_code() + code = call_string + p + + return '\n'.join(textwrap.wrap(code, width)) + + +def get_doc_with_call_signature(scope_node): + """ + Return a document string including call signature. + """ + call_signature = None + if scope_node.type == 'classdef': + for funcdef in scope_node.iter_funcdefs(): + if funcdef.name.value == '__init__': + call_signature = \ + get_call_signature(funcdef, call_string=scope_node.name.value) + elif scope_node.type in ('funcdef', 'lambdef'): + call_signature = get_call_signature(scope_node) + + doc = clean_scope_docstring(scope_node) + if call_signature is None: + return doc + return '%s\n\n%s' % (call_signature, doc) + + +def move(node, line_offset): + """ + Move the `Node` start_pos. + """ + try: + children = node.children + except AttributeError: + node.line += line_offset + else: + for c in children: + move(c, line_offset) + + +def get_following_comment_same_line(node): + """ + returns (as string) any comment that appears on the same line, + after the node, including the # + """ + try: + if node.type == 'for_stmt': + whitespace = node.children[5].get_first_leaf().prefix + elif node.type == 'with_stmt': + whitespace = node.children[3].get_first_leaf().prefix + else: + whitespace = node.get_last_leaf().get_next_leaf().prefix + except AttributeError: + return None + except ValueError: + # TODO in some particular cases, the tree doesn't seem to be linked + # correctly + return None + if "#" not in whitespace: + return None + comment = whitespace[whitespace.index("#"):] + if "\r" in comment: + comment = comment[:comment.index("\r")] + if "\n" in comment: + comment = comment[:comment.index("\n")] + return comment + + +def is_scope(node): + return node.type in ('file_input', 'classdef', 'funcdef', 'lambdef', 'comp_for') + + +def get_parent_scope(node, include_flows=False): + """ + Returns the underlying scope. + """ + scope = node.parent + while scope is not None: + if include_flows and isinstance(scope, tree.Flow): + return scope + if is_scope(scope): + break + scope = scope.parent + return scope diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/refactoring.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/refactoring.py new file mode 100644 index 0000000..ee93842 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/refactoring.py @@ -0,0 +1,200 @@ +""" +Introduce some basic refactoring functions to |jedi|. This module is still in a +very early development stage and needs much testing and improvement. + +.. warning:: I won't do too much here, but if anyone wants to step in, please + do. Refactoring is none of my priorities + +It uses the |jedi| `API `_ and supports currently the +following functions (sometimes bug-prone): + +- rename +- extract variable +- inline variable +""" +import difflib + +from parso import python_bytes_to_unicode, split_lines +from jedi.evaluate import helpers + + +class Refactoring(object): + def __init__(self, change_dct): + """ + :param change_dct: dict(old_path=(new_path, old_lines, new_lines)) + """ + self.change_dct = change_dct + + def old_files(self): + dct = {} + for old_path, (new_path, old_l, new_l) in self.change_dct.items(): + dct[old_path] = '\n'.join(old_l) + return dct + + def new_files(self): + dct = {} + for old_path, (new_path, old_l, new_l) in self.change_dct.items(): + dct[new_path] = '\n'.join(new_l) + return dct + + def diff(self): + texts = [] + for old_path, (new_path, old_l, new_l) in self.change_dct.items(): + if old_path: + udiff = difflib.unified_diff(old_l, new_l) + else: + udiff = difflib.unified_diff(old_l, new_l, old_path, new_path) + texts.append('\n'.join(udiff)) + return '\n'.join(texts) + + +def rename(script, new_name): + """ The `args` / `kwargs` params are the same as in `api.Script`. + :param operation: The refactoring operation to execute. + :type operation: str + :type source: str + :return: list of changed lines/changed files + """ + return Refactoring(_rename(script.usages(), new_name)) + + +def _rename(names, replace_str): + """ For both rename and inline. """ + order = sorted(names, key=lambda x: (x.module_path, x.line, x.column), + reverse=True) + + def process(path, old_lines, new_lines): + if new_lines is not None: # goto next file, save last + dct[path] = path, old_lines, new_lines + + dct = {} + current_path = object() + new_lines = old_lines = None + for name in order: + if name.in_builtin_module(): + continue + if current_path != name.module_path: + current_path = name.module_path + + process(current_path, old_lines, new_lines) + if current_path is not None: + # None means take the source that is a normal param. + with open(current_path) as f: + source = f.read() + + new_lines = split_lines(python_bytes_to_unicode(source)) + old_lines = new_lines[:] + + nr, indent = name.line, name.column + line = new_lines[nr - 1] + new_lines[nr - 1] = line[:indent] + replace_str + \ + line[indent + len(name.name):] + process(current_path, old_lines, new_lines) + return dct + + +def extract(script, new_name): + """ The `args` / `kwargs` params are the same as in `api.Script`. + :param operation: The refactoring operation to execute. + :type operation: str + :type source: str + :return: list of changed lines/changed files + """ + new_lines = split_lines(python_bytes_to_unicode(script.source)) + old_lines = new_lines[:] + + user_stmt = script._parser.user_stmt() + + # TODO care for multiline extracts + dct = {} + if user_stmt: + pos = script._pos + line_index = pos[0] - 1 + arr, index = helpers.array_for_pos(user_stmt, pos) + if arr is not None: + start_pos = arr[index].start_pos + end_pos = arr[index].end_pos + + # take full line if the start line is different from end line + e = end_pos[1] if end_pos[0] == start_pos[0] else None + start_line = new_lines[start_pos[0] - 1] + text = start_line[start_pos[1]:e] + for l in range(start_pos[0], end_pos[0] - 1): + text += '\n' + l + if e is None: + end_line = new_lines[end_pos[0] - 1] + text += '\n' + end_line[:end_pos[1]] + + # remove code from new lines + t = text.lstrip() + del_start = start_pos[1] + len(text) - len(t) + + text = t.rstrip() + del_end = len(t) - len(text) + if e is None: + new_lines[end_pos[0] - 1] = end_line[end_pos[1] - del_end:] + e = len(start_line) + else: + e = e - del_end + start_line = start_line[:del_start] + new_name + start_line[e:] + new_lines[start_pos[0] - 1] = start_line + new_lines[start_pos[0]:end_pos[0] - 1] = [] + + # add parentheses in multiline case + open_brackets = ['(', '[', '{'] + close_brackets = [')', ']', '}'] + if '\n' in text and not (text[0] in open_brackets and text[-1] == + close_brackets[open_brackets.index(text[0])]): + text = '(%s)' % text + + # add new line before statement + indent = user_stmt.start_pos[1] + new = "%s%s = %s" % (' ' * indent, new_name, text) + new_lines.insert(line_index, new) + dct[script.path] = script.path, old_lines, new_lines + return Refactoring(dct) + + +def inline(script): + """ + :type script: api.Script + """ + new_lines = split_lines(python_bytes_to_unicode(script.source)) + + dct = {} + + definitions = script.goto_assignments() + assert len(definitions) == 1 + stmt = definitions[0]._definition + usages = script.usages() + inlines = [r for r in usages + if not stmt.start_pos <= (r.line, r.column) <= stmt.end_pos] + inlines = sorted(inlines, key=lambda x: (x.module_path, x.line, x.column), + reverse=True) + expression_list = stmt.expression_list() + # don't allow multiline refactorings for now. + assert stmt.start_pos[0] == stmt.end_pos[0] + index = stmt.start_pos[0] - 1 + + line = new_lines[index] + replace_str = line[expression_list[0].start_pos[1]:stmt.end_pos[1] + 1] + replace_str = replace_str.strip() + # tuples need parentheses + if expression_list and isinstance(expression_list[0], pr.Array): + arr = expression_list[0] + if replace_str[0] not in ['(', '[', '{'] and len(arr) > 1: + replace_str = '(%s)' % replace_str + + # if it's the only assignment, remove the statement + if len(stmt.get_defined_names()) == 1: + line = line[:stmt.start_pos[1]] + line[stmt.end_pos[1]:] + + dct = _rename(inlines, replace_str) + # remove the empty line + new_lines = dct[script.path][2] + if line.strip(): + new_lines[index] = line + else: + new_lines.pop(index) + + return Refactoring(dct) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/settings.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/settings.py new file mode 100644 index 0000000..f1ae6db --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/settings.py @@ -0,0 +1,163 @@ +""" +This module contains variables with global |jedi| settings. To change the +behavior of |jedi|, change the variables defined in :mod:`jedi.settings`. + +Plugins should expose an interface so that the user can adjust the +configuration. + + +Example usage:: + + from jedi import settings + settings.case_insensitive_completion = True + + +Completion output +~~~~~~~~~~~~~~~~~ + +.. autodata:: case_insensitive_completion +.. autodata:: add_bracket_after_function +.. autodata:: no_completion_duplicates + + +Filesystem cache +~~~~~~~~~~~~~~~~ + +.. autodata:: cache_directory +.. autodata:: use_filesystem_cache + + +Parser +~~~~~~ + +.. autodata:: fast_parser + + +Dynamic stuff +~~~~~~~~~~~~~ + +.. autodata:: dynamic_array_additions +.. autodata:: dynamic_params +.. autodata:: dynamic_params_for_other_modules +.. autodata:: additional_dynamic_modules +.. autodata:: auto_import_modules + + +Caching +~~~~~~~ + +.. autodata:: call_signatures_validity + + +""" +import os +import platform + +# ---------------- +# completion output settings +# ---------------- + +case_insensitive_completion = True +""" +The completion is by default case insensitive. +""" + +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. +""" + +# ---------------- +# Filesystem cache +# ---------------- + +use_filesystem_cache = True +""" +Use filesystem cache to save once parsed files with pickle. +""" + +if platform.system().lower() == 'windows': + _cache_directory = os.path.join(os.getenv('APPDATA') or '~', 'Jedi', + 'Jedi') +elif platform.system().lower() == 'darwin': + _cache_directory = os.path.join('~', 'Library', 'Caches', 'Jedi') +else: + _cache_directory = os.path.join(os.getenv('XDG_CACHE_HOME') or '~/.cache', + 'jedi') +cache_directory = os.path.expanduser(_cache_directory) +""" +The path where the cache is stored. + +On Linux, this defaults to ``~/.cache/jedi/``, on OS X to +``~/Library/Caches/Jedi/`` and on Windows to ``%APPDATA%\\Jedi\\Jedi\\``. +On Linux, if environment variable ``$XDG_CACHE_HOME`` is set, +``$XDG_CACHE_HOME/jedi`` is used instead of the default one. +""" + +# ---------------- +# 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. +""" + +# ---------------- +# dynamic stuff +# ---------------- + +dynamic_array_additions = True +""" +check for `append`, etc. on arrays: [], {}, () as well as list/set calls. +""" + +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 IDEs, that want to administrate their modules themselves. +""" + +dynamic_flow_information = True +""" +Check for `isinstance` and other information to infer a type. +""" + +auto_import_modules = [ + 'hashlib', # setattr +] +""" +Modules that are not analyzed but imported, although they contain Python code. +This improves autocompletion for libraries that use ``setattr`` or +``globals()`` modifications a lot. +""" + +# ---------------- +# caching validity (time) +# ---------------- + +call_signatures_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. +""" diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/utils.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/utils.py new file mode 100644 index 0000000..177524c --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/jedi/utils.py @@ -0,0 +1,136 @@ +""" +Utilities for end-users. +""" + +from __future__ import absolute_import +import __main__ +from collections import namedtuple +import logging +import traceback +import re +import os +import sys + +from parso import split_lines + +from jedi import Interpreter +from jedi.api.helpers import get_on_completion_name + + +READLINE_DEBUG = False + + +def setup_readline(namespace_module=__main__): + """ + Install Jedi completer to :mod:`readline`. + + This function setups :mod:`readline` to use Jedi in Python interactive + shell. If you want to use a custom ``PYTHONSTARTUP`` file (typically + ``$HOME/.pythonrc.py``), you can add this piece of code:: + + try: + from jedi.utils import setup_readline + setup_readline() + except ImportError: + # Fallback to the stdlib readline completer if it is installed. + # Taken from http://docs.python.org/2/library/rlcompleter.html + print("Jedi is not installed, falling back to readline") + try: + import readline + import rlcompleter + readline.parse_and_bind("tab: complete") + except ImportError: + print("Readline is not installed either. No tab completion is enabled.") + + This will fallback to the readline completer if Jedi is not installed. + The readline completer will only complete names in the global namespace, + so for example:: + + ran + + will complete to ``range`` + + with both Jedi and readline, but:: + + range(10).cou + + will show complete to ``range(10).count`` only with Jedi. + + You'll also need to add ``export PYTHONSTARTUP=$HOME/.pythonrc.py`` to + your shell profile (usually ``.bash_profile`` or ``.profile`` if you use + bash). + + """ + if READLINE_DEBUG: + logging.basicConfig( + filename='/tmp/jedi.log', + filemode='a', + level=logging.DEBUG + ) + + class JediRL(object): + def complete(self, text, state): + """ + This complete stuff is pretty weird, a generator would make + a lot more sense, but probably due to backwards compatibility + this is still the way how it works. + + The only important part is stuff in the ``state == 0`` flow, + everything else has been copied from the ``rlcompleter`` std. + library module. + """ + if state == 0: + sys.path.insert(0, os.getcwd()) + # Calling python doesn't have a path, so add to sys.path. + try: + logging.debug("Start REPL completion: " + repr(text)) + interpreter = Interpreter(text, [namespace_module.__dict__]) + + lines = split_lines(text) + position = (len(lines), len(lines[-1])) + name = get_on_completion_name( + interpreter._get_module_node(), + lines, + position + ) + before = text[:len(text) - len(name)] + completions = interpreter.completions() + except: + logging.error("REPL Completion error:\n" + traceback.format_exc()) + raise + finally: + sys.path.pop(0) + + self.matches = [before + c.name_with_symbols for c in completions] + try: + return self.matches[state] + except IndexError: + return None + + try: + import readline + except ImportError: + print("Jedi: Module readline not available.") + else: + readline.set_completer(JediRL().complete) + readline.parse_and_bind("tab: complete") + # jedi itself does the case matching + readline.parse_and_bind("set completion-ignore-case on") + # because it's easier to hit the tab just once + readline.parse_and_bind("set show-all-if-unmodified") + readline.parse_and_bind("set show-all-if-ambiguous on") + # don't repeat all the things written in the readline all the time + readline.parse_and_bind("set completion-prefix-display-length 2") + # No delimiters, Jedi handles that. + readline.set_completer_delims('') + + +def version_info(): + """ + Returns a namedtuple of Jedi's version, similar to Python's + ``sys.version_info``. + """ + Version = namedtuple('Version', 'major, minor, micro') + from jedi import __version__ + tupl = re.findall('[a-z]+|\d+', __version__) + return Version(*[x if i == 3 else int(x) for i, x in enumerate(tupl)]) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/__init__.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/__init__.py new file mode 100644 index 0000000..374dd94 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/__init__.py @@ -0,0 +1,3 @@ +""" needed for some modules to test against packages. """ + +some_variable = 1 diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/arrays.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/arrays.py new file mode 100644 index 0000000..8be1cec --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/arrays.py @@ -0,0 +1,436 @@ +# ----------------- +# basic array lookups +# ----------------- + + +#? int() +[1,""][0] +#? str() +[1,""][1] +#? int() str() +[1,""][2] +#? int() str() +[1,""][20] +#? int() str() +[1,""][str(hello)] + +a = list() +#? list() +[a][0] + +#? list() +[[a,a,a]][2][100] + +c = [[a,""]] +#? str() +c[0][1] + +b = [6,7] + +#? int() +b[8-7] + +# ----------------- +# Slices +# ----------------- +#? list() +b[8:] + +#? list() +b[int():] + +#? list() +b[:] + + +class _StrangeSlice(): + def __getitem__(self, sliced): + return sliced + +# Should not result in an error, just because the slice itself is returned. +#? slice() +_StrangeSlice()[1:2] + + +# ----------------- +# iterable multiplication +# ----------------- +a = ['']*2 +#? list() +a + +# ----------------- +# tuple assignments +# ----------------- +a1, b1 = (1, "") +#? int() +a1 +#? str() +b1 + +(a2, b2) = (1, "") +#? int() +a2 +#? str() +b2 + +# list assignment +[list1, list2] = (1, "") +#? int() +list1 +#? str() +list2 + +[list3, list4] = [1, ""] +#? int() +list3 +#? str() +list4 + +# ----------------- +# subtuple assignment +# ----------------- +(a3, (b3, c3)) = (1, ("", list)) +#? list +c3 + +a4, (b4, c4) = (1, ("", list)) +#? list +c4 +#? int() +a4 +#? str() +b4 + + +# ----------------- +# multiple assignments +# ----------------- +a = b = 1 +#? int() +a +#? int() +b + +(a, b) = (c, (e, f)) = ('2', (3, 4)) +#? str() +a +#? tuple() +b +#? str() +c +#? int() +e +#? int() +f + + +# ----------------- +# unnessecary braces +# ----------------- +a = (1) +#? int() +a +#? int() +(1) +#? int() +((1)) +#? int() +((1)+1) + +u, v = 1, "" +#? int() +u + +((u1, v1)) = 1, "" +#? int() +u1 +#? int() +(u1) + +(a), b = 1, '' +#? int() +a + +def a(): return '' +#? str() +(a)() +#? str() +(a)().replace() +#? int() +(tuple).index() +#? int() +(tuple)().index() + +class C(): + def __init__(self): + self.a = (str()).upper() + +#? str() +C().a + +# ----------------- +# imbalanced sides +# ----------------- +(f, g) = (1,) +#? int() +f +#? [] +g. + +(f, g, h) = (1,'') +#? int() +f +#? str() +g +#? [] +h. + +(f1, g1) = 1 +#? [] +f1. +#? [] +g1. + +(f, g) = (1,'',1.0) +#? int() +f +#? str() +g + +# ----------------- +# dicts +# ----------------- +dic2 = {'asdf': 3, 'b': 'str'} +#? int() +dic2['asdf'] + +# string literal +#? int() +dic2[r'asdf'] +#? int() +dic2[r'asdf'] +#? int() +dic2[r'as' 'd' u'f'] +#? int() str() +dic2['just_something'] + +# unpacking +a, b = dic2 +#? str() +a +a, b = {1: 'x', 2.0: 1j} +#? int() float() +a +#? int() float() +b + + +def f(): + """ github #83 """ + r = {} + r['status'] = (200, 'ok') + return r + +#? dict() +f() + +# completion within dicts +#? 9 ['str'] +{str: str} + +# iteration problem (detected with sith) +d = dict({'a':''}) +def y(a): + return a +#? +y(**d) + +# problem with more complicated casts +dic = {str(key): ''} +#? str() +dic[''] + + +for x in {1: 3.0, '': 1j}: + #? int() str() + x + +# ----------------- +# with variable as index +# ----------------- +a = (1, "") +index = 1 +#? str() +a[index] + +# these should just ouput the whole array +index = int +#? int() str() +a[index] +index = int() +#? int() str() +a[index] + +# dicts +index = 'asdf' + +dic2 = {'asdf': 3, 'b': 'str'} +#? int() +dic2[index] + +# ----------------- +# __getitem__ +# ----------------- + +class GetItem(): + def __getitem__(self, index): + return 1.0 + +#? float() +GetItem()[0] + +class GetItem(): + def __init__(self, el): + self.el = el + + def __getitem__(self, index): + return self.el + +#? str() +GetItem("")[1] + +class GetItemWithList(): + def __getitem__(self, index): + return [1, 1.0, 's'][index] + +#? float() +GetItemWithList()[1] + +for i in 0, 2: + #? int() str() + GetItemWithList()[i] + + +# With super +class SuperYeah(list): + def __getitem__(self, index): + return super()[index] + +#? +SuperYeah([1])[0] +#? +SuperYeah()[0] + +# ----------------- +# conversions +# ----------------- + +a = [1, ""] +#? int() str() +list(a)[1] + +#? int() str() +list(a)[0] +#? +set(a)[0] + +#? int() str() +list(set(a))[1] +#? int() str() +next(iter(set(a))) +#? int() str() +list(list(set(a)))[1] + +# does not yet work, because the recursion catching is not good enough (catches # to much) +#? int() str() +list(set(list(set(a))))[1] +#? int() str() +list(set(set(a)))[1] + +# frozenset +#? int() str() +list(frozenset(a))[1] +#? int() str() +list(set(frozenset(a)))[1] + +# iter +#? int() str() +list(iter(a))[1] +#? int() str() +list(iter(list(set(a))))[1] + +# tuple +#? int() str() +tuple(a)[1] +#? int() str() +tuple(list(set(a)))[1] + +#? int() +tuple((1,))[0] + +# implementation detail for lists, should not be visible +#? [] +list().__iterable + +# With a list comprehension. +for i in set(a for a in [1]): + #? int() + i + + +# ----------------- +# Merged Arrays +# ----------------- + +for x in [1] + ['']: + #? int() str() + x + +# ----------------- +# For loops with attribute assignment. +# ----------------- +def test_func(): + x = 'asdf' + for x.something in [6,7,8]: + pass + #? str() + x + + for x.something, b in [[6, 6.0]]: + pass + #? str() + x + + +# python >= 2.7 +# Set literals are not valid in 2.6. +#? int() +tuple({1})[0] + +# python >= 3.3 +# ----------------- +# PEP 3132 Extended Iterable Unpacking (star unpacking) +# ----------------- + +a, *b, c = [1, 'b', list, dict] +#? int() +a +#? str() +b +#? list +c + +# Not valid syntax +a, *b, *c = [1, 'd', list] +#? int() +a +#? str() +b +#? list +c + +lc = [x for a, *x in [(1, '', 1.0)]] + +#? +lc[0][0] diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/async_.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/async_.py new file mode 100644 index 0000000..b220213 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/async_.py @@ -0,0 +1,36 @@ +""" +Tests for all async use cases. + +Currently we're not supporting completion of them, but they should at least not +raise errors or return extremely strange results. +""" + +async def x(): + argh = await x() + #? + argh + return 2 + +#? int() +x() + +a = await x() +#? +a + + +async def x2(): + async with open('asdf') as f: + #? ['readlines'] + f.readlines + +class A(): + @staticmethod + async def b(c=1, d=2): + return 1 + +#! 9 ['def b'] +await A.b() + +#! 11 ['param d=2'] +await A.b(d=3) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/basic.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/basic.py new file mode 100644 index 0000000..34e8810 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/basic.py @@ -0,0 +1,295 @@ +# ----------------- +# cursor position +# ----------------- +#? 0 int +int() +#? 3 int +int() +#? 4 str +int(str) + + +# ----------------- +# should not complete +# ----------------- +#? [] +. +#? [] +str.. +#? [] +a(0):. + +# ----------------- +# if/else/elif +# ----------------- + +if (random.choice([0, 1])): + 1 +elif(random.choice([0, 1])): + a = 3 +else: + a = '' +#? int() str() +a +def func(): + if random.choice([0, 1]): + 1 + elif(random.choice([0, 1])): + a = 3 + else: + a = '' + #? int() str() + return a +#? int() str() +func() + +# ----------------- +# keywords +# ----------------- + +#? list() +assert [] + +def focus_return(): + #? list() + return [] + + +# ----------------- +# for loops +# ----------------- + +for a in [1,2]: + #? int() + a + +for a1 in 1,"": + #? int() str() + a1 + +for a3, b3 in (1,""), (1,""), (1,""): + #? int() + a3 + #? str() + b3 + +for a4, (b4, c4) in (1,("", list)), (1,("", list)): + #? int() + a4 + #? str() + b4 + #? list + c4 + +a = [] +for i in [1,'']: + #? int() str() + i + a += [i] + +#? int() str() +a[0] + +for i in list([1,'']): + #? int() str() + i + +#? int() str() +for x in [1,'']: x + +a = [] +b = [1.0,''] +for i in b: + a += [i] + +#? float() str() +a[0] + +for i in [1,2,3]: + #? int() + i +else: + i + + +# ----------------- +# range() +# ----------------- +for i in range(10): + #? int() + i + +# ----------------- +# ternary operator +# ----------------- + +a = 3 +b = '' if a else set() +#? str() set() +b + +def ret(a): + return ['' if a else set()] + +#? str() set() +ret(1)[0] +#? str() set() +ret()[0] + +# ----------------- +# global vars +# ----------------- + +def global_define(): + global global_var_in_func + global_var_in_func = 3 + +#? int() +global_var_in_func + + +def funct1(): + # From issue #610 + global global_dict_var + global_dict_var = dict() +def funct2(): + global global_dict_var + #? dict() + global_dict_var + + +# ----------------- +# within docstrs +# ----------------- + +def a(): + """ + #? ['global_define'] + global_define + """ + pass + +#? +# str literals in comment """ upper + +def completion_in_comment(): + #? ['Exception'] + # might fail because the comment is not a leaf: Exception + pass + +some_word +#? ['Exception'] +# Very simple comment completion: Exception +# Commment after it + +# ----------------- +# magic methods +# ----------------- + +class A(object): pass +class B(): pass + +#? ['__init__'] +A.__init__ +#? ['__init__'] +B.__init__ + +#? ['__init__'] +int().__init__ + +# ----------------- +# comments +# ----------------- + +class A(): + def __init__(self): + self.hello = {} # comment shouldn't be a string +#? dict() +A().hello + +# ----------------- +# unicode +# ----------------- +a = 'smörbröd' +#? str() +a +xyz = 'smörbröd.py' +if 1: + #? str() + xyz + +#? +¹. + +# ----------------- +# exceptions +# ----------------- +try: + import math +except ImportError as i_a: + #? ['i_a'] + i_a + #? ImportError() + i_a +try: + import math +except ImportError, i_b: + # TODO check this only in Python2 + ##? ['i_b'] + i_b + ##? ImportError() + i_b + + +class MyException(Exception): + def __init__(self, my_attr): + self.my_attr = my_attr + +try: + raise MyException(1) +except MyException as e: + #? ['my_attr'] + e.my_attr + #? 22 ['my_attr'] + for x in e.my_attr: + pass + + +# ----------------- +# continuations +# ----------------- + +foo = \ +1 +#? int() +foo + +# ----------------- +# module attributes +# ----------------- + +# Don't move this to imports.py, because there's a star import. +#? str() +__file__ +#? ['__file__'] +__file__ + + +# ----------------- +# with statements +# ----------------- + +with open('') as f: + #? ['closed'] + f.closed + for line in f: + #? str() + line + +# Nested with statements don't exist in Python 2.6. +# python >= 2.7 +with open('') as f1, open('') as f2: + #? ['closed'] + f1.closed + #? ['closed'] + f2.closed diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/classes.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/classes.py new file mode 100644 index 0000000..292cfc3 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/classes.py @@ -0,0 +1,535 @@ +def find_class(): + """ This scope is special, because its in front of TestClass """ + #? ['ret'] + TestClass.ret + if 1: + #? ['ret'] + TestClass.ret + +class FindClass(): + #? [] + TestClass.ret + if a: + #? [] + TestClass.ret + + def find_class(self): + #? ['ret'] + TestClass.ret + if 1: + #? ['ret'] + TestClass.ret + +#? [] +FindClass().find_class.self +#? [] +FindClass().find_class.self.find_class + +# set variables, which should not be included, because they don't belong to the +# class +second = 1 +second = "" +class TestClass(object): + var_class = TestClass(1) + + def __init__(self2, first_param, second_param, third=1.0): + self2.var_inst = first_param + self2.second = second_param + self2.first = first_param + a = 3 + + def var_func(self): + return 1 + + def get_first(self): + # traversal + self.second_new = self.second + return self.var_inst + + def values(self): + self.var_local = 3 + #? ['var_class', 'var_func', 'var_inst', 'var_local'] + self.var_ + #? + var_local + + def ret(self, a1): + # should not know any class functions! + #? [] + values + #? ['return'] + ret + return a1 + +# should not work +#? [] +var_local +#? [] +var_inst +#? [] +var_func + +# instance +inst = TestClass(1) + +#? ['var_class', 'var_func', 'var_inst', 'var_local'] +inst.var + +#? ['var_class', 'var_func'] +TestClass.var + +#? int() +inst.var_local +#? [] +TestClass.var_local. + +#? int() +TestClass().ret(1) +# Should not return int(), because we want the type before `.ret(1)`. +#? 11 TestClass() +TestClass().ret(1) +#? int() +inst.ret(1) + +myclass = TestClass(1, '', 3.0) +#? int() +myclass.get_first() +#? [] +myclass.get_first.real + +# too many params +#? int() +TestClass(1,1,1).var_inst + +# too few params +#? int() +TestClass(1).first +#? [] +TestClass(1).second. + +# complicated variable settings in class +#? str() +myclass.second +#? str() +myclass.second_new + +# multiple classes / ordering +ints = TestClass(1, 1.0) +strs = TestClass("", '') +#? float() +ints.second +#? str() +strs.second + +#? ['var_class'] +TestClass.var_class.var_class.var_class.var_class + +# operations (+, *, etc) shouldn't be InstanceElements - #246 +class A(): + def __init__(self): + self.addition = 1 + 2 +#? int() +A().addition + +# should also work before `=` +#? 8 int() +A().addition = None +#? 8 int() +A(1).addition = None +#? 1 A +A(1).addition = None +a = A() +#? 8 int() +a.addition = None + + +# ----------------- +# inheritance +# ----------------- + +class Base(object): + def method_base(self): + return 1 + +class SuperClass(Base): + class_super = 3 + def __init__(self): + self.var_super = '' + def method_super(self): + self.var2_super = list + +class Mixin(SuperClass): + def method_mixin(self): + return int + +#? 20 SuperClass +class SubClass(SuperClass): + class_sub = 3 + def __init__(self): + self.var_sub = '' + def method_sub(self): + self.var_sub = list + return tuple + +instance = SubClass() + +#? ['method_base', 'method_sub', 'method_super'] +instance.method_ +#? ['var2_super', 'var_sub', 'var_super'] +instance.var +#? ['class_sub', 'class_super'] +instance.class_ + +#? ['method_base', 'method_sub', 'method_super'] +SubClass.method_ +#? [] +SubClass.var +#? ['class_sub', 'class_super'] +SubClass.class_ + +# ----------------- +# inheritance of builtins +# ----------------- + +class Base(str): + pass + +#? ['upper'] +Base.upper +#? ['upper'] +Base().upper + +# ----------------- +# dynamic inheritance +# ----------------- + +class Angry(object): + def shout(self): + return 'THIS IS MALARKEY!' + +def classgetter(): + return Angry + +class Dude(classgetter()): + def react(self): + #? ['shout'] + self.s + +# ----------------- +# __call__ +# ----------------- + +class CallClass(): + def __call__(self): + return 1 + +#? int() +CallClass()() + +# ----------------- +# variable assignments +# ----------------- + +class V: + def __init__(self, a): + self.a = a + + def ret(self): + return self.a + + d = b + b = ret + if 1: + c = b + +#? int() +V(1).b() +#? int() +V(1).c() +#? +V(1).d() +# Only keywords should be possible to complete. +#? ['is', 'in', 'not', 'and', 'or', 'if'] +V(1).d() + + +# ----------------- +# ordering +# ----------------- +class A(): + def b(self): + #? int() + a_func() + #? str() + self.a_func() + return a_func() + + def a_func(self): + return "" + +def a_func(): + return 1 + +#? int() +A().b() +#? str() +A().a_func() + +# ----------------- +# nested classes +# ----------------- +class A(): + class B(): + pass + def b(self): + return 1.0 + +#? float() +A().b() + +class A(): + def b(self): + class B(): + def b(self): + return [] + return B().b() + +#? list() +A().b() + +# ----------------- +# ducktyping +# ----------------- + +def meth(self): + return self.a, self.b + +class WithoutMethod(): + a = 1 + def __init__(self): + self.b = 1.0 + def blub(self): + return self.b + m = meth + +class B(): + b = '' + +a = WithoutMethod().m() +#? int() +a[0] +#? float() +a[1] + +#? float() +WithoutMethod.blub(WithoutMethod()) +#? str() +WithoutMethod.blub(B()) + +# ----------------- +# __getattr__ / getattr() / __getattribute__ +# ----------------- + +#? str().upper +getattr(str(), 'upper') +#? str.upper +getattr(str, 'upper') + +# some strange getattr calls +#? +getattr(str, 1) +#? +getattr() +#? +getattr(str) +#? +getattr(getattr, 1) +#? +getattr(str, []) + + +class Base(): + def ret(self, b): + return b + +class Wrapper(): + def __init__(self, obj): + self.obj = obj + + def __getattr__(self, name): + return getattr(self.obj, name) + +class Wrapper2(): + def __getattribute__(self, name): + return getattr(Base(), name) + +#? int() +Wrapper(Base()).ret(3) + +#? int() +Wrapper2(Base()).ret(3) + +class GetattrArray(): + def __getattr__(self, name): + return [1] + +#? int() +GetattrArray().something[0] + + +# ----------------- +# private vars +# ----------------- +class PrivateVar(): + def __init__(self): + self.__var = 1 + #? int() + self.__var + #? ['__var'] + self.__var + + def __private_func(self): + return 1 + + def wrap_private(self): + return self.__private_func() +#? [] +PrivateVar().__var +#? +PrivateVar().__var +#? [] +PrivateVar().__private_func +#? int() +PrivateVar().wrap_private() + + +class PrivateSub(PrivateVar): + def test(self): + #? [] + self.__var + + def wrap_private(self): + #? [] + self.__var + +#? [] +PrivateSub().__var + +# ----------------- +# super +# ----------------- +class Super(object): + a = 3 + def return_sup(self): + return 1 + +class TestSuper(Super): + #? + super() + def test(self): + #? Super() + super() + #? ['a'] + super().a + if 1: + #? Super() + super() + def a(): + #? + super() + + def return_sup(self): + #? int() + return super().return_sup() + +#? int() +TestSuper().return_sup() + + +# ----------------- +# if flow at class level +# ----------------- +class TestX(object): + def normal_method(self): + return 1 + + if True: + def conditional_method(self): + var = self.normal_method() + #? int() + var + return 2 + + def other_method(self): + var = self.conditional_method() + #? int() + var + +# ----------------- +# mro method +# ----------------- + +class A(object): + a = 3 + +#? ['mro'] +A.mro +#? [] +A().mro + + +# ----------------- +# mro resolution +# ----------------- + +class B(A()): + b = 3 + +#? +B.a +#? +B().a +#? int() +B.b +#? int() +B().b + + +# ----------------- +# With import +# ----------------- + +from import_tree.classes import Config2, BaseClass + +class Config(BaseClass): + """#884""" + +#? Config2() +Config.mode + +#? int() +Config.mode2 + + +# ----------------- +# Nested class/def/class +# ----------------- +class Foo(object): + a = 3 + def create_class(self): + class X(): + a = self.a + self.b = 3.0 + return X + +#? int() +Foo().create_class().a +#? float() +Foo().b + +class Foo(object): + def comprehension_definition(self): + return [1 for self.b in [1]] + +#? int() +Foo().b diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/completion.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/completion.py new file mode 100644 index 0000000..6700fa6 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/completion.py @@ -0,0 +1,50 @@ +""" +Special cases of completions (typically special positions that caused issues +with context parsing. +""" + +def pass_decorator(func): + return func + + +def x(): + return ( + 1, +#? ["tuple"] +tuple + ) + + # Comment just somewhere + + +class MyClass: + @pass_decorator + def x(foo, +#? 5 ["tuple"] +tuple, + ): + return 1 + + +if x: + pass +#? ['else'] +else + +try: + pass +#? ['except', 'Exception'] +except + +try: + pass +#? 6 ['except', 'Exception'] +except AttributeError: + pass +#? ['finally'] +finally + +for x in y: + pass +#? ['else'] +else diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/complex.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/complex.py new file mode 100644 index 0000000..3ea8327 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/complex.py @@ -0,0 +1,14 @@ +""" Mostly for stupid error reports of @dbrgn. :-) """ + +import time + +class Foo(object): + global time + asdf = time + +def asdfy(): + return Foo + +xorz = getattr(asdfy()(), 'asdf') +#? time +xorz diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/comprehensions.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/comprehensions.py new file mode 100644 index 0000000..2894cf3 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/comprehensions.py @@ -0,0 +1,215 @@ +# ----------------- +# list comprehensions +# ----------------- + +# basics: + +a = ['' for a in [1]] +#? str() +a[0] +#? ['insert'] +a.insert + +a = [a for a in [1]] +#? int() +a[0] + +y = 1.0 +# Should not leak. +[y for y in [3]] +#? float() +y + +a = [a for a in (1, 2)] +#? int() +a[0] + +a = [a for a,b in [(1,'')]] +#? int() +a[0] + +arr = [1,''] +a = [a for a in arr] +#? int() +a[0] +#? str() +a[1] +#? int() str() +a[2] + +a = [a if 1.0 else '' for a in [1] if [1.0]] +#? int() str() +a[0] + +# name resolve should be correct +left, right = 'a', 'b' +left, right = [x for x in (left, right)] +#? str() +left + +# with a dict literal +#? int() +[a for a in {1:'x'}][0] + +# list comprehensions should also work in combination with functions +def listen(arg): + for x in arg: + #? str() + x + +listen(['' for x in [1]]) +#? +([str for x in []])[0] + +# ----------------- +# nested list comprehensions +# ----------------- + +b = [a for arr in [[1, 1.0]] for a in arr] +#? int() +b[0] +#? float() +b[1] + +b = [arr for arr in [[1, 1.0]] for a in arr] +#? int() +b[0][0] +#? float() +b[1][1] + +b = [a for arr in [[1]] if '' for a in arr if ''] +#? int() +b[0] + +b = [b for arr in [[[1.0]]] for a in arr for b in a] +#? float() +b[0] + +#? str() +[x for x in 'chr'][0] + +# jedi issue #26 +#? list() +a = [[int(v) for v in line.strip().split() if v] for line in ["123", str(), "123"] if line] +#? list() +a[0] +#? int() +a[0][0] + +# ----------------- +# generator comprehensions +# ----------------- + +left, right = (i for i in (1, '')) + +#? int() +left +#? str() +right + +gen = (i for i in (1,)) + +#? int() +next(gen) +#? +gen[0] + +gen = (a for arr in [[1.0]] for a in arr) +#? float() +next(gen) + +#? int() +(i for i in (1,)).send() + +# issues with different formats +left, right = (i for i in + ('1', 2)) +#? str() +left +#? int() +right + +# ----------------- +# name resolution in comprehensions. +# ----------------- + +def x(): + """Should not try to resolve to the if hio, which was a bug.""" + #? 22 + [a for a in h if hio] + if hio: pass + +# ----------------- +# slices +# ----------------- + +#? list() +foo = [x for x in [1, '']][:1] +#? int() +foo[0] +#? str() +foo[1] + +# ----------------- +# In class +# ----------------- + +class X(): + def __init__(self, bar): + self.bar = bar + + def foo(self): + x = [a for a in self.bar][0] + #? int() + x + return x + +#? int() +X([1]).foo() + +# set/dict comprehensions were introduced in 2.7, therefore: +# python >= 2.7 +# ----------------- +# dict comprehensions +# ----------------- + +#? int() +list({a - 1: 3 for a in [1]})[0] + +d = {a - 1: b for a, b in {1: 'a', 3: 1.0}.items()} +#? int() +list(d)[0] +#? str() float() +d.values()[0] +#? str() +d[0] +#? float() str() +d[1] +#? float() +d[2] + +# ----------------- +# set comprehensions +# ----------------- + +#? set() +{a - 1 for a in [1]} + +#? set() +{a for a in range(10)} + +#? int() +[x for x in {a for a in range(10)}][0] + +#? int() +{a for a in range(10)}.pop() +#? float() str() +{b for a in [[3.0], ['']] for b in a}.pop() + +#? int() +next(iter({a for a in range(10)})) + + +# with a set literal (also doesn't work in 2.6). +#? int() +[a for a in {1, 2, 3}][0] diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/context.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/context.py new file mode 100644 index 0000000..d3e79b8 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/context.py @@ -0,0 +1,45 @@ +class Base(): + myfoobar = 3 + + +class X(Base): + def func(self, foo): + pass + + +class Y(X): + def actual_function(self): + pass + + #? [] + def actual_function + #? ['func'] + def f + + #? [] + def __class__ + + #? ['__repr__'] + def __repr__ + + #? [] + def mro + + #? ['myfoobar'] + myfoobar + +#? [] +myfoobar + +# ----------------- +# Inheritance +# ----------------- + +class Super(): + enabled = True + if enabled: + yo_dude = 4 + +class Sub(Super): + #? ['yo_dude'] + yo_dud diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/decorators.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/decorators.py new file mode 100644 index 0000000..27e455a --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/decorators.py @@ -0,0 +1,318 @@ +# ----------------- +# normal decorators +# ----------------- + +def decorator(func): + def wrapper(*args): + return func(1, *args) + return wrapper + +@decorator +def decorated(a,b): + return a,b + +exe = decorated(set, '') + +#? set +exe[1] + +#? int() +exe[0] + +# more complicated with args/kwargs +def dec(func): + def wrapper(*args, **kwargs): + return func(*args, **kwargs) + return wrapper + +@dec +def fu(a, b, c, *args, **kwargs): + return a, b, c, args, kwargs + +exe = fu(list, c=set, b=3, d='') + +#? list +exe[0] +#? int() +exe[1] +#? set +exe[2] +#? [] +exe[3][0]. +#? str() +exe[4]['d'] + + +exe = fu(list, set, 3, '', d='') + +#? str() +exe[3][0] + +# ----------------- +# multiple decorators +# ----------------- +def dec2(func2): + def wrapper2(first_arg, *args2, **kwargs2): + return func2(first_arg, *args2, **kwargs2) + return wrapper2 + +@dec2 +@dec +def fu2(a, b, c, *args, **kwargs): + return a, b, c, args, kwargs + +exe = fu2(list, c=set, b=3, d='str') + +#? list +exe[0] +#? int() +exe[1] +#? set +exe[2] +#? [] +exe[3][0]. +#? str() +exe[4]['d'] + + +# ----------------- +# Decorator is a class +# ----------------- +def same_func(func): + return func + +class Decorator(object): + def __init__(self, func): + self.func = func + + def __call__(self, *args, **kwargs): + return self.func(1, *args, **kwargs) + +@Decorator +def nothing(a,b,c): + return a,b,c + +#? int() +nothing("")[0] +#? str() +nothing("")[1] + + +@same_func +@Decorator +def nothing(a,b,c): + return a,b,c + +#? int() +nothing("")[0] + +class MethodDecoratorAsClass(): + class_var = 3 + @Decorator + def func_without_self(arg, arg2): + return arg, arg2 + + @Decorator + def func_with_self(self, arg): + return self.class_var + +#? int() +MethodDecoratorAsClass().func_without_self('')[0] +#? str() +MethodDecoratorAsClass().func_without_self('')[1] +#? +MethodDecoratorAsClass().func_with_self(1) + + +class SelfVars(): + """Init decorator problem as an instance, #247""" + @Decorator + def __init__(self): + """ + __init__ decorators should be ignored when looking up variables in the + class. + """ + self.c = list + + @Decorator + def shouldnt_expose_var(not_self): + """ + Even though in real Python this shouldn't expose the variable, in this + case Jedi exposes the variable, because these kind of decorators are + normally descriptors, which SHOULD be exposed (at least 90%). + """ + not_self.b = 1.0 + + def other_method(self): + #? float() + self.b + #? list + self.c + +# ----------------- +# not found decorators (are just ignored) +# ----------------- +@not_found_decorator +def just_a_func(): + return 1 + +#? int() +just_a_func() + +#? ['__closure__'] +just_a_func.__closure__ + + +class JustAClass: + @not_found_decorator2 + def a(self): + return 1 + +#? ['__call__'] +JustAClass().a.__call__ +#? int() +JustAClass().a() +#? ['__call__'] +JustAClass.a.__call__ +#? int() +JustAClass.a() + +# ----------------- +# illegal decorators +# ----------------- + +class DecoratorWithoutCall(): + def __init__(self, func): + self.func = func + +@DecoratorWithoutCall +def f(): + return 1 + +# cannot be resolved - should be ignored +@DecoratorWithoutCall(None) +def g(): + return 1 + +#? +f() +#? int() +g() + + +class X(): + @str + def x(self): + pass + + def y(self): + #? str() + self.x + #? + self.x() + +# ----------------- +# method decorators +# ----------------- + +def dec(f): + def wrapper(s): + return f(s) + return wrapper + +class MethodDecorators(): + _class_var = 1 + def __init__(self): + self._method_var = '' + + @dec + def constant(self): + return 1.0 + + @dec + def class_var(self): + return self._class_var + + @dec + def method_var(self): + return self._method_var + +#? float() +MethodDecorators().constant() +#? int() +MethodDecorators().class_var() +#? str() +MethodDecorators().method_var() + + +class Base(): + @not_existing + def __init__(self): + pass + @not_existing + def b(self): + return '' + @dec + def c(self): + return 1 + +class MethodDecoratorDoesntExist(Base): + """#272 github: combination of method decorators and super()""" + def a(self): + #? + super().__init__() + #? str() + super().b() + #? int() + super().c() + #? float() + self.d() + + @doesnt_exist + def d(self): + return 1.0 + +# ----------------- +# others +# ----------------- +def memoize(function): + def wrapper(*args): + if random.choice([0, 1]): + pass + else: + rv = function(*args) + return rv + return wrapper + +@memoize +def follow_statement(stmt): + return stmt + +# here we had problems with the else clause, because the parent was not right. +#? int() +follow_statement(1) + +# ----------------- +# class decorators +# ----------------- + +# class decorators should just be ignored +@should_ignore +class A(): + def ret(self): + return 1 + +#? int() +A().ret() + + +# ----------------- +# On decorator completions +# ----------------- + +import abc +#? ['abc'] +@abc + +#? ['abstractmethod'] +@abc.abstractmethod diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/definition.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/definition.py new file mode 100644 index 0000000..f896984 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/definition.py @@ -0,0 +1,68 @@ +""" +Fallback to callee definition when definition not found. +- https://github.com/davidhalter/jedi/issues/131 +- https://github.com/davidhalter/jedi/pull/149 +""" + +"""Parenthesis closed at next line.""" + +# Ignore these definitions for a little while, not sure if we really want them. +# python <= 2.5 + +#? isinstance +isinstance( +) + +#? isinstance +isinstance( +) + +#? isinstance +isinstance(None, +) + +#? isinstance +isinstance(None, +) + +"""Parenthesis closed at same line.""" + +# Note: len('isinstance(') == 11 +#? 11 isinstance +isinstance() + +# Note: len('isinstance(None,') == 16 +##? 16 isinstance +isinstance(None,) + +# Note: len('isinstance(None,') == 16 +##? 16 isinstance +isinstance(None, ) + +# Note: len('isinstance(None, ') == 17 +##? 17 isinstance +isinstance(None, ) + +# Note: len('isinstance( ') == 12 +##? 12 isinstance +isinstance( ) + +"""Unclosed parenthesis.""" + +#? isinstance +isinstance( + +def x(): pass # acts like EOF + +##? isinstance +isinstance( + +def x(): pass # acts like EOF + +#? isinstance +isinstance(None, + +def x(): pass # acts like EOF + +##? isinstance +isinstance(None, diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/descriptors.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/descriptors.py new file mode 100644 index 0000000..3cc01fa --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/descriptors.py @@ -0,0 +1,221 @@ +class RevealAccess(object): + """ + A data descriptor that sets and returns values + normally and prints a message logging their access. + """ + def __init__(self, initval=None, name='var'): + self.val = initval + self.name = name + + def __get__(self, obj, objtype): + print('Retrieving', self.name) + return self.val + + def __set__(self, obj, val): + print('Updating', self.name) + self.val = val + + def just_a_method(self): + pass + +class C(object): + x = RevealAccess(10, 'var "x"') + #? RevealAccess() + x + #? ['just_a_method'] + x.just_a_method + y = 5.0 + def __init__(self): + #? int() + self.x + + #? [] + self.just_a_method + #? [] + C.just_a_method + +m = C() +#? int() +m.x +#? float() +m.y +#? int() +C.x + +#? [] +m.just_a_method +#? [] +C.just_a_method + +# ----------------- +# properties +# ----------------- +class B(): + @property + def r(self): + return 1 + @r.setter + def r(self, value): + return '' + def t(self): + return '' + p = property(t) + +#? [] +B().r(). +#? int() +B().r + +#? str() +B().p +#? [] +B().p(). + +class PropClass(): + def __init__(self, a): + self.a = a + @property + def ret(self): + return self.a + + @ret.setter + def ret(self, value): + return 1.0 + + def ret2(self): + return self.a + ret2 = property(ret2) + + @property + def nested(self): + """ causes recusions in properties, should work """ + return self.ret + + @property + def nested2(self): + """ causes recusions in properties, should not work """ + return self.nested2 + + @property + def join1(self): + """ mutual recusion """ + return self.join2 + + @property + def join2(self): + """ mutual recusion """ + return self.join1 + +#? str() +PropClass("").ret +#? [] +PropClass().ret. + +#? str() +PropClass("").ret2 +#? +PropClass().ret2 + +#? int() +PropClass(1).nested +#? [] +PropClass().nested. + +#? +PropClass(1).nested2 +#? [] +PropClass().nested2. + +#? +PropClass(1).join1 +# ----------------- +# staticmethod/classmethod +# ----------------- + +class E(object): + a = '' + def __init__(self, a): + self.a = a + + def f(x): + return x + f = staticmethod(f) + #? + f.__func + + @staticmethod + def g(x): + return x + + def s(cls, x): + return x + s = classmethod(s) + + @classmethod + def t(cls, x): + return x + + @classmethod + def u(cls, x): + return cls.a + +e = E(1) +#? int() +e.f(1) +#? int() +E.f(1) +#? int() +e.g(1) +#? int() +E.g(1) + +#? int() +e.s(1) +#? int() +E.s(1) +#? int() +e.t(1) +#? int() +E.t(1) + +#? str() +e.u(1) +#? str() +E.u(1) + +# ----------------- +# Conditions +# ----------------- + +from functools import partial + + +class Memoize(): + def __init__(self, func): + self.func = func + + def __get__(self, obj, objtype): + if obj is None: + return self.func + + return partial(self, obj) + + def __call__(self, *args, **kwargs): + # We don't do caching here, but that's what would normally happen. + return self.func(*args, **kwargs) + + +class MemoizeTest(): + def __init__(self, x): + self.x = x + + @Memoize + def some_func(self): + return self.x + + +#? int() +MemoizeTest(10).some_func() +# Now also call the same function over the class (see if clause above). +#? float() +MemoizeTest.some_func(MemoizeTest(10.0)) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/docstring.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/docstring.py new file mode 100644 index 0000000..88db52d --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/docstring.py @@ -0,0 +1,246 @@ +""" Test docstrings in functions and classes, which are used to infer types """ + +# ----------------- +# sphinx style +# ----------------- +def sphinxy(a, b, c, d, x): + """ asdfasdf + :param a: blablabla + :type a: str + :type b: (str, int) + :type c: random.Random + :type d: :class:`random.Random` + :param str x: blablabla + :rtype: dict + """ + #? str() + a + #? str() + b[0] + #? int() + b[1] + #? ['seed'] + c.seed + #? ['seed'] + d.seed + #? ['lower'] + x.lower + +#? dict() +sphinxy() + +# wrong declarations +def sphinxy2(a, b, x): + """ + :param a: Forgot type declaration + :type a: + :param b: Just something + :type b: `` + :param x: Just something without type + :rtype: + """ + #? + a + #? + b + #? + x + +#? +sphinxy2() + + +def sphinxy_param_type_wrapped(a): + """ + :param str a: + Some description wrapped onto the next line with no space after the + colon. + """ + #? str() + a + + +# local classes -> github #370 +class ProgramNode(): + pass + +def local_classes(node, node2): + """ + :type node: ProgramNode + ... and the class definition after this func definition: + :type node2: ProgramNode2 + """ + #? ProgramNode() + node + #? ProgramNode2() + node2 + +class ProgramNode2(): + pass + + +def list_with_non_imports(lst): + """ + Should be able to work with tuples and lists and still import stuff. + + :type lst: (random.Random, [collections.defaultdict, ...]) + """ + #? ['seed'] + lst[0].seed + + import collections as col + # use some weird index + #? col.defaultdict() + lst[1][10] + + +def two_dots(a): + """ + :type a: json.decoder.JSONDecoder + """ + #? ['raw_decode'] + a.raw_decode + + +# sphinx returns +def return_module_object(): + """ + :rtype: :class:`random.Random` + """ + +#? ['seed'] +return_module_object().seed + + +# ----------------- +# epydoc style +# ----------------- +def epydoc(a, b): + """ asdfasdf + @type a: str + @param a: blablabla + @type b: (str, int) + @param b: blablah + @rtype: list + """ + #? str() + a + #? str() + b[0] + + #? int() + b[1] + +#? list() +epydoc() + + +# Returns with param type only +def rparam(a,b): + """ + @type a: str + """ + return a + +#? str() +rparam() + + +# Composite types +def composite(): + """ + @rtype: (str, int, dict) + """ + +x, y, z = composite() +#? str() +x +#? int() +y +#? dict() +z + + +# Both docstring and calculated return type +def both(): + """ + @rtype: str + """ + return 23 + +#? str() int() +both() + +class Test(object): + def __init__(self): + self.teststr = "" + """ + # jedi issue #210 + """ + def test(self): + #? ['teststr'] + self.teststr + +# ----------------- +# statement docstrings +# ----------------- +d = '' +""" bsdf """ +#? str() +d.upper() + +# ----------------- +# class docstrings +# ----------------- + +class InInit(): + def __init__(self, foo): + """ + :type foo: str + """ + #? str() + foo + + +class InClass(): + """ + :type foo: str + """ + def __init__(self, foo): + #? str() + foo + + +class InBoth(): + """ + :type foo: str + """ + def __init__(self, foo): + """ + :type foo: int + """ + #? str() int() + foo + + +def __init__(foo): + """ + :type foo: str + """ + #? str() + foo + + +# ----------------- +# Renamed imports (#507) +# ----------------- + +import datetime +from datetime import datetime as datetime_imported + +def import_issues(foo): + """ + @type foo: datetime_imported + """ + #? datetime.datetime() + foo diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/dynamic_arrays.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/dynamic_arrays.py new file mode 100644 index 0000000..9be530f --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/dynamic_arrays.py @@ -0,0 +1,310 @@ +""" +Checking for ``list.append`` and all the other possible array modifications. +""" +# ----------------- +# list.append +# ----------------- +arr = [] +for a in [1,2]: + arr.append(a); + +arr.append # should not cause an exception +arr.append() # should not cause an exception + +#? int() +arr[10] + +arr = [tuple()] +for a in [1,2]: + arr.append(a); + +#? int() tuple() +arr[10] +#? int() +arr[10].index() + +arr = list([]) +arr.append(1) +#? int() +arr[0] + +# ----------------- +# list.insert +# ----------------- +arr = [""] +arr.insert(0, 1.0) + +# on exception due to this, please! +arr.insert(0) +arr.insert() + +#? float() str() +arr[10] + +for a in arr: + #? float() str() + a + +#? float() str() +list(arr)[10] + +# ----------------- +# list.extend / set.update +# ----------------- + +arr = [1.0] +arr.extend([1,2,3]) +arr.extend([]) +arr.extend("") # should ignore + +#? float() int() +arr[100] + +a = set(arr) +a.update(list(["", 1])) + +#? float() int() str() +list(a)[0] +# ----------------- +# set/list initialized as functions +# ----------------- + +st = set() +st.add(1) + +#? int() +for s in st: s + +lst = list() +lst.append(1) + +#? int() +for i in lst: i + +# ----------------- +# renames / type changes +# ----------------- +arr = [] +arr2 = arr +arr2.append('') +#? str() +arr2[0] + + +lst = [1] +lst.append(1.0) +s = set(lst) +s.add("") +lst = list(s) +lst.append({}) + +#? dict() int() float() str() +lst[0] + +# should work with tuple conversion, too. +#? dict() int() float() str() +tuple(lst)[0] + +# but not with an iterator +#? +iter(lst)[0] + +# ----------------- +# complex including += +# ----------------- +class C(): pass +class D(): pass +class E(): pass +lst = [1] +lst.append(1.0) +lst += [C] +s = set(lst) +s.add("") +s += [D] +lst = list(s) +lst.append({}) +lst += [E] + +##? dict() int() float() str() C D E +lst[0] + +# ----------------- +# functions +# ----------------- + +def arr_append(arr4, a): + arr4.append(a) + +def add_to_arr(arr2, a): + arr2.append(a) + return arr2 + +def app(a): + arr3.append(a) + +arr3 = [1.0] +res = add_to_arr(arr3, 1) +arr_append(arr3, 'str') +app(set()) + +#? float() str() int() set() +arr3[10] + +#? float() str() int() set() +res[10] + +# ----------------- +# returns, special because the module dicts are not correct here. +# ----------------- +def blub(): + a = [] + a.append(1.0) + #? float() + a[0] + return a + +#? float() +blub()[0] + +# list with default +def blub(): + a = list([1]) + a.append(1.0) + return a + +#? int() float() +blub()[0] + +# empty list +def blub(): + a = list() + a.append(1.0) + return a +#? float() +blub()[0] + +# with if +def blub(): + if 1: + a = [] + a.append(1.0) + return a + +#? float() +blub()[0] + +# with else clause +def blub(): + if random.choice([0, 1]): + 1 + else: + a = [] + a.append(1) + return a + +#? int() +blub()[0] +# ----------------- +# returns, the same for classes +# ----------------- +class C(): + def blub(self, b): + if 1: + a = [] + a.append(b) + return a + + def blub2(self): + """ mapper function """ + a = self.blub(1.0) + #? float() + a[0] + return a + + def literal_arr(self, el): + self.a = [] + self.a.append(el) + #? int() + self.a[0] + return self.a + + def list_arr(self, el): + self.b = list([]) + self.b.append(el) + #? float() + self.b[0] + return self.b + +#? int() +C().blub(1)[0] +#? float() +C().blub2(1)[0] + +#? int() +C().a[0] +#? int() +C().literal_arr(1)[0] + +#? float() +C().b[0] +#? float() +C().list_arr(1.0)[0] + +# ----------------- +# array recursions +# ----------------- + +a = set([1.0]) +a.update(a) +a.update([1]) + +#? float() int() +list(a)[0] + +def first(a): + b = [] + b.append(a) + b.extend(second(a)) + return list(b) + +def second(a): + b = [] + b.extend(first(a)) + return list(b) + +#? float() +first(1.0)[0] + +def third(): + b = [] + b.extend + extend() + b.extend(first()) + return list(b) +#? +third()[0] + + +# ----------------- +# set.add +# ----------------- +# Set literals are not valid in 2.6. +# python >= 2.7 +st = {1.0} +for a in [1,2]: + st.add(a) + +st.append('') # lists should not have an influence + +st.add # should not cause an exception +st.add() + +st = {1.0} +st.add(1) +lst = list(st) + +lst.append('') + +#? float() int() str() +lst[0] + diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/dynamic_params.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/dynamic_params.py new file mode 100644 index 0000000..8af1730 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/dynamic_params.py @@ -0,0 +1,134 @@ +""" +This is used for dynamic object completion. +Jedi tries to guess param types with a backtracking approach. +""" +def func(a, default_arg=2): + #? int() + default_arg + #? int() str() + return a + +#? int() +func(1) + +func + +int(1) + (int(2))+ func('') + +# Again the same function, but with another call. +def func(a): + #? float() + return a + +func(1.0) + +# Again the same function, but with no call. +def func(a): + #? + return a + +def func(a): + #? float() + return a +str(func(1.0)) + +# ----------------- +# *args, **args +# ----------------- +def arg(*args): + #? tuple() + args + #? int() + args[0] + +arg(1,"") +# ----------------- +# decorators +# ----------------- +def def_func(f): + def wrapper(*args, **kwargs): + return f(*args, **kwargs) + return wrapper + +@def_func +def func(c): + #? str() + return c + +#? str() +func("something") + +@def_func +def func(c=1): + #? float() + return c + +func(1.0) + +def tricky_decorator(func): + def wrapper(*args): + return func(1, *args) + + return wrapper + + +@tricky_decorator +def func(a, b): + #? int() + a + #? float() + b + +func(1.0) + +# Needs to be here, because in this case func is an import -> shouldn't lead to +# exceptions. +import sys as func +func.sys + +# ----------------- +# classes +# ----------------- + +class A(): + def __init__(self, a): + #? str() + a + +A("s") + +class A(): + def __init__(self, a): + #? int() + a + self.a = a + + def test(self, a): + #? float() + a + self.c = self.test2() + + def test2(self): + #? int() + return self.a + + def test3(self): + #? int() + self.test2() + #? int() + self.c + +A(3).test(2.0) +A(3).test2() + + +# ----------------- +# comprehensions +# ----------------- + +def from_comprehension(foo): + #? int() float() + return foo + +[from_comprehension(1.0) for n in (1,)] +[from_comprehension(n) for n in (1,)] diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/flow_analysis.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/flow_analysis.py new file mode 100644 index 0000000..af292b4 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/flow_analysis.py @@ -0,0 +1,298 @@ +# ----------------- +# First a few name resolution things +# ----------------- + +x = 3 +if NOT_DEFINED: + x = '' +#? 6 int() +elif x: + pass +else: + #? int() + x + +x = 1 +try: + x = '' +#? 8 int() str() +except x: + #? 5 int() str() + x + x = 1.0 +else: + #? 5 int() str() + x + x = list +finally: + #? 5 int() str() float() list + x + x = tuple + + +# ----------------- +# Return checks +# ----------------- + +def foo(x): + if 1.0: + return 1 + else: + return '' + +#? int() +foo(1) + + +# Exceptions are not analyzed. So check both if branches +def try_except(x): + try: + if 0: + return 1 + else: + return '' + except AttributeError: + return 1.0 + +#? float() str() +try_except(1) + + +# Exceptions are not analyzed. So check both if branches +def try_except(x): + try: + if 0: + return 1 + else: + return '' + except AttributeError: + return 1.0 + +#? float() str() +try_except(1) + + +# ----------------- +# elif +# ----------------- + +def elif_flows1(x): + if False: + return 1 + elif True: + return 1.0 + else: + return '' + +#? float() +elif_flows1(1) + + +def elif_flows2(x): + try: + if False: + return 1 + elif 0: + return 1.0 + else: + return '' + except ValueError: + return set + +#? str() set +elif_flows2(1) + + +def elif_flows3(x): + try: + if True: + return 1 + elif 0: + return 1.0 + else: + return '' + except ValueError: + return set + +#? int() set +elif_flows3(1) + +# ----------------- +# mid-difficulty if statements +# ----------------- +def check(a): + if a is None: + return 1 + return '' + return set + +#? int() +check(None) +#? str() +check('asb') + +a = list +if 2 == True: + a = set +elif 1 == True: + a = 0 + +#? int() +a +if check != 1: + a = '' +#? str() +a +if check == check: + a = list +#? list +a +if check != check: + a = set +else: + a = dict +#? dict +a +if not (check is not check): + a = 1 +#? int() +a + + +# ----------------- +# name resolution +# ----------------- + +a = list +def elif_name(x): + try: + if True: + a = 1 + elif 0: + a = 1.0 + else: + return '' + except ValueError: + a = x + return a + +#? int() set +elif_name(set) + +if 0: + a = '' +else: + a = int + +#? int +a + +# ----------------- +# isinstance +# ----------------- + +class A(): pass + +def isinst(x): + if isinstance(x, A): + return dict + elif isinstance(x, int) and x == 1 or x is True: + return set + elif isinstance(x, (float, reversed)): + return list + elif not isinstance(x, str): + return tuple + return 1 + +#? dict +isinst(A()) +#? set +isinst(True) +#? set +isinst(1) +#? tuple +isinst(2) +#? list +isinst(1.0) +#? tuple +isinst(False) +#? int() +isinst('') + +# ----------------- +# flows that are not reachable should be able to access parent scopes. +# ----------------- + +foobar = '' + +if 0: + within_flow = 1.0 + #? float() + within_flow + #? str() + foobar + if 0: + nested = 1 + #? int() + nested + #? float() + within_flow + #? str() + foobar + #? + nested + +if False: + in_false = 1 + #? ['in_false'] + in_false + +# ----------------- +# True objects like modules +# ----------------- + +class X(): + pass +if X: + a = 1 +else: + a = '' +#? int() +a + + +# ----------------- +# Recursion issues +# ----------------- + +def possible_recursion_error(filename): + if filename == 'a': + return filename + # It seems like without the brackets there wouldn't be a RecursionError. + elif type(filename) == str: + return filename + + +if NOT_DEFINED: + s = str() +else: + s = str() +#? str() +possible_recursion_error(s) + + +# ----------------- +# In combination with imports +# ----------------- + +from import_tree import flow_import + +if 1 == flow_import.env: + a = 1 +elif 2 == flow_import.env: + a = '' +elif 3 == flow_import.env: + a = 1.0 + +#? int() str() +a diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/functions.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/functions.py new file mode 100644 index 0000000..893e4a3 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/functions.py @@ -0,0 +1,481 @@ +def x(): + return + +#? None +x() + +def array(first_param): + #? ['first_param'] + first_param + return list() + +#? [] +array.first_param +#? [] +array.first_param. +func = array +#? [] +func.first_param + +#? list() +array() + +#? ['array'] +arr + + +def inputs(param): + return param + +#? list +inputs(list) + +def variable_middle(): + var = 3 + return var + +#? int() +variable_middle() + +def variable_rename(param): + var = param + return var + +#? int() +variable_rename(1) + +def multi_line_func(a, # comment blabla + + b): + return b + +#? str() +multi_line_func(1,'') + +def multi_line_call(b): + return b + + +multi_line_call( +#? int() + b=1) + + +# nothing after comma +def asdf(a): + return a + +x = asdf(a=1, + ) +#? int() +x + +# ----------------- +# double execution +# ----------------- +def double_exe(param): + return param + +#? str() +variable_rename(double_exe)("") + +# -> shouldn't work (and throw no error) +#? [] +variable_rename(list())(). +#? [] +variable_rename(1)(). + +# ----------------- +# recursions (should ignore) +# ----------------- +def recursion(a, b): + if a: + return b + else: + return recursion(a+".", b+1) + +# Does not also return int anymore, because we now support operators in simple cases. +#? float() +recursion("a", 1.0) + +def other(a): + return recursion2(a) + +def recursion2(a): + if random.choice([0, 1]): + return other(a) + else: + if random.choice([0, 1]): + return recursion2("") + else: + return a + +#? int() str() +recursion2(1) + +# ----------------- +# ordering +# ----------------- + +def a(): + #? int() + b() + return b() + +def b(): + return 1 + +#? int() +a() + +# ----------------- +# keyword arguments +# ----------------- + +def func(a=1, b=''): + return a, b + +exe = func(b=list, a=tuple) +#? tuple +exe[0] + +#? list +exe[1] + +# ----------------- +# default arguments +# ----------------- + +#? int() +func()[0] +#? str() +func()[1] +#? float() +func(1.0)[0] +#? str() +func(1.0)[1] + + +#? float() +func(a=1.0)[0] +#? str() +func(a=1.0)[1] +#? int() +func(b=1.0)[0] +#? float() +func(b=1.0)[1] +#? list +func(a=list, b=set)[0] +#? set +func(a=list, b=set)[1] + + +def func_default(a, b=1): + return a, b + + +def nested_default(**kwargs): + return func_default(**kwargs) + +#? float() +nested_default(a=1.0)[0] +#? int() +nested_default(a=1.0)[1] +#? str() +nested_default(a=1.0, b='')[1] + +# Defaults should only work if they are defined before - not after. +def default_function(a=default): + #? + return a + +#? +default_function() + +default = int() + +def default_function(a=default): + #? int() + return a + +#? int() +default_function() + + +# ----------------- +# closures +# ----------------- +def a(): + l = 3 + def func_b(): + l = '' + #? str() + l + #? ['func_b'] + func_b + #? int() + l + +# ----------------- +# *args +# ----------------- + +def args_func(*args): + #? tuple() + return args + +exe = args_func(1, "") +#? int() +exe[0] +#? str() +exe[1] + +# illegal args (TypeError) +#? +args_func(*1)[0] +# iterator +#? int() +args_func(*iter([1]))[0] + +# different types +e = args_func(*[1+"", {}]) +#? int() str() +e[0] +#? dict() +e[1] + +_list = [1,""] +exe2 = args_func(_list)[0] + +#? str() +exe2[1] + +exe3 = args_func([1,""])[0] + +#? str() +exe3[1] + +def args_func(arg1, *args): + return arg1, args + +exe = args_func(1, "", list) +#? int() +exe[0] +#? tuple() +exe[1] +#? list +exe[1][1] + + +# In a dynamic search, both inputs should be given. +def simple(a): + #? int() str() + return a +def xargs(*args): + return simple(*args) + +xargs(1) +xargs('') + + +# *args without a self symbol +def memoize(func): + def wrapper(*args, **kwargs): + return func(*args, **kwargs) + return wrapper + + +class Something(): + @memoize + def x(self, a, b=1): + return a + +#? int() +Something().x(1) + + +# ----------------- +# ** kwargs +# ----------------- +def kwargs_func(**kwargs): + #? ['keys'] + kwargs.keys + #? dict() + return kwargs + +exe = kwargs_func(a=3,b=4.0) +#? dict() +exe +#? int() +exe['a'] +#? float() +exe['b'] +#? int() float() +exe['c'] + +a = 'a' +exe2 = kwargs_func(**{a:3, + 'b':4.0}) +#? int() +exe2['a'] +#? float() +exe2['b'] +#? int() float() +exe2['c'] + +# ----------------- +# *args / ** kwargs +# ----------------- + +def func_without_call(*args, **kwargs): + #? tuple() + args + #? dict() + kwargs + +def fu(a=1, b="", *args, **kwargs): + return a, b, args, kwargs + +exe = fu(list, 1, "", c=set, d="") + +#? list +exe[0] +#? int() +exe[1] +#? tuple() +exe[2] +#? str() +exe[2][0] +#? dict() +exe[3] +#? set +exe[3]['c'] + + +def kwargs_iteration(**kwargs): + return kwargs + +for x in kwargs_iteration(d=3): + #? float() + {'d': 1.0, 'c': '1'}[x] + + +# ----------------- +# nested *args +# ----------------- +def function_args(a, b, c): + return b + +def nested_args(*args): + return function_args(*args) + +def nested_args2(*args, **kwargs): + return nested_args(*args) + +#? int() +nested_args('', 1, 1.0, list) +#? [] +nested_args(''). + +#? int() +nested_args2('', 1, 1.0) +#? [] +nested_args2(''). + +# ----------------- +# nested **kwargs +# ----------------- +def nested_kw(**kwargs1): + return function_args(**kwargs1) + +def nested_kw2(**kwargs2): + return nested_kw(**kwargs2) + +# invalid command, doesn't need to return anything +#? +nested_kw(b=1, c=1.0, list) +#? int() +nested_kw(b=1) +# invalid command, doesn't need to return anything +#? +nested_kw(d=1.0, b=1, list) +#? int() +nested_kw(a=3.0, b=1) +#? int() +nested_kw(b=1, a=r"") +#? [] +nested_kw(1, ''). +#? [] +nested_kw(a=''). + +#? int() +nested_kw2(b=1) +#? int() +nested_kw2(b=1, c=1.0) +#? int() +nested_kw2(c=1.0, b=1) +#? [] +nested_kw2(''). +#? [] +nested_kw2(a=''). +#? [] +nested_kw2('', b=1). + +# ----------------- +# nested *args/**kwargs +# ----------------- +def nested_both(*args, **kwargs): + return function_args(*args, **kwargs) + +def nested_both2(*args, **kwargs): + return nested_both(*args, **kwargs) + +# invalid commands, may return whatever. +#? list +nested_both('', b=1, c=1.0, list) +#? list +nested_both('', c=1.0, b=1, list) + +#? [] +nested_both(''). + +#? int() +nested_both2('', b=1, c=1.0) +#? int() +nested_both2('', c=1.0, b=1) +#? [] +nested_both2(''). + +# ----------------- +# nested *args/**kwargs with a default arg +# ----------------- +def function_def(a, b, c): + return a, b + +def nested_def(a, *args, **kwargs): + return function_def(a, *args, **kwargs) + +def nested_def2(*args, **kwargs): + return nested_def(*args, **kwargs) + +#? str() +nested_def2('', 1, 1.0)[0] +#? str() +nested_def2('', b=1, c=1.0)[0] +#? str() +nested_def2('', c=1.0, b=1)[0] +#? int() +nested_def2('', 1, 1.0)[1] +#? int() +nested_def2('', b=1, c=1.0)[1] +#? int() +nested_def2('', c=1.0, b=1)[1] +#? [] +nested_def2('')[1]. + +# ----------------- +# magic methods +# ----------------- +def a(): pass +#? ['__closure__'] +a.__closure__ diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/generators.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/generators.py new file mode 100644 index 0000000..2327b18 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/generators.py @@ -0,0 +1,231 @@ +# ----------------- +# yield statement +# ----------------- +def gen(): + if random.choice([0, 1]): + yield 1 + else: + yield "" + +gen_exe = gen() +#? int() str() +next(gen_exe) + +#? int() str() list +next(gen_exe, list) + + +def gen_ret(value): + yield value + +#? int() +next(gen_ret(1)) + +#? [] +next(gen_ret()). + +# generators evaluate to true if cast by bool. +a = '' +if gen_ret(): + a = 3 +#? int() +a + + +# ----------------- +# generators should not be indexable +# ----------------- +def get(param): + if random.choice([0, 1]): + yield 1 + else: + yield "" + +#? [] +get()[0]. + +# ----------------- +# __iter__ +# ----------------- +for a in get(): + #? int() str() + a + + +class Get(): + def __iter__(self): + if random.choice([0, 1]): + yield 1 + else: + yield "" + +b = [] +for a in Get(): + #? int() str() + a + b += [a] + +#? list() +b +#? int() str() +b[0] + +g = iter(Get()) +#? int() str() +next(g) + +g = iter([1.0]) +#? float() +next(g) + + +# ----------------- +# __next__ +# ----------------- +class Counter: + def __init__(self, low, high): + self.current = low + self.high = high + + def __iter__(self): + return self + + def next(self): + """ need to have both __next__ and next, because of py2/3 testing """ + return self.__next__() + + def __next__(self): + if self.current > self.high: + raise StopIteration + else: + self.current += 1 + return self.current - 1 + + +for c in Counter(3, 8): + #? int() + print c + + +# ----------------- +# tuple assignments +# ----------------- +def gen(): + if random.choice([0,1]): + yield 1, "" + else: + yield 2, 1.0 + + +a, b = next(gen()) +#? int() +a +#? str() float() +b + + +def simple(): + if random.choice([0, 1]): + yield 1 + else: + yield "" + +a, b = simple() +#? int() str() +a +# For now this is ok. +#? +b + + +def simple2(): + yield 1 + yield "" + +a, b = simple2() +#? int() +a +#? str() +b + +a, = (a for a in [1]) +#? int() +a + +# ----------------- +# More complicated access +# ----------------- + +# `close` is a method wrapper. +#? ['__call__'] +gen().close.__call__ + +#? +gen().throw() + +#? ['co_consts'] +gen().gi_code.co_consts + +#? [] +gen.gi_code.co_consts + +# `send` is also a method wrapper. +#? ['__call__'] +gen().send.__call__ + +#? tuple() +gen().send() + +#? +gen()() + +# ----------------- +# empty yield +# ----------------- + +def x(): + yield + +#? None +next(x()) +#? gen() +x() + +def x(): + for i in range(3): + yield + +#? None +next(x()) + +# ----------------- +# yield in expression +# ----------------- + +def x(): + a= [(yield 1)] + +#? int() +next(x()) + +# ----------------- +# yield from +# ----------------- + +# python >= 3.3 + +def yield_from(): + yield from iter([1]) + +#? int() +next(yield_from()) + +def yield_from_multiple(): + yield from iter([1]) + yield str() + +x, y = yield_from_multiple() +#? int() +x +#? str() +y diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/goto.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/goto.py new file mode 100644 index 0000000..adff012 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/goto.py @@ -0,0 +1,231 @@ +# goto_assignments command tests are different in syntax + +definition = 3 +#! 0 ['a = definition'] +a = definition + +#! [] +b +#! ['a = definition'] +a + +b = a +c = b +#! ['c = b'] +c + +cd = 1 +#! 1 ['cd = c'] +cd = c +#! 0 ['cd = e'] +cd = e + +#! ['module math'] +import math +#! ['module math'] +math + +#! ['module math'] +b = math +#! ['b = math'] +b + +#! 18 ['foo = 10'] +foo = 10;print(foo) + +# ----------------- +# classes +# ----------------- +class C(object): + def b(self): + #! ['b = math'] + b + #! ['def b'] + self.b + #! 14 ['def b'] + self.b() + #! 11 ['param self'] + self.b + return 1 + + #! ['def b'] + b + +#! ['b = math'] +b + +#! ['def b'] +C.b +#! ['def b'] +C().b +#! 0 ['class C'] +C().b +#! 0 ['class C'] +C().b + +D = C +#! ['def b'] +D.b +#! ['def b'] +D().b + +#! 0 ['D = C'] +D().b +#! 0 ['D = C'] +D().b + +def c(): + return '' + +#! ['def c'] +c +#! 0 ['def c'] +c() + + +class ClassVar(): + x = 3 + +#! ['x = 3'] +ClassVar.x +#! ['x = 3'] +ClassVar().x + +# before assignments +#! 10 ['x = 3'] +ClassVar.x = '' +#! 12 ['x = 3'] +ClassVar().x = '' + +# Recurring use of the same var name, github #315 +def f(t=None): + #! 9 ['param t=None'] + t = t or 1 + + +class X(): + pass + +#! 3 [] +X(foo=x) + +# ----------------- +# imports +# ----------------- + +#! ['module import_tree'] +import import_tree +#! ["a = ''"] +import_tree.a + +#! ['module mod1'] +import import_tree.mod1 +#! ['a = 1'] +import_tree.mod1.a + +#! ['module pkg'] +import import_tree.pkg +#! ['a = list'] +import_tree.pkg.a + +#! ['module mod1'] +import import_tree.pkg.mod1 +#! ['a = 1.0'] +import_tree.pkg.mod1.a +#! ["a = ''"] +import_tree.a + +#! ['module mod1'] +from import_tree.pkg import mod1 +#! ['a = 1.0'] +mod1.a + +#! ['module mod1'] +from import_tree import mod1 +#! ['a = 1'] +mod1.a + +#! ['a = 1.0'] +from import_tree.pkg.mod1 import a + +#! ['module os'] +from .imports import os + +#! ['some_variable = 1'] +from . import some_variable + +# ----------------- +# anonymous classes +# ----------------- +def func(): + class A(): + def b(self): + return 1 + return A() + +#! 8 ['def b'] +func().b() + +# ----------------- +# on itself +# ----------------- + +#! 7 ['class ClassDef'] +class ClassDef(): + """ abc """ + pass + +# ----------------- +# params +# ----------------- + +param = ClassDef +#! 8 ['param param'] +def ab1(param): pass +#! 9 ['param param'] +def ab2(param): pass +#! 11 ['param = ClassDef'] +def ab3(a=param): pass + +ab1(ClassDef);ab2(ClassDef);ab3(ClassDef) + +# ----------------- +# for loops +# ----------------- + +for i in range(1): + #! ['for i in range(1): i'] + i + +for key, value in [(1,2)]: + #! ['for key, value in [(1,2)]: key'] + key + +for i in []: + #! ['for i in []: i'] + i + +# ----------------- +# decorator +# ----------------- +def dec(dec_param=3): + pass + +#! 8 ['param dec_param=3'] +@dec(dec_param=5) +def y(): + pass + +class ClassDec(): + def class_func(func): + return func + +#! 14 ['def class_func'] +@ClassDec.class_func +def x(): + pass + +#! 2 ['class ClassDec'] +@ClassDec.class_func +def z(): + pass diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/__init__.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/__init__.py new file mode 100644 index 0000000..5cbbcd7 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/__init__.py @@ -0,0 +1,7 @@ +a = '' + +from . import invisible_pkg + +the_pkg = invisible_pkg + +invisible_pkg = 1 diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/classes.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/classes.py new file mode 100644 index 0000000..23b088c --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/classes.py @@ -0,0 +1,10 @@ +blub = 1 + +class Config2(): + pass + + +class BaseClass(): + mode = Config2() + if isinstance(whaat, int): + mode2 = whaat diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/flow_import.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/flow_import.py new file mode 100644 index 0000000..a0a779e --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/flow_import.py @@ -0,0 +1,4 @@ +if name: + env = 1 +else: + env = 2 diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/invisible_pkg.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/invisible_pkg.py new file mode 100644 index 0000000..9c78ce2 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/invisible_pkg.py @@ -0,0 +1,7 @@ +""" +It should not be possible to import this pkg except for the import_tree itself, +because it is overwritten there. (It would be possible with a sys.path +modification, though). +""" + +foo = 1.0 diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/mod1.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/mod1.py new file mode 100644 index 0000000..bd696d6 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/mod1.py @@ -0,0 +1,4 @@ +a = 1 +from import_tree.random import a as c + +foobarbaz = 3.0 diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/mod2.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/mod2.py new file mode 100644 index 0000000..19914f5 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/mod2.py @@ -0,0 +1 @@ +from . import mod1 as fake diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/pkg/__init__.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/pkg/__init__.py new file mode 100644 index 0000000..480f222 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/pkg/__init__.py @@ -0,0 +1,3 @@ +a = list + +from math import * diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/pkg/mod1.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/pkg/mod1.py new file mode 100644 index 0000000..fe1d27f --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/pkg/mod1.py @@ -0,0 +1,3 @@ +a = 1.0 + +from ..random import foobar diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/random.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/random.py new file mode 100644 index 0000000..7a34c4e --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/random.py @@ -0,0 +1,6 @@ +""" +Here because random is also a builtin module. +""" +a = set + +foobar = 0 diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/recurse_class1.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/recurse_class1.py new file mode 100644 index 0000000..773408c --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/recurse_class1.py @@ -0,0 +1,5 @@ +import recurse_class2 + +class C(recurse_class2.C): + def a(self): + pass diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/recurse_class2.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/recurse_class2.py new file mode 100644 index 0000000..42f84ef --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/recurse_class2.py @@ -0,0 +1,4 @@ +import recurse_class1 + +class C(recurse_class1.C): + pass diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/rename1.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/rename1.py new file mode 100644 index 0000000..bdc3315 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/rename1.py @@ -0,0 +1,3 @@ +""" used for renaming tests """ + +abc = 3 diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/rename2.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/rename2.py new file mode 100644 index 0000000..8423895 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/import_tree/rename2.py @@ -0,0 +1,6 @@ +""" used for renaming tests """ + + +from rename1 import abc + +abc diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/imports.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/imports.py new file mode 100644 index 0000000..5c8626f --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/imports.py @@ -0,0 +1,295 @@ +# ----------------- +# own structure +# ----------------- + +# do separate scopes +def scope_basic(): + from import_tree import mod1 + + #? int() + mod1.a + + #? [] + import_tree.a + + #? [] + import_tree.mod1 + + import import_tree + #? str() + import_tree.a + + +def scope_pkg(): + import import_tree.mod1 + + #? str() + import_tree.a + + #? ['mod1'] + import_tree.mod1 + + #? int() + import_tree.mod1.a + +def scope_nested(): + import import_tree.pkg.mod1 + + #? str() + import_tree.a + + #? list + import_tree.pkg.a + + #? ['sqrt'] + import_tree.pkg.sqrt + + #? ['pkg'] + import_tree.p + + #? float() + import_tree.pkg.mod1.a + #? ['a', 'foobar', '__name__', '__package__', '__file__', '__doc__'] + a = import_tree.pkg.mod1. + + import import_tree.random + #? set + import_tree.random.a + +def scope_nested2(): + """Multiple modules should be indexable, if imported""" + import import_tree.mod1 + import import_tree.pkg + #? ['mod1'] + import_tree.mod1 + #? ['pkg'] + import_tree.pkg + + # With the latest changes this completion also works, because submodules + # are always included (some nested import structures lead to this, + # typically). + #? ['rename1'] + import_tree.rename1 + +def scope_from_import_variable(): + """ + All of them shouldn't work, because "fake" imports don't work in python + without the use of ``sys.modules`` modifications (e.g. ``os.path`` see also + github issue #213 for clarification. + """ + a = 3 + #? + from import_tree.mod2.fake import a + #? + from import_tree.mod2.fake import c + + #? + a + #? + c + +def scope_from_import_variable_with_parenthesis(): + from import_tree.mod2.fake import ( + a, foobarbaz + ) + + #? + a + #? + foobarbaz + # shouldn't complete, should still list the name though. + #? ['foobarbaz'] + foobarbaz + + +def as_imports(): + from import_tree.mod1 import a as xyz + #? int() + xyz + import not_existant, import_tree.mod1 as foo + #? int() + foo.a + import import_tree.mod1 as bar + #? int() + bar.a + + +def test_import_priorities(): + """ + It's possible to overwrite import paths in an ``__init__.py`` file, by + just assigining something there. + + See also #536. + """ + from import_tree import the_pkg, invisible_pkg + #? int() + invisible_pkg + # In real Python, this would be the module, but it's not, because Jedi + # doesn't care about most stateful issues such as __dict__, which it would + # need to, to do this in a correct way. + #? int() + the_pkg + # Importing foo is still possible, even though inivisible_pkg got changed. + #? float() + from import_tree.invisible_pkg import foo + + +# ----------------- +# std lib modules +# ----------------- +import tokenize +#? ['tok_name'] +tokenize.tok_name + +from pyclbr import * + +#? ['readmodule_ex'] +readmodule_ex +import os + +#? ['dirname'] +os.path.dirname + +from os.path import ( + expanduser +) + +#? os.path.expanduser +expanduser + +from itertools import (tee, + islice) +#? ['islice'] +islice + +from functools import (partial, wraps) +#? ['wraps'] +wraps + +from keyword import kwlist, \ + iskeyword +#? ['kwlist'] +kwlist + +#? [] +from keyword import not_existing1, not_existing2 + +from tokenize import io +tokenize.generate_tokens + +# ----------------- +# builtins +# ----------------- + +import sys +#? ['prefix'] +sys.prefix + +#? ['append'] +sys.path.append + +from math import * +#? ['cos', 'cosh'] +cos + +def func_with_import(): + import time + return time + +#? ['sleep'] +func_with_import().sleep + +# ----------------- +# relative imports +# ----------------- + +from .import_tree import mod1 +#? int() +mod1.a + +from ..import_tree import mod1 +#? +mod1.a + +from .......import_tree import mod1 +#? +mod1.a + +from .. import helpers +#? int() +helpers.sample_int + +from ..helpers import sample_int as f +#? int() +f + +from . import run +#? [] +run. + +from . import import_tree as imp_tree +#? str() +imp_tree.a + +from . import datetime as mod1 +#? [] +mod1. + +# self import +# this can cause recursions +from imports import * + +# ----------------- +# packages +# ----------------- + +from import_tree.mod1 import c +#? set +c + +from import_tree import recurse_class1 + +#? ['a'] +recurse_class1.C.a +# github #239 RecursionError +#? ['a'] +recurse_class1.C().a + +# ----------------- +# Jedi debugging +# ----------------- + +# memoizing issues (check git history for the fix) +import not_existing_import + +if not_existing_import: + a = not_existing_import +else: + a = not_existing_import +#? +a + +# ----------------- +# module underscore descriptors +# ----------------- + +def underscore(): + import keyword + #? ['__file__'] + keyword.__file__ + #? str() + keyword.__file__ + + # Does that also work for the our own module? + #? ['__file__'] + __file__ + + +# ----------------- +# complex relative imports #784 +# ----------------- +def relative(): + #? ['foobar'] + from import_tree.pkg.mod1 import foobar + #? int() + foobar diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/invalid.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/invalid.py new file mode 100644 index 0000000..7c047e6 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/invalid.py @@ -0,0 +1,214 @@ +""" +This file is less about the results and much more about the fact, that no +exception should be thrown. + +Basically this file could change depending on the current implementation. But +there should never be any errors. +""" + +# wait until keywords are out of definitions (pydoc function). +##? 5 +'s'() + +#? [] +str()).upper + +# ----------------- +# funcs +# ----------------- +def asdf(a or b): # multiple param names + return a + +#? +asdf(2) + +asdf = '' + +from a import (b +def blub(): + return 0 +def wrong_indents(): + asdf = 3 + asdf + asdf( + # TODO this seems to be wrong now? + ##? int() + asdf +def openbrace(): + asdf = 3 + asdf( + #? int() + asdf + return 1 + +#? int() +openbrace() + +blub([ +#? int() +openbrace() + +def indentfault(): + asd( + indentback + +#? [] +indentfault(). + +def openbrace2(): + asd( +def normalfunc(): + return 1 + +#? int() +normalfunc() + +# dots in param +def f(seq1...=None): + return seq1 +#? +f(1) + +@ +def test_empty_decorator(): + return 1 + +#? int() +test_empty_decorator() + +def invalid_param(param=): + #? + param +# ----------------- +# flows +# ----------------- + +# first part not complete (raised errors) +if a + a +else: + #? ['AttributeError'] + AttributeError + +try +#? ['AttributeError'] +except AttributeError + pass +finally: + pass + +#? ['isinstance'] +if isi +try: + except TypeError: + #? str() + str() + +def break(): pass +# wrong ternary expression +a = '' +a = 1 if +#? str() +a + +# No completions for for loops without the right syntax +for for_local in : + for_local +#? [] +for_local +#? +for_local + + +# ----------------- +# list comprehensions +# ----------------- + +a2 = [for a2 in [0]] +#? +a2[0] + +a3 = [for xyz in] +#? +a3[0] + +a3 = [a4 for in 'b'] +#? +a3[0] + +a3 = [a4 for a in for x in y] +#? +a3[0] + +a = [for a in +def break(): pass + +#? +a[0] + +a = [a for a in [1,2] +def break(): pass +#? +a[0] + +#? [] +int()).real + +# ----------------- +# keywords +# ----------------- + +#! [] +as + +def empty_assert(): + x = 3 + assert + #? int() + x + +import datetime as + + +# ----------------- +# statements +# ----------------- + +call = '' +invalid = .call +#? +invalid + +invalid = call?.call +#? str() +invalid + +# comma +invalid = ,call +#? str() +invalid + + +# ----------------- +# classes +# ----------------- + +class BrokenPartsOfClass(): + def foo(self): + # This construct contains two places where Jedi with Python 3 can fail. + # It should just ignore those constructs and still execute `bar`. + pass + if 2: + try: + pass + except ValueError, e: + raise TypeError, e + else: + pass + + def bar(self): + self.x = 3 + return '' + +#? str() +BrokenPartsOfClass().bar() diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/isinstance.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/isinstance.py new file mode 100644 index 0000000..15fb9a7 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/isinstance.py @@ -0,0 +1,101 @@ +if isinstance(i, str): + #? str() + i + +if isinstance(j, (str, int)): + #? str() int() + j + +while isinstance(k, (str, int)): + #? str() int() + k + +if not isinstance(k, (str, int)): + #? + k + +while not isinstance(k, (str, int)): + #? + k + +assert isinstance(ass, int) +#? int() +ass + +assert isinstance(ass, str) +assert not isinstance(ass, int) + +if 2: + #? str() + ass + +# ----------------- +# invalid arguments +# ----------------- + +if isinstance(wrong, str()): + #? + wrong + +# ----------------- +# in functions +# ----------------- + +import datetime + + +def fooooo(obj): + if isinstance(obj, datetime.datetime): + #? datetime.datetime() + obj + + +def fooooo2(obj): + if isinstance(obj, datetime.date): + return obj + else: + return 1 + +a +# In earlier versions of Jedi, this returned both datetime and int, but now +# Jedi does flow checks and realizes that the top return isn't executed. +#? int() +fooooo2('') + + +def isinstance_func(arr): + for value in arr: + if isinstance(value, dict): + # Shouldn't fail, even with the dot. + #? 17 dict() + value. + elif isinstance(value, int): + x = value + #? int() + x + +# ----------------- +# Names with multiple indices. +# ----------------- + +class Test(): + def __init__(self, testing): + if isinstance(testing, str): + self.testing = testing + else: + self.testing = 10 + + def boo(self): + if isinstance(self.testing, str): + # TODO this is wrong, it should only be str. + #? str() int() + self.testing + #? Test() + self + +# ----------------- +# Syntax +# ----------------- + +#? +isinstance(1, int()) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/keywords.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/keywords.py new file mode 100644 index 0000000..9631e8d --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/keywords.py @@ -0,0 +1,59 @@ + +#? ['raise'] +raise + +#? ['Exception'] +except + +#? [] +b + continu + +#? [] +b + continue + +#? ['continue'] +b; continue + +#? ['continue'] +b; continu + +#? [] +c + brea + +#? [] +a + break + +#? ['break'] +b; break + +# ----------------- +# Keywords should not appear everywhere. +# ----------------- + +#? [] +with open() as f +#? [] +def i +#? [] +class i + +#? [] +continue i + +# More syntax details, e.g. while only after newline, but not after semicolon, +# continue also after semicolon +#? ['while'] +while +#? [] +x while +#? [] +x; while +#? ['continue'] +x; continue + +#? [] +and +#? ['and'] +x and +#? [] +x * and diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/lambdas.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/lambdas.py new file mode 100644 index 0000000..524df0c --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/lambdas.py @@ -0,0 +1,113 @@ +# ----------------- +# lambdas +# ----------------- +a = lambda: 3 +#? int() +a() + +x = [] +a = lambda x: x +#? int() +a(0) + +#? float() +(lambda x: x)(3.0) + +arg_l = lambda x, y: y, x +#? float() +arg_l[0]('', 1.0) +#? list() +arg_l[1] + +arg_l = lambda x, y: (y, x) +args = 1,"" +result = arg_l(*args) +#? tuple() +result +#? str() +result[0] +#? int() +result[1] + +def with_lambda(callable_lambda, *args, **kwargs): + return callable_lambda(1, *args, **kwargs) + +#? int() +with_lambda(arg_l, 1.0)[1] +#? float() +with_lambda(arg_l, 1.0)[0] +#? float() +with_lambda(arg_l, y=1.0)[0] +#? int() +with_lambda(lambda x: x) +#? float() +with_lambda(lambda x, y: y, y=1.0) + +arg_func = lambda *args, **kwargs: (args[0], kwargs['a']) +#? int() +arg_func(1, 2, a='', b=10)[0] +#? list() +arg_func(1, 2, a=[], b=10)[1] + +# magic method +a = lambda: 3 +#? ['__closure__'] +a.__closure__ + +class C(): + def __init__(self, foo=1.0): + self.a = lambda: 1 + self.foo = foo + + def ret(self): + return lambda: self.foo + + def with_param(self): + return lambda x: x + self.a() + + lambd = lambda self: self.foo + +#? int() +C().a() + +#? str() +C('foo').ret()() + +index = C().with_param()(1) +#? float() +['', 1, 1.0][index] + +#? float() +C().lambd() +#? int() +C(1).lambd() + + +def xy(param): + def ret(a, b): + return a + b + + return lambda b: ret(param, b) + +#? int() +xy(1)(2) + +# ----------------- +# lambda param (#379) +# ----------------- +class Test(object): + def __init__(self, pred=lambda a, b: a): + self.a = 1 + #? int() + self.a + #? float() + pred(1.0, 2) + +# ----------------- +# test_nocond in grammar (happens in list comprehensions with `if`) +# ----------------- +# Doesn't need to do anything yet. It should just not raise an error. These +# nocond lambdas make no sense at all. + +#? int() +[a for a in [1,2] if lambda: 3][0] diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/named_param.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/named_param.py new file mode 100644 index 0000000..66ba59e --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/named_param.py @@ -0,0 +1,62 @@ +""" +Named Params: +>>> def a(abc): pass +... +>>> a(abc=3) # <- this stuff (abc) +""" + +def a(abc): + pass + +#? 5 ['abc'] +a(abc) + + +def a(*some_args, **some_kwargs): + pass + +#? 11 [] +a(some_args) + +#? 13 [] +a(some_kwargs) + +def multiple(foo, bar): + pass + +#? 17 ['bar'] +multiple(foo, bar) + +#? ['bar'] +multiple(foo, bar + +my_lambda = lambda lambda_param: lambda_param + 1 +#? 22 ['lambda_param'] +my_lambda(lambda_param) + +# __call__ / __init__ +class Test(object): + def __init__(self, hello_other): + pass + + def __call__(self, hello): + pass + + def test(self, blub): + pass + +#? 10 ['hello_other'] +Test(hello=) +#? 12 ['hello'] +Test()(hello=) +#? 11 [] +Test()(self=) +#? 16 [] +Test().test(self=) +#? 16 ['blub'] +Test().test(blub=) + +# builtins + +#? 12 [] +any(iterable=) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/on_import.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/on_import.py new file mode 100644 index 0000000..733d741 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/on_import.py @@ -0,0 +1,110 @@ +def from_names(): + #? ['mod1'] + from import_tree.pkg. + #? ['path'] + from os. + +def from_names_goto(): + from import_tree import pkg + #? pkg + from import_tree.pkg + +def builtin_test(): + #? ['math'] + import math + +# ----------------- +# completions within imports +# ----------------- + +#? ['sqlite3'] +import sqlite3 + +#? ['classes'] +import classes + +#? ['timedelta'] +from datetime import timedel +#? 21 [] +from datetime.timedel import timedel + +# should not be possible, because names can only be looked up 1 level deep. +#? [] +from datetime.timedelta import resolution +#? [] +from datetime.timedelta import + +#? ['Cursor'] +from sqlite3 import Cursor + +#? ['some_variable'] +from . import some_variable +#? ['arrays'] +from . import arrays +#? [] +from . import import_tree as ren +#? [] +import json as + +import os +#? os.path.join +from os.path import join + +# ----------------- +# special positions -> edge cases +# ----------------- +import datetime + +#? 6 datetime +from datetime.time import time + +#? [] +import datetime. +#? [] +import datetime.date + +#? 21 ['import'] +from import_tree.pkg import pkg +#? 49 ['a', 'foobar', '__name__', '__doc__', '__file__', '__package__'] +from import_tree.pkg.mod1 import not_existant, # whitespace before +#? ['a', 'foobar', '__name__', '__doc__', '__file__', '__package__'] +from import_tree.pkg.mod1 import not_existant, +#? 22 ['mod1'] +from import_tree.pkg. import mod1 +#? 17 ['mod1', 'mod2', 'random', 'pkg', 'rename1', 'rename2', 'classes', 'recurse_class1', 'recurse_class2', 'invisible_pkg', 'flow_import'] +from import_tree. import pkg + +#? 18 ['pkg'] +from import_tree.p import pkg + +#? 17 ['import_tree'] +from .import_tree import +#? 10 ['run'] +from ..run import +#? ['run'] +from ..run +#? 10 ['run'] +from ..run. +#? [] +from ..run. + +#? ['run'] +from .. import run + +#? [] +from not_a_module import + + +#137 +import json +#? 23 json.dump +from json import load, dump +#? 17 json.load +from json import load, dump +# without the from clause: +import json, datetime +#? 7 json +import json, datetime +#? 13 datetime +import json, datetime + diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/ordering.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/ordering.py new file mode 100644 index 0000000..61eb192 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/ordering.py @@ -0,0 +1,195 @@ +# ----------------- +# normal +# ----------------- +a = "" +a = 1 + +#? int() +a +#? [] +a.append + +a = list + +b = 1; b = "" +#? str() +b + +# temp should not be accessible before definition +#? [] +temp + +a = 1 +temp = b; +b = a +a = temp +#? int() +b +#? int() +b +#? str() +a + +a = tuple +if 1: + a = list + +#? ['append'] +a.append +#? ['index'] +a.index + +# ----------------- +# tuples exchanges +# ----------------- +a, b = 1, "" +#? int() +a +#? str() +b + +b, a = a, b +#? int() +b +#? str() +a + +b, a = a, b +#? int() +a +#? str() +b + +# ----------------- +# function +# ----------------- +def a(a=3): + #? int() + a + #? [] + a.func + return a + +#? int() +a(2) +#? [] +a(2).func + +a_param = 3 +def func(a_param): + # should not be int + #? [] + a_param. + +from os import path + + +# should not return a function, because `a` is a function above +def f(b, a): return a +#? [] +f(b=3). + +# ----------------- +# closure +# ----------------- + +def x(): + a = 0 + + def x(): + return a + + a = 3.0 + return x() + +#? float() +x() + +# ----------------- +# class +# ----------------- +class A(object): + a = "" + a = 3 + #? int() + a + a = list() + def __init__(self): + self.b = "" + + def before(self): + self.b = 3 + # TODO should this be so? include entries after cursor? + #? int() str() list + self.b + self.b = list + + self.a = 1 + #? str() int() + self.a + + #? ['after'] + self.after + + self.c = 3 + #? int() + self.c + + def after(self): + self.a = '' + + c = set() + +#? list() +A.a + +a = A() +#? ['after'] +a.after +#? [] +a.upper +#? [] +a.append +#? [] +a.real + +#? str() int() +a.a + +a = 3 +class a(): + def __init__(self, a): + self.a = a + +#? float() +a(1.0).a +#? +a().a + +# ----------------- +# imports +# ----------------- + +math = 3 +import math +#? ['cosh'] +math.cosh +#? [] +math.real + +math = 3 +#? int() +math +#? [] +math.cos + +# do the same for star imports +cosh = 3 +from math import * +# cosh doesn't work, but that's not a problem, star imports should be at the +# start of EVERY script! +cosh.real + +cosh = 3 +#? int() +cosh diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/parser.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/parser.py new file mode 100644 index 0000000..68793f4 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/parser.py @@ -0,0 +1,43 @@ +""" +Issues with the parser and not the type inference should be part of this file. +""" + +class IndentIssues(): + """ + issue jedi-vim#288 + Which is really a fast parser issue. It used to start a new block at the + parentheses, because it had problems with the indentation. + """ + def one_param( + self, + ): + return 1 + + def with_param( + self, + y): + return y + + + +#? int() +IndentIssues().one_param() + +#? str() +IndentIssues().with_param('') + + +""" +Just because there's a def keyword, doesn't mean it should not be able to +complete to definition. +""" +definition = 0 +#? ['definition'] +str(def + + +# It might be hard to determine the context +class Foo(object): + @property + #? ['str'] + def bar(str diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/pep0484_basic.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/pep0484_basic.py new file mode 100644 index 0000000..0230d37 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/pep0484_basic.py @@ -0,0 +1,167 @@ +""" Pep-0484 type hinting """ + +# python >= 3.2 + + +class A(): + pass + + +def function_parameters(a: A, b, c: str, d: int, e: str, f: str, g: int=4): + """ + :param e: if docstring and annotation agree, only one should be returned + :type e: str + :param f: if docstring and annotation disagree, both should be returned + :type f: int + """ + #? A() + a + #? + b + #? str() + c + #? int() + d + #? str() + e + #? int() str() + f + # int() + g + + +def return_unspecified(): + pass + +#? +return_unspecified() + + +def return_none() -> None: + """ + Return type None means the same as no return type as far as jedi + is concerned + """ + pass + +#? +return_none() + + +def return_str() -> str: + pass + +#? str() +return_str() + + +def return_custom_class() -> A: + pass + +#? A() +return_custom_class() + + +def return_annotation_and_docstring() -> str: + """ + :rtype: int + """ + pass + +#? str() int() +return_annotation_and_docstring() + + +def return_annotation_and_docstring_different() -> str: + """ + :rtype: str + """ + pass + +#? str() +return_annotation_and_docstring_different() + + +def annotation_forward_reference(b: "B") -> "B": + #? B() + b + +#? ["test_element"] +annotation_forward_reference(1).t + +class B: + test_element = 1 + pass + +#? B() +annotation_forward_reference(1) + + +class SelfReference: + test_element = 1 + def test_method(self, x: "SelfReference") -> "SelfReference": + #? SelfReference() + x + #? ["test_element", "test_method"] + self.t + #? ["test_element", "test_method"] + x.t + #? ["test_element", "test_method"] + self.test_method(1).t + +#? SelfReference() +SelfReference().test_method() + +def function_with_non_pep_0484_annotation( + x: "I can put anything here", + xx: "", + yy: "\r\n\0;+*&^564835(---^&*34", + y: 3 + 3, + zz: float) -> int("42"): + # infers int from function call + #? int() + x + # infers int from function call + #? int() + xx + # infers int from function call + #? int() + yy + # infers str from function call + #? str() + y + #? float() + zz +#? +function_with_non_pep_0484_annotation(1, 2, 3, "force string") + +def function_forward_reference_dynamic( + x: return_str_type(), + y: "return_str_type()") -> None: + #? + x + #? str() + y + +def return_str_type(): + return str + + +X = str +def function_with_assined_class_in_reference(x: X, y: "Y"): + #? str() + x + #? int() + y +Y = int + +def just_because_we_can(x: "flo" + "at"): + #? float() + x + + +def keyword_only(a: str, *, b: str): + #? ['startswith'] + a.startswi + #? ['startswith'] + b.startswi diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/pep0484_comments.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/pep0484_comments.py new file mode 100644 index 0000000..7d5f7c2 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/pep0484_comments.py @@ -0,0 +1,109 @@ +a = 3 # type: str +#? str() +a + +b = 3 # type: str but I write more +#? int() +b + +c = 3 # type: str # I comment more +#? str() +c + +d = "It should not read comments from the next line" +# type: int +#? str() +d + +# type: int +e = "It should not read comments from the previous line" +#? str() +e + +class BB: pass + +def test(a, b): + a = a # type: BB + c = a # type: str + d = a + # type: str + e = a # type: str # Should ignore long whitespace + + #? BB() + a + #? str() + c + #? BB() + d + #? str() + e + +a,b = 1, 2 # type: str, float +#? str() +a +#? float() +b + +class Employee: + pass + +# The typing library is not installable for Python 2.6, therefore ignore the +# following tests. +# python >= 2.7 + +from typing import List +x = [] # type: List[Employee] +#? Employee() +x[1] +x, y, z = [], [], [] # type: List[int], List[int], List[str] +#? int() +y[2] +x, y, z = [], [], [] # type: (List[float], List[float], List[BB]) +for zi in z: + #? BB() + zi + +x = [ + 1, + 2, +] # type: List[str] + +#? str() +x[1] + + +for bar in foo(): # type: str + #? str() + bar + +for bar, baz in foo(): # type: int, float + #? int() + bar + #? float() + baz + +for bar, baz in foo(): + # type: str, str + """ type hinting on next line should not work """ + #? + bar + #? + baz + +with foo(): # type: int + ... + +with foo() as f: # type: str + #? str() + f + +with foo() as f: + # type: str + """ type hinting on next line should not work """ + #? + f + +aaa = some_extremely_long_function_name_that_doesnt_leave_room_for_hints() \ + # type: float # We should be able to put hints on the next line with a \ +#? float() +aaa diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/pep0484_typing.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/pep0484_typing.py new file mode 100644 index 0000000..75c1c0b --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/pep0484_typing.py @@ -0,0 +1,263 @@ +""" +Test the typing library, with docstrings. This is needed since annotations +are not supported in python 2.7 else then annotating by comment (and this is +still TODO at 2016-01-23) +""" +# There's no Python 2.6 typing module. +# python >= 2.7 +import typing +class B: + pass + +def we_can_has_sequence(p, q, r, s, t, u): + """ + :type p: typing.Sequence[int] + :type q: typing.Sequence[B] + :type r: typing.Sequence[int] + :type s: typing.Sequence["int"] + :type t: typing.MutableSequence[dict] + :type u: typing.List[float] + """ + #? ["count"] + p.c + #? int() + p[1] + #? ["count"] + q.c + #? B() + q[1] + #? ["count"] + r.c + #? int() + r[1] + #? ["count"] + s.c + #? int() + s[1] + #? [] + s.a + #? ["append"] + t.a + #? dict() + t[1] + #? ["append"] + u.a + #? float() + u[1] + +def iterators(ps, qs, rs, ts): + """ + :type ps: typing.Iterable[int] + :type qs: typing.Iterator[str] + :type rs: typing.Sequence["ForwardReference"] + :type ts: typing.AbstractSet["float"] + """ + for p in ps: + #? int() + p + #? + next(ps) + a, b = ps + #? int() + a + ##? int() --- TODO fix support for tuple assignment + # https://github.com/davidhalter/jedi/pull/663#issuecomment-172317854 + # test below is just to make sure that in case it gets fixed by accident + # these tests will be fixed as well the way they should be + #? + b + + for q in qs: + #? str() + q + #? str() + next(qs) + for r in rs: + #? ForwardReference() + r + #? + next(rs) + for t in ts: + #? float() + t + +def sets(p, q): + """ + :type p: typing.AbstractSet[int] + :type q: typing.MutableSet[float] + """ + #? [] + p.a + #? ["add"] + q.a + +def tuple(p, q, r): + """ + :type p: typing.Tuple[int] + :type q: typing.Tuple[int, str, float] + :type r: typing.Tuple[B, ...] + """ + #? int() + p[0] + #? int() + q[0] + #? str() + q[1] + #? float() + q[2] + #? B() + r[0] + #? B() + r[1] + #? B() + r[2] + #? B() + r[10000] + i, s, f = q + #? int() + i + ##? str() --- TODO fix support for tuple assignment + # https://github.com/davidhalter/jedi/pull/663#issuecomment-172317854 + #? + s + ##? float() --- TODO fix support for tuple assignment + # https://github.com/davidhalter/jedi/pull/663#issuecomment-172317854 + #? + f + +class Key: + pass + +class Value: + pass + +def mapping(p, q, d, r, s, t): + """ + :type p: typing.Mapping[Key, Value] + :type q: typing.MutableMapping[Key, Value] + :type d: typing.Dict[Key, Value] + :type r: typing.KeysView[Key] + :type s: typing.ValuesView[Value] + :type t: typing.ItemsView[Key, Value] + """ + #? [] + p.setd + #? ["setdefault"] + q.setd + #? ["setdefault"] + d.setd + #? Value() + p[1] + for key in p: + #? Key() + key + for key in p.keys(): + #? Key() + key + for value in p.values(): + #? Value() + value + for item in p.items(): + #? Key() + item[0] + #? Value() + item[1] + (key, value) = item + #? Key() + key + #? Value() + value + for key, value in p.items(): + #? Key() + key + #? Value() + value + for key in r: + #? Key() + key + for value in s: + #? Value() + value + for key, value in t: + #? Key() + key + #? Value() + value + +def union(p, q, r, s, t): + """ + :type p: typing.Union[int] + :type q: typing.Union[int, int] + :type r: typing.Union[int, str, "int"] + :type s: typing.Union[int, typing.Union[str, "typing.Union['float', 'dict']"]] + :type t: typing.Union[int, None] + """ + #? int() + p + #? int() + q + #? int() str() + r + #? int() str() float() dict() + s + #? int() + t + +def optional(p): + """ + :type p: typing.Optional[int] + Optional does not do anything special. However it should be recognised + as being of that type. Jedi doesn't do anything with the extra into that + it can be None as well + """ + #? int() + p + +class ForwardReference: + pass + +class TestDict(typing.Dict[str, int]): + def setdud(self): + pass + +def testdict(x): + """ + :type x: TestDict + """ + #? ["setdud", "setdefault"] + x.setd + for key in x.keys(): + #? str() + key + for value in x.values(): + #? int() + value + +x = TestDict() +#? ["setdud", "setdefault"] +x.setd +for key in x.keys(): + #? str() + key +for value in x.values(): + #? int() + value +# python >= 3.2 +""" +docstrings have some auto-import, annotations can use all of Python's +import logic +""" +import typing as t +def union2(x: t.Union[int, str]): + #? int() str() + x + +from typing import Union +def union3(x: Union[int, str]): + #? int() str() + x + +from typing import Union as U +def union4(x: U[int, str]): + #? int() str() + x diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/pep0526_variables.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/pep0526_variables.py new file mode 100644 index 0000000..24b681d --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/pep0526_variables.py @@ -0,0 +1,22 @@ +""" +PEP 526 introduced a new way of using type annotations on variables. It was +introduced in Python 3.6. +""" +# python >= 3.6 + +import typing + +asdf = '' +asdf: int +# This is not necessarily correct, but for now this is ok (at least no error). +#? int() +asdf + + +direct: int = NOT_DEFINED +#? int() +direct + +with_typing_module: typing.List[float] = NOT_DEFINED +#? float() +with_typing_module[0] diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/precedence.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/precedence.py new file mode 100644 index 0000000..6078115 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/precedence.py @@ -0,0 +1,138 @@ +""" +Test Jedi's operation understanding. Jedi should understand simple additions, +multiplications, etc. +""" +# ----------------- +# numbers +# ----------------- +x = [1, 'a', 1.0] + +#? int() str() float() +x[12] + +#? float() +x[1 + 1] + +index = 0 + 1 + +#? str() +x[index] + +#? int() +x[1 + (-1)] + +def calculate(number): + return number + constant + +constant = 1 + +#? float() +x[calculate(1)] + +def calculate(number): + return number + constant + +# ----------------- +# strings +# ----------------- + +x = 'upp' + 'e' + +#? str.upper +getattr(str, x + 'r') + +a = "a"*3 +#? str() +a +a = 3 * "a" +#? str() +a + +a = 3 * "a" +#? str() +a + +#? int() +(3 ** 3) +#? int() str() +(3 ** 'a') + +# ----------------- +# assignments +# ----------------- + +x = [1, 'a', 1.0] + +i = 0 +i += 1 +i += 1 +#? float() +x[i] + +i = 1 +i += 1 +i -= 3 +i += 1 +#? int() +x[i] + +# ----------------- +# in +# ----------------- + +if 'X' in 'Y': + a = 3 +else: + a = '' +# For now don't really check for truth values. So in should return both +# results. +#? str() int() +a + +# ----------------- +# for flow assignments +# ----------------- + +class FooBar(object): + fuu = 0.1 + raboof = 'fourtytwo' + +# targets should be working +target = '' +for char in ['f', 'u', 'u']: + target += char +#? float() +getattr(FooBar, target) + +# github #24 +target = u'' +for char in reversed(['f', 'o', 'o', 'b', 'a', 'r']): + target += char + +#? str() +getattr(FooBar, target) + + +# ----------------- +# repetition problems -> could be very slow and memory expensive - shouldn't +# be. +# ----------------- + +b = [str(1)] +l = list +for x in [l(0), l(1), l(2), l(3), l(4), l(5), l(6), l(7), l(8), l(9), l(10), + l(11), l(12), l(13), l(14), l(15), l(16), l(17), l(18), l(19), l(20), + l(21), l(22), l(23), l(24), l(25), l(26), l(27), l(28), l(29)]: + b += x + +#? str() +b[1] + + +# ----------------- +# undefined names +# ----------------- +a = foobarbaz + 'hello' + +#? int() float() +{'hello': 1, 'bar': 1.0}[a] diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/recursion.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/recursion.py new file mode 100644 index 0000000..a3e7670 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/recursion.py @@ -0,0 +1,78 @@ +""" +Code that might cause recursion issues (or has caused in the past). +""" + +def Recursion(): + def recurse(self): + self.a = self.a + self.b = self.b.recurse() + +#? +Recursion().a + +#? +Recursion().b + + +class X(): + def __init__(self): + self.recursive = [1, 3] + + def annoying(self): + self.recursive = [self.recursive[0]] + + def recurse(self): + self.recursive = [self.recursive[1]] + +#? int() +X().recursive[0] + + +def to_list(iterable): + return list(set(iterable)) + + +def recursion1(foo): + return to_list(to_list(foo)) + recursion1(foo) + +#? int() +recursion1([1,2])[0] + + +class FooListComp(): + def __init__(self): + self.recursive = [1] + + def annoying(self): + self.recursive = [x for x in self.recursive] + + +#? int() +FooListComp().recursive[0] + + +class InstanceAttributeIfs: + def b(self): + self.a1 = 1 + self.a2 = 1 + + def c(self): + self.a2 = '' + + def x(self): + self.b() + + if self.a1 == 1: + self.a1 = self.a1 + 1 + if self.a2 == UNDEFINED: + self.a2 = self.a2 + 1 + + #? int() + self.a1 + #? int() str() + self.a2 + +#? int() +InstanceAttributeIfs().a1 +#? int() str() +InstanceAttributeIfs().a2 diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/stdlib.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/stdlib.py new file mode 100644 index 0000000..b6b739a --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/stdlib.py @@ -0,0 +1,249 @@ +""" +std library stuff +""" + +# ----------------- +# builtins +# ----------------- +arr = [''] + +#? str() +sorted(arr)[0] + +#? str() +next(reversed(arr)) +next(reversed(arr)) + +# should not fail if there's no return value. +def yielder(): + yield None + +#? None +next(reversed(yielder())) + +# empty reversed should not raise an error +#? +next(reversed()) + +#? str() +next(open('')) + +#? int() +{'a':2}.setdefault('a', 3) + +# Compiled classes should have the meta class attributes. +#? ['__itemsize__'] +tuple.__itemsize__ + +# ----------------- +# type() calls with one parameter +# ----------------- +#? int +type(1) +#? int +type(int()) +#? type +type(int) +#? type +type(type) +#? list +type([]) + +def x(): + yield 1 +generator = type(x()) +#? generator +type(x for x in []) +#? type(x) +type(lambda: x) + +import math +import os +#? type(os) +type(math) +class X(): pass +#? type +type(X) + + +with open('foo') as f: + for line in f.readlines(): + #? str() + line +# ----------------- +# enumerate +# ----------------- +for i, j in enumerate(["as", "ad"]): + #? int() + i + #? str() + j + +# ----------------- +# re +# ----------------- +import re +c = re.compile(r'a') +# re.compile should not return str -> issue #68 +#? [] +c.startswith +#? int() +c.match().start() + +#? int() +re.match(r'a', 'a').start() + +for a in re.finditer('a', 'a'): + #? int() + a.start() + +#? str() +re.sub('a', 'a') + +# ----------------- +# ref +# ----------------- +import weakref + +#? int() +weakref.proxy(1) + +#? weakref.ref() +weakref.ref(1) +#? int() +weakref.ref(1)() + +# ----------------- +# functools +# ----------------- +import functools + +basetwo = functools.partial(int, base=2) +#? int() +basetwo() + +def function(a, b): + return a, b +a = functools.partial(function, 0) + +#? int() +a('')[0] +#? str() +a('')[1] + +kw = functools.partial(function, b=1.0) +tup = kw(1) +#? int() +tup[0] +#? float() +tup[1] + +def my_decorator(f): + @functools.wraps(f) + def wrapper(*args, **kwds): + return f(*args, **kwds) + return wrapper + +@my_decorator +def example(a): + return a + +#? str() +example('') + + +# ----------------- +# sqlite3 (#84) +# ----------------- + +import sqlite3 +#? sqlite3.Connection() +con = sqlite3.connect() +#? sqlite3.Cursor() +c = con.cursor() +#? sqlite3.Row() +row = c.fetchall()[0] +#? str() +row.keys()[0] + +def huhu(db): + """ + :type db: sqlite3.Connection + :param db: the db connection + """ + #? sqlite3.Connection() + db + +# ----------------- +# hashlib +# ----------------- + +import hashlib + +#? ['md5'] +hashlib.md5 + +# ----------------- +# copy +# ----------------- + +import copy +#? int() +copy.deepcopy(1) + +#? +copy.copy() + +# ----------------- +# json +# ----------------- + +# We don't want any results for json, because it depends on IO. +import json +#? +json.load('asdf') +#? +json.loads('[1]') + +# ----------------- +# random +# ----------------- + +import random +class A(object): + def say(self): pass +class B(object): + def shout(self): pass +cls = random.choice([A, B]) +#? ['say', 'shout'] +cls().s + +# ----------------- +# random +# ----------------- + +import zipfile +z = zipfile.ZipFile("foo") +# It's too slow. So we don't run it at the moment. +##? ['upper'] +z.read('name').upper + +# ----------------- +# contextlib +# ----------------- + +import contextlib +with contextlib.closing('asd') as string: + #? str() + string + +# ----------------- +# shlex +# ----------------- + +# Github issue #929 +import shlex +qsplit = shlex.split("foo, ferwerwerw werw werw e") +for part in qsplit: + #? str() None + part diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/sys_path.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/sys_path.py new file mode 100644 index 0000000..890f2fe --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/sys_path.py @@ -0,0 +1,24 @@ + +import sys +import os +from os import dirname + +sys.path.insert(0, '../../jedi') +sys.path.append(dirname(os.path.abspath('thirdparty' + os.path.sep + 'asdf'))) + +# modifications, that should fail: +# syntax err +sys.path.append('a' +* '/thirdparty') + +#? ['evaluate'] +import evaluate + +#? ['evaluator_function_cache'] +evaluate.Evaluator_fu + +# Those don't work because dirname and abspath are not properly understood. +##? ['jedi_'] +import jedi_ + +##? ['el'] +jedi_.el diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/thirdparty/PyQt4_.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/thirdparty/PyQt4_.py new file mode 100644 index 0000000..f4e4183 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/thirdparty/PyQt4_.py @@ -0,0 +1,19 @@ +from PyQt4.QtCore import * +from PyQt4.QtGui import * + +#? ['QActionGroup'] +QActionGroup + +#? ['currentText'] +QStyleOptionComboBox().currentText + +#? [] +QStyleOptionComboBox().currentText. + +from PyQt4 import QtGui + +#? ['currentText'] +QtGui.QStyleOptionComboBox().currentText + +#? [] +QtGui.QStyleOptionComboBox().currentText. diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/thirdparty/django_.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/thirdparty/django_.py new file mode 100644 index 0000000..9914a6d --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/thirdparty/django_.py @@ -0,0 +1,11 @@ +#! ['class ObjectDoesNotExist'] +from django.core.exceptions import ObjectDoesNotExist +import django + +#? ['get_version'] +django.get_version + +from django.conf import settings + +#? ['configured'] +settings.configured diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/thirdparty/jedi_.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/thirdparty/jedi_.py new file mode 100644 index 0000000..dc384b1 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/thirdparty/jedi_.py @@ -0,0 +1,52 @@ + +from jedi import functions, evaluate, parsing + +el = functions.completions()[0] +#? ['description'] +el.description + +#? str() +el.description + + +scopes, path, dot, like = \ + api._prepare_goto(source, row, column, path, True) + +# has problems with that (sometimes) very deep nesting. +#? set() +el = scopes + +# get_names_for_scope is also recursion stuff +#? tuple() +el = list(evaluate.get_names_for_scope())[0] + +#? int() parsing.Module() +el = list(evaluate.get_names_for_scope(1))[0][0] +#? parsing.Module() +el = list(evaluate.get_names_for_scope())[0][0] + +#? list() +el = list(evaluate.get_names_for_scope(1))[0][1] +#? list() +el = list(evaluate.get_names_for_scope())[0][1] + +#? list() +parsing.Scope((0,0)).get_set_vars() +#? parsing.Import() parsing.Name() +parsing.Scope((0,0)).get_set_vars()[0] +# TODO access parent is not possible, because that is not set in the class +## parsing.Class() +parsing.Scope((0,0)).get_set_vars()[0].parent + +#? parsing.Import() parsing.Name() +el = list(evaluate.get_names_for_scope())[0][1][0] + +#? evaluate.Array() evaluate.Class() evaluate.Function() evaluate.Instance() +list(evaluate.follow_call())[0] + +# With the right recursion settings, this should be possible (and maybe more): +# Array Class Function Generator Instance Module +# However, this was produced with the recursion settings 10/350/10000, and +# lasted 18.5 seconds. So we just have to be content with the results. +#? evaluate.Class() evaluate.Function() +evaluate.get_scopes_for_name()[0] diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/thirdparty/psycopg2_.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/thirdparty/psycopg2_.py new file mode 100644 index 0000000..834704b --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/thirdparty/psycopg2_.py @@ -0,0 +1,11 @@ +import psycopg2 + +conn = psycopg2.connect('dbname=test') + +#? ['cursor'] +conn.cursor + +cur = conn.cursor() + +#? ['fetchall'] +cur.fetchall diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/thirdparty/pylab_.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/thirdparty/pylab_.py new file mode 100644 index 0000000..ab132a4 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/thirdparty/pylab_.py @@ -0,0 +1,36 @@ +import pylab + +# two gotos +#! ['module numpy'] +import numpy + +#! ['module random'] +import numpy.random + +#? ['array2string'] +numpy.array2string + +#? ['shape'] +numpy.matrix().shape + +#? ['random_integers'] +pylab.random_integers + +#? [] +numpy.random_integers + +#? ['random_integers'] +numpy.random.random_integers +#? ['sample'] +numpy.random.sample + +import numpy +na = numpy.array([1,2]) +#? ['shape'] +na.shape + +# shouldn't raise an error #29, jedi-vim +# doesn't return something, because matplotlib uses __import__ +fig = pylab.figure() +#? +fig.add_subplot diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/types.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/types.py new file mode 100644 index 0000000..2ef01f9 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/types.py @@ -0,0 +1,129 @@ +# ----------------- +# non array +# ----------------- + +#? ['imag'] +int.imag + +#? [] +int.is_integer + +#? ['is_integer'] +float.is_int + +#? ['is_integer'] +1.0.is_integer + +#? ['upper'] +"".upper + +#? ['upper'] +r"".upper + +# strangely this didn't work, because the = is used for assignments +#? ['upper'] +"=".upper +a = "=" +#? ['upper'] +a.upper + + +# ----------------- +# lists +# ----------------- +arr = [] +#? ['append'] +arr.app + +#? ['append'] +list().app +#? ['append'] +[].append + +arr2 = [1,2,3] +#? ['append'] +arr2.app + +#? int() +arr.count(1) + +x = [] +#? +x.pop() +x = [3] +#? int() +x.pop() +x = [] +x.append(1.0) +#? float() +x.pop() + +# ----------------- +# dicts +# ----------------- +dic = {} + +#? ['copy', 'clear'] +dic.c + +dic2 = dict(a=1, b=2) +#? ['pop', 'popitem'] +dic2.p +#? ['popitem'] +{}.popitem + +dic2 = {'asdf': 3} +#? ['popitem'] +dic2.popitem + +#? int() +dic2['asdf'] + +d = {'a': 3, 1.0: list} + +#? int() list +d.values()[0] +##? int() list +dict(d).values()[0] + +#? str() +d.items()[0][0] +#? int() +d.items()[0][1] + +# ----------------- +# tuples +# ----------------- +tup = ('',2) + +#? ['count'] +tup.c + +tup2 = tuple() +#? ['index'] +tup2.i +#? ['index'] +().i + +tup3 = 1,"" +#? ['index'] +tup3.index + +tup4 = 1,"" +#? ['index'] +tup4.index + +# ----------------- +# set +# ----------------- +# Set literals are not valid in 2.6. +# python >= 2.7 +set_t = {1,2} + +#? ['clear', 'copy'] +set_t.c + +set_t2 = set() + +#? ['clear', 'copy'] +set_t2.c diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/usages.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/usages.py new file mode 100644 index 0000000..d7231b1 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/completion/usages.py @@ -0,0 +1,316 @@ +""" +Renaming tests. This means search for usages. +I always leave a little bit of space to add room for additions, because the +results always contain position informations. +""" +#< 4 (0,4), (3,0), (5,0), (17,0), (12,4), (14,5), (15,0) +def abc(): pass + +#< 0 (-3,4), (0,0), (2,0), (14,0), (9,4), (11,5), (12,0) +abc.d.a.bsaasd.abc.d + +abc +# unicode chars shouldn't be a problem. +x['smörbröd'].abc + +# With the new parser these statements are not recognized as stateents, because +# they are not valid Python. +if 1: + abc = +else: + (abc) = +abc = +#< (-17,4), (-14,0), (-12,0), (0,0), (-2,0), (-3,5), (-5,4) +abc + +abc = 5 + + +Abc = 3 + +#< 6 (0,6), (2,4), (5,8), (17,0) +class Abc(): + #< (-2,6), (0,4), (3,8), (15,0) + Abc + + def Abc(self): + Abc; self.c = 3 + + #< 17 (0,16), (2,8) + def a(self, Abc): + #< 10 (-2,16), (0,8) + Abc + + #< 19 (0,18), (2,8) + def self_test(self): + #< 12 (-2,18), (0,8) + self.b + +Abc.d.Abc + + +#< 4 (0,4), (5,1) +def blubi(): + pass + + +#< (-5,4), (0,1) +@blubi +def a(): pass + + +#< 0 (0,0), (1,0) +set_object_var = object() +set_object_var.var = 1 + + +response = 5 +#< 0 (0,0), (1,0), (2,0), (4,0) +response = HttpResponse(mimetype='application/pdf') +response['Content-Disposition'] = 'attachment; filename=%s.pdf' % id +response.write(pdf) +#< (-4,0), (-3,0), (-2,0), (0,0) +response + + +# ----------------- +# imports +# ----------------- +#< (0,7), (3,0) +import module_not_exists + +#< (-3,7), (0,0) +module_not_exists + + +#< ('rename1', 1,0), (0,24), (3,0), (6,17), ('rename2', 4,5), (11,17), (14,17), ('imports', 72, 16) +from import_tree import rename1 + +#< (0,8), ('rename1',3,0), ('rename2',4,20), ('rename2',6,0), (3,32), (8,32), (5,0) +rename1.abc + +#< (-3,8), ('rename1', 3,0), ('rename2', 4,20), ('rename2', 6,0), (0,32), (5,32), (2,0) +from import_tree.rename1 import abc +#< (-5,8), (-2,32), ('rename1', 3,0), ('rename2', 4,20), ('rename2', 6,0), (0,0), (3,32) +abc + +#< 20 ('rename1', 1,0), ('rename2', 4,5), (-11,24), (-8,0), (-5,17), (0,17), (3,17), ('imports', 72, 16) +from import_tree.rename1 import abc + +#< (0, 32), +from import_tree.rename1 import not_existing + +# Shouldn't raise an error or do anything weird. +from not_existing import * + +# ----------------- +# classes +# ----------------- + +class TestMethods(object): + #< 8 (0,8), (2,13) + def a_method(self): + #< 13 (-2,8), (0,13) + self.a_method() + #< 13 (2,8), (0,13), (3,13) + self.b_method() + + def b_method(self): + self.b_method + + +class TestClassVar(object): + #< 4 (0,4), (5,13), (7,21) + class_v = 1 + def a(self): + class_v = 1 + + #< (-5,4), (0,13), (2,21) + self.class_v + #< (-7,4), (-2,13), (0,21) + TestClassVar.class_v + #< (0,8), (-7, 8) + class_v + +class TestInstanceVar(): + def a(self): + #< 13 (4,13), (0,13) + self._instance_var = 3 + + def b(self): + #< (-4,13), (0,13) + self._instance_var + # A call to self used to trigger an error, because it's also a trailer + # with two children. + self() + + +class NestedClass(): + def __getattr__(self, name): + return self + +# Shouldn't find a definition, because there's other `instance`. +# TODO reenable that test +##< (0, 14), +NestedClass().instance + + +# ----------------- +# inheritance +# ----------------- +class Super(object): + #< 4 (0,4), (23,18), (25,13) + base_class = 1 + #< 4 (0,4), + class_var = 1 + + #< 8 (0,8), + def base_method(self): + #< 13 (0,13), (20,13) + self.base_var = 1 + #< 13 (0,13), + self.instance_var = 1 + + #< 8 (0,8), + def just_a_method(self): pass + + +#< 20 (0,16), (-18,6) +class TestClass(Super): + #< 4 (0,4), + class_var = 1 + + def x_method(self): + + #< (0,18), (2,13), (-23,4) + TestClass.base_class + #< (-2,18), (0,13), (-25,4) + self.base_class + #< (-20,13), (0,13) + self.base_var + #< (0, 18), + TestClass.base_var + + + #< 13 (5,13), (0,13) + self.instance_var = 3 + + #< 9 (0,8), + def just_a_method(self): + #< (-5,13), (0,13) + self.instance_var + + +# ----------------- +# properties +# ----------------- +class TestProperty: + + @property + #< 10 (0,8), (5,13) + def prop(self): + return 1 + + def a(self): + #< 13 (-5,8), (0,13) + self.prop + + @property + #< 13 (0,8), (4,5) + def rw_prop(self): + return self._rw_prop + + #< 8 (-4,8), (0,5) + @rw_prop.setter + #< 8 (0,8), (5,13) + def rw_prop(self, value): + self._rw_prop = value + + def b(self): + #< 13 (-5,8), (0,13) + self.rw_prop + +# ----------------- +# *args, **kwargs +# ----------------- +#< 11 (1,11), (0,8) +def f(**kwargs): + return kwargs + + +# ----------------- +# No result +# ----------------- +if isinstance(j, int): + #< (0, 4), + j + +# ----------------- +# Dynamic Param Search +# ----------------- + +class DynamicParam(): + def foo(self): + return + +def check(instance): + #< 13 (-5,8), (0,13) + instance.foo() + +check(DynamicParam()) + +# ----------------- +# Compiled Objects +# ----------------- + +import _sre + +#< 0 (-3,7), (0,0), ('_sre', None, None) +_sre + +# ----------------- +# on syntax +# ----------------- + +#< 0 +import undefined + +# ----------------- +# comprehensions +# ----------------- + +#< 0 (0,0), (2,12) +x = 32 +#< 12 (-2,0), (0,12) +[x for x in x] + +#< 0 (0,0), (2,1), (2,12) +x = 32 +#< 12 (-2,0), (0,1), (0,12) +[x for b in x] + + +#< 1 (0,1), (0,7) +[x for x in something] +#< 7 (0,1), (0,7) +[x for x in something] + +x = 3 +# Not supported syntax in Python 2.6. +# python >= 2.7 +#< 1 (0,1), (0,10) +{x:1 for x in something} +#< 10 (0,1), (0,10) +{x:1 for x in something} + +def x(): + zzz = 3 + if UNDEFINED: + zzz = 5 + if UNDEFINED2: + #< (3, 8), (4, 4), (0, 12), (-3, 8), (-5, 4) + zzz + else: + #< (0, 8), (1, 4), (-3, 12), (-6, 8), (-8, 4) + zzz + zzz diff --git a/emacs/.emacs.d/elpa/forest-blue-theme-readme.txt b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/__init__.py similarity index 100% rename from emacs/.emacs.d/elpa/forest-blue-theme-readme.txt rename to emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/__init__.py diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/import_tree_for_usages/__init__.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/import_tree_for_usages/__init__.py new file mode 100644 index 0000000..d2ae403 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/import_tree_for_usages/__init__.py @@ -0,0 +1,4 @@ +""" +An import tree, for testing usages. +""" + diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/import_tree_for_usages/a.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/import_tree_for_usages/a.py new file mode 100644 index 0000000..acc8183 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/import_tree_for_usages/a.py @@ -0,0 +1,4 @@ +from . import b + +def foo(): + b.bar() diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/import_tree_for_usages/b.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/import_tree_for_usages/b.py new file mode 100644 index 0000000..4371a5a --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/import_tree_for_usages/b.py @@ -0,0 +1,2 @@ +def bar(): + pass diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/simple_import/__init__.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/simple_import/__init__.py new file mode 100644 index 0000000..3a03a82 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/simple_import/__init__.py @@ -0,0 +1,5 @@ +from simple_import import module + + +def in_function(): + from simple_import import module2 diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/simple_import/module.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/simple_import/module.py new file mode 100644 index 0000000..e69de29 diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/simple_import/module2.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/simple_import/module2.py new file mode 100644 index 0000000..e69de29 diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_analysis.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_analysis.py new file mode 100644 index 0000000..cfcd405 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_analysis.py @@ -0,0 +1,12 @@ +""" +Test of keywords and ``jedi.keywords`` +""" +from jedi import Script + + +def test_issue436(): + code = "bar = 0\nbar += 'foo' + 4" + errors = set(repr(e) for e in Script(code)._analysis()) + assert len(errors) == 2 + assert '' in errors + assert '' in errors diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_api.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_api.py new file mode 100644 index 0000000..a8064d7 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_api.py @@ -0,0 +1,224 @@ +""" +Test all things related to the ``jedi.api`` module. +""" + +import os +from textwrap import dedent + +from jedi import api +from jedi._compatibility import is_py3 +from pytest import raises +from parso import cache + + +def test_preload_modules(): + def check_loaded(*modules): + # +1 for None module (currently used) + grammar_cache = next(iter(cache.parser_cache.values())) + assert len(grammar_cache) == len(modules) + 1 + for i in modules: + assert [i in k for k in grammar_cache.keys() if k is not None] + + old_cache = cache.parser_cache.copy() + cache.parser_cache.clear() + + try: + api.preload_module('sys') + check_loaded() # compiled (c_builtin) modules shouldn't be in the cache. + api.preload_module('types', 'token') + check_loaded('types', 'token') + finally: + cache.parser_cache.update(old_cache) + + +def test_empty_script(): + assert api.Script('') + + +def test_line_number_errors(): + """ + Script should raise a ValueError if line/column numbers are not in a + valid range. + """ + s = 'hello' + # lines + with raises(ValueError): + api.Script(s, 2, 0) + with raises(ValueError): + api.Script(s, 0, 0) + + # columns + with raises(ValueError): + api.Script(s, 1, len(s) + 1) + with raises(ValueError): + api.Script(s, 1, -1) + + # ok + api.Script(s, 1, 0) + api.Script(s, 1, len(s)) + + +def _check_number(source, result='float'): + completions = api.Script(source).completions() + assert completions[0].parent().name == result + + +def test_completion_on_number_literals(): + # No completions on an int literal (is a float). + assert [c.name for c in api.Script('1.').completions()] \ + == ['and', 'if', 'in', 'is', 'not', 'or'] + + # Multiple points after an int literal basically mean that there's a float + # and a call after that. + _check_number('1..') + _check_number('1.0.') + + # power notation + _check_number('1.e14.') + _check_number('1.e-3.') + _check_number('9e3.') + assert api.Script('1.e3..').completions() == [] + assert api.Script('1.e-13..').completions() == [] + + +def test_completion_on_hex_literals(): + assert api.Script('0x1..').completions() == [] + _check_number('0x1.', 'int') # hexdecimal + # Completing binary literals doesn't work if they are not actually binary + # (invalid statements). + assert api.Script('0b2.b').completions() == [] + _check_number('0b1.', 'int') # binary + + _check_number('0x2e.', 'int') + _check_number('0xE7.', 'int') + _check_number('0xEa.', 'int') + # theoretically, but people can just check for syntax errors: + #assert api.Script('0x.').completions() == [] + + +def test_completion_on_complex_literals(): + assert api.Script('1j..').completions() == [] + _check_number('1j.', 'complex') + _check_number('44.j.', 'complex') + _check_number('4.0j.', 'complex') + # No dot no completion - I thought, but 4j is actually a literall after + # which a keyword like or is allowed. Good times, haha! + assert (set([c.name for c in api.Script('4j').completions()]) == + set(['if', 'and', 'in', 'is', 'not', 'or'])) + + +def test_goto_assignments_on_non_name(): + assert api.Script('for').goto_assignments() == [] + + assert api.Script('assert').goto_assignments() == [] + if is_py3: + assert api.Script('True').goto_assignments() == [] + else: + # In Python 2.7 True is still a name. + assert api.Script('True').goto_assignments()[0].description == 'instance True' + + +def test_goto_definitions_on_non_name(): + assert api.Script('import x', column=0).goto_definitions() == [] + + +def test_goto_definitions_on_generator(): + def_, = api.Script('def x(): yield 1\ny=x()\ny').goto_definitions() + assert def_.name == 'generator' + + +def test_goto_definition_not_multiple(): + """ + There should be only one Definition result if it leads back to the same + origin (e.g. instance method) + """ + + s = dedent('''\ + import random + class A(): + def __init__(self, a): + self.a = 3 + + def foo(self): + pass + + if random.randint(0, 1): + a = A(2) + else: + a = A(1) + a''') + assert len(api.Script(s).goto_definitions()) == 1 + + +def test_usage_description(): + descs = [u.description for u in api.Script("foo = ''; foo").usages()] + assert set(descs) == set(["foo = ''", 'foo']) + + +def test_get_line_code(): + def get_line_code(source, line=None, **kwargs): + return api.Script(source, line=line).completions()[0].get_line_code(**kwargs) + + # On builtin + assert get_line_code('') == '' + + # On custom code + first_line = 'def foo():\n' + line = ' foo' + code = '%s%s' % (first_line, line) + assert get_line_code(code) == first_line + + # With before/after + code = code + '\nother_line' + assert get_line_code(code, line=2) == first_line + assert get_line_code(code, line=2, after=1) == first_line + line + '\n' + assert get_line_code(code, line=2, after=2, before=1) == code + # Should just be the whole thing, since there are no more lines on both + # sides. + assert get_line_code(code, line=2, after=3, before=3) == code + + +def test_goto_assignments_follow_imports(): + code = dedent(""" + import inspect + inspect.isfunction""") + definition, = api.Script(code, column=0).goto_assignments(follow_imports=True) + assert 'inspect.py' in definition.module_path + assert (definition.line, definition.column) == (1, 0) + + definition, = api.Script(code).goto_assignments(follow_imports=True) + assert 'inspect.py' in definition.module_path + assert (definition.line, definition.column) > (1, 0) + + code = '''def param(p): pass\nparam(1)''' + start_pos = 1, len('def param(') + + script = api.Script(code, *start_pos) + definition, = script.goto_assignments(follow_imports=True) + assert (definition.line, definition.column) == start_pos + assert definition.name == 'p' + result, = definition.goto_assignments() + assert result.name == 'p' + result, = definition._goto_definitions() + assert result.name == 'int' + result, = result._goto_definitions() + assert result.name == 'int' + + definition, = script.goto_assignments() + assert (definition.line, definition.column) == start_pos + + d, = api.Script('a = 1\na').goto_assignments(follow_imports=True) + assert d.name == 'a' + + +def test_goto_module(): + def check(line, expected): + script = api.Script(path=path, line=line) + module, = script.goto_assignments() + assert module.module_path == expected + + base_path = os.path.join(os.path.dirname(__file__), 'simple_import') + path = os.path.join(base_path, '__init__.py') + + check(1, os.path.join(base_path, 'module.py')) + check(5, os.path.join(base_path, 'module2.py')) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_api_classes_follow_definition.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_api_classes_follow_definition.py new file mode 100644 index 0000000..ffc0cb6 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_api_classes_follow_definition.py @@ -0,0 +1,62 @@ +from itertools import chain + +import jedi +from ..helpers import cwd_at + + +def test_import_empty(): + """ github #340, return the full word. """ + completion = jedi.Script("import ").completions()[0] + definition = completion.follow_definition()[0] + assert definition + + +def check_follow_definition_types(source): + # nested import + completions = jedi.Script(source, path='some_path.py').completions() + defs = chain.from_iterable(c.follow_definition() for c in completions) + return [d.type for d in defs] + + +def test_follow_import_incomplete(): + """ + Completion on incomplete imports should always take the full completion + to do any evaluation. + """ + datetime = check_follow_definition_types("import itertool") + assert datetime == ['module'] + + # empty `from * import` parts + itert = jedi.Script("from itertools import ").completions() + definitions = [d for d in itert if d.name == 'chain'] + assert len(definitions) == 1 + assert [d.type for d in definitions[0].follow_definition()] == ['class'] + + # incomplete `from * import` part + datetime = check_follow_definition_types("from datetime import datetim") + assert set(datetime) == set(['class', 'instance']) # py33: builtin and pure py version + + # os.path check + ospath = check_follow_definition_types("from os.path import abspat") + assert ospath == ['function'] + + # alias + alias = check_follow_definition_types("import io as abcd; abcd") + assert alias == ['module'] + + +@cwd_at('test/completion/import_tree') +def test_follow_definition_nested_import(): + types = check_follow_definition_types("import pkg.mod1; pkg") + assert types == ['module'] + + types = check_follow_definition_types("import pkg.mod1; pkg.mod1") + assert types == ['module'] + + types = check_follow_definition_types("import pkg.mod1; pkg.mod1.a") + assert types == ['instance'] + + +def test_follow_definition_land_on_import(): + types = check_follow_definition_types("import datetime; datetim") + assert types == ['module'] diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_call_signatures.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_call_signatures.py new file mode 100644 index 0000000..c0fc976 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_call_signatures.py @@ -0,0 +1,426 @@ +from textwrap import dedent +import inspect +import warnings + +from ..helpers import TestCase +from jedi import Script +from jedi import cache +from jedi._compatibility import is_py33 + + +def assert_signature(source, expected_name, expected_index=0, line=None, column=None): + signatures = Script(source, line, column).call_signatures() + + assert len(signatures) <= 1 + + if not signatures: + assert expected_name is None, \ + 'There are no signatures, but `%s` expected.' % expected_name + else: + assert signatures[0].name == expected_name + assert signatures[0].index == expected_index + return signatures[0] + + +class TestCallSignatures(TestCase): + def _run_simple(self, source, name, index=0, column=None, line=1): + assert_signature(source, name, index, line, column) + + def test_valid_call(self): + assert_signature('str()', 'str', column=4) + + def test_simple(self): + run = self._run_simple + + # simple + s1 = "sorted(a, str(" + run(s1, 'sorted', 0, 7) + run(s1, 'sorted', 1, 9) + run(s1, 'sorted', 1, 10) + run(s1, 'sorted', 1, 11) + run(s1, 'str', 0, 14) + + s2 = "abs(), " + run(s2, 'abs', 0, 4) + run(s2, None, column=5) + run(s2, None) + + s3 = "abs()." + run(s3, None, column=5) + run(s3, None) + + def test_more_complicated(self): + run = self._run_simple + + s4 = 'abs(zip(), , set,' + run(s4, None, column=3) + run(s4, 'abs', 0, 4) + run(s4, 'zip', 0, 8) + run(s4, 'abs', 0, 9) + run(s4, 'abs', None, 10) + + s5 = "sorted(1,\nif 2:\n def a():" + run(s5, 'sorted', 0, 7) + run(s5, 'sorted', 1, 9) + + s6 = "str().center(" + run(s6, 'center', 0) + run(s6, 'str', 0, 4) + + s7 = "str().upper().center(" + s8 = "str(int[zip(" + run(s7, 'center', 0) + run(s8, 'zip', 0) + run(s8, 'str', 0, 8) + + run("import time; abc = time; abc.sleep(", 'sleep', 0) + + def test_issue_57(self): + # jedi #57 + s = "def func(alpha, beta): pass\n" \ + "func(alpha='101'," + self._run_simple(s, 'func', 0, column=13, line=2) + + def test_flows(self): + # jedi-vim #9 + self._run_simple("with open(", 'open', 0) + + # jedi-vim #11 + self._run_simple("for sorted(", 'sorted', 0) + self._run_simple("for s in sorted(", 'sorted', 0) + + def test_complex(self): + s = """ + def abc(a,b): + pass + + def a(self): + abc( + + if 1: + pass + """ + assert_signature(s, 'abc', 0, line=6, column=24) + s = """ + import re + def huhu(it): + re.compile( + return it * 2 + """ + assert_signature(s, 'compile', 0, line=4, column=31) + + # jedi-vim #70 + s = """def foo(""" + assert Script(s).call_signatures() == [] + + # jedi-vim #116 + s = """import itertools; test = getattr(itertools, 'chain'); test(""" + assert_signature(s, 'chain', 0) + + def test_call_signature_on_module(self): + """github issue #240""" + s = 'import datetime; datetime(' + # just don't throw an exception (if numpy doesn't exist, just ignore it) + assert Script(s).call_signatures() == [] + + def test_call_signatures_empty_parentheses_pre_space(self): + s = dedent("""\ + def f(a, b): + pass + f( )""") + assert_signature(s, 'f', 0, line=3, column=3) + + def test_multiple_signatures(self): + s = dedent("""\ + if x: + def f(a, b): + pass + else: + def f(a, b): + pass + f(""") + assert len(Script(s).call_signatures()) == 2 + + def test_call_signatures_whitespace(self): + s = dedent("""\ + abs( + def x(): + pass + """) + assert_signature(s, 'abs', 0, line=1, column=5) + + def test_decorator_in_class(self): + """ + There's still an implicit param, with a decorator. + Github issue #319. + """ + s = dedent("""\ + def static(func): + def wrapped(obj, *args): + return f(type(obj), *args) + return wrapped + + class C(object): + @static + def test(cls): + return 10 + + C().test(""") + + signatures = Script(s).call_signatures() + assert len(signatures) == 1 + x = [p.description for p in signatures[0].params] + assert x == ['param *args'] + + def test_additional_brackets(self): + assert_signature('str((', 'str', 0) + + def test_unterminated_strings(self): + assert_signature('str(";', 'str', 0) + + def test_whitespace_before_bracket(self): + assert_signature('str (', 'str', 0) + assert_signature('str (";', 'str', 0) + assert_signature('str\n(', None) + + def test_brackets_in_string_literals(self): + assert_signature('str (" (', 'str', 0) + assert_signature('str (" )', 'str', 0) + + def test_function_definitions_should_break(self): + """ + Function definitions (and other tokens that cannot exist within call + signatures) should break and not be able to return a call signature. + """ + assert_signature('str(\ndef x', 'str', 0) + assert not Script('str(\ndef x(): pass').call_signatures() + + def test_flow_call(self): + assert not Script('if (1').call_signatures() + + def test_chained_calls(self): + source = dedent(''' + class B(): + def test2(self, arg): + pass + + class A(): + def test1(self): + return B() + + A().test1().test2(''') + + assert_signature(source, 'test2', 0) + + def test_return(self): + source = dedent(''' + def foo(): + return '.'.join()''') + + assert_signature(source, 'join', 0, column=len(" return '.'.join(")) + + +class TestParams(TestCase): + def params(self, source, line=None, column=None): + signatures = Script(source, line, column).call_signatures() + assert len(signatures) == 1 + return signatures[0].params + + def test_param_name(self): + if not is_py33: + p = self.params('''int(''') + # int is defined as: `int(x[, base])` + assert p[0].name == 'x' + # `int` docstring has been redefined: + # http://bugs.python.org/issue14783 + # TODO have multiple call signatures for int (like in the docstr) + #assert p[1].name == 'base' + + p = self.params('''open(something,''') + assert p[0].name in ['file', 'name'] + assert p[1].name == 'mode' + + def test_builtins(self): + """ + The self keyword should be visible even for builtins, if not + instantiated. + """ + p = self.params('str.endswith(') + assert p[0].name == 'self' + assert p[1].name == 'suffix' + p = self.params('str().endswith(') + assert p[0].name == 'suffix' + + +def test_signature_is_definition(): + """ + Through inheritance, a call signature is a sub class of Definition. + Check if the attributes match. + """ + s = """class Spam(): pass\nSpam""" + signature = Script(s + '(').call_signatures()[0] + definition = Script(s + '(', column=0).goto_definitions()[0] + signature.line == 1 + signature.column == 6 + + # Now compare all the attributes that a CallSignature must also have. + for attr_name in dir(definition): + dont_scan = ['defined_names', 'parent', 'goto_assignments', 'params'] + if attr_name.startswith('_') or attr_name in dont_scan: + continue + + # Might trigger some deprecation warnings. + with warnings.catch_warnings(record=True): + attribute = getattr(definition, attr_name) + signature_attribute = getattr(signature, attr_name) + if inspect.ismethod(attribute): + assert attribute() == signature_attribute() + else: + assert attribute == signature_attribute + + +def test_no_signature(): + # str doesn't have a __call__ method + assert Script('str()(').call_signatures() == [] + + s = dedent("""\ + class X(): + pass + X()(""") + assert Script(s).call_signatures() == [] + assert len(Script(s, column=2).call_signatures()) == 1 + assert Script('').call_signatures() == [] + + +def test_dict_literal_in_incomplete_call(): + source = """\ + import json + + def foo(): + json.loads( + + json.load.return_value = {'foo': [], + 'bar': True} + + c = Foo() + """ + + script = Script(dedent(source), line=4, column=15) + assert script.call_signatures() + + +def test_completion_interference(): + """Seems to cause problems, see also #396.""" + cache.parser_cache.pop(None, None) + assert Script('open(').call_signatures() + + # complete something usual, before doing the same call_signatures again. + assert Script('from datetime import ').completions() + + assert Script('open(').call_signatures() + + +def test_keyword_argument_index(): + def get(source, column=None): + return Script(source, column=column).call_signatures()[0] + + assert get('sorted([], key=a').index == 2 + assert get('sorted([], key=').index == 2 + assert get('sorted([], no_key=a').index is None + + kw_func = 'def foo(a, b): pass\nfoo(b=3, a=4)' + assert get(kw_func, column=len('foo(b')).index == 0 + assert get(kw_func, column=len('foo(b=')).index == 1 + assert get(kw_func, column=len('foo(b=3, a=')).index == 0 + + kw_func_simple = 'def foo(a, b): pass\nfoo(b=4)' + assert get(kw_func_simple, column=len('foo(b')).index == 0 + assert get(kw_func_simple, column=len('foo(b=')).index == 1 + + args_func = 'def foo(*kwargs): pass\n' + assert get(args_func + 'foo(a').index == 0 + assert get(args_func + 'foo(a, b').index == 0 + + kwargs_func = 'def foo(**kwargs): pass\n' + assert get(kwargs_func + 'foo(a=2').index == 0 + assert get(kwargs_func + 'foo(a=2, b=2').index == 0 + + both = 'def foo(*args, **kwargs): pass\n' + assert get(both + 'foo(a=2').index == 1 + assert get(both + 'foo(a=2, b=2').index == 1 + assert get(both + 'foo(a=2, b=2)', column=len('foo(b=2, a=2')).index == 1 + assert get(both + 'foo(a, b, c').index == 0 + + +def test_bracket_start(): + def bracket_start(src): + signatures = Script(src).call_signatures() + assert len(signatures) == 1 + return signatures[0].bracket_start + + assert bracket_start('str(') == (1, 3) + + +def test_different_caller(): + """ + It's possible to not use names, but another function result or an array + index and then get the call signature of it. + """ + + assert_signature('[str][0](', 'str', 0) + assert_signature('[str][0]()', 'str', 0, column=len('[str][0](')) + + assert_signature('(str)(', 'str', 0) + assert_signature('(str)()', 'str', 0, column=len('(str)(')) + + +def test_in_function(): + code = dedent('''\ + class X(): + @property + def func(''') + assert not Script(code).call_signatures() + + +def test_lambda_params(): + code = dedent('''\ + my_lambda = lambda x: x+1 + my_lambda(1)''') + sig, = Script(code, column=11).call_signatures() + assert sig.index == 0 + assert sig.name == '' + assert [p.name for p in sig.params] == ['x'] + + +def test_class_creation(): + code = dedent('''\ + class X(): + def __init__(self, foo, bar): + self.foo = foo + ''') + sig, = Script(code + 'X(').call_signatures() + assert sig.index == 0 + assert sig.name == 'X' + assert [p.name for p in sig.params] == ['foo', 'bar'] + + sig, = Script(code + 'X.__init__(').call_signatures() + assert [p.name for p in sig.params] == ['self', 'foo', 'bar'] + sig, = Script(code + 'X().__init__(').call_signatures() + assert [p.name for p in sig.params] == ['foo', 'bar'] + + +def test_call_magic_method(): + code = dedent('''\ + class X(): + def __call__(self, baz): + pass + ''') + sig, = Script(code + 'X()(').call_signatures() + assert sig.index == 0 + assert sig.name == 'X' + assert [p.name for p in sig.params] == ['baz'] + + sig, = Script(code + 'X.__call__(').call_signatures() + assert [p.name for p in sig.params] == ['self', 'baz'] + sig, = Script(code + 'X().__call__(').call_signatures() + assert [p.name for p in sig.params] == ['baz'] diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_classes.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_classes.py new file mode 100644 index 0000000..cc01c2a --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_classes.py @@ -0,0 +1,393 @@ +""" Test all things related to the ``jedi.api_classes`` module. +""" + +from textwrap import dedent +from inspect import cleandoc + +import pytest + +from jedi import Script, __doc__ as jedi_doc, names +from ..helpers import cwd_at +from ..helpers import TestCase + + +def test_is_keyword(): + #results = Script('import ', 1, 1, None).goto_definitions() + #assert len(results) == 1 and results[0].is_keyword is True + results = Script('str', 1, 1, None).goto_definitions() + assert len(results) == 1 and results[0].is_keyword is False + + +def make_definitions(): + """ + Return a list of definitions for parametrized tests. + + :rtype: [jedi.api_classes.BaseDefinition] + """ + source = dedent(""" + import sys + + class C: + pass + + x = C() + + def f(): + pass + + def g(): + yield + + h = lambda: None + """) + + definitions = [] + definitions += names(source) + + source += dedent(""" + variable = sys or C or x or f or g or g() or h""") + lines = source.splitlines() + script = Script(source, len(lines), len('variable'), None) + definitions += script.goto_definitions() + + script2 = Script(source, 4, len('class C'), None) + definitions += script2.usages() + + source_param = "def f(a): return a" + script_param = Script(source_param, 1, len(source_param), None) + definitions += script_param.goto_assignments() + + return definitions + + +@pytest.mark.parametrize('definition', make_definitions()) +def test_basedefinition_type(definition): + assert definition.type in ('module', 'class', 'instance', 'function', + 'generator', 'statement', 'import', 'param') + + +def test_basedefinition_type_import(): + def get_types(source, **kwargs): + return set([t.type for t in Script(source, **kwargs).completions()]) + + # import one level + assert get_types('import t') == set(['module']) + assert get_types('import ') == set(['module']) + assert get_types('import datetime; datetime') == set(['module']) + + # from + assert get_types('from datetime import timedelta') == set(['class']) + assert get_types('from datetime import timedelta; timedelta') == set(['class']) + assert get_types('from json import tool') == set(['module']) + assert get_types('from json import tool; tool') == set(['module']) + + # import two levels + assert get_types('import json.tool; json') == set(['module']) + assert get_types('import json.tool; json.tool') == set(['module']) + assert get_types('import json.tool; json.tool.main') == set(['function']) + assert get_types('import json.tool') == set(['module']) + assert get_types('import json.tool', column=9) == set(['module']) + + +def test_function_call_signature_in_doc(): + defs = Script(""" + def f(x, y=1, z='a'): + pass + f""").goto_definitions() + doc = defs[0].docstring() + assert "f(x, y=1, z='a')" in str(doc) + + +def test_class_call_signature(): + defs = Script(""" + class Foo: + def __init__(self, x, y=1, z='a'): + pass + Foo""").goto_definitions() + doc = defs[0].docstring() + assert "Foo(self, x, y=1, z='a')" in str(doc) + + +def test_position_none_if_builtin(): + gotos = Script('import sys; sys.path').goto_assignments() + assert gotos[0].line is None + assert gotos[0].column is None + + +@cwd_at('.') +def test_completion_docstring(): + """ + Jedi should follow imports in certain conditions + """ + def docstr(src, result): + c = Script(src).completions()[0] + assert c.docstring(raw=True, fast=False) == cleandoc(result) + + c = Script('import jedi\njed').completions()[0] + assert c.docstring(fast=False) == cleandoc(jedi_doc) + + docstr('import jedi\njedi.Scr', cleandoc(Script.__doc__)) + + docstr('abcd=3;abcd', '') + docstr('"hello"\nabcd=3\nabcd', '') + docstr(dedent(''' + def x(): + "hello" + 0 + x'''), + 'hello' + ) + docstr(dedent(''' + def x(): + "hello";0 + x'''), + 'hello' + ) + # Shouldn't work with a tuple. + docstr(dedent(''' + def x(): + "hello",0 + x'''), + '' + ) + # Should also not work if we rename something. + docstr(dedent(''' + def x(): + "hello" + y = x + y'''), + '' + ) + + +def test_completion_params(): + c = Script('import string; string.capwords').completions()[0] + assert [p.name for p in c.params] == ['s', 'sep'] + + +def test_signature_params(): + def check(defs): + params = defs[0].params + assert len(params) == 1 + assert params[0].name == 'bar' + + s = dedent(''' + def foo(bar): + pass + foo''') + + check(Script(s).goto_definitions()) + + check(Script(s).goto_assignments()) + check(Script(s + '\nbar=foo\nbar').goto_assignments()) + + +def test_param_endings(): + """ + Params should be represented without the comma and whitespace they have + around them. + """ + sig = Script('def x(a, b=5, c=""): pass\n x(').call_signatures()[0] + assert [p.description for p in sig.params] == ['param a', 'param b=5', 'param c=""'] + + +class TestIsDefinition(TestCase): + def _def(self, source, index=-1): + return names(dedent(source), references=True, all_scopes=True)[index] + + def _bool_is_definitions(self, source): + ns = names(dedent(source), references=True, all_scopes=True) + # Assure that names are definitely sorted. + ns = sorted(ns, key=lambda name: (name.line, name.column)) + return [name.is_definition() for name in ns] + + def test_name(self): + d = self._def('name') + assert d.name == 'name' + assert not d.is_definition() + + def test_stmt(self): + src = 'a = f(x)' + d = self._def(src, 0) + assert d.name == 'a' + assert d.is_definition() + d = self._def(src, 1) + assert d.name == 'f' + assert not d.is_definition() + d = self._def(src) + assert d.name == 'x' + assert not d.is_definition() + + def test_import(self): + assert self._bool_is_definitions('import x as a') == [False, True] + assert self._bool_is_definitions('from x import y') == [False, True] + assert self._bool_is_definitions('from x.z import y') == [False, False, True] + + +class TestParent(TestCase): + def _parent(self, source, line=None, column=None): + def_, = Script(dedent(source), line, column).goto_assignments() + return def_.parent() + + def test_parent(self): + parent = self._parent('foo=1\nfoo') + assert parent.type == 'module' + + parent = self._parent(''' + def spam(): + if 1: + y=1 + y''') + assert parent.name == 'spam' + assert parent.parent().type == 'module' + + def test_on_function(self): + parent = self._parent('''\ + def spam(): + pass''', 1, len('def spam')) + assert parent.name == '' + assert parent.type == 'module' + + def test_parent_on_completion(self): + parent = Script(dedent('''\ + class Foo(): + def bar(): pass + Foo().bar''')).completions()[0].parent() + assert parent.name == 'Foo' + assert parent.type == 'class' + + parent = Script('str.join').completions()[0].parent() + assert parent.name == 'str' + assert parent.type == 'class' + + +def test_type(): + for c in Script('a = [str()]; a[0].').completions(): + if c.name == '__class__': + assert c.type == 'class' + else: + assert c.type in ('function', 'instance') + + # Github issue #397, type should never raise an error. + for c in Script('import os; os.path.').completions(): + assert c.type + +def test_type_II(): + """ + GitHub Issue #833, `keyword`s are seen as `module`s + """ + for c in Script('f').completions(): + if c.name == 'for': + assert c.type == 'keyword' + + +class TestGotoAssignments(TestCase): + """ + This tests the BaseDefinition.goto_assignments function, not the jedi + function. They are not really different in functionality, but really + different as an implementation. + """ + def test_repetition(self): + defs = names('a = 1; a', references=True, definitions=False) + # Repeat on the same variable. Shouldn't change once we're on a + # definition. + for _ in range(3): + assert len(defs) == 1 + ass = defs[0].goto_assignments() + assert ass[0].description == 'a = 1' + + def test_named_params(self): + src = """\ + def foo(a=1, bar=2): + pass + foo(bar=1) + """ + bar = names(dedent(src), references=True)[-1] + param = bar.goto_assignments()[0] + assert (param.line, param.column) == (1, 13) + assert param.type == 'param' + + def test_class_call(self): + src = 'from threading import Thread; Thread(group=1)' + n = names(src, references=True)[-1] + assert n.name == 'group' + param_def = n.goto_assignments()[0] + assert param_def.name == 'group' + assert param_def.type == 'param' + + def test_parentheses(self): + n = names('("").upper', references=True)[-1] + assert n.goto_assignments()[0].name == 'upper' + + def test_import(self): + nms = names('from json import load', references=True) + assert nms[0].name == 'json' + assert nms[0].type == 'module' + n = nms[0].goto_assignments()[0] + assert n.name == 'json' + assert n.type == 'module' + + assert nms[1].name == 'load' + assert nms[1].type == 'function' + n = nms[1].goto_assignments()[0] + assert n.name == 'load' + assert n.type == 'function' + + nms = names('import os; os.path', references=True) + assert nms[0].name == 'os' + assert nms[0].type == 'module' + n = nms[0].goto_assignments()[0] + assert n.name == 'os' + assert n.type == 'module' + + n = nms[2].goto_assignments()[0] + assert n.name == 'path' + assert n.type == 'module' + + nms = names('import os.path', references=True) + n = nms[0].goto_assignments()[0] + assert n.name == 'os' + assert n.type == 'module' + n = nms[1].goto_assignments()[0] + # This is very special, normally the name doesn't chance, but since + # os.path is a sys.modules hack, it does. + assert n.name in ('ntpath', 'posixpath', 'os2emxpath') + assert n.type == 'module' + + def test_import_alias(self): + nms = names('import json as foo', references=True) + assert nms[0].name == 'json' + assert nms[0].type == 'module' + assert nms[0]._name.tree_name.parent.type == 'dotted_as_name' + n = nms[0].goto_assignments()[0] + assert n.name == 'json' + assert n.type == 'module' + assert n._name._context.tree_node.type == 'file_input' + + assert nms[1].name == 'foo' + assert nms[1].type == 'module' + assert nms[1]._name.tree_name.parent.type == 'dotted_as_name' + ass = nms[1].goto_assignments() + assert len(ass) == 1 + assert ass[0].name == 'json' + assert ass[0].type == 'module' + assert ass[0]._name._context.tree_node.type == 'file_input' + + +def test_added_equals_to_params(): + def run(rest_source): + source = dedent(""" + def foo(bar, baz): + pass + """) + results = Script(source + rest_source).completions() + assert len(results) == 1 + return results[0] + + assert run('foo(bar').name_with_symbols == 'bar=' + assert run('foo(bar').complete == '=' + assert run('foo(bar, baz').complete == '=' + assert run(' bar').name_with_symbols == 'bar' + assert run(' bar').complete == '' + x = run('foo(bar=isins').name_with_symbols + assert x == 'isinstance' diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_completion.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_completion.py new file mode 100644 index 0000000..6cd7e04 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_completion.py @@ -0,0 +1,49 @@ +from textwrap import dedent +from jedi import Script + + +def test_in_whitespace(): + code = dedent(''' + def x(): + pass''') + assert len(Script(code, column=2).completions()) > 20 + + +def test_empty_init(): + """This was actually an issue.""" + code = dedent('''\ + class X(object): pass + X(''') + assert Script(code).completions() + + +def test_in_empty_space(): + code = dedent('''\ + class X(object): + def __init__(self): + hello + ''') + comps = Script(code, 3, 7).completions() + self, = [c for c in comps if c.name == 'self'] + assert self.name == 'self' + def_, = self._goto_definitions() + assert def_.name == 'X' + + +def test_indent_context(): + """ + If an INDENT is the next supposed token, we should still be able to + complete. + """ + code = 'if 1:\nisinstanc' + comp, = Script(code).completions() + assert comp.name == 'isinstance' + + +def test_keyword_context(): + def get_names(*args, **kwargs): + return [d.name for d in Script(*args, **kwargs).completions()] + + names = get_names('if 1:\n pass\n') + assert 'if' in names + assert 'elif' in names diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_defined_names.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_defined_names.py new file mode 100644 index 0000000..b982594 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_defined_names.py @@ -0,0 +1,92 @@ +""" +Tests for `api.defined_names`. +""" + +from textwrap import dedent + +from jedi import names +from ..helpers import TestCase + + +class TestDefinedNames(TestCase): + def assert_definition_names(self, definitions, names_): + assert [d.name for d in definitions] == names_ + + def check_defined_names(self, source, names_): + definitions = names(dedent(source)) + self.assert_definition_names(definitions, names_) + return definitions + + def test_get_definitions_flat(self): + self.check_defined_names(""" + import module + class Class: + pass + def func(): + pass + data = None + """, ['module', 'Class', 'func', 'data']) + + def test_dotted_assignment(self): + self.check_defined_names(""" + x = Class() + x.y.z = None + """, ['x', 'z']) # TODO is this behavior what we want? + + def test_multiple_assignment(self): + self.check_defined_names(""" + x = y = None + """, ['x', 'y']) + + def test_multiple_imports(self): + self.check_defined_names(""" + from module import a, b + from another_module import * + """, ['a', 'b']) + + def test_nested_definitions(self): + definitions = self.check_defined_names(""" + class Class: + def f(): + pass + def g(): + pass + """, ['Class']) + subdefinitions = definitions[0].defined_names() + self.assert_definition_names(subdefinitions, ['f', 'g']) + self.assertEqual([d.full_name for d in subdefinitions], + ['__main__.Class.f', '__main__.Class.g']) + + def test_nested_class(self): + definitions = self.check_defined_names(""" + class L1: + class L2: + class L3: + def f(): pass + def f(): pass + def f(): pass + def f(): pass + """, ['L1', 'f']) + subdefs = definitions[0].defined_names() + subsubdefs = subdefs[0].defined_names() + self.assert_definition_names(subdefs, ['L2', 'f']) + self.assert_definition_names(subsubdefs, ['L3', 'f']) + self.assert_definition_names(subsubdefs[0].defined_names(), ['f']) + + +def test_follow_imports(): + # github issue #344 + imp = names('import datetime')[0] + assert imp.name == 'datetime' + datetime_names = [str(d.name) for d in imp.defined_names()] + assert 'timedelta' in datetime_names + + +def test_names_twice(): + source = dedent(''' + def lol(): + pass + ''') + + defs = names(source=source) + assert defs[0].defined_names() == [] diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_full_name.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_full_name.py new file mode 100644 index 0000000..d2ad9d0 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_full_name.py @@ -0,0 +1,104 @@ +""" +Tests for :attr:`.BaseDefinition.full_name`. + +There are three kinds of test: + +#. Test classes derived from :class:`MixinTestFullName`. + Child class defines :attr:`.operation` to alter how + the api definition instance is created. + +#. :class:`TestFullDefinedName` is to test combination of + ``obj.full_name`` and ``jedi.defined_names``. + +#. Misc single-function tests. +""" + +import textwrap + +import pytest + +import jedi +from ..helpers import TestCase + + +class MixinTestFullName(object): + operation = None + + def check(self, source, desired): + script = jedi.Script(textwrap.dedent(source)) + definitions = getattr(script, type(self).operation)() + for d in definitions: + self.assertEqual(d.full_name, desired) + + def test_os_path_join(self): + self.check('import os; os.path.join', 'os.path.join') + + def test_builtin(self): + self.check('TypeError', 'TypeError') + + +class TestFullNameWithGotoDefinitions(MixinTestFullName, TestCase): + operation = 'goto_definitions' + + @pytest.mark.skipif('sys.version_info[0] < 3', reason='Python 2 also yields None.') + def test_tuple_mapping(self): + self.check(""" + import re + any_re = re.compile('.*') + any_re""", '_sre.SRE_Pattern') + + def test_from_import(self): + self.check('from os import path', 'os.path') + + +class TestFullNameWithCompletions(MixinTestFullName, TestCase): + operation = 'completions' + + +class TestFullDefinedName(TestCase): + """ + Test combination of ``obj.full_name`` and ``jedi.defined_names``. + """ + + def check(self, source, desired): + definitions = jedi.names(textwrap.dedent(source)) + full_names = [d.full_name for d in definitions] + self.assertEqual(full_names, desired) + + def test_local_names(self): + self.check(""" + def f(): pass + class C: pass + """, ['__main__.f', '__main__.C']) + + def test_imports(self): + self.check(""" + import os + from os import path + from os.path import join + from os import path as opath + """, ['os', 'os.path', 'os.path.join', 'os.path']) + + +def test_sub_module(): + """ + ``full_name needs to check sys.path to actually find it's real path module + path. + """ + defs = jedi.Script('from jedi.api import classes; classes').goto_definitions() + assert [d.full_name for d in defs] == ['jedi.api.classes'] + defs = jedi.Script('import jedi.api; jedi.api').goto_definitions() + assert [d.full_name for d in defs] == ['jedi.api'] + + +def test_os_path(): + d, = jedi.Script('from os.path import join').completions() + assert d.full_name == 'os.path.join' + d, = jedi.Script('import os.p').completions() + assert d.full_name == 'os.path' + + +def test_os_issues(): + """Issue #873""" + c, = jedi.Script('import os\nos.nt''').completions() + assert c.full_name == 'nt' diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_interpreter.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_interpreter.py new file mode 100644 index 0000000..a4c0311 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_interpreter.py @@ -0,0 +1,300 @@ +""" +Tests of ``jedi.api.Interpreter``. +""" +import pytest + +import jedi +from jedi._compatibility import is_py33, py_version +from jedi.evaluate.compiled import mixed + + +if py_version > 30: + def exec_(source, global_map): + exec(source, global_map) +else: + eval(compile("""def exec_(source, global_map): + exec source in global_map """, 'blub', 'exec')) + + +class _GlobalNameSpace(): + class SideEffectContainer(): + pass + + +def get_completion(source, namespace): + i = jedi.Interpreter(source, [namespace]) + completions = i.completions() + assert len(completions) == 1 + return completions[0] + + +def test_builtin_details(): + import keyword + + class EmptyClass: + pass + + variable = EmptyClass() + + def func(): + pass + + cls = get_completion('EmptyClass', locals()) + var = get_completion('variable', locals()) + f = get_completion('func', locals()) + m = get_completion('keyword', locals()) + assert cls.type == 'class' + assert var.type == 'instance' + assert f.type == 'function' + assert m.type == 'module' + + +def test_numpy_like_non_zero(): + """ + Numpy-like array can't be caster to bool and need to be compacre with + `is`/`is not` and not `==`/`!=` + """ + + class NumpyNonZero: + + def __zero__(self): + raise ValueError('Numpy arrays would raise and tell you to use .any() or all()') + def __bool__(self): + raise ValueError('Numpy arrays would raise and tell you to use .any() or all()') + + class NumpyLike: + + def __eq__(self, other): + return NumpyNonZero() + + def something(self): + pass + + x = NumpyLike() + d = {'a': x} + + # just assert these do not raise. They (strangely) trigger different + # codepath + get_completion('d["a"].some', {'d':d}) + get_completion('x.some', {'x':x}) + + +def test_nested_resolve(): + class XX(): + def x(): + pass + + cls = get_completion('XX', locals()) + func = get_completion('XX.x', locals()) + assert (func.line, func.column) == (cls.line + 1, 12) + + +def test_side_effect_completion(): + """ + In the repl it's possible to cause side effects that are not documented in + Python code, however we want references to Python code as well. Therefore + we need some mixed kind of magic for tests. + """ + _GlobalNameSpace.SideEffectContainer.foo = 1 + side_effect = get_completion('SideEffectContainer', _GlobalNameSpace.__dict__) + + # It's a class that contains MixedObject. + context, = side_effect._name.infer() + assert isinstance(context, mixed.MixedObject) + foo = get_completion('SideEffectContainer.foo', _GlobalNameSpace.__dict__) + assert foo.name == 'foo' + + +def _assert_interpreter_complete(source, namespace, completions, + **kwds): + script = jedi.Interpreter(source, [namespace], **kwds) + cs = script.completions() + actual = [c.name for c in cs] + assert sorted(actual) == sorted(completions) + + +def test_complete_raw_function(): + from os.path import join + _assert_interpreter_complete('join("").up', + locals(), + ['upper']) + + +def test_complete_raw_function_different_name(): + from os.path import join as pjoin + _assert_interpreter_complete('pjoin("").up', + locals(), + ['upper']) + + +def test_complete_raw_module(): + import os + _assert_interpreter_complete('os.path.join("a").up', + locals(), + ['upper']) + + +def test_complete_raw_instance(): + import datetime + dt = datetime.datetime(2013, 1, 1) + completions = ['time', 'timetz', 'timetuple'] + if is_py33: + completions += ['timestamp'] + _assert_interpreter_complete('(dt - dt).ti', + locals(), + completions) + + +def test_list(): + array = ['haha', 1] + _assert_interpreter_complete('array[0].uppe', + locals(), + ['upper']) + _assert_interpreter_complete('array[0].real', + locals(), + []) + + # something different, no index given, still just return the right + _assert_interpreter_complete('array[int].real', + locals(), + ['real']) + _assert_interpreter_complete('array[int()].real', + locals(), + ['real']) + # inexistent index + _assert_interpreter_complete('array[2].upper', + locals(), + ['upper']) + + +def test_slice(): + class Foo1(): + bar = [] + baz = 'xbarx' + _assert_interpreter_complete('getattr(Foo1, baz[1:-1]).append', + locals(), + ['append']) + + +def test_getitem_side_effects(): + class Foo2(): + def __getitem__(self, index): + # Possible side effects here, should therefore not call this. + if True: + raise NotImplementedError() + return index + + foo = Foo2() + _assert_interpreter_complete('foo["asdf"].upper', locals(), ['upper']) + + +def test_property_error_oldstyle(): + lst = [] + class Foo3(): + @property + def bar(self): + lst.append(1) + raise ValueError + + foo = Foo3() + _assert_interpreter_complete('foo.bar', locals(), ['bar']) + _assert_interpreter_complete('foo.bar.baz', locals(), []) + + # There should not be side effects + assert lst == [] + + +def test_property_error_newstyle(): + lst = [] + class Foo3(object): + @property + def bar(self): + lst.append(1) + raise ValueError + + foo = Foo3() + _assert_interpreter_complete('foo.bar', locals(), ['bar']) + _assert_interpreter_complete('foo.bar.baz', locals(), []) + + # There should not be side effects + assert lst == [] + + +def test_param_completion(): + def foo(bar): + pass + + lambd = lambda xyz: 3 + + _assert_interpreter_complete('foo(bar', locals(), ['bar']) + # TODO we're not yet using the Python3.5 inspect.signature, yet. + assert not jedi.Interpreter('lambd(xyz', [locals()]).completions() + + +def test_endless_yield(): + lst = [1] * 10000 + # If iterating over lists it should not be possible to take an extremely + # long time. + _assert_interpreter_complete('list(lst)[9000].rea', locals(), ['real']) + + +@pytest.mark.skipif('py_version < 33', reason='inspect.signature was created in 3.3.') +def test_completion_params(): + foo = lambda a, b=3: None + + script = jedi.Interpreter('foo', [locals()]) + c, = script.completions() + assert [p.name for p in c.params] == ['a', 'b'] + assert c.params[0]._goto_definitions() == [] + t, = c.params[1]._goto_definitions() + assert t.name == 'int' + + +@pytest.mark.skipif('py_version < 33', reason='inspect.signature was created in 3.3.') +def test_completion_param_annotations(): + # Need to define this function not directly in Python. Otherwise Jedi is to + # clever and uses the Python code instead of the signature object. + code = 'def foo(a: 1, b: str, c: int = 1.0): pass' + exec_(code, locals()) + script = jedi.Interpreter('foo', [locals()]) + c, = script.completions() + a, b, c = c.params + assert a._goto_definitions() == [] + assert [d.name for d in b._goto_definitions()] == ['str'] + assert set([d.name for d in c._goto_definitions()]) == set(['int', 'float']) + + +def test_more_complex_instances(): + class Something: + def foo(self, other): + return self + + class Base(): + def wow(self): + return Something() + + #script = jedi.Interpreter('Base().wow().foo', [locals()]) + #c, = script.completions() + #assert c.name == 'foo' + + x = Base() + script = jedi.Interpreter('x.wow().foo', [locals()]) + c, = script.completions() + assert c.name == 'foo' + + +def test_repr_execution_issue(): + """ + Anticipate inspect.getfile executing a __repr__ of all kinds of objects. + See also #919. + """ + class ErrorRepr: + def __repr__(self): + raise Exception('xyz') + + er = ErrorRepr() + + script = jedi.Interpreter('er', [locals()]) + d, = script.goto_definitions() + assert d.name == 'ErrorRepr' + assert d.type == 'instance' diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_unicode.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_unicode.py new file mode 100644 index 0000000..bcd8ad4 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_unicode.py @@ -0,0 +1,66 @@ +# -*- coding: utf-8 -*- +""" +All character set and unicode related tests. +""" +from jedi import Script +from jedi._compatibility import u, unicode + + +def test_unicode_script(): + """ normally no unicode objects are being used. (<=2.7) """ + s = unicode("import datetime; datetime.timedelta") + completions = Script(s).completions() + assert len(completions) + assert type(completions[0].description) is unicode + + s = u("author='öä'; author") + completions = Script(s).completions() + x = completions[0].description + assert type(x) is unicode + + s = u("#-*- coding: iso-8859-1 -*-\nauthor='öä'; author") + s = s.encode('latin-1') + completions = Script(s).completions() + assert type(completions[0].description) is unicode + + +def test_unicode_attribute(): + """ github jedi-vim issue #94 """ + s1 = u('#-*- coding: utf-8 -*-\nclass Person():\n' + ' name = "e"\n\nPerson().name.') + completions1 = Script(s1).completions() + assert 'strip' in [c.name for c in completions1] + s2 = u('#-*- coding: utf-8 -*-\nclass Person():\n' + ' name = "é"\n\nPerson().name.') + completions2 = Script(s2).completions() + assert 'strip' in [c.name for c in completions2] + + +def test_multibyte_script(): + """ `jedi.Script` must accept multi-byte string source. """ + try: + code = u("import datetime; datetime.d") + comment = u("# multi-byte comment ã‚ã„ã†ãˆãŠÃ¤") + s = (u('%s\n%s') % (code, comment)).encode('utf-8') + except NameError: + pass # python 3 has no unicode method + else: + assert len(Script(s, 1, len(code)).completions()) + + +def test_goto_definition_at_zero(): + """At zero usually sometimes raises unicode issues.""" + assert Script("a", 1, 1).goto_definitions() == [] + s = Script("str", 1, 1).goto_definitions() + assert len(s) == 1 + assert list(s)[0].description == 'class str' + assert Script("", 1, 0).goto_definitions() == [] + + +def test_complete_at_zero(): + s = Script("str", 1, 3).completions() + assert len(s) == 1 + assert list(s)[0].name == 'str' + + s = Script("", 1, 0).completions() + assert len(s) > 0 diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_usages.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_usages.py new file mode 100644 index 0000000..1325e41 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_api/test_usages.py @@ -0,0 +1,6 @@ +import jedi + + +def test_import_usage(): + s = jedi.Script("from .. import foo", line=1, column=18, path="foo.py") + assert [usage.line for usage in s.usages()] == [1] diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/__init__.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/absolute_import/local_module.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/absolute_import/local_module.py new file mode 100644 index 0000000..aa4bf00 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/absolute_import/local_module.py @@ -0,0 +1,14 @@ +""" +This is a module that imports the *standard library* unittest, +despite there being a local "unittest" module. It specifies that it +wants the stdlib one with the ``absolute_import`` __future__ import. + +The twisted equivalent of this module is ``twisted.trial._synctest``. +""" +from __future__ import absolute_import + +import unittest + + +class Assertions(unittest.TestCase): + pass diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/absolute_import/unittest.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/absolute_import/unittest.py new file mode 100644 index 0000000..eee1e93 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/absolute_import/unittest.py @@ -0,0 +1,14 @@ +""" +This is a module that shadows a builtin (intentionally). + +It imports a local module, which in turn imports stdlib unittest (the +name shadowed by this module). If that is properly resolved, there's +no problem. However, if jedi doesn't understand absolute_imports, it +will get this module again, causing infinite recursion. +""" +from local_module import Assertions + + +class TestCase(Assertions): + def test(self): + self.assertT diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/buildout_project/bin/app b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/buildout_project/bin/app new file mode 100644 index 0000000..7394d2d --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/buildout_project/bin/app @@ -0,0 +1,12 @@ +#!/usr/bin/python + +import sys +sys.path[0:0] = [ + '/usr/lib/python3.4/site-packages', + '/tmp/.buildout/eggs/important_package.egg' +] + +import important_package + +if __name__ == '__main__': + sys.exit(important_package.main()) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/buildout_project/bin/binary_file b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/buildout_project/bin/binary_file new file mode 100644 index 0000000..f1ad755 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/buildout_project/bin/binary_file @@ -0,0 +1 @@ +‰PNG diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/buildout_project/bin/empty_file b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/buildout_project/bin/empty_file new file mode 100644 index 0000000..e69de29 diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/buildout_project/buildout.cfg b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/buildout_project/buildout.cfg new file mode 100644 index 0000000..e69de29 diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/buildout_project/src/proj_name/module_name.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/buildout_project/src/proj_name/module_name.py new file mode 100644 index 0000000..e69de29 diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/flask-site-packages/flask/__init__.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/flask-site-packages/flask/__init__.py new file mode 100644 index 0000000..e876bc1 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/flask-site-packages/flask/__init__.py @@ -0,0 +1 @@ + diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/flask-site-packages/flask/ext/__init__.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/flask-site-packages/flask/ext/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/flask-site-packages/flask/ext/__init__.py @@ -0,0 +1 @@ + diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/flask-site-packages/flask_baz/__init__.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/flask-site-packages/flask_baz/__init__.py new file mode 100644 index 0000000..e9b3fff --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/flask-site-packages/flask_baz/__init__.py @@ -0,0 +1 @@ +Baz = 1 diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/flask-site-packages/flask_foo.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/flask-site-packages/flask_foo.py new file mode 100644 index 0000000..0b910b8 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/flask-site-packages/flask_foo.py @@ -0,0 +1,2 @@ +class Foo(object): + pass diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/flask-site-packages/flaskext/__init__.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/flask-site-packages/flaskext/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/flask-site-packages/flaskext/bar.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/flask-site-packages/flaskext/bar.py new file mode 100644 index 0000000..6629f9a --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/flask-site-packages/flaskext/bar.py @@ -0,0 +1,2 @@ +class Bar(object): + pass diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/flask-site-packages/flaskext/moo/__init__.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/flask-site-packages/flaskext/moo/__init__.py new file mode 100644 index 0000000..266e809 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/flask-site-packages/flaskext/moo/__init__.py @@ -0,0 +1 @@ +Moo = 1 diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/implicit_namespace_package/ns1/pkg/ns1_file.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/implicit_namespace_package/ns1/pkg/ns1_file.py new file mode 100644 index 0000000..940279f --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/implicit_namespace_package/ns1/pkg/ns1_file.py @@ -0,0 +1 @@ +foo = 'ns1_file!' diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/implicit_namespace_package/ns2/pkg/ns2_file.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/implicit_namespace_package/ns2/pkg/ns2_file.py new file mode 100644 index 0000000..e87d7d8 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/implicit_namespace_package/ns2/pkg/ns2_file.py @@ -0,0 +1 @@ +foo = 'ns2_file!' diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/implicit_nested_namespaces/namespace/pkg/module.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/implicit_nested_namespaces/namespace/pkg/module.py new file mode 100644 index 0000000..3c37820 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/implicit_nested_namespaces/namespace/pkg/module.py @@ -0,0 +1 @@ +CONST = 1 diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/init_extension_module/__init__.cpython-34m.so b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/init_extension_module/__init__.cpython-34m.so new file mode 100644 index 0000000000000000000000000000000000000000..abfadc39cf3f41ffd58890d8696622dadae2513a GIT binary patch literal 16493 zcmeHOdz4&7nXkH?p01frW+oXj84?njbb7R^I_Vev zNG9ka3WP)qM8q|yi*Z+Z>Cu3IC=YqK7$2OCAf6n2fa|gj2X%Rfq9EDduO6N5PO@kB zoZbD4o6N2HzWQGE)mLBDy+p26Q?OUFl$e7%;h*Yde?m+guxl@TMx zq2%8_+g@MJvUIK_Ew6zWOG(yyY(MJD<202Ju5^4K1Rw4E?_SQ%wN~HJ{PK#m-<1~B zeLDuq0{C0LdcC-|e9Lck{PjBjl^af3{Aa%uzw>X;e}T5pCh8&|>)RjQAX~@vH9Gx` zz%}7-JpOo1Iq7F#dik0EXkNVZ+21|*o0~pz;PMNO`}WRPt@jO0{XHNWMZPX5s4r4a z2>25GwH^VVIST$GN5P*0d<1{>7sq90JreLj{7n*JvBwUQ3-5M~A1{<0Z^wEkDy`zx zgLkw>97>lDS^NWa_`MciPtU$iI)Z;hEH<3UWn;xsyikh8L@bp}l|*a^1)370aaQB$ z)D^ynox3@<)*nt4OMYQVI$kXLMKQ2-1?V+X%pWcJ*13oG2Y?UzAL)8Qkatl}-)jOCumpb`^77J%kgiEf6t3885|Q(_pb^ ztOY8Y6w6nxSiB^5TGwe^^R;8DZXTlT&_B~a_=~8zu`f?eA@n@)nB|LDf4aDI@JJng zsvW0&EfLMh;jE+#)c056-P|PMfhxQW0iwkVRrs0^uzHE(9CMed!dHiUYZbm)PXE=v zQ)3?j_tiIgY<}s5gScj|B@8z4(tZt} zOPF1L=~2Lx-+z7Z_l*(Jf9<0s@8EtdewVw}Uv<`AFo^ygFD^Q7U3swo>az}jR+Pr~ zUw>8$TE_08l%3PVDk4_yoc(qPg02r0W-FWk0`BggSV(QZ4@;s$*G=_3H!3lWyT$0lQ zXELYI;Tu5Si!u+7Z9vJ3IhdEcVy%#)t#aDZtKWF%V2&vF9OL#*+wJD6!P58I%^aUecs*qb z?A*=OVN16s8?*a2%O?75yIYstUTliRcUr{`zk8f%aO>?ZOULITUQQpDac%#orH7w1 z?ELVGh0nL`f3dK$%SikGySwM(dX2Z){@-uQC*43;Lbva(=X0>@uY-?Px_!E9KU!S5 z_WE-9k|k$EI@b@Dv!!zPN<0b`a*=sm3%cgcIkl{j^G`CccrRFum(3W~KjGC&K7dCM zOE2F>*vTA*EQ#@UjQd?IQgAa!y`OT|7f_*JvyiF{1OYGfkBGs*xX{0AWW!{Q3@$`5 zZd@>xErB68pWK`pft@Mby#{zYa09DB<%Q80xR*eKx`i~d;W%)6XM$+lsb2*qbULaB zf)nK^NY(4GGdM{OqQQ#_)rm4VMSfa?O8o#M6YQ{Ht9l#(9z5299cmu>7o2Lrh}s0x zgVQY7seVGq$62sP-ABpOE!e9jQ1T25_NnK{8?j)&;)D*KV8H>kpL%Cn@B+059SF{n z_tOv24T_J7!4u^}8XQq$Hga)fV_F zI9Hyh;g3tTp0el3$3Yf|UM>B z;XP8dBAkLNEqsSmQwXoJ@Ls8A5MC|kX#NMJI)(ZMwDp1Lqf#wk`&xNG>;Ik#zy2l40-ix*(L_P}I2F0)#&uC%4CNM6E zWqfGtn8UUK`v(Bcr1d7CHg0%3stC#+00`z^uwfyLY`FV%V7y<#yoT?L*Fin*K9~|v zjiw z&079Gsg_XwmD;C)=zgjC$p10Ui)Lar}nY^6Y_wTzspmnQs4FR-!#12 zQ#&dDlh(dHo_dV%PWg&%zr#~2=-(S;r`EsMQ@*Z1(473%}s0t@P(-EIj6^P1N`I7JkK3SJD2@ z>L^72J@o|JKPOjl8bz-PsNYiF7i>E=G7XAz#2d$MWqMF;?Fi)<|6x5B@*7a)w7HRT zE;pgy3VMnuPGx-JJ_+?p3(%*R0tTCn!r-cX7_G? zT~qy~LdEDgL}f`Yqrf|6ps7L4!hNDnWAhxT@cu-CI~Qt#rJ8`|uRlca5()0wpb3UF z0Zsj|BbY>T;e8gk(ATzUs!wXFL7;D|p|U33j)u_J@7AQ>s*wJqLQ3(5wCT4%4utL* zh1=Q&%R?gc&23Z`6>Yh}jUsd}Ns*x1(tcKi?z4Um|B&vv-#{JVQwcplYrJSAd@D!( z+Xk8yzMWQo$1Jp+VV{%_QW;WH_!7q4Lk8*%KS=0d1NDWUCiIB0r5~Qvx_-v!_%8e5 zJwYvx-3&<$>T|douiuNB86aJw5oo`X`j(&?di-|PUugJXD`|rzJ-*3 z{*s1z!c%Dbn+EC)-^{T4i-G#WFR|^fjBqRj;jfVIEz>p-4#Dow+eX6$;rnRI-wd=N zJVJf%7-%GX1HF9EKza3J@(F3cQ8k{1N=d1D4fqCCdUjWUHQ*kS2W&gmfJbOVP_qZ3 zSOfT65^At8)_@IkQOLqr16mnf%EDL!UMGE{U30Jo%%T1!+m2nvY&sxpVXOg{P~Uh9 zV-46uc!Gto25?4(nk|eqU?b(XS{Q42^JjsI%ERL$V(T4s{v9<85n?YN5FiJuSRwuR4Q@W?DskYA;)(R&u{+KbM`I zB{w2+r*wo)l&fg#jYPhuV(T>WbXIJAoIN>7GG%dF)_yFzd$Mc?=akma9QiSdc#%%& zk~<)Y-Q7f=b<6K)P>J?;2=~YfLE8Qd<;|71px&Uqi2E^mJ(;u(c+nnX>pb}_-TJU@ zNc zC)!(S;8~IjOgm>`=xlk0X6e%`l*moZAr@=UQ*_-z$)w%BoPO(*T*cb2p_3NLE47Sk zw2Ubj8E#xG=N05!Eca-N+cX7J6}K)%i%$2tEBwVygq9e|+!Tk-G4(!bSt_~UwSS5o zU1ltqOq%7U{w#aeFBP^J4XPP;;{a|sCUMt#NSSDlauip{d7Ac&3N5#ehE}g>4T_1c zK{3u76eFlXF$kK@gEGcZ}5WcI$;Hly$AoCkLEVFT(?5Z{voXv~S$H?_jpNP2B-)1kl4zVTm5;Yr?23e%`!v+r zmdqtYV~e5e2)_W+8e6w%l@Ta;1cJRBHBaK0do*2jQ+0!y2}Mo(F{ZQWgi$KxUZ!cL z+sn*>lbWJe>b|sw?}U4sX1O)>CU7;)Hmh$$9IJORcvc}T1vZ^Hm$FZQ#*wCO+8us| z=$>n|G!f=gP1C8y7oFjg37ux3p746=ooh7phF6kr-W<)>7v2VmP4nF{a2?wgaB;)q zK=_YrJKeNh5Pm;g(A3Kfr5D{GyfrYtQO$-W4eAu!O>oeMCN8#tTzD73kjBOjXsQot zszIPPRj72RYSO8aPgXLld%g#nc~!q&xD`y(GD40g&q}r)cPk8)fg914#z3F_QE~e3 zA!gj2d@_`BI)6hPcb5TXoR8jx)&)2mIMpF1%Gu3r;Xw1W=81BWYz5Y97lGz8!e@q8 zv|-7bCBose(GCf=iqQSoR;bSKYN)}>jms~jB_=E^Ls;_|(r_HNq^5D7S z09wy^P(1w*xNtlL&aepRGzh^5C{KiOm-4OV3ApQ%HiWy&#X>iJRqq~7B)Ug?7sM9K zo0Cpu%cFCKv*m8Q+3HSZ6X|l&7n;%nhf@xwO2rzI8lXGBwKS5;&h46)5yG4X=t?lG zilt=IAL<$ru%)y$?-x-;Gy$E;p^6}aZLXT%n$HzVKqJ*)2aWRqrk?R3JXwuN`o%<{ z8ew!+V-PT&3;jToJVCWRd)75x5WYdaO5sSuP&u2x@q*mYP^=`fgE-TWPsbB}tXLi_ z72-IX5L>Y(#*+!Le5oK}iII3JD>AX6g71rhpZ4QLADjLmzmP8=$;FBzu$@l(qn^AD>C^Qj$_bLxFMA<2^yvQlg?#_Bl=dx(Tw4&pN#O8U{&|>xh;MHM={oz z0~qWi8%jGy38Is$s_UNh~|fiWGYd@C~)BbWVPgIb7d%ij~8PZV;!l?sTDUs#(4Gv!yyvs zT(Mlh`IVs*T$$73I2ccCD(8*&z-}U{h~Y05anuC?K!L{5iE<&9$fe5}jyBh?Lq4S| zsk|5)P6+gS5Qko3xpb02MDy{7z#>V(FZzYeev)-ywcj#kgc*BToSo6#M<**jigALN z5El6YbZLrMEFVvvMsE~~BdMVh;zAQrGCe0^6ehO7KZu=TI+cJ;a7-p%*aTZR)3R{? ze{pQ5DmV&$22q}5A7Es>uvMGDNs!B86rsS4Y$BIU#7po{#g(;ZeTpOTyfI`;0X^1p zh`uNfChSq7ObpX(vtM95!{Pa@>`?;q3Py7-MQS1#s-4QT)=6pz&T#x7K+g;Iy9k+; zaRxS(&=l@$5&|@~m~+TXFEixnTw)VFoX-_grPOAIPC7nZ!~rJc6+LZr%yT5^1I|6F z7B*J3ljs}b>_F)GsRyHy4q>pK;wY1Tnt}>`9tWk&go11n5y?~riSLt(Xb;&Gk{9uC9rh<4Hu|p}y@EB;@zoLJ6+0SAk!kR69d{Y`{=tOLDDUO8U zaz%!o$;FeL&pJZ2weY^n_(Qou2EpNaqem3-5>QFGoH;yuSBei4L@4R?CZ5zrz#Ys+ z%saZ*m|=Qm;mBrWiTwc!Tv(|XhnQI<%zJoT&rrLlP--eMlE`K9aimj#%!VjTFj1qH zT@@-ds~yKwuPRHHVW};_*y@oqYaS(n&MZodFiu6pByBV1=c==goiHTSD|79vx61%$ z2t=3(lFAO{wCTPXDxFSG#Sot#FRZakAT#V-Ob8V7OfjDA7zxsdR?H~Ps`cL|##eT(^<sGe21(=Gp&+YZ_$Wg@gSiUL1B#e^#9iJc`s@ zU4Z_CGZuJ=(U&_{;>v!D$CHh|>f?t$y5WhmqQBP)a^--HOX_8l(T z=lVu?H-V~hmjNsK9lz^;7VXvi?p%#4**{*i9}mwJ{f>VWINF8hY<=bN>V=mp9i71% zU9Qfuh`(z7U6$XKeI%;7T5a8xR|2l)-*5R{*~`YN%keqXHK)n-h>v`-T3!depkBqaRTb~@2TVGdwyQ7Od7CqcjNC6 zccDW4Evwb;>HcWNHu#_;EG zj)vvaR&l-DdfGo9h2NWKr2V3<1NHm?AnI}C{M8AD|D$z{bs%01ADREssNwIbW2ghg zbjx4g&+BIy{@3stxcYMZuI#k@)ikXCU6;Y|7l-Q0@i`pbYE6cJD~~_nvL|AFfka2O6TI+yk&~-w_xB$d+z@P|X^E zC2rlX#g7wiJ+H+FgXM^e8*XfpD0{DufG9u+wgs7q#C8`0eoHK z@@jQsKui`cU)JK=h0BAr_$k8Ww_3c5#%e76d~7YkLIF{~Dw~FY;BNNtD^U4Lw6-lE zrq?1Y6c95G!!wNWlfq%+%lSJF-zU~HaNU>q%FeCFuATWcK)Pq*TyHIzrP{~F+Fe@9(Bd`jb6#9q5k zv10T$g-5dgt02&RtJC`!@JG`7LoL5u^jZ5ytb(6t{6x`NXV0%JeSN&WtnsfNtdHkE zT6}%nHo<{M`p%T=%Osqtcl$}O>uU<|5nHb=PSkR$F{Xa{QSi$&{?&u^-?4tc;_K(j zhmIm=Bk+;K)ru>DKhpQMJR>>t2=w35^hd~he9u<(sjNs8O2rc19O8GaSZv98Yu3hA zu2^>-zo3nsQv;p5q^c>Iiw&o9gYk4sKRn0c- bcq 3: + return a + + annot_ret('')""") + assert [d.name for d in jedi.Script(source, ).goto_definitions()] == ['str'] + + source = dedent("""\ + def annot(a:int): + return a + + annot('')""") + + assert [d.name for d in jedi.Script(source, ).goto_definitions()] == ['int'] + + +@pytest.mark.skipif('sys.version_info[0] < 3') +@pytest.mark.parametrize('reference', [ + 'assert 1', + '1', + 'def x(): pass', + '1, 2', + r'1\n' +]) +def test_illegal_forward_references(reference): + source = 'def foo(bar: "%s"): bar' % reference + + assert not jedi.Script(source).goto_definitions() + + +@pytest.mark.skipif('sys.version_info[0] < 3') +def test_lambda_forward_references(): + source = 'def foo(bar: "lambda: 3"): bar' + + # For now just receiving the 3 is ok. I'm doubting that this is what we + # want. We also execute functions. Should we only execute classes? + assert jedi.Script(source).goto_definitions() diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_buildout_detection.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_buildout_detection.py new file mode 100644 index 0000000..bb65201 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_buildout_detection.py @@ -0,0 +1,90 @@ +import os +from textwrap import dedent + +from jedi import Script +from jedi.evaluate.sys_path import (_get_parent_dir_with_file, + _get_buildout_script_paths, + check_sys_path_modifications) + +from ..helpers import cwd_at + + +def check_module_test(code): + module_context = Script(code)._get_module() + return check_sys_path_modifications(module_context) + + +@cwd_at('test/test_evaluate/buildout_project/src/proj_name') +def test_parent_dir_with_file(): + parent = _get_parent_dir_with_file( + os.path.abspath(os.curdir), 'buildout.cfg') + assert parent is not None + assert parent.endswith(os.path.join('test', 'test_evaluate', 'buildout_project')) + + +@cwd_at('test/test_evaluate/buildout_project/src/proj_name') +def test_buildout_detection(): + scripts = _get_buildout_script_paths(os.path.abspath('./module_name.py')) + assert len(scripts) == 1 + curdir = os.path.abspath(os.curdir) + appdir_path = os.path.normpath(os.path.join(curdir, '../../bin/app')) + assert scripts[0] == appdir_path + + +def test_append_on_non_sys_path(): + code = dedent(""" + class Dummy(object): + path = [] + + d = Dummy() + d.path.append('foo')""" + ) + + paths = check_module_test(code) + assert not paths + assert 'foo' not in paths + + +def test_path_from_invalid_sys_path_assignment(): + code = dedent(""" + import sys + sys.path = 'invalid'""" + ) + + paths = check_module_test(code) + assert not paths + assert 'invalid' not in paths + + +@cwd_at('test/test_evaluate/buildout_project/src/proj_name/') +def test_sys_path_with_modifications(): + code = dedent(""" + import os + """) + + path = os.path.abspath(os.path.join(os.curdir, 'module_name.py')) + paths = Script(code, path=path)._evaluator.project.sys_path + assert '/tmp/.buildout/eggs/important_package.egg' in paths + + +def test_path_from_sys_path_assignment(): + code = dedent(""" + #!/usr/bin/python + + import sys + sys.path[0:0] = [ + '/usr/lib/python3.4/site-packages', + '/home/test/.buildout/eggs/important_package.egg' + ] + + path[0:0] = [1] + + import important_package + + if __name__ == '__main__': + sys.exit(important_package.main())""" + ) + + paths = check_module_test(code) + assert 1 not in paths + assert '/home/test/.buildout/eggs/important_package.egg' in paths diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_compiled.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_compiled.py new file mode 100644 index 0000000..44aef93 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_compiled.py @@ -0,0 +1,100 @@ +from textwrap import dedent + +import parso + +from jedi._compatibility import builtins, is_py3 +from jedi.evaluate import compiled +from jedi.evaluate.context import instance +from jedi.evaluate.context.function import FunctionContext +from jedi.evaluate import Evaluator +from jedi.evaluate.project import Project +from jedi.parser_utils import clean_scope_docstring +from jedi import Script + + +def _evaluator(): + return Evaluator(parso.load_grammar(), Project()) + + +def test_simple(): + e = _evaluator() + bltn = compiled.CompiledObject(e, builtins) + obj = compiled.CompiledObject(e, '_str_', bltn) + upper, = obj.py__getattribute__('upper') + objs = list(upper.execute_evaluated()) + assert len(objs) == 1 + assert isinstance(objs[0], instance.CompiledInstance) + + +def test_fake_loading(): + e = _evaluator() + assert isinstance(compiled.create(e, next), FunctionContext) + + builtin = compiled.get_special_object(e, 'BUILTINS') + string, = builtin.py__getattribute__('str') + from_name = compiled._create_from_name(e, builtin, string, '__init__') + assert isinstance(from_name, FunctionContext) + + +def test_fake_docstr(): + node = compiled.create(_evaluator(), next).tree_node + assert clean_scope_docstring(node) == next.__doc__ + + +def test_parse_function_doc_illegal_docstr(): + docstr = """ + test_func(o + + doesn't have a closing bracket. + """ + assert ('', '') == compiled._parse_function_doc(docstr) + + +def test_doc(): + """ + Even CompiledObject docs always return empty docstrings - not None, that's + just a Jedi API definition. + """ + obj = compiled.CompiledObject(_evaluator(), ''.__getnewargs__) + assert obj.py__doc__() == '' + + +def test_string_literals(): + def typ(string): + d = Script("a = %s; a" % string).goto_definitions()[0] + return d.name + + assert typ('""') == 'str' + assert typ('r""') == 'str' + if is_py3: + assert typ('br""') == 'bytes' + assert typ('b""') == 'bytes' + assert typ('u""') == 'str' + else: + assert typ('b""') == 'str' + assert typ('u""') == 'unicode' + + +def test_method_completion(): + code = dedent(''' + class Foo: + def bar(self): + pass + + foo = Foo() + foo.bar.__func__''') + if is_py3: + result = [] + else: + result = ['__func__'] + assert [c.name for c in Script(code).completions()] == result + + +def test_time_docstring(): + import time + comp, = Script('import time\ntime.sleep').completions() + assert comp.docstring() == time.sleep.__doc__ + + +def test_dict_values(): + assert Script('import sys\nsys.modules["alshdb;lasdhf"]').goto_definitions() diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_context.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_context.py new file mode 100644 index 0000000..178b879 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_context.py @@ -0,0 +1,10 @@ +from jedi import Script + + +def test_module_attributes(): + def_, = Script('__name__').completions() + assert def_.name == '__name__' + assert def_.line == None + assert def_.column == None + str_, = def_._goto_definitions() + assert str_.name == 'str' diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_docstring.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_docstring.py new file mode 100644 index 0000000..b1676ab --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_docstring.py @@ -0,0 +1,331 @@ +""" +Testing of docstring related issues and especially ``jedi.docstrings``. +""" + +from textwrap import dedent +import jedi +import pytest +from ..helpers import unittest + +try: + import numpydoc # NOQA +except ImportError: + numpydoc_unavailable = True +else: + numpydoc_unavailable = False + +try: + import numpy +except ImportError: + numpy_unavailable = True +else: + numpy_unavailable = False + + +class TestDocstring(unittest.TestCase): + def test_function_doc(self): + defs = jedi.Script(""" + def func(): + '''Docstring of `func`.''' + func""").goto_definitions() + self.assertEqual(defs[0].docstring(), 'func()\n\nDocstring of `func`.') + + def test_class_doc(self): + defs = jedi.Script(""" + class TestClass(): + '''Docstring of `TestClass`.''' + TestClass""").goto_definitions() + self.assertEqual(defs[0].docstring(), 'Docstring of `TestClass`.') + + def test_instance_doc(self): + defs = jedi.Script(""" + class TestClass(): + '''Docstring of `TestClass`.''' + tc = TestClass() + tc""").goto_definitions() + self.assertEqual(defs[0].docstring(), 'Docstring of `TestClass`.') + + @unittest.skip('need evaluator class for that') + def test_attribute_docstring(self): + defs = jedi.Script(""" + x = None + '''Docstring of `x`.''' + x""").goto_definitions() + self.assertEqual(defs[0].docstring(), 'Docstring of `x`.') + + @unittest.skip('need evaluator class for that') + def test_multiple_docstrings(self): + defs = jedi.Script(""" + def func(): + '''Original docstring.''' + x = func + '''Docstring of `x`.''' + x""").goto_definitions() + docs = [d.docstring() for d in defs] + self.assertEqual(docs, ['Original docstring.', 'Docstring of `x`.']) + + def test_completion(self): + assert jedi.Script(''' + class DocstringCompletion(): + #? [] + """ asdfas """''').completions() + + def test_docstrings_type_dotted_import(self): + s = """ + def func(arg): + ''' + :type arg: random.Random + ''' + arg.""" + names = [c.name for c in jedi.Script(s).completions()] + assert 'seed' in names + + def test_docstrings_param_type(self): + s = """ + def func(arg): + ''' + :param str arg: some description + ''' + arg.""" + names = [c.name for c in jedi.Script(s).completions()] + assert 'join' in names + + def test_docstrings_type_str(self): + s = """ + def func(arg): + ''' + :type arg: str + ''' + arg.""" + + names = [c.name for c in jedi.Script(s).completions()] + assert 'join' in names + + def test_docstring_instance(self): + # The types hint that it's a certain kind + s = dedent(""" + class A: + def __init__(self,a): + ''' + :type a: threading.Thread + ''' + + if a is not None: + a.start() + + self.a = a + + + def method_b(c): + ''' + :type c: A + ''' + + c.""") + + names = [c.name for c in jedi.Script(s).completions()] + assert 'a' in names + assert '__init__' in names + assert 'mro' not in names # Exists only for types. + + def test_docstring_keyword(self): + completions = jedi.Script('assert').completions() + self.assertIn('assert', completions[0].docstring()) + +# ---- Numpy Style Tests --- + +@pytest.mark.skipif(numpydoc_unavailable, + reason='numpydoc module is unavailable') +def test_numpydoc_parameters(): + s = dedent(''' + def foobar(x, y): + """ + Parameters + ---------- + x : int + y : str + """ + y.''') + names = [c.name for c in jedi.Script(s).completions()] + assert 'isupper' in names + assert 'capitalize' in names + +@pytest.mark.skipif(numpydoc_unavailable, + reason='numpydoc module is unavailable') +def test_numpydoc_parameters_set_of_values(): + s = dedent(''' + def foobar(x, y): + """ + Parameters + ---------- + x : {'foo', 'bar', 100500}, optional + """ + x.''') + names = [c.name for c in jedi.Script(s).completions()] + assert 'isupper' in names + assert 'capitalize' in names + assert 'numerator' in names + +@pytest.mark.skipif(numpydoc_unavailable, + reason='numpydoc module is unavailable') +def test_numpydoc_parameters_alternative_types(): + s = dedent(''' + def foobar(x, y): + """ + Parameters + ---------- + x : int or str or list + """ + x.''') + names = [c.name for c in jedi.Script(s).completions()] + assert 'isupper' in names + assert 'capitalize' in names + assert 'numerator' in names + assert 'append' in names + +@pytest.mark.skipif(numpydoc_unavailable, + reason='numpydoc module is unavailable') +def test_numpydoc_returns(): + s = dedent(''' + def foobar(): + """ + Returns + ---------- + x : int + y : str + """ + return x + + def bazbiz(): + z = foobar() + z.''') + names = [c.name for c in jedi.Script(s).completions()] + assert 'isupper' in names + assert 'capitalize' in names + assert 'numerator' in names + +@pytest.mark.skipif(numpydoc_unavailable, + reason='numpydoc module is unavailable') +def test_numpydoc_returns_set_of_values(): + s = dedent(''' + def foobar(): + """ + Returns + ---------- + x : {'foo', 'bar', 100500} + """ + return x + + def bazbiz(): + z = foobar() + z.''') + names = [c.name for c in jedi.Script(s).completions()] + assert 'isupper' in names + assert 'capitalize' in names + assert 'numerator' in names + +@pytest.mark.skipif(numpydoc_unavailable, + reason='numpydoc module is unavailable') +def test_numpydoc_returns_alternative_types(): + s = dedent(''' + def foobar(): + """ + Returns + ---------- + int or list of str + """ + return x + + def bazbiz(): + z = foobar() + z.''') + names = [c.name for c in jedi.Script(s).completions()] + assert 'isupper' not in names + assert 'capitalize' not in names + assert 'numerator' in names + assert 'append' in names + +@pytest.mark.skipif(numpydoc_unavailable, + reason='numpydoc module is unavailable') +def test_numpydoc_returns_list_of(): + s = dedent(''' + def foobar(): + """ + Returns + ---------- + list of str + """ + return x + + def bazbiz(): + z = foobar() + z.''') + names = [c.name for c in jedi.Script(s).completions()] + assert 'append' in names + assert 'isupper' not in names + assert 'capitalize' not in names + +@pytest.mark.skipif(numpydoc_unavailable, + reason='numpydoc module is unavailable') +def test_numpydoc_returns_obj(): + s = dedent(''' + def foobar(x, y): + """ + Returns + ---------- + int or random.Random + """ + return x + y + + def bazbiz(): + z = foobar(x, y) + z.''') + script = jedi.Script(s) + names = [c.name for c in script.completions()] + assert 'numerator' in names + assert 'seed' in names + +@pytest.mark.skipif(numpydoc_unavailable, + reason='numpydoc module is unavailable') +def test_numpydoc_yields(): + s = dedent(''' + def foobar(): + """ + Yields + ---------- + x : int + y : str + """ + return x + + def bazbiz(): + z = foobar(): + z.''') + names = [c.name for c in jedi.Script(s).completions()] + print('names',names) + assert 'isupper' in names + assert 'capitalize' in names + assert 'numerator' in names + +@pytest.mark.skipif(numpydoc_unavailable or numpy_unavailable, + reason='numpydoc or numpy module is unavailable') +def test_numpy_returns(): + s = dedent(''' + import numpy + x = numpy.asarray([]) + x.d''') + names = [c.name for c in jedi.Script(s).completions()] + print(names) + assert 'diagonal' in names + +@pytest.mark.skipif(numpydoc_unavailable or numpy_unavailable, + reason='numpydoc or numpy module is unavailable') +def test_numpy_comp_returns(): + s = dedent(''' + import numpy + x = numpy.array([]) + x.d''') + names = [c.name for c in jedi.Script(s).completions()] + print(names) + assert 'diagonal' in names + diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_extension.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_extension.py new file mode 100644 index 0000000..83efc20 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_extension.py @@ -0,0 +1,57 @@ +""" +Test compiled module +""" +import os + +import jedi +from ..helpers import cwd_at +import pytest + + +def test_completions(): + s = jedi.Script('import _ctypes; _ctypes.') + assert len(s.completions()) >= 15 + + +def test_call_signatures_extension(): + if os.name == 'nt': + func = 'LoadLibrary' + params = 1 + else: + func = 'dlopen' + params = 2 + s = jedi.Script('import _ctypes; _ctypes.%s(' % (func,)) + sigs = s.call_signatures() + assert len(sigs) == 1 + assert len(sigs[0].params) == params + + +def test_call_signatures_stdlib(): + s = jedi.Script('import math; math.cos(') + sigs = s.call_signatures() + assert len(sigs) == 1 + assert len(sigs[0].params) == 1 + + +# Check only on linux 64 bit platform and Python3.4. +@pytest.mark.skipif('sys.platform != "linux" or sys.maxsize <= 2**32 or sys.version_info[:2] != (3, 4)') +@cwd_at('test/test_evaluate') +def test_init_extension_module(): + """ + ``__init__`` extension modules are also packages and Jedi should understand + that. + + Originally coming from #472. + + This test was built by the module.c and setup.py combination you can find + in the init_extension_module folder. You can easily build the + `__init__.cpython-34m.so` by compiling it (create a virtualenv and run + `setup.py install`. + + This is also why this test only runs on certain systems (and Python 3.4). + """ + s = jedi.Script('import init_extension_module as i\ni.', path='not_existing.py') + assert 'foo' in [c.name for c in s.completions()] + + s = jedi.Script('from init_extension_module import foo\nfoo', path='not_existing.py') + assert ['foo'] == [c.name for c in s.completions()] diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_helpers.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_helpers.py new file mode 100644 index 0000000..4484c2b --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_helpers.py @@ -0,0 +1,16 @@ +from textwrap import dedent + +from jedi import names +from jedi.evaluate import helpers + + +def test_call_of_leaf_in_brackets(): + s = dedent(""" + x = 1 + type(x) + """) + last_x = names(s, references=True, definitions=False)[-1] + name = last_x._name.tree_name + + call = helpers.call_of_leaf(name) + assert call == name diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_implicit_namespace_package.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_implicit_namespace_package.py new file mode 100644 index 0000000..9bc9098 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_implicit_namespace_package.py @@ -0,0 +1,58 @@ +from os.path import dirname, join + +import jedi +import pytest + + +@pytest.mark.skipif('sys.version_info[:2] < (3,4)') +def test_implicit_namespace_package(): + sys_path = [join(dirname(__file__), d) + for d in ['implicit_namespace_package/ns1', 'implicit_namespace_package/ns2']] + + def script_with_path(*args, **kwargs): + return jedi.Script(sys_path=sys_path, *args, **kwargs) + + # goto definition + assert script_with_path('from pkg import ns1_file').goto_definitions() + assert script_with_path('from pkg import ns2_file').goto_definitions() + assert not script_with_path('from pkg import ns3_file').goto_definitions() + + # goto assignment + tests = { + 'from pkg.ns2_file import foo': 'ns2_file!', + 'from pkg.ns1_file import foo': 'ns1_file!', + } + for source, solution in tests.items(): + ass = script_with_path(source).goto_assignments() + assert len(ass) == 1 + assert ass[0].description == "foo = '%s'" % solution + + # completion + completions = script_with_path('from pkg import ').completions() + names = [c.name for c in completions] + compare = ['ns1_file', 'ns2_file'] + # must at least contain these items, other items are not important + assert set(compare) == set(names) + + tests = { + 'from pkg import ns2_file as x': 'ns2_file!', + 'from pkg import ns1_file as x': 'ns1_file!' + } + for source, solution in tests.items(): + for c in script_with_path(source + '; x.').completions(): + if c.name == 'foo': + completion = c + solution = "foo = '%s'" % solution + assert completion.description == solution + +@pytest.mark.skipif('sys.version_info[:2] < (3,4)') +def test_implicit_nested_namespace_package(): + CODE = 'from implicit_nested_namespaces.namespace.pkg.module import CONST' + + sys_path = [dirname(__file__)] + + script = jedi.Script(sys_path=sys_path, source=CODE, line=1, column=61) + + result = script.goto_definitions() + + assert len(result) == 1 diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_imports.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_imports.py new file mode 100644 index 0000000..a41d4f0 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_imports.py @@ -0,0 +1,237 @@ +""" +Tests of various import related things that could not be tested with "Black Box +Tests". +""" + +import os +import sys + +import pytest + +import jedi +from jedi._compatibility import find_module_py33, find_module +from ..helpers import cwd_at + +from jedi import Script +from jedi._compatibility import is_py26 + + +@pytest.mark.skipif('sys.version_info < (3,3)') +def test_find_module_py33(): + """Needs to work like the old find_module.""" + assert find_module_py33('_io') == (None, '_io', False) + + +def test_find_module_package(): + file, path, is_package = find_module('json') + assert file is None + assert path.endswith('json') + assert is_package is True + + +def test_find_module_not_package(): + file, path, is_package = find_module('io') + assert file is not None + assert path.endswith('io.py') + assert is_package is False + + +def test_find_module_package_zipped(): + if 'zipped_imports/pkg.zip' not in sys.path: + sys.path.append(os.path.join(os.path.dirname(__file__), + 'zipped_imports/pkg.zip')) + file, path, is_package = find_module('pkg') + assert file is not None + assert path.endswith('pkg.zip') + assert is_package is True + assert len(jedi.Script('import pkg; pkg.mod', 1, 19).completions()) == 1 + + +@pytest.mark.skipif('sys.version_info < (2,7)') +def test_find_module_not_package_zipped(): + if 'zipped_imports/not_pkg.zip' not in sys.path: + sys.path.append(os.path.join(os.path.dirname(__file__), + 'zipped_imports/not_pkg.zip')) + file, path, is_package = find_module('not_pkg') + assert file is not None + assert path.endswith('not_pkg.zip') + assert is_package is False + assert len( + jedi.Script('import not_pkg; not_pkg.val', 1, 27).completions()) == 1 + + +@cwd_at('test/test_evaluate/not_in_sys_path/pkg') +def test_import_not_in_sys_path(): + """ + non-direct imports (not in sys.path) + """ + a = jedi.Script(path='module.py', line=5).goto_definitions() + assert a[0].name == 'int' + + a = jedi.Script(path='module.py', line=6).goto_definitions() + assert a[0].name == 'str' + a = jedi.Script(path='module.py', line=7).goto_definitions() + assert a[0].name == 'str' + + +@pytest.mark.parametrize("script,name", [ + ("from flask.ext import foo; foo.", "Foo"), # flask_foo.py + ("from flask.ext import bar; bar.", "Bar"), # flaskext/bar.py + ("from flask.ext import baz; baz.", "Baz"), # flask_baz/__init__.py + ("from flask.ext import moo; moo.", "Moo"), # flaskext/moo/__init__.py + ("from flask.ext.", "foo"), + ("from flask.ext.", "bar"), + ("from flask.ext.", "baz"), + ("from flask.ext.", "moo"), + pytest.mark.xfail(("import flask.ext.foo; flask.ext.foo.", "Foo")), + pytest.mark.xfail(("import flask.ext.bar; flask.ext.bar.", "Foo")), + pytest.mark.xfail(("import flask.ext.baz; flask.ext.baz.", "Foo")), + pytest.mark.xfail(("import flask.ext.moo; flask.ext.moo.", "Foo")), +]) +def test_flask_ext(script, name): + """flask.ext.foo is really imported from flaskext.foo or flask_foo. + """ + path = os.path.join(os.path.dirname(__file__), 'flask-site-packages') + completions = jedi.Script(script, sys_path=[path]).completions() + assert name in [c.name for c in completions] + + +@cwd_at('test/test_evaluate/') +def test_not_importable_file(): + src = 'import not_importable_file as x; x.' + assert not jedi.Script(src, path='example.py').completions() + + +def test_import_unique(): + src = "import os; os.path" + defs = jedi.Script(src, path='example.py').goto_definitions() + parent_contexts = [d._name._context for d in defs] + assert len(parent_contexts) == len(set(parent_contexts)) + + +def test_cache_works_with_sys_path_param(tmpdir): + foo_path = tmpdir.join('foo') + bar_path = tmpdir.join('bar') + foo_path.join('module.py').write('foo = 123', ensure=True) + bar_path.join('module.py').write('bar = 123', ensure=True) + foo_completions = jedi.Script('import module; module.', + sys_path=[foo_path.strpath]).completions() + bar_completions = jedi.Script('import module; module.', + sys_path=[bar_path.strpath]).completions() + assert 'foo' in [c.name for c in foo_completions] + assert 'bar' not in [c.name for c in foo_completions] + + assert 'bar' in [c.name for c in bar_completions] + assert 'foo' not in [c.name for c in bar_completions] + + +def test_import_completion_docstring(): + import abc + s = jedi.Script('"""test"""\nimport ab') + completions = s.completions() + assert len(completions) == 1 + assert completions[0].docstring(fast=False) == abc.__doc__ + + # However for performance reasons not all modules are loaded and the + # docstring is empty in this case. + assert completions[0].docstring() == '' + + +def test_goto_definition_on_import(): + assert Script("import sys_blabla", 1, 8).goto_definitions() == [] + assert len(Script("import sys", 1, 8).goto_definitions()) == 1 + + +@cwd_at('jedi') +def test_complete_on_empty_import(): + assert Script("from datetime import").completions()[0].name == 'import' + # should just list the files in the directory + assert 10 < len(Script("from .", path='whatever.py').completions()) < 30 + + # Global import + assert len(Script("from . import", 1, 5, 'whatever.py').completions()) > 30 + # relative import + assert 10 < len(Script("from . import", 1, 6, 'whatever.py').completions()) < 30 + + # Global import + assert len(Script("from . import classes", 1, 5, 'whatever.py').completions()) > 30 + # relative import + assert 10 < len(Script("from . import classes", 1, 6, 'whatever.py').completions()) < 30 + + wanted = set(['ImportError', 'import', 'ImportWarning']) + assert set([c.name for c in Script("import").completions()]) == wanted + if not is_py26: # python 2.6 doesn't always come with a library `import*`. + assert len(Script("import import", path='').completions()) > 0 + + # 111 + assert Script("from datetime import").completions()[0].name == 'import' + assert Script("from datetime import ").completions() + + +def test_imports_on_global_namespace_without_path(): + """If the path is None, there shouldn't be any import problem""" + completions = Script("import operator").completions() + assert [c.name for c in completions] == ['operator'] + completions = Script("import operator", path='example.py').completions() + assert [c.name for c in completions] == ['operator'] + + # the first one has a path the second doesn't + completions = Script("import keyword", path='example.py').completions() + assert [c.name for c in completions] == ['keyword'] + completions = Script("import keyword").completions() + assert [c.name for c in completions] == ['keyword'] + + +def test_named_import(): + """named import - jedi-vim issue #8""" + s = "import time as dt" + assert len(Script(s, 1, 15, '/').goto_definitions()) == 1 + assert len(Script(s, 1, 10, '/').goto_definitions()) == 1 + + +@pytest.mark.skipif('True', reason='The nested import stuff is still very messy.') +def test_goto_following_on_imports(): + s = "import multiprocessing.dummy; multiprocessing.dummy" + g = Script(s).goto_assignments() + assert len(g) == 1 + assert (g[0].line, g[0].column) != (0, 0) + + +def test_os_after_from(): + def check(source, result, column=None): + completions = Script(source, column=column).completions() + assert [c.name for c in completions] == result + + check('\nfrom os. ', ['path']) + check('\nfrom os ', ['import']) + check('from os ', ['import']) + check('\nfrom os import whatever', ['import'], len('from os im')) + + check('from os\\\n', ['import']) + check('from os \\\n', ['import']) + + +def test_os_issues(): + def import_names(*args, **kwargs): + return [d.name for d in jedi.Script(*args, **kwargs).completions()] + + # Github issue #759 + s = 'import os, s' + assert 'sys' in import_names(s) + assert 'path' not in import_names(s, column=len(s) - 1) + assert 'os' in import_names(s, column=len(s) - 3) + + # Some more checks + s = 'from os import path, e' + assert 'environ' in import_names(s) + assert 'json' not in import_names(s, column=len(s) - 1) + assert 'environ' in import_names(s, column=len(s) - 1) + assert 'path' in import_names(s, column=len(s) - 3) + + +def test_path_issues(): + """ + See pull request #684 for details. + """ + source = '''from datetime import ''' + assert jedi.Script(source).completions() diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_literals.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_literals.py new file mode 100644 index 0000000..403020a --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_literals.py @@ -0,0 +1,41 @@ +import pytest + +import jedi +from jedi._compatibility import py_version, unicode + + +def _eval_literal(code): + def_, = jedi.Script(code).goto_definitions() + return def_._name._context.obj + + +@pytest.mark.skipif('sys.version_info[:2] < (3, 6)') +def test_f_strings(): + """ + f literals are not really supported in Jedi. They just get ignored and an + empty string is returned. + """ + assert _eval_literal('f"asdf"') == '' + assert _eval_literal('f"{asdf}"') == '' + assert _eval_literal('F"{asdf}"') == '' + assert _eval_literal('rF"{asdf}"') == '' + + +def test_rb_strings(): + assert _eval_literal('br"asdf"') == b'asdf' + obj = _eval_literal('rb"asdf"') + if py_version < 33: + # rb is not valid in Python 2. Due to error recovery we just get a + # string. + assert obj == 'asdf' + else: + assert obj == b'asdf' + + +@pytest.mark.skipif('sys.version_info[:2] < (3, 6)') +def test_thousand_separators(): + assert _eval_literal('1_2_3') == 123 + assert _eval_literal('123_456_789') == 123456789 + assert _eval_literal('0x3_4') == 52 + assert _eval_literal('0b1_0') == 2 + assert _eval_literal('0o1_0') == 8 diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_mixed.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_mixed.py new file mode 100644 index 0000000..5940fe6 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_mixed.py @@ -0,0 +1,7 @@ +import jedi + + +def test_on_code(): + from functools import wraps + i = jedi.Interpreter("wraps.__code__", [{'wraps':wraps}]) + assert i.goto_definitions() diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_namespace_package.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_namespace_package.py new file mode 100644 index 0000000..9d3aeb7 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_namespace_package.py @@ -0,0 +1,65 @@ +import jedi +from os.path import dirname, join + + +def test_namespace_package(): + sys_path = [join(dirname(__file__), d) + for d in ['namespace_package/ns1', 'namespace_package/ns2']] + + def script_with_path(*args, **kwargs): + return jedi.Script(sys_path=sys_path, *args, **kwargs) + + # goto definition + assert script_with_path('from pkg import ns1_file').goto_definitions() + assert script_with_path('from pkg import ns2_file').goto_definitions() + assert not script_with_path('from pkg import ns3_file').goto_definitions() + + # goto assignment + tests = { + 'from pkg.ns2_folder.nested import foo': 'nested!', + 'from pkg.ns2_folder import foo': 'ns2_folder!', + 'from pkg.ns2_file import foo': 'ns2_file!', + 'from pkg.ns1_folder import foo': 'ns1_folder!', + 'from pkg.ns1_file import foo': 'ns1_file!', + 'from pkg import foo': 'ns1!', + } + for source, solution in tests.items(): + ass = script_with_path(source).goto_assignments() + assert len(ass) == 1 + assert ass[0].description == "foo = '%s'" % solution + + # completion + completions = script_with_path('from pkg import ').completions() + names = [str(c.name) for c in completions] # str because of unicode + compare = ['foo', 'ns1_file', 'ns1_folder', 'ns2_folder', 'ns2_file', + 'pkg_resources', 'pkgutil', '__name__', '__path__', + '__package__', '__file__', '__doc__'] + # must at least contain these items, other items are not important + assert set(compare) == set(names) + + tests = { + 'from pkg import ns2_folder as x': 'ns2_folder!', + 'from pkg import ns2_file as x': 'ns2_file!', + 'from pkg.ns2_folder import nested as x': 'nested!', + 'from pkg import ns1_folder as x': 'ns1_folder!', + 'from pkg import ns1_file as x': 'ns1_file!', + 'import pkg as x': 'ns1!', + } + for source, solution in tests.items(): + for c in script_with_path(source + '; x.').completions(): + if c.name == 'foo': + completion = c + solution = "foo = '%s'" % solution + assert completion.description == solution + + +def test_nested_namespace_package(): + code = 'from nested_namespaces.namespace.pkg import CONST' + + sys_path = [dirname(__file__)] + + script = jedi.Script(sys_path=sys_path, source=code, line=1, column=45) + + result = script.goto_definitions() + + assert len(result) == 1 diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_precedence.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_precedence.py new file mode 100644 index 0000000..f5e0770 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_precedence.py @@ -0,0 +1,17 @@ +from jedi.evaluate.compiled import CompiledObject +from jedi import Script + +import pytest + + +@pytest.mark.skipif('sys.version_info[0] < 3') # Ellipsis does not exists in 2 +@pytest.mark.parametrize('source', [ + '1 == 1', + '1.0 == 1', + '... == ...' +]) +def test_equals(source): + script = Script(source) + node = script._get_module_node().children[0] + first, = script._get_module().eval_node(node) + assert isinstance(first, CompiledObject) and first.obj is True diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_pyc.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_pyc.py new file mode 100644 index 0000000..c101da1 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_pyc.py @@ -0,0 +1,64 @@ +""" +Test completions from *.pyc files: + + - generate a dummy python module + - compile the dummy module to generate a *.pyc + - delete the pure python dummy module + - try jedi on the generated *.pyc +""" +import os +import shutil +import sys + +import pytest + +import jedi +from ..helpers import cwd_at + + +SRC = """class Foo: + pass + +class Bar: + pass +""" + + +def generate_pyc(): + os.mkdir("dummy_package") + with open("dummy_package/__init__.py", 'w'): + pass + with open("dummy_package/dummy.py", 'w') as f: + f.write(SRC) + import compileall + compileall.compile_file("dummy_package/dummy.py") + os.remove("dummy_package/dummy.py") + + if sys.version_info[0] == 3: + # Python3 specific: + # To import pyc modules, we must move them out of the __pycache__ + # directory and rename them to remove ".cpython-%s%d" + # see: http://stackoverflow.com/questions/11648440/python-does-not-detect-pyc-files + for f in os.listdir("dummy_package/__pycache__"): + dst = f.replace('.cpython-%s%s' % sys.version_info[:2], "") + dst = os.path.join("dummy_package", dst) + shutil.copy(os.path.join("dummy_package/__pycache__", f), dst) + + +# Python 2.6 does not necessarily come with `compileall.compile_file`. +@pytest.mark.skipif("sys.version_info > (2,6)") +@cwd_at('test/test_evaluate') +def test_pyc(): + """ + The list of completion must be greater than 2. + """ + try: + generate_pyc() + s = jedi.Script("from dummy_package import dummy; dummy.", path='blub.py') + assert len(s.completions()) >= 2 + finally: + shutil.rmtree("dummy_package") + + +if __name__ == "__main__": + test_pyc() diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_representation.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_representation.py new file mode 100644 index 0000000..1323a9c --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_representation.py @@ -0,0 +1,36 @@ +from textwrap import dedent + +from jedi import Script + + +def get_definition_and_evaluator(source): + first, = Script(dedent(source)).goto_definitions() + return first._name._context, first._evaluator + + +def test_function_execution(): + """ + We've been having an issue of a mutable list that was changed inside the + function execution. Test if an execution always returns the same result. + """ + + s = """ + def x(): + return str() + x""" + func, evaluator = get_definition_and_evaluator(s) + # Now just use the internals of the result (easiest way to get a fully + # usable function). + # Should return the same result both times. + assert len(func.execute_evaluated()) == 1 + assert len(func.execute_evaluated()) == 1 + + +def test_class_mro(): + s = """ + class X(object): + pass + X""" + cls, evaluator = get_definition_and_evaluator(s) + mro = cls.py__mro__() + assert [c.name.string_name for c in mro] == ['X', 'object'] diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_stdlib.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_stdlib.py new file mode 100644 index 0000000..7347d84 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_stdlib.py @@ -0,0 +1,77 @@ +""" +Tests of various stdlib related things that could not be tested +with "Black Box Tests". +""" +from textwrap import dedent + +import pytest +from jedi import Script +from jedi._compatibility import is_py26 + +# The namedtuple is different for different Python2.7 versions. Some versions +# are missing the attribute `_class_template`. +pytestmark = pytest.mark.skipif('sys.version_info[0] < 3') + + +@pytest.mark.parametrize(['letter', 'expected'], [ + ('n', ['name']), + ('s', ['smart']), +]) +def test_namedtuple_str(letter, expected): + source = dedent("""\ + import collections + Person = collections.namedtuple('Person', 'name smart') + dave = Person('Dave', False) + dave.%s""") % letter + result = Script(source).completions() + completions = set(r.name for r in result) + if is_py26: + assert completions == set() + else: + assert completions == set(expected) + + +def test_namedtuple_list(): + source = dedent("""\ + import collections + Cat = collections.namedtuple('Person', ['legs', u'length', 'large']) + garfield = Cat(4, '85cm', True) + garfield.l""") + result = Script(source).completions() + completions = set(r.name for r in result) + if is_py26: + assert completions == set() + else: + assert completions == set(['legs', 'length', 'large']) + + +def test_namedtuple_content(): + source = dedent("""\ + import collections + Foo = collections.namedtuple('Foo', ['bar', 'baz']) + named = Foo(baz=4, bar=3.0) + unnamed = Foo(4, '') + """) + + def d(source): + x, = Script(source).goto_definitions() + return x.name + + assert d(source + 'unnamed.bar') == 'int' + assert d(source + 'unnamed.baz') == 'str' + assert d(source + 'named.bar') == 'float' + assert d(source + 'named.baz') == 'int' + + +def test_nested_namedtuples(): + """ + From issue #730. + """ + s = Script(dedent(''' + import collections + Dataset = collections.namedtuple('Dataset', ['data']) + Datasets = collections.namedtuple('Datasets', ['train']) + train_x = Datasets(train=Dataset('data_value')) + train_x.train.''' + )) + assert 'data' in [c.name for c in s.completions()] diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_sys_path.py b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_sys_path.py new file mode 100644 index 0000000..7bedfa1 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/test_sys_path.py @@ -0,0 +1,58 @@ +import os +from glob import glob +import sys + +import pytest + +from jedi.evaluate import sys_path +from jedi import Script + + +def test_paths_from_assignment(): + def paths(src): + script = Script(src, path='/foo/bar.py') + expr_stmt = script._get_module_node().children[0] + return set(sys_path._paths_from_assignment(script._get_module(), expr_stmt)) + + assert paths('sys.path[0:0] = ["a"]') == set(['/foo/a']) + assert paths('sys.path = ["b", 1, x + 3, y, "c"]') == set(['/foo/b', '/foo/c']) + assert paths('sys.path = a = ["a"]') == set(['/foo/a']) + + # Fail for complicated examples. + assert paths('sys.path, other = ["a"], 2') == set() + + +# Currently venv site-packages resolution only seeks pythonX.Y/site-packages +# that belong to the same version as the interpreter to avoid issues with +# cross-version imports. "venvs/" dir contains "venv27" and "venv34" that +# mimic venvs created for py2.7 and py3.4 respectively. If test runner is +# invoked with one of those versions, the test below will be run for the +# matching directory. +CUR_DIR = os.path.dirname(__file__) +VENVS = list(glob( + os.path.join(CUR_DIR, 'sample_venvs/venv%d%d' % sys.version_info[:2]))) + + +@pytest.mark.parametrize('venv', VENVS) +def test_get_venv_path(venv): + pjoin = os.path.join + venv_path = sys_path.get_venv_path(venv) + + site_pkgs = (glob(pjoin(venv, 'lib', 'python*', 'site-packages')) + + glob(pjoin(venv, 'lib', 'site-packages')))[0] + ETALON = [ + pjoin('/path', 'from', 'egg-link'), + pjoin(site_pkgs, '.', 'relative', 'egg-link', 'path'), + site_pkgs, + pjoin(site_pkgs, 'dir-from-foo-pth'), + ] + + # Ensure that pth and egg-link paths were added. + assert venv_path[:len(ETALON)] == ETALON + + # Ensure that none of venv dirs leaked to the interpreter. + assert not set(sys.path).intersection(ETALON) + + # Ensure that "import ..." lines were ignored. + assert pjoin('/path', 'from', 'smth.py') not in venv_path + assert pjoin('/path', 'from', 'smth.py:extend_path') not in venv_path diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/zipped_imports/not_pkg.zip b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/zipped_imports/not_pkg.zip new file mode 100644 index 0000000000000000000000000000000000000000..f1516a6aaf8a2bc2f646e122937b72555fdd010d GIT binary patch literal 204 zcmWIWW@Zs#-~htsdp>zEAOS800fxN%lK6t`biIPg&=iAanuJMIa6X07mLFiU0rr literal 0 HcmV?d00001 diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/zipped_imports/pkg.zip b/emacs/.emacs.d/anaconda-mode/0.1.9/jedi-0.11.1-py3.6.egg/test/test_evaluate/zipped_imports/pkg.zip new file mode 100644 index 0000000000000000000000000000000000000000..ec8eac4d89a29b59a8bf0f81e9094ae6f904e3f0 GIT binary patch literal 504 zcmWIWW@h1H00EJ`pFF?}D8a%Yz)+B#t{)n~!%+UCCme*oGKw$+0Ck8kZ~!5?4t}VP z`1s7c%#!$cy@E<~&8N@kp3v6{JaN`v^Q`AnFYQz3TQ`XsDH^4AS}t7~6T^D*<;R(o zGgY~^aUFAOivilj&LJ0I@LV70CUYQ0*v*0FT3)E#x%nxjIjK;a%YaT!fI3^-`;4Y< z=!Vb${S$uIPlN5hs?FTFvX~KUi$TDid(uD~Ksdmgkx7&pSE%p+Re*uRTSpKL2_p`8 z7(sL+LI~OY{0s=)OB#)!x>3RlyFnoDB0G^6#h`UigOEJW!2t7ofHx}}$eqkUcn(O5 HFoJjhA|ie< literal 0 HcmV?d00001 diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/EGG-INFO/DESCRIPTION.rst b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/EGG-INFO/DESCRIPTION.rst new file mode 100644 index 0000000..5540416 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/EGG-INFO/DESCRIPTION.rst @@ -0,0 +1,110 @@ +################################################################### +parso - A Python Parser +################################################################### + +.. image:: https://secure.travis-ci.org/davidhalter/parso.png?branch=master + :target: http://travis-ci.org/davidhalter/parso + :alt: Travis-CI build status + +.. image:: https://coveralls.io/repos/davidhalter/parso/badge.png?branch=master + :target: https://coveralls.io/r/davidhalter/parso + :alt: Coverage Status + +.. image:: https://raw.githubusercontent.com/davidhalter/parso/master/docs/_static/logo_characters.png + +Parso is a Python parser that supports error recovery and round-trip parsing +for different Python versions (in multiple Python versions). Parso is also able +to list multiple syntax errors in your python file. + +Parso has been battle-tested by jedi_. It was pulled out of jedi to be useful +for other projects as well. + +Parso consists of a small API to parse Python and analyse the syntax tree. + +A simple example: + +.. code-block:: python + + >>> import parso + >>> module = parso.parse('hello + 1', version="3.6") + >>> expr = module.children[0] + >>> expr + PythonNode(arith_expr, [, , ]) + >>> print(expr.get_code()) + hello + 1 + >>> name = expr.children[0] + >>> name + + >>> name.end_pos + (1, 5) + >>> expr.end_pos + (1, 9) + +To list multiple issues: + +.. code-block:: python + + >>> grammar = parso.load_grammar() + >>> module = grammar.parse('foo +\nbar\ncontinue') + >>> error1, error2 = grammar.iter_errors(module) + >>> error1.message + 'SyntaxError: invalid syntax' + >>> error2.message + "SyntaxError: 'continue' not properly in loop" + +Resources +========= + +- `Testing `_ +- `PyPI `_ +- `Docs `_ +- Uses `semantic versioning `_ + +Installation +============ + + pip install parso + +Future +====== + +- There will be better support for refactoring and comments. Stay tuned. +- There's a WIP PEP8 validator. It's however not in a good shape, yet. + +Known Issues +============ + +- `async`/`await` are already used as keywords in Python3.6. +- `from __future__ import print_function` is not ignored. + + +Acknowledgements +================ + +- Guido van Rossum (@gvanrossum) for creating the parser generator pgen2 + (originally used in lib2to3). +- `Salome Schneider `_ + for the extremely awesome parso logo. + + +.. _jedi: https://github.com/davidhalter/jedi + + +.. :changelog: + +Changelog +--------- + + +0.1.1 (2017-11-05) ++++++++++++++++++++ + +- Fixed a few bugs in the caching layer +- Added support for Python 3.7 + +0.1.0 (2017-09-04) ++++++++++++++++++++ + +- Pulling the library out of Jedi. Some APIs will definitely change. + + diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/EGG-INFO/PKG-INFO b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/EGG-INFO/PKG-INFO new file mode 100644 index 0000000..76f2b64 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/EGG-INFO/PKG-INFO @@ -0,0 +1,136 @@ +Metadata-Version: 2.0 +Name: parso +Version: 0.1.1 +Summary: A Python Parser +Home-page: https://github.com/davidhalter/parso +Author: David Halter +Author-email: davidhalter88@gmail.com +License: MIT +Keywords: python parser parsing +Platform: any +Classifier: Development Status :: 4 - Beta +Classifier: Environment :: Plugins +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: MIT License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 2.6 +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.3 +Classifier: Programming Language :: Python :: 3.4 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Classifier: Topic :: Text Editors :: Integrated Development Environments (IDE) +Classifier: Topic :: Utilities + +################################################################### +parso - A Python Parser +################################################################### + +.. image:: https://secure.travis-ci.org/davidhalter/parso.png?branch=master + :target: http://travis-ci.org/davidhalter/parso + :alt: Travis-CI build status + +.. image:: https://coveralls.io/repos/davidhalter/parso/badge.png?branch=master + :target: https://coveralls.io/r/davidhalter/parso + :alt: Coverage Status + +.. image:: https://raw.githubusercontent.com/davidhalter/parso/master/docs/_static/logo_characters.png + +Parso is a Python parser that supports error recovery and round-trip parsing +for different Python versions (in multiple Python versions). Parso is also able +to list multiple syntax errors in your python file. + +Parso has been battle-tested by jedi_. It was pulled out of jedi to be useful +for other projects as well. + +Parso consists of a small API to parse Python and analyse the syntax tree. + +A simple example: + +.. code-block:: python + + >>> import parso + >>> module = parso.parse('hello + 1', version="3.6") + >>> expr = module.children[0] + >>> expr + PythonNode(arith_expr, [, , ]) + >>> print(expr.get_code()) + hello + 1 + >>> name = expr.children[0] + >>> name + + >>> name.end_pos + (1, 5) + >>> expr.end_pos + (1, 9) + +To list multiple issues: + +.. code-block:: python + + >>> grammar = parso.load_grammar() + >>> module = grammar.parse('foo +\nbar\ncontinue') + >>> error1, error2 = grammar.iter_errors(module) + >>> error1.message + 'SyntaxError: invalid syntax' + >>> error2.message + "SyntaxError: 'continue' not properly in loop" + +Resources +========= + +- `Testing `_ +- `PyPI `_ +- `Docs `_ +- Uses `semantic versioning `_ + +Installation +============ + + pip install parso + +Future +====== + +- There will be better support for refactoring and comments. Stay tuned. +- There's a WIP PEP8 validator. It's however not in a good shape, yet. + +Known Issues +============ + +- `async`/`await` are already used as keywords in Python3.6. +- `from __future__ import print_function` is not ignored. + + +Acknowledgements +================ + +- Guido van Rossum (@gvanrossum) for creating the parser generator pgen2 + (originally used in lib2to3). +- `Salome Schneider `_ + for the extremely awesome parso logo. + + +.. _jedi: https://github.com/davidhalter/jedi + + +.. :changelog: + +Changelog +--------- + + +0.1.1 (2017-11-05) ++++++++++++++++++++ + +- Fixed a few bugs in the caching layer +- Added support for Python 3.7 + +0.1.0 (2017-09-04) ++++++++++++++++++++ + +- Pulling the library out of Jedi. Some APIs will definitely change. + + diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/EGG-INFO/RECORD b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/EGG-INFO/RECORD new file mode 100644 index 0000000..a4f1d34 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/EGG-INFO/RECORD @@ -0,0 +1,35 @@ +parso/__init__.py,sha256=Du_INrcX4c1WioBWBNyqyPgmGzcNREiFUt3HRDVLZQI,1607 +parso/_compatibility.py,sha256=34NVhrKOGJkuam2mOWAeR4X7xP8ZFAFgSWRaJuUCHzQ,3440 +parso/cache.py,sha256=eE2lzGWvzawqXVXaTm9vxNbIQ6Vp28RpnvbgoVkFiys,4791 +parso/grammar.py,sha256=lAIVmZeOkybhAbXVjGDVeRN5lzrBEnBBZ0HCAc2cIbo,10910 +parso/normalizer.py,sha256=lO3CBY4W0V-t_b8J4AbtKiDd_ug-6pbFnSUT5uObztY,5169 +parso/parser.py,sha256=u3ZD_OIODvuGfyDjI5kb-GlyxInILzpH0loUTXDGy88,3021 +parso/tree.py,sha256=e3BGIdcpfOYnL6oPPE1sFe3RoBFxEj9xjAXjdwwR4P8,11215 +parso/utils.py,sha256=MCNDj99AxLMSkQ7n6fwYvO-cpHHSSy5gwAQI7kA1LQE,5315 +parso/pgen2/__init__.py,sha256=eb-5tGD73LHn9yEV64RrK5GNMguPOhgFO40h5zXLsgM,337 +parso/pgen2/grammar.py,sha256=JaQRSW5qGPyJ-DUbG5CWTDsuNwSa6F1Io16eTgvzbzQ,4761 +parso/pgen2/parse.py,sha256=HpYtkPQJpwf6hFxwieWv66p2lA2m1cQtCBUsm3xdYkQ,8373 +parso/pgen2/pgen.py,sha256=DbCdBfkDw6hOFI1gkvzF96LutE7a2A1caoNCgfLedfk,14222 +parso/python/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +parso/python/diff.py,sha256=l_rPIvgvGqLttvKXwyH2cie6yB2GDfKaeE3pbxrR-eE,22174 +parso/python/errors.py,sha256=PEcIEo57PlqDqme-JTBo0rAIH5l_Ulvr3vJcKuGT4cA,39682 +parso/python/fstring.py,sha256=tAzQLRD0zl5qkdO96UTQJ2lcbA-uGiQs0mNoAwQVaFI,7271 +parso/python/grammar26.txt,sha256=4HcZUd6U1AIGFT30sf82sPnSIh6PZI2gULyZipzGopc,6409 +parso/python/grammar27.txt,sha256=D19Rit8_Q6eCPI0vNTBRkeCvbBaGtNHomMH7z2Pm-Os,5913 +parso/python/grammar33.txt,sha256=oaL8pArlDx_MQ6ZA_OLgeKQ8iFDAnceeh4mSurSPwMU,6079 +parso/python/grammar34.txt,sha256=IlCCTkFYsFd5U7cOMUTx2lbglntqyDzNIYCcFCfxaoI,6083 +parso/python/grammar35.txt,sha256=Hqut450v0A-Z3Bkky5_LjFTGhFUu3smsY5fcTL_JHbA,6888 +parso/python/grammar36.txt,sha256=zV2dBko6cZUY5MWOESDyis-z4xLiVrL23bTT0glCoNQ,6623 +parso/python/grammar37.txt,sha256=zV2dBko6cZUY5MWOESDyis-z4xLiVrL23bTT0glCoNQ,6623 +parso/python/parser.py,sha256=mXd8r-1uS8xYDDNrmVyFz_1AzusbPnm5_7tclPimzFQ,10590 +parso/python/pep8.py,sha256=L-97MV5y89P1T1AsqI4tWUNerd-PEyNAhoh8tLV_tGc,32213 +parso/python/prefix.py,sha256=KNIwOhF6jP6E4QSEpV3ddrj91wm9a7P8OYQb9qe_zpc,2405 +parso/python/token.py,sha256=WqLf4m-GXq4a1NC3gV_PkEAzl_zbvnXT5ieljpB-yzU,1777 +parso/python/tokenize.py,sha256=ll_XLCvDDU2LuwMXm6AeHfM7TLG27CEs5et-ShaQR8g,15857 +parso/python/tree.py,sha256=Pib6GGBsQmq2DG_fS3lczsvpJm8wmMlFGUyklcQJ3ns,34692 +parso-0.1.1.dist-info/DESCRIPTION.rst,sha256=a6mDdwUJK2AZW3lh8No66vjImNrKbrPTBzWw3bKMDZk,2951 +parso-0.1.1.dist-info/METADATA,sha256=uf7zXLH-GTPMwBvgtFwPyTAfdtBquu3bhBWThOaSTNY,3941 +parso-0.1.1.dist-info/RECORD,, +parso-0.1.1.dist-info/WHEEL,sha256=o2k-Qa-RMNIJmUdIc7KU6VWR_ErNRbWNlxDIpl7lm34,110 +parso-0.1.1.dist-info/metadata.json,sha256=PPy-agcyVytuszgr-uLRVoktplPtUrTDDtaqT605xLM,1094 +parso-0.1.1.dist-info/top_level.txt,sha256=GOOKQCPcnr0_7IRArxyI0CX5LLu4WLlzIRAVWS-vJ4s,6 diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/EGG-INFO/WHEEL b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/EGG-INFO/WHEEL new file mode 100644 index 0000000..8b6dd1b --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/EGG-INFO/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.29.0) +Root-Is-Purelib: true +Tag: py2-none-any +Tag: py3-none-any + diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/EGG-INFO/metadata.json b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/EGG-INFO/metadata.json new file mode 100644 index 0000000..61a2dc1 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/EGG-INFO/metadata.json @@ -0,0 +1 @@ +{"classifiers": ["Development Status :: 4 - Beta", "Environment :: Plugins", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Text Editors :: Integrated Development Environments (IDE)", "Topic :: Utilities"], "extensions": {"python.details": {"contacts": [{"email": "davidhalter88@gmail.com", "name": "David Halter", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "https://github.com/davidhalter/parso"}}}, "generator": "bdist_wheel (0.29.0)", "keywords": ["python", "parser", "parsing"], "license": "MIT", "metadata_version": "2.0", "name": "parso", "platform": "any", "summary": "A Python Parser", "version": "0.1.1"} \ No newline at end of file diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/EGG-INFO/top_level.txt b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/EGG-INFO/top_level.txt new file mode 100644 index 0000000..0e23344 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/EGG-INFO/top_level.txt @@ -0,0 +1 @@ +parso diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/__init__.py b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/__init__.py new file mode 100644 index 0000000..f0a0fc4 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/__init__.py @@ -0,0 +1,58 @@ +r""" +Parso is a Python parser that supports error recovery and round-trip parsing +for different Python versions (in multiple Python versions). Parso is also able +to list multiple syntax errors in your python file. + +Parso has been battle-tested by jedi_. It was pulled out of jedi to be useful +for other projects as well. + +Parso consists of a small API to parse Python and analyse the syntax tree. + +.. _jedi: https://github.com/davidhalter/jedi + +A simple example: + +>>> import parso +>>> module = parso.parse('hello + 1', version="3.6") +>>> expr = module.children[0] +>>> expr +PythonNode(arith_expr, [, , ]) +>>> print(expr.get_code()) +hello + 1 +>>> name = expr.children[0] +>>> name + +>>> name.end_pos +(1, 5) +>>> expr.end_pos +(1, 9) + +To list multiple issues: + +>>> grammar = parso.load_grammar() +>>> module = grammar.parse('foo +\nbar\ncontinue') +>>> error1, error2 = grammar.iter_errors(module) +>>> error1.message +'SyntaxError: invalid syntax' +>>> error2.message +"SyntaxError: 'continue' not properly in loop" +""" + +from parso.parser import ParserSyntaxError +from parso.grammar import Grammar, load_grammar +from parso.utils import split_lines, python_bytes_to_unicode + + +__version__ = '0.1.1' + + +def parse(code=None, **kwargs): + """ + A utility function to avoid loading grammars. + Params are documented in :py:meth:`parso.Grammar.parse`. + + :param str version: The version used by :py:func:`parso.load_grammar`. + """ + version = kwargs.pop('version', None) + grammar = load_grammar(version=version) + return grammar.parse(code, **kwargs) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/_compatibility.py b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/_compatibility.py new file mode 100644 index 0000000..9ddf23d --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/_compatibility.py @@ -0,0 +1,103 @@ +""" +To ensure compatibility from Python ``2.6`` - ``3.3``, a module has been +created. Clearly there is huge need to use conforming syntax. +""" +import sys +import platform + +# Cannot use sys.version.major and minor names, because in Python 2.6 it's not +# a namedtuple. +py_version = int(str(sys.version_info[0]) + str(sys.version_info[1])) + +# unicode function +try: + unicode = unicode +except NameError: + unicode = str + +is_pypy = platform.python_implementation() == 'PyPy' + + +def use_metaclass(meta, *bases): + """ Create a class with a metaclass. """ + if not bases: + bases = (object,) + return meta("HackClass", bases, {}) + + +try: + encoding = sys.stdout.encoding + if encoding is None: + encoding = 'utf-8' +except AttributeError: + encoding = 'ascii' + + +def u(string): + """Cast to unicode DAMMIT! + Written because Python2 repr always implicitly casts to a string, so we + have to cast back to a unicode (and we now that we always deal with valid + unicode, because we check that in the beginning). + """ + if py_version >= 30: + return str(string) + + if not isinstance(string, unicode): + return unicode(str(string), 'UTF-8') + return string + + +try: + FileNotFoundError = FileNotFoundError +except NameError: + FileNotFoundError = IOError + + +def utf8_repr(func): + """ + ``__repr__`` methods in Python 2 don't allow unicode objects to be + returned. Therefore cast them to utf-8 bytes in this decorator. + """ + def wrapper(self): + result = func(self) + if isinstance(result, unicode): + return result.encode('utf-8') + else: + return result + + if py_version >= 30: + return func + else: + return wrapper + + +try: + from functools import total_ordering +except ImportError: + # Python 2.6 + def total_ordering(cls): + """Class decorator that fills in missing ordering methods""" + convert = { + '__lt__': [('__gt__', lambda self, other: not (self < other or self == other)), + ('__le__', lambda self, other: self < other or self == other), + ('__ge__', lambda self, other: not self < other)], + '__le__': [('__ge__', lambda self, other: not self <= other or self == other), + ('__lt__', lambda self, other: self <= other and not self == other), + ('__gt__', lambda self, other: not self <= other)], + '__gt__': [('__lt__', lambda self, other: not (self > other or self == other)), + ('__ge__', lambda self, other: self > other or self == other), + ('__le__', lambda self, other: not self > other)], + '__ge__': [('__le__', lambda self, other: (not self >= other) or self == other), + ('__gt__', lambda self, other: self >= other and not self == other), + ('__lt__', lambda self, other: not self >= other)] + } + roots = set(dir(cls)) & set(convert) + if not roots: + raise ValueError('must define at least one ordering operation: < > <= >=') + root = max(roots) # prefer __lt__ to __le__ to __gt__ to __ge__ + for opname, opfunc in convert[root]: + if opname not in roots: + opfunc.__name__ = opname + opfunc.__doc__ = getattr(int, opname).__doc__ + setattr(cls, opname, opfunc) + return cls diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/cache.py b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/cache.py new file mode 100644 index 0000000..d0465d0 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/cache.py @@ -0,0 +1,162 @@ +import time +import os +import sys +import hashlib +import gc +import shutil +import platform +import errno +import logging + +try: + import cPickle as pickle +except: + import pickle + +from parso._compatibility import FileNotFoundError + +LOG = logging.getLogger(__name__) + + +_PICKLE_VERSION = 30 +""" +Version number (integer) for file system cache. + +Increment this number when there are any incompatible changes in +the parser tree classes. For example, the following changes +are regarded as incompatible. + +- A class name is changed. +- A class is moved to another module. +- A __slot__ of a class is changed. +""" + +_VERSION_TAG = '%s-%s%s-%s' % ( + platform.python_implementation(), + sys.version_info[0], + sys.version_info[1], + _PICKLE_VERSION +) +""" +Short name for distinguish Python implementations and versions. + +It's like `sys.implementation.cache_tag` but for Python < 3.3 +we generate something similar. See: +http://docs.python.org/3/library/sys.html#sys.implementation +""" + +def _get_default_cache_path(): + if platform.system().lower() == 'windows': + dir_ = os.path.join(os.getenv('LOCALAPPDATA') or '~', 'Parso', 'Parso') + elif platform.system().lower() == 'darwin': + dir_ = os.path.join('~', 'Library', 'Caches', 'Parso') + else: + dir_ = os.path.join(os.getenv('XDG_CACHE_HOME') or '~/.cache', 'parso') + return os.path.expanduser(dir_) + +_default_cache_path = _get_default_cache_path() +""" +The path where the cache is stored. + +On Linux, this defaults to ``~/.cache/parso/``, on OS X to +``~/Library/Caches/Parso/`` and on Windows to ``%LOCALAPPDATA%\\Parso\\Parso\\``. +On Linux, if environment variable ``$XDG_CACHE_HOME`` is set, +``$XDG_CACHE_HOME/parso`` is used instead of the default one. +""" + +parser_cache = {} + + +class _NodeCacheItem(object): + def __init__(self, node, lines, change_time=None): + self.node = node + self.lines = lines + if change_time is None: + change_time = time.time() + self.change_time = change_time + + +def load_module(hashed_grammar, path, cache_path=None): + """ + Returns a module or None, if it fails. + """ + try: + p_time = os.path.getmtime(path) + except FileNotFoundError: + return None + + try: + module_cache_item = parser_cache[hashed_grammar][path] + if p_time <= module_cache_item.change_time: + return module_cache_item.node + except KeyError: + return _load_from_file_system(hashed_grammar, path, p_time, cache_path=cache_path) + + +def _load_from_file_system(hashed_grammar, path, p_time, cache_path=None): + cache_path = _get_hashed_path(hashed_grammar, path, cache_path=cache_path) + try: + try: + if p_time > os.path.getmtime(cache_path): + # Cache is outdated + return None + except OSError as e: + if e.errno == errno.ENOENT: + # In Python 2 instead of an IOError here we get an OSError. + raise FileNotFoundError + else: + raise + + with open(cache_path, 'rb') as f: + gc.disable() + try: + module_cache_item = pickle.load(f) + finally: + gc.enable() + except FileNotFoundError: + return None + else: + parser_cache.setdefault(hashed_grammar, {})[path] = module_cache_item + LOG.debug('pickle loaded: %s', path) + return module_cache_item.node + + +def save_module(hashed_grammar, path, module, lines, pickling=True, cache_path=None): + try: + p_time = None if path is None else os.path.getmtime(path) + except OSError: + p_time = None + pickling = False + + item = _NodeCacheItem(module, lines, p_time) + parser_cache.setdefault(hashed_grammar, {})[path] = item + if pickling and path is not None: + _save_to_file_system(hashed_grammar, path, item, cache_path=cache_path) + + +def _save_to_file_system(hashed_grammar, path, item, cache_path=None): + with open(_get_hashed_path(hashed_grammar, path, cache_path=cache_path), 'wb') as f: + pickle.dump(item, f, pickle.HIGHEST_PROTOCOL) + + +def clear_cache(cache_path=None): + if cache_path is None: + cache_path = _default_cache_path + shutil.rmtree(cache_path) + parser_cache.clear() + + +def _get_hashed_path(hashed_grammar, path, cache_path=None): + directory = _get_cache_directory_path(cache_path=cache_path) + + file_hash = hashlib.sha256(path.encode("utf-8")).hexdigest() + return os.path.join(directory, '%s-%s.pkl' % (hashed_grammar, file_hash)) + + +def _get_cache_directory_path(cache_path=None): + if cache_path is None: + cache_path = _default_cache_path + directory = os.path.join(cache_path, _VERSION_TAG) + if not os.path.exists(directory): + os.makedirs(directory) + return directory diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/grammar.py b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/grammar.py new file mode 100644 index 0000000..2cf26d7 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/grammar.py @@ -0,0 +1,283 @@ +import hashlib +import os + +from parso._compatibility import FileNotFoundError, is_pypy +from parso.pgen2.pgen import generate_grammar +from parso.utils import split_lines, python_bytes_to_unicode, parse_version_string +from parso.python.diff import DiffParser +from parso.python.tokenize import tokenize_lines, tokenize +from parso.python import token +from parso.cache import parser_cache, load_module, save_module +from parso.parser import BaseParser +from parso.python.parser import Parser as PythonParser +from parso.python.errors import ErrorFinderConfig +from parso.python import pep8 +from parso.python import fstring + +_loaded_grammars = {} + + +class Grammar(object): + """ + :py:func:`parso.load_grammar` returns instances of this class. + + Creating custom grammars by calling this is not supported, yet. + """ + #:param text: A BNF representation of your grammar. + _error_normalizer_config = None + _token_namespace = None + _default_normalizer_config = pep8.PEP8NormalizerConfig() + + def __init__(self, text, tokenizer, parser=BaseParser, diff_parser=None): + self._pgen_grammar = generate_grammar( + text, + token_namespace=self._get_token_namespace() + ) + self._parser = parser + self._tokenizer = tokenizer + self._diff_parser = diff_parser + self._hashed = hashlib.sha256(text.encode("utf-8")).hexdigest() + + def parse(self, code=None, **kwargs): + """ + If you want to parse a Python file you want to start here, most likely. + + If you need finer grained control over the parsed instance, there will be + other ways to access it. + + :param str code: A unicode or bytes string. When it's not possible to + decode bytes to a string, returns a + :py:class:`UnicodeDecodeError`. + :param bool error_recovery: If enabled, any code will be returned. If + it is invalid, it will be returned as an error node. If disabled, + you will get a ParseError when encountering syntax errors in your + code. + :param str start_symbol: The grammar symbol that you want to parse. Only + allowed to be used when error_recovery is False. + :param str path: The path to the file you want to open. Only needed for caching. + :param bool cache: Keeps a copy of the parser tree in RAM and on disk + if a path is given. Returns the cached trees if the corresponding + files on disk have not changed. + :param bool diff_cache: Diffs the cached python module against the new + code and tries to parse only the parts that have changed. Returns + the same (changed) module that is found in cache. Using this option + requires you to not do anything anymore with the cached modules + under that path, because the contents of it might change. This + option is still somewhat experimental. If you want stability, + please don't use it. + :param bool cache_path: If given saves the parso cache in this + directory. If not given, defaults to the default cache places on + each platform. + + :return: A subclass of :py:class:`parso.tree.NodeOrLeaf`. Typically a + :py:class:`parso.python.tree.Module`. + """ + if 'start_pos' in kwargs: + raise TypeError("parse() got an unexpected keyworda argument.") + return self._parse(code=code, **kwargs) + + def _parse(self, code=None, error_recovery=True, path=None, + start_symbol=None, cache=False, diff_cache=False, + cache_path=None, start_pos=(1, 0)): + """ + Wanted python3.5 * operator and keyword only arguments. Therefore just + wrap it all. + start_pos here is just a parameter internally used. Might be public + sometime in the future. + """ + if code is None and path is None: + raise TypeError("Please provide either code or a path.") + + if start_symbol is None: + start_symbol = self._start_symbol + + if error_recovery and start_symbol != 'file_input': + raise NotImplementedError("This is currently not implemented.") + + if cache and path is not None: + module_node = load_module(self._hashed, path, cache_path=cache_path) + if module_node is not None: + return module_node + + if code is None: + with open(path, 'rb') as f: + code = f.read() + + code = python_bytes_to_unicode(code) + + lines = split_lines(code, keepends=True) + if diff_cache: + if self._diff_parser is None: + raise TypeError("You have to define a diff parser to be able " + "to use this option.") + try: + module_cache_item = parser_cache[self._hashed][path] + except KeyError: + pass + else: + module_node = module_cache_item.node + old_lines = module_cache_item.lines + if old_lines == lines: + return module_node + + new_node = self._diff_parser( + self._pgen_grammar, self._tokenizer, module_node + ).update( + old_lines=old_lines, + new_lines=lines + ) + save_module(self._hashed, path, new_node, lines, + # Never pickle in pypy, it's slow as hell. + pickling=cache and not is_pypy, + cache_path=cache_path) + return new_node + + tokens = self._tokenizer(lines, start_pos) + + p = self._parser( + self._pgen_grammar, + error_recovery=error_recovery, + start_symbol=start_symbol + ) + root_node = p.parse(tokens=tokens) + + if cache or diff_cache: + save_module(self._hashed, path, root_node, lines, + # Never pickle in pypy, it's slow as hell. + pickling=cache and not is_pypy, + cache_path=cache_path) + return root_node + + def _get_token_namespace(self): + ns = self._token_namespace + if ns is None: + raise ValueError("The token namespace should be set.") + return ns + + def iter_errors(self, node): + """ + Given a :py:class:`parso.tree.NodeOrLeaf` returns a generator of + :py:class:`parso.normalizer.Issue` objects. For Python this is + a list of syntax/indentation errors. + """ + if self._error_normalizer_config is None: + raise ValueError("No error normalizer specified for this grammar.") + + return self._get_normalizer_issues(node, self._error_normalizer_config) + + def _get_normalizer(self, normalizer_config): + if normalizer_config is None: + normalizer_config = self._default_normalizer_config + if normalizer_config is None: + raise ValueError("You need to specify a normalizer, because " + "there's no default normalizer for this tree.") + return normalizer_config.create_normalizer(self) + + def _normalize(self, node, normalizer_config=None): + """ + TODO this is not public, yet. + The returned code will be normalized, e.g. PEP8 for Python. + """ + normalizer = self._get_normalizer(normalizer_config) + return normalizer.walk(node) + + def _get_normalizer_issues(self, node, normalizer_config=None): + normalizer = self._get_normalizer(normalizer_config) + normalizer.walk(node) + return normalizer.issues + + + def __repr__(self): + labels = self._pgen_grammar.number2symbol.values() + txt = ' '.join(list(labels)[:3]) + ' ...' + return '<%s:%s>' % (self.__class__.__name__, txt) + + +class PythonGrammar(Grammar): + _error_normalizer_config = ErrorFinderConfig() + _token_namespace = token + _start_symbol = 'file_input' + + def __init__(self, version_info, bnf_text): + super(PythonGrammar, self).__init__( + bnf_text, + tokenizer=self._tokenize_lines, + parser=PythonParser, + diff_parser=DiffParser + ) + self.version_info = version_info + + def _tokenize_lines(self, lines, start_pos): + return tokenize_lines(lines, self.version_info, start_pos=start_pos) + + def _tokenize(self, code): + # Used by Jedi. + return tokenize(code, self.version_info) + + +class PythonFStringGrammar(Grammar): + _token_namespace = fstring.TokenNamespace + _start_symbol = 'fstring' + + def __init__(self): + super(PythonFStringGrammar, self).__init__( + text=fstring.GRAMMAR, + tokenizer=fstring.tokenize, + parser=fstring.Parser + ) + + def parse(self, code, **kwargs): + return self._parse(code, **kwargs) + + def _parse(self, code, error_recovery=True, start_pos=(1, 0)): + tokens = self._tokenizer(code, start_pos=start_pos) + p = self._parser( + self._pgen_grammar, + error_recovery=error_recovery, + start_symbol=self._start_symbol, + ) + return p.parse(tokens=tokens) + + def parse_leaf(self, leaf, error_recovery=True): + code = leaf._get_payload() + return self.parse(code, error_recovery=True, start_pos=leaf.start_pos) + + +def load_grammar(**kwargs): + """ + Loads a :py:class:`parso.Grammar`. The default version is the current Python + version. + + :param str version: A python version string, e.g. ``version='3.3'``. + """ + def load_grammar(language='python', version=None): + if language == 'python': + version_info = parse_version_string(version) + + file = os.path.join( + 'python', + 'grammar%s%s.txt' % (version_info.major, version_info.minor) + ) + + global _loaded_grammars + path = os.path.join(os.path.dirname(__file__), file) + try: + return _loaded_grammars[path] + except KeyError: + try: + with open(path) as f: + bnf_text = f.read() + + grammar = PythonGrammar(version_info, bnf_text) + return _loaded_grammars.setdefault(path, grammar) + except FileNotFoundError: + message = "Python version %s is currently not supported." % version + raise NotImplementedError(message) + elif language == 'python-f-string': + if version is not None: + raise NotImplementedError("Currently different versions are not supported.") + return PythonFStringGrammar() + else: + raise NotImplementedError("No support for language %s." % language) + + return load_grammar(**kwargs) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/normalizer.py b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/normalizer.py new file mode 100644 index 0000000..9a3e82e --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/normalizer.py @@ -0,0 +1,184 @@ +from contextlib import contextmanager + +from parso._compatibility import use_metaclass + + +class _NormalizerMeta(type): + def __new__(cls, name, bases, dct): + new_cls = type.__new__(cls, name, bases, dct) + new_cls.rule_value_classes = {} + new_cls.rule_type_classes = {} + return new_cls + + +class Normalizer(use_metaclass(_NormalizerMeta)): + def __init__(self, grammar, config): + self.grammar = grammar + self._config = config + self.issues = [] + + self._rule_type_instances = self._instantiate_rules('rule_type_classes') + self._rule_value_instances = self._instantiate_rules('rule_value_classes') + + def _instantiate_rules(self, attr): + dct = {} + for base in type(self).mro(): + rules_map = getattr(base, attr, {}) + for type_, rule_classes in rules_map.items(): + new = [rule_cls(self) for rule_cls in rule_classes] + dct.setdefault(type_, []).extend(new) + return dct + + def walk(self, node): + self.initialize(node) + value = self.visit(node) + self.finalize() + return value + + def visit(self, node): + try: + children = node.children + except AttributeError: + return self.visit_leaf(node) + else: + with self.visit_node(node): + return ''.join(self.visit(child) for child in children) + + @contextmanager + def visit_node(self, node): + self._check_type_rules(node) + yield + + def _check_type_rules(self, node): + for rule in self._rule_type_instances.get(node.type, []): + rule.feed_node(node) + + def visit_leaf(self, leaf): + self._check_type_rules(leaf) + + for rule in self._rule_value_instances.get(leaf.value, []): + rule.feed_node(leaf) + + return leaf.prefix + leaf.value + + def initialize(self, node): + pass + + def finalize(self): + pass + + def add_issue(self, node, code, message): + issue = Issue(node, code, message) + if issue not in self.issues: + self.issues.append(issue) + return True + + @classmethod + def register_rule(cls, **kwargs): + """ + Use it as a class decorator:: + + normalizer = Normalizer('grammar', 'config') + @normalizer.register_rule(value='foo') + class MyRule(Rule): + error_code = 42 + """ + return cls._register_rule(**kwargs) + + @classmethod + def _register_rule(cls, value=None, values=(), type=None, types=()): + values = list(values) + types = list(types) + if value is not None: + values.append(value) + if type is not None: + types.append(type) + + if not values and not types: + raise ValueError("You must register at least something.") + + def decorator(rule_cls): + for v in values: + cls.rule_value_classes.setdefault(v, []).append(rule_cls) + for t in types: + cls.rule_type_classes.setdefault(t, []).append(rule_cls) + return rule_cls + + return decorator + + +class NormalizerConfig(object): + normalizer_class = Normalizer + + def create_normalizer(self, grammar): + if self.normalizer_class is None: + return None + + return self.normalizer_class(grammar, self) + + +class Issue(object): + def __init__(self, node, code, message): + self._node = node + self.code = code + """ + An integer code that stands for the type of error. + """ + self.message = message + """ + A message (string) for the issue. + """ + self.start_pos = node.start_pos + """ + The start position position of the error as a tuple (line, column). As + always in |parso| the first line is 1 and the first column 0. + """ + + def __eq__(self, other): + return self.start_pos == other.start_pos and self.code == other.code + + def __ne__(self, other): + return not self.__eq__(other) + + def __hash__(self): + return hash((self.code, self.start_pos)) + + def __repr__(self): + return '<%s: %s>' % (self.__class__.__name__, self.code) + + + +class Rule(object): + code = None + message = None + + def __init__(self, normalizer): + self._normalizer = normalizer + + def is_issue(self, node): + raise NotImplementedError() + + def get_node(self, node): + return node + + def _get_message(self, message): + if message is None: + message = self.message + if message is None: + raise ValueError("The message on the class is not set.") + return message + + def add_issue(self, node, code=None, message=None): + if code is None: + code = self.code + if code is None: + raise ValueError("The error code on the class is not set.") + + message = self._get_message(message) + + self._normalizer.add_issue(node, code, message) + + def feed_node(self, node): + if self.is_issue(node): + issue_node = self.get_node(node) + self.add_issue(issue_node) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/parser.py b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/parser.py new file mode 100644 index 0000000..555ebc7 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/parser.py @@ -0,0 +1,78 @@ +""" +The ``Parser`` tries to convert the available Python code in an easy to read +format, something like an abstract syntax tree. The classes who represent this +tree, are sitting in the :mod:`parso.tree` module. + +The Python module ``tokenize`` is a very important part in the ``Parser``, +because it splits the code into different words (tokens). Sometimes it looks a +bit messy. Sorry for that! You might ask now: "Why didn't you use the ``ast`` +module for this? Well, ``ast`` does a very good job understanding proper Python +code, but fails to work as soon as there's a single line of broken code. + +There's one important optimization that needs to be known: Statements are not +being parsed completely. ``Statement`` is just a representation of the tokens +within the statement. This lowers memory usage and cpu time and reduces the +complexity of the ``Parser`` (there's another parser sitting inside +``Statement``, which produces ``Array`` and ``Call``). +""" +from parso import tree +from parso.pgen2.parse import PgenParser + + +class ParserSyntaxError(Exception): + """ + Contains error information about the parser tree. + + May be raised as an exception. + """ + def __init__(self, message, error_leaf): + self.message = message + self.error_leaf = error_leaf + + +class BaseParser(object): + node_map = {} + default_node = tree.Node + + leaf_map = { + } + default_leaf = tree.Leaf + + def __init__(self, pgen_grammar, start_symbol='file_input', error_recovery=False): + self._pgen_grammar = pgen_grammar + self._start_symbol = start_symbol + self._error_recovery = error_recovery + + def parse(self, tokens): + start_number = self._pgen_grammar.symbol2number[self._start_symbol] + self.pgen_parser = PgenParser( + self._pgen_grammar, self.convert_node, self.convert_leaf, + self.error_recovery, start_number + ) + + node = self.pgen_parser.parse(tokens) + # The stack is empty now, we don't need it anymore. + del self.pgen_parser + return node + + def error_recovery(self, pgen_grammar, stack, arcs, typ, value, start_pos, prefix, + add_token_callback): + if self._error_recovery: + raise NotImplementedError("Error Recovery is not implemented") + else: + error_leaf = tree.ErrorLeaf('TODO %s' % typ, value, start_pos, prefix) + raise ParserSyntaxError('SyntaxError: invalid syntax', error_leaf) + + def convert_node(self, pgen_grammar, type_, children): + # TODO REMOVE symbol, we don't want type here. + symbol = pgen_grammar.number2symbol[type_] + try: + return self.node_map[symbol](children) + except KeyError: + return self.default_node(symbol, children) + + def convert_leaf(self, pgen_grammar, type_, value, prefix, start_pos): + try: + return self.leaf_map[type_](value, start_pos, prefix) + except KeyError: + return self.default_leaf(value, start_pos, prefix) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/pgen2/__init__.py b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/pgen2/__init__.py new file mode 100644 index 0000000..1ddae5f --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/pgen2/__init__.py @@ -0,0 +1,8 @@ +# Copyright 2004-2005 Elemental Security, Inc. All Rights Reserved. +# Licensed to PSF under a Contributor Agreement. + +# Modifications: +# Copyright 2006 Google, Inc. All Rights Reserved. +# Licensed to PSF under a Contributor Agreement. +# Copyright 2014 David Halter. Integration into Jedi. +# Modifications are dual-licensed: MIT and PSF. diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/pgen2/grammar.py b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/pgen2/grammar.py new file mode 100644 index 0000000..e5f2114 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/pgen2/grammar.py @@ -0,0 +1,128 @@ +# Copyright 2004-2005 Elemental Security, Inc. All Rights Reserved. +# Licensed to PSF under a Contributor Agreement. + +# Modifications: +# Copyright 2014 David Halter. Integration into Jedi. +# Modifications are dual-licensed: MIT and PSF. + +"""This module defines the data structures used to represent a grammar. + +These are a bit arcane because they are derived from the data +structures used by Python's 'pgen' parser generator. + +There's also a table here mapping operators to their names in the +token module; the Python tokenize module reports all operators as the +fallback token code OP, but the parser needs the actual token code. + +""" + +try: + import cPickle as pickle +except: + import pickle + + +class Grammar(object): + """Pgen parsing tables conversion class. + + Once initialized, this class supplies the grammar tables for the + parsing engine implemented by parse.py. The parsing engine + accesses the instance variables directly. The class here does not + provide initialization of the tables; several subclasses exist to + do this (see the conv and pgen modules). + + The load() method reads the tables from a pickle file, which is + much faster than the other ways offered by subclasses. The pickle + file is written by calling dump() (after loading the grammar + tables using a subclass). The report() method prints a readable + representation of the tables to stdout, for debugging. + + The instance variables are as follows: + + symbol2number -- a dict mapping symbol names to numbers. Symbol + numbers are always 256 or higher, to distinguish + them from token numbers, which are between 0 and + 255 (inclusive). + + number2symbol -- a dict mapping numbers to symbol names; + these two are each other's inverse. + + states -- a list of DFAs, where each DFA is a list of + states, each state is a list of arcs, and each + arc is a (i, j) pair where i is a label and j is + a state number. The DFA number is the index into + this list. (This name is slightly confusing.) + Final states are represented by a special arc of + the form (0, j) where j is its own state number. + + dfas -- a dict mapping symbol numbers to (DFA, first) + pairs, where DFA is an item from the states list + above, and first is a set of tokens that can + begin this grammar rule (represented by a dict + whose values are always 1). + + labels -- a list of (x, y) pairs where x is either a token + number or a symbol number, and y is either None + or a string; the strings are keywords. The label + number is the index in this list; label numbers + are used to mark state transitions (arcs) in the + DFAs. + + start -- the number of the grammar's start symbol. + + keywords -- a dict mapping keyword strings to arc labels. + + tokens -- a dict mapping token numbers to arc labels. + + """ + + def __init__(self, bnf_text): + self.symbol2number = {} + self.number2symbol = {} + self.states = [] + self.dfas = {} + self.labels = [(0, "EMPTY")] + self.keywords = {} + self.tokens = {} + self.symbol2label = {} + self.label2symbol = {} + self.start = 256 + + def dump(self, filename): + """Dump the grammar tables to a pickle file.""" + with open(filename, "wb") as f: + pickle.dump(self.__dict__, f, 2) + + def load(self, filename): + """Load the grammar tables from a pickle file.""" + with open(filename, "rb") as f: + d = pickle.load(f) + self.__dict__.update(d) + + def copy(self): + """ + Copy the grammar. + """ + new = self.__class__() + for dict_attr in ("symbol2number", "number2symbol", "dfas", "keywords", + "tokens", "symbol2label"): + setattr(new, dict_attr, getattr(self, dict_attr).copy()) + new.labels = self.labels[:] + new.states = self.states[:] + new.start = self.start + return new + + def report(self): + """Dump the grammar tables to standard output, for debugging.""" + from pprint import pprint + print("s2n") + pprint(self.symbol2number) + print("n2s") + pprint(self.number2symbol) + print("states") + pprint(self.states) + print("dfas") + pprint(self.dfas) + print("labels") + pprint(self.labels) + print("start", self.start) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/pgen2/parse.py b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/pgen2/parse.py new file mode 100644 index 0000000..aaacfce --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/pgen2/parse.py @@ -0,0 +1,223 @@ +# Copyright 2004-2005 Elemental Security, Inc. All Rights Reserved. +# Licensed to PSF under a Contributor Agreement. + +# Modifications: +# Copyright 2014 David Halter. Integration into Jedi. +# Modifications are dual-licensed: MIT and PSF. + +""" +Parser engine for the grammar tables generated by pgen. + +The grammar table must be loaded first. + +See Parser/parser.c in the Python distribution for additional info on +how this parsing engine works. +""" + +from parso.python import tokenize + + +class InternalParseError(Exception): + """ + Exception to signal the parser is stuck and error recovery didn't help. + Basically this shouldn't happen. It's a sign that something is really + wrong. + """ + + def __init__(self, msg, type, value, start_pos): + Exception.__init__(self, "%s: type=%r, value=%r, start_pos=%r" % + (msg, tokenize.tok_name[type], value, start_pos)) + self.msg = msg + self.type = type + self.value = value + self.start_pos = start_pos + + +class Stack(list): + def get_tos_nodes(self): + tos = self[-1] + return tos[2][1] + + +def token_to_ilabel(grammar, type_, value): + # Map from token to label + if type_ == tokenize.NAME: + # Check for reserved words (keywords) + try: + return grammar.keywords[value] + except KeyError: + pass + + try: + return grammar.tokens[type_] + except KeyError: + return None + + +class PgenParser(object): + """Parser engine. + + The proper usage sequence is: + + p = Parser(grammar, [converter]) # create instance + p.setup([start]) # prepare for parsing + : + if p.add_token(...): # parse a token + break + root = p.rootnode # root of abstract syntax tree + + A Parser instance may be reused by calling setup() repeatedly. + + A Parser instance contains state pertaining to the current token + sequence, and should not be used concurrently by different threads + to parse separate token sequences. + + See driver.py for how to get input tokens by tokenizing a file or + string. + + Parsing is complete when add_token() returns True; the root of the + abstract syntax tree can then be retrieved from the rootnode + instance variable. When a syntax error occurs, error_recovery() + is called. There is no error recovery; the parser cannot be used + after a syntax error was reported (but it can be reinitialized by + calling setup()). + + """ + + def __init__(self, grammar, convert_node, convert_leaf, error_recovery, start): + """Constructor. + + The grammar argument is a grammar.Grammar instance; see the + grammar module for more information. + + The parser is not ready yet for parsing; you must call the + setup() method to get it started. + + The optional convert argument is a function mapping concrete + syntax tree nodes to abstract syntax tree nodes. If not + given, no conversion is done and the syntax tree produced is + the concrete syntax tree. If given, it must be a function of + two arguments, the first being the grammar (a grammar.Grammar + instance), and the second being the concrete syntax tree node + to be converted. The syntax tree is converted from the bottom + up. + + A concrete syntax tree node is a (type, nodes) tuple, where + type is the node type (a token or symbol number) and nodes + is a list of children for symbols, and None for tokens. + + An abstract syntax tree node may be anything; this is entirely + up to the converter function. + + """ + self.grammar = grammar + self.convert_node = convert_node + self.convert_leaf = convert_leaf + + # Each stack entry is a tuple: (dfa, state, node). + # A node is a tuple: (type, children), + # where children is a list of nodes or None + newnode = (start, []) + stackentry = (self.grammar.dfas[start], 0, newnode) + self.stack = Stack([stackentry]) + self.rootnode = None + self.error_recovery = error_recovery + + def parse(self, tokens): + for type_, value, start_pos, prefix in tokens: + if self.add_token(type_, value, start_pos, prefix): + break + else: + # We never broke out -- EOF is too soon -- Unfinished statement. + # However, the error recovery might have added the token again, if + # the stack is empty, we're fine. + if self.stack: + raise InternalParseError("incomplete input", type_, value, start_pos) + return self.rootnode + + def add_token(self, type_, value, start_pos, prefix): + """Add a token; return True if this is the end of the program.""" + ilabel = token_to_ilabel(self.grammar, type_, value) + + # Loop until the token is shifted; may raise exceptions + _gram = self.grammar + _labels = _gram.labels + _push = self._push + _pop = self._pop + _shift = self._shift + while True: + dfa, state, node = self.stack[-1] + states, first = dfa + arcs = states[state] + # Look for a state with this label + for i, newstate in arcs: + t, v = _labels[i] + if ilabel == i: + # Look it up in the list of labels + assert t < 256 + # Shift a token; we're done with it + _shift(type_, value, newstate, prefix, start_pos) + # Pop while we are in an accept-only state + state = newstate + while states[state] == [(0, state)]: + _pop() + if not self.stack: + # Done parsing! + return True + dfa, state, node = self.stack[-1] + states, first = dfa + # Done with this token + return False + elif t >= 256: + # See if it's a symbol and if we're in its first set + itsdfa = _gram.dfas[t] + itsstates, itsfirst = itsdfa + if ilabel in itsfirst: + # Push a symbol + _push(t, itsdfa, newstate) + break # To continue the outer while loop + else: + if (0, state) in arcs: + # An accepting state, pop it and try something else + _pop() + if not self.stack: + # Done parsing, but another token is input + raise InternalParseError("too much input", type_, value, start_pos) + else: + self.error_recovery(self.grammar, self.stack, arcs, type_, + value, start_pos, prefix, self.add_token) + break + + def _shift(self, type_, value, newstate, prefix, start_pos): + """Shift a token. (Internal)""" + dfa, state, node = self.stack[-1] + newnode = self.convert_leaf(self.grammar, type_, value, prefix, start_pos) + node[-1].append(newnode) + self.stack[-1] = (dfa, newstate, node) + + def _push(self, type_, newdfa, newstate): + """Push a nonterminal. (Internal)""" + dfa, state, node = self.stack[-1] + newnode = (type_, []) + self.stack[-1] = (dfa, newstate, node) + self.stack.append((newdfa, 0, newnode)) + + def _pop(self): + """Pop a nonterminal. (Internal)""" + popdfa, popstate, (type_, children) = self.stack.pop() + # If there's exactly one child, return that child instead of creating a + # new node. We still create expr_stmt and file_input though, because a + # lot of Jedi depends on its logic. + if len(children) == 1: + newnode = children[0] + else: + newnode = self.convert_node(self.grammar, type_, children) + + try: + # Equal to: + # dfa, state, node = self.stack[-1] + # symbol, children = node + self.stack[-1][2][1].append(newnode) + except IndexError: + # Stack is empty, set the rootnode. + self.rootnode = newnode diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/pgen2/pgen.py b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/pgen2/pgen.py new file mode 100644 index 0000000..10ef6ff --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/pgen2/pgen.py @@ -0,0 +1,399 @@ +# Copyright 2004-2005 Elemental Security, Inc. All Rights Reserved. +# Licensed to PSF under a Contributor Agreement. + +# Modifications: +# Copyright 2014 David Halter. Integration into Jedi. +# Modifications are dual-licensed: MIT and PSF. + +from parso.pgen2 import grammar +from parso.python import token +from parso.python import tokenize +from parso.utils import parse_version_string + + +class ParserGenerator(object): + def __init__(self, bnf_text, token_namespace): + self._bnf_text = bnf_text + self.generator = tokenize.tokenize( + bnf_text, + version_info=parse_version_string('3.6') + ) + self._gettoken() # Initialize lookahead + self.dfas, self.startsymbol = self._parse() + self.first = {} # map from symbol name to set of tokens + self._addfirstsets() + self._token_namespace = token_namespace + + def make_grammar(self): + c = grammar.Grammar(self._bnf_text) + names = list(self.dfas.keys()) + names.sort() + names.remove(self.startsymbol) + names.insert(0, self.startsymbol) + for name in names: + i = 256 + len(c.symbol2number) + c.symbol2number[name] = i + c.number2symbol[i] = name + for name in names: + dfa = self.dfas[name] + states = [] + for state in dfa: + arcs = [] + for label, next in state.arcs.items(): + arcs.append((self._make_label(c, label), dfa.index(next))) + if state.isfinal: + arcs.append((0, dfa.index(state))) + states.append(arcs) + c.states.append(states) + c.dfas[c.symbol2number[name]] = (states, self._make_first(c, name)) + c.start = c.symbol2number[self.startsymbol] + return c + + def _make_first(self, c, name): + rawfirst = self.first[name] + first = {} + for label in rawfirst: + ilabel = self._make_label(c, label) + ##assert ilabel not in first # XXX failed on <> ... != + first[ilabel] = 1 + return first + + def _make_label(self, c, label): + # XXX Maybe this should be a method on a subclass of converter? + ilabel = len(c.labels) + if label[0].isalpha(): + # Either a symbol name or a named token + if label in c.symbol2number: + # A symbol name (a non-terminal) + if label in c.symbol2label: + return c.symbol2label[label] + else: + c.labels.append((c.symbol2number[label], None)) + c.symbol2label[label] = ilabel + c.label2symbol[ilabel] = label + return ilabel + else: + # A named token (NAME, NUMBER, STRING) + itoken = getattr(self._token_namespace, label, None) + assert isinstance(itoken, int), label + if itoken in c.tokens: + return c.tokens[itoken] + else: + c.labels.append((itoken, None)) + c.tokens[itoken] = ilabel + return ilabel + else: + # Either a keyword or an operator + assert label[0] in ('"', "'"), label + value = eval(label) + if value[0].isalpha(): + # A keyword + if value in c.keywords: + return c.keywords[value] + else: + # TODO this might be an issue?! Using token.NAME here? + c.labels.append((token.NAME, value)) + c.keywords[value] = ilabel + return ilabel + else: + # An operator (any non-numeric token) + itoken = self._token_namespace.generate_token_id(value) + if itoken in c.tokens: + return c.tokens[itoken] + else: + c.labels.append((itoken, None)) + c.tokens[itoken] = ilabel + return ilabel + + def _addfirstsets(self): + names = list(self.dfas.keys()) + names.sort() + for name in names: + if name not in self.first: + self._calcfirst(name) + #print name, self.first[name].keys() + + def _calcfirst(self, name): + dfa = self.dfas[name] + self.first[name] = None # dummy to detect left recursion + state = dfa[0] + totalset = {} + overlapcheck = {} + for label, next in state.arcs.items(): + if label in self.dfas: + if label in self.first: + fset = self.first[label] + if fset is None: + raise ValueError("recursion for rule %r" % name) + else: + self._calcfirst(label) + fset = self.first[label] + totalset.update(fset) + overlapcheck[label] = fset + else: + totalset[label] = 1 + overlapcheck[label] = {label: 1} + inverse = {} + for label, itsfirst in overlapcheck.items(): + for symbol in itsfirst: + if symbol in inverse: + raise ValueError("rule %s is ambiguous; %s is in the" + " first sets of %s as well as %s" % + (name, symbol, label, inverse[symbol])) + inverse[symbol] = label + self.first[name] = totalset + + def _parse(self): + dfas = {} + startsymbol = None + # MSTART: (NEWLINE | RULE)* ENDMARKER + while self.type != token.ENDMARKER: + while self.type == token.NEWLINE: + self._gettoken() + # RULE: NAME ':' RHS NEWLINE + name = self._expect(token.NAME) + self._expect(token.COLON) + a, z = self._parse_rhs() + self._expect(token.NEWLINE) + #self._dump_nfa(name, a, z) + dfa = self._make_dfa(a, z) + #self._dump_dfa(name, dfa) + # oldlen = len(dfa) + self._simplify_dfa(dfa) + # newlen = len(dfa) + dfas[name] = dfa + #print name, oldlen, newlen + if startsymbol is None: + startsymbol = name + return dfas, startsymbol + + def _make_dfa(self, start, finish): + # To turn an NFA into a DFA, we define the states of the DFA + # to correspond to *sets* of states of the NFA. Then do some + # state reduction. Let's represent sets as dicts with 1 for + # values. + assert isinstance(start, NFAState) + assert isinstance(finish, NFAState) + + def closure(state): + base = {} + addclosure(state, base) + return base + + def addclosure(state, base): + assert isinstance(state, NFAState) + if state in base: + return + base[state] = 1 + for label, next in state.arcs: + if label is None: + addclosure(next, base) + + states = [DFAState(closure(start), finish)] + for state in states: # NB states grows while we're iterating + arcs = {} + for nfastate in state.nfaset: + for label, next in nfastate.arcs: + if label is not None: + addclosure(next, arcs.setdefault(label, {})) + for label, nfaset in arcs.items(): + for st in states: + if st.nfaset == nfaset: + break + else: + st = DFAState(nfaset, finish) + states.append(st) + state.addarc(st, label) + return states # List of DFAState instances; first one is start + + def _dump_nfa(self, name, start, finish): + print("Dump of NFA for", name) + todo = [start] + for i, state in enumerate(todo): + print(" State", i, state is finish and "(final)" or "") + for label, next in state.arcs: + if next in todo: + j = todo.index(next) + else: + j = len(todo) + todo.append(next) + if label is None: + print(" -> %d" % j) + else: + print(" %s -> %d" % (label, j)) + + def _dump_dfa(self, name, dfa): + print("Dump of DFA for", name) + for i, state in enumerate(dfa): + print(" State", i, state.isfinal and "(final)" or "") + for label, next in state.arcs.items(): + print(" %s -> %d" % (label, dfa.index(next))) + + def _simplify_dfa(self, dfa): + # This is not theoretically optimal, but works well enough. + # Algorithm: repeatedly look for two states that have the same + # set of arcs (same labels pointing to the same nodes) and + # unify them, until things stop changing. + + # dfa is a list of DFAState instances + changes = True + while changes: + changes = False + for i, state_i in enumerate(dfa): + for j in range(i + 1, len(dfa)): + state_j = dfa[j] + if state_i == state_j: + #print " unify", i, j + del dfa[j] + for state in dfa: + state.unifystate(state_j, state_i) + changes = True + break + + def _parse_rhs(self): + # RHS: ALT ('|' ALT)* + a, z = self._parse_alt() + if self.value != "|": + return a, z + else: + aa = NFAState() + zz = NFAState() + aa.addarc(a) + z.addarc(zz) + while self.value == "|": + self._gettoken() + a, z = self._parse_alt() + aa.addarc(a) + z.addarc(zz) + return aa, zz + + def _parse_alt(self): + # ALT: ITEM+ + a, b = self._parse_item() + while (self.value in ("(", "[") or + self.type in (token.NAME, token.STRING)): + c, d = self._parse_item() + b.addarc(c) + b = d + return a, b + + def _parse_item(self): + # ITEM: '[' RHS ']' | ATOM ['+' | '*'] + if self.value == "[": + self._gettoken() + a, z = self._parse_rhs() + self._expect(token.RSQB) + a.addarc(z) + return a, z + else: + a, z = self._parse_atom() + value = self.value + if value not in ("+", "*"): + return a, z + self._gettoken() + z.addarc(a) + if value == "+": + return a, z + else: + return a, a + + def _parse_atom(self): + # ATOM: '(' RHS ')' | NAME | STRING + if self.value == "(": + self._gettoken() + a, z = self._parse_rhs() + self._expect(token.RPAR) + return a, z + elif self.type in (token.NAME, token.STRING): + a = NFAState() + z = NFAState() + a.addarc(z, self.value) + self._gettoken() + return a, z + else: + self._raise_error("expected (...) or NAME or STRING, got %s/%s", + self.type, self.value) + + def _expect(self, type): + if self.type != type: + self._raise_error("expected %s, got %s(%s)", + type, self.type, self.value) + value = self.value + self._gettoken() + return value + + def _gettoken(self): + tup = next(self.generator) + while tup[0] in (token.COMMENT, token.NL): + tup = next(self.generator) + self.type, self.value, self.begin, prefix = tup + + def _raise_error(self, msg, *args): + if args: + try: + msg = msg % args + except: + msg = " ".join([msg] + list(map(str, args))) + line = self._bnf_text.splitlines()[self.begin[0] - 1] + raise SyntaxError(msg, ('', self.begin[0], + self.begin[1], line)) + + +class NFAState(object): + def __init__(self): + self.arcs = [] # list of (label, NFAState) pairs + + def addarc(self, next, label=None): + assert label is None or isinstance(label, str) + assert isinstance(next, NFAState) + self.arcs.append((label, next)) + + +class DFAState(object): + def __init__(self, nfaset, final): + assert isinstance(nfaset, dict) + assert isinstance(next(iter(nfaset)), NFAState) + assert isinstance(final, NFAState) + self.nfaset = nfaset + self.isfinal = final in nfaset + self.arcs = {} # map from label to DFAState + + def addarc(self, next, label): + assert isinstance(label, str) + assert label not in self.arcs + assert isinstance(next, DFAState) + self.arcs[label] = next + + def unifystate(self, old, new): + for label, next in self.arcs.items(): + if next is old: + self.arcs[label] = new + + def __eq__(self, other): + # Equality test -- ignore the nfaset instance variable + assert isinstance(other, DFAState) + if self.isfinal != other.isfinal: + return False + # Can't just return self.arcs == other.arcs, because that + # would invoke this method recursively, with cycles... + if len(self.arcs) != len(other.arcs): + return False + for label, next in self.arcs.items(): + if next is not other.arcs.get(label): + return False + return True + + __hash__ = None # For Py3 compatibility. + + +def generate_grammar(bnf_text, token_namespace): + """ + ``bnf_text`` is a grammar in extended BNF (using * for repetition, + for + at-least-once repetition, [] for optional parts, | for alternatives and () + for grouping). + + It's not EBNF according to ISO/IEC 14977. It's a dialect Python uses in its + own parser. + """ + p = ParserGenerator(bnf_text, token_namespace) + return p.make_grammar() diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/__init__.py b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/diff.py b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/diff.py new file mode 100644 index 0000000..c2e44fd --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/diff.py @@ -0,0 +1,587 @@ +""" +Basically a contains parser that is faster, because it tries to parse only +parts and if anything changes, it only reparses the changed parts. + +It works with a simple diff in the beginning and will try to reuse old parser +fragments. +""" +import re +import difflib +from collections import namedtuple +import logging + +from parso.utils import split_lines +from parso.python.parser import Parser +from parso.python.tree import EndMarker +from parso.python.tokenize import (NEWLINE, PythonToken, ERROR_DEDENT, + ENDMARKER, INDENT, DEDENT) + +LOG = logging.getLogger(__name__) + + +def _get_last_line(node_or_leaf): + last_leaf = node_or_leaf.get_last_leaf() + if _ends_with_newline(last_leaf): + return last_leaf.start_pos[0] + else: + return last_leaf.end_pos[0] + + +def _ends_with_newline(leaf, suffix=''): + if leaf.type == 'error_leaf': + typ = leaf.original_type + else: + typ = leaf.type + + return typ == 'newline' or suffix.endswith('\n') + + +def _flows_finished(pgen_grammar, stack): + """ + if, while, for and try might not be finished, because another part might + still be parsed. + """ + for dfa, newstate, (symbol_number, nodes) in stack: + if pgen_grammar.number2symbol[symbol_number] in ('if_stmt', 'while_stmt', + 'for_stmt', 'try_stmt'): + return False + return True + + +def suite_or_file_input_is_valid(pgen_grammar, stack): + if not _flows_finished(pgen_grammar, stack): + return False + + for dfa, newstate, (symbol_number, nodes) in reversed(stack): + if pgen_grammar.number2symbol[symbol_number] == 'suite': + # If only newline is in the suite, the suite is not valid, yet. + return len(nodes) > 1 + # Not reaching a suite means that we're dealing with file_input levels + # where there's no need for a valid statement in it. It can also be empty. + return True + + +def _is_flow_node(node): + try: + value = node.children[0].value + except AttributeError: + return False + return value in ('if', 'for', 'while', 'try') + + +class _PositionUpdatingFinished(Exception): + pass + + +def _update_positions(nodes, line_offset, last_leaf): + for node in nodes: + try: + children = node.children + except AttributeError: + # Is a leaf + node.line += line_offset + if node is last_leaf: + raise _PositionUpdatingFinished + else: + _update_positions(children, line_offset, last_leaf) + + +class DiffParser(object): + """ + An advanced form of parsing a file faster. Unfortunately comes with huge + side effects. It changes the given module. + """ + def __init__(self, pgen_grammar, tokenizer, module): + self._pgen_grammar = pgen_grammar + self._tokenizer = tokenizer + self._module = module + + def _reset(self): + self._copy_count = 0 + self._parser_count = 0 + + self._nodes_stack = _NodesStack(self._module) + + def update(self, old_lines, new_lines): + ''' + The algorithm works as follows: + + Equal: + - Assure that the start is a newline, otherwise parse until we get + one. + - Copy from parsed_until_line + 1 to max(i2 + 1) + - Make sure that the indentation is correct (e.g. add DEDENT) + - Add old and change positions + Insert: + - Parse from parsed_until_line + 1 to min(j2 + 1), hopefully not + much more. + + Returns the new module node. + ''' + LOG.debug('diff parser start') + # Reset the used names cache so they get regenerated. + self._module._used_names = None + + self._parser_lines_new = new_lines + + self._reset() + + line_length = len(new_lines) + sm = difflib.SequenceMatcher(None, old_lines, self._parser_lines_new) + opcodes = sm.get_opcodes() + LOG.debug('diff parser calculated') + LOG.debug('diff: line_lengths old: %s, new: %s' % (len(old_lines), line_length)) + + for operation, i1, i2, j1, j2 in opcodes: + LOG.debug('diff %s old[%s:%s] new[%s:%s]', + operation, i1 + 1, i2, j1 + 1, j2) + + if j2 == line_length and new_lines[-1] == '': + # The empty part after the last newline is not relevant. + j2 -= 1 + + if operation == 'equal': + line_offset = j1 - i1 + self._copy_from_old_parser(line_offset, i2, j2) + elif operation == 'replace': + self._parse(until_line=j2) + elif operation == 'insert': + self._parse(until_line=j2) + else: + assert operation == 'delete' + + # With this action all change will finally be applied and we have a + # changed module. + self._nodes_stack.close() + + last_pos = self._module.end_pos[0] + if last_pos != line_length: + current_lines = split_lines(self._module.get_code(), keepends=True) + diff = difflib.unified_diff(current_lines, new_lines) + raise Exception( + "There's an issue (%s != %s) with the diff parser. Please report:\n%s" + % (last_pos, line_length, ''.join(diff)) + ) + + LOG.debug('diff parser end') + return self._module + + def _enabled_debugging(self, old_lines, lines_new): + if self._module.get_code() != ''.join(lines_new): + LOG.warning('parser issue:\n%s\n%s', ''.join(old_lines), + ''.join(lines_new)) + + def _copy_from_old_parser(self, line_offset, until_line_old, until_line_new): + copied_nodes = [None] + + last_until_line = -1 + while until_line_new > self._nodes_stack.parsed_until_line: + parsed_until_line_old = self._nodes_stack.parsed_until_line - line_offset + line_stmt = self._get_old_line_stmt(parsed_until_line_old + 1) + if line_stmt is None: + # Parse 1 line at least. We don't need more, because we just + # want to get into a state where the old parser has statements + # again that can be copied (e.g. not lines within parentheses). + self._parse(self._nodes_stack.parsed_until_line + 1) + elif not copied_nodes: + # We have copied as much as possible (but definitely not too + # much). Therefore we just parse the rest. + # We might not reach the end, because there's a statement + # that is not finished. + self._parse(until_line_new) + else: + p_children = line_stmt.parent.children + index = p_children.index(line_stmt) + + copied_nodes = self._nodes_stack.copy_nodes( + p_children[index:], + until_line_old, + line_offset + ) + # Match all the nodes that are in the wanted range. + if copied_nodes: + self._copy_count += 1 + + from_ = copied_nodes[0].get_start_pos_of_prefix()[0] + line_offset + to = self._nodes_stack.parsed_until_line + + LOG.debug('diff actually copy %s to %s', from_, to) + # Since there are potential bugs that might loop here endlessly, we + # just stop here. + assert last_until_line != self._nodes_stack.parsed_until_line \ + or not copied_nodes, last_until_line + last_until_line = self._nodes_stack.parsed_until_line + + def _get_old_line_stmt(self, old_line): + leaf = self._module.get_leaf_for_position((old_line, 0), include_prefixes=True) + + if _ends_with_newline(leaf): + leaf = leaf.get_next_leaf() + if leaf.get_start_pos_of_prefix()[0] == old_line: + node = leaf + while node.parent.type not in ('file_input', 'suite'): + node = node.parent + return node + # Must be on the same line. Otherwise we need to parse that bit. + return None + + def _get_before_insertion_node(self): + if self._nodes_stack.is_empty(): + return None + + line = self._nodes_stack.parsed_until_line + 1 + node = self._new_module.get_last_leaf() + while True: + parent = node.parent + if parent.type in ('suite', 'file_input'): + assert node.end_pos[0] <= line + assert node.end_pos[1] == 0 or '\n' in self._prefix + return node + node = parent + + def _parse(self, until_line): + """ + Parses at least until the given line, but might just parse more until a + valid state is reached. + """ + last_until_line = 0 + while until_line > self._nodes_stack.parsed_until_line: + node = self._try_parse_part(until_line) + nodes = node.children + + self._nodes_stack.add_parsed_nodes(nodes) + LOG.debug( + 'parse_part from %s to %s (to %s in part parser)', + nodes[0].get_start_pos_of_prefix()[0], + self._nodes_stack.parsed_until_line, + node.end_pos[0] - 1 + ) + # Since the tokenizer sometimes has bugs, we cannot be sure that + # this loop terminates. Therefore assert that there's always a + # change. + assert last_until_line != self._nodes_stack.parsed_until_line, last_until_line + last_until_line = self._nodes_stack.parsed_until_line + + def _try_parse_part(self, until_line): + """ + Sets up a normal parser that uses a spezialized tokenizer to only parse + until a certain position (or a bit longer if the statement hasn't + ended. + """ + self._parser_count += 1 + # TODO speed up, shouldn't copy the whole list all the time. + # memoryview? + parsed_until_line = self._nodes_stack.parsed_until_line + lines_after = self._parser_lines_new[parsed_until_line:] + #print('parse_content', parsed_until_line, lines_after, until_line) + tokens = self._diff_tokenize( + lines_after, + until_line, + line_offset=parsed_until_line + ) + self._active_parser = Parser( + self._pgen_grammar, + error_recovery=True + ) + return self._active_parser.parse(tokens=tokens) + + def _diff_tokenize(self, lines, until_line, line_offset=0): + is_first_token = True + omitted_first_indent = False + indents = [] + tokens = self._tokenizer(lines, (1, 0)) + stack = self._active_parser.pgen_parser.stack + for typ, string, start_pos, prefix in tokens: + start_pos = start_pos[0] + line_offset, start_pos[1] + if typ == INDENT: + indents.append(start_pos[1]) + if is_first_token: + omitted_first_indent = True + # We want to get rid of indents that are only here because + # we only parse part of the file. These indents would only + # get parsed as error leafs, which doesn't make any sense. + is_first_token = False + continue + is_first_token = False + + # In case of omitted_first_indent, it might not be dedented fully. + # However this is a sign for us that a dedent happened. + if typ == DEDENT \ + or typ == ERROR_DEDENT and omitted_first_indent and len(indents) == 1: + indents.pop() + if omitted_first_indent and not indents: + # We are done here, only thing that can come now is an + # endmarker or another dedented code block. + typ, string, start_pos, prefix = next(tokens) + if '\n' in prefix: + prefix = re.sub(r'(<=\n)[^\n]+$', '', prefix) + else: + prefix = '' + yield PythonToken(ENDMARKER, '', (start_pos[0] + line_offset, 0), prefix) + break + elif typ == NEWLINE and start_pos[0] >= until_line: + yield PythonToken(typ, string, start_pos, prefix) + # Check if the parser is actually in a valid suite state. + if suite_or_file_input_is_valid(self._pgen_grammar, stack): + start_pos = start_pos[0] + 1, 0 + while len(indents) > int(omitted_first_indent): + indents.pop() + yield PythonToken(DEDENT, '', start_pos, '') + + yield PythonToken(ENDMARKER, '', start_pos, '') + break + else: + continue + + yield PythonToken(typ, string, start_pos, prefix) + + +class _NodesStackNode(object): + ChildrenGroup = namedtuple('ChildrenGroup', 'children line_offset last_line_offset_leaf') + + def __init__(self, tree_node, parent=None): + self.tree_node = tree_node + self.children_groups = [] + self.parent = parent + + def close(self): + children = [] + for children_part, line_offset, last_line_offset_leaf in self.children_groups: + if line_offset != 0: + try: + _update_positions( + children_part, line_offset, last_line_offset_leaf) + except _PositionUpdatingFinished: + pass + children += children_part + self.tree_node.children = children + # Reset the parents + for node in children: + node.parent = self.tree_node + + def add(self, children, line_offset=0, last_line_offset_leaf=None): + group = self.ChildrenGroup(children, line_offset, last_line_offset_leaf) + self.children_groups.append(group) + + def get_last_line(self, suffix): + line = 0 + if self.children_groups: + children_group = self.children_groups[-1] + last_leaf = children_group.children[-1].get_last_leaf() + line = last_leaf.end_pos[0] + + # Calculate the line offsets + offset = children_group.line_offset + if offset: + # In case the line_offset is not applied to this specific leaf, + # just ignore it. + if last_leaf.line <= children_group.last_line_offset_leaf.line: + line += children_group.line_offset + + # Newlines end on the next line, which means that they would cover + # the next line. That line is not fully parsed at this point. + if _ends_with_newline(last_leaf, suffix): + line -= 1 + line += suffix.count('\n') + if suffix and not suffix.endswith('\n'): + # This is the end of a file (that doesn't end with a newline). + line += 1 + return line + + +class _NodesStack(object): + endmarker_type = 'endmarker' + + def __init__(self, module): + # Top of stack + self._tos = self._base_node = _NodesStackNode(module) + self._module = module + self._last_prefix = '' + self.prefix = '' + + def is_empty(self): + return not self._base_node.children + + @property + def parsed_until_line(self): + return self._tos.get_last_line(self.prefix) + + def _get_insertion_node(self, indentation_node): + indentation = indentation_node.start_pos[1] + + # find insertion node + node = self._tos + while True: + tree_node = node.tree_node + if tree_node.type == 'suite': + # A suite starts with NEWLINE, ... + node_indentation = tree_node.children[1].start_pos[1] + + if indentation >= node_indentation: # Not a Dedent + # We might be at the most outer layer: modules. We + # don't want to depend on the first statement + # having the right indentation. + return node + + elif tree_node.type == 'file_input': + return node + + node = self._close_tos() + + def _close_tos(self): + self._tos.close() + self._tos = self._tos.parent + return self._tos + + def add_parsed_nodes(self, tree_nodes): + tree_nodes = self._remove_endmarker(tree_nodes) + if not tree_nodes: + return + + assert tree_nodes[0].type != 'newline' + + node = self._get_insertion_node(tree_nodes[0]) + assert node.tree_node.type in ('suite', 'file_input') + node.add(tree_nodes) + self._update_tos(tree_nodes[-1]) + + def _remove_endmarker(self, tree_nodes): + """ + Helps cleaning up the tree nodes that get inserted. + """ + last_leaf = tree_nodes[-1].get_last_leaf() + is_endmarker = last_leaf.type == self.endmarker_type + self._last_prefix = '' + if is_endmarker: + try: + separation = last_leaf.prefix.rindex('\n') + except ValueError: + pass + else: + # Remove the whitespace part of the prefix after a newline. + # That is not relevant if parentheses were opened. Always parse + # until the end of a line. + last_leaf.prefix, self._last_prefix = \ + last_leaf.prefix[:separation + 1], last_leaf.prefix[separation + 1:] + + first_leaf = tree_nodes[0].get_first_leaf() + first_leaf.prefix = self.prefix + first_leaf.prefix + self.prefix = '' + + if is_endmarker: + self.prefix = last_leaf.prefix + + tree_nodes = tree_nodes[:-1] + + return tree_nodes + + def copy_nodes(self, tree_nodes, until_line, line_offset): + """ + Copies tree nodes from the old parser tree. + + Returns the number of tree nodes that were copied. + """ + tos = self._get_insertion_node(tree_nodes[0]) + + new_nodes, self._tos = self._copy_nodes(tos, tree_nodes, until_line, line_offset) + return new_nodes + + def _copy_nodes(self, tos, nodes, until_line, line_offset): + new_nodes = [] + + new_tos = tos + for node in nodes: + if node.type == 'endmarker': + # Endmarkers just distort all the checks below. Remove them. + break + + if node.start_pos[0] > until_line: + break + # TODO this check might take a bit of time for large files. We + # might want to change this to do more intelligent guessing or + # binary search. + if _get_last_line(node) > until_line: + # We can split up functions and classes later. + if node.type in ('classdef', 'funcdef') and node.children[-1].type == 'suite': + new_nodes.append(node) + break + + new_nodes.append(node) + + if not new_nodes: + return [], tos + + last_node = new_nodes[-1] + line_offset_index = -1 + if last_node.type in ('classdef', 'funcdef'): + suite = last_node.children[-1] + if suite.type == 'suite': + suite_tos = _NodesStackNode(suite) + # Don't need to pass line_offset here, it's already done by the + # parent. + suite_nodes, recursive_tos = self._copy_nodes( + suite_tos, suite.children, until_line, line_offset) + if len(suite_nodes) < 2: + # A suite only with newline is not valid. + new_nodes.pop() + else: + suite_tos.parent = tos + new_tos = recursive_tos + line_offset_index = -2 + + elif (new_nodes[-1].type in ('error_leaf', 'error_node') or + _is_flow_node(new_nodes[-1])): + # Error leafs/nodes don't have a defined start/end. Error + # nodes might not end with a newline (e.g. if there's an + # open `(`). Therefore ignore all of them unless they are + # succeeded with valid parser state. + # If we copy flows at the end, they might be continued + # after the copy limit (in the new parser). + # In this while loop we try to remove until we find a newline. + new_nodes.pop() + while new_nodes: + last_node = new_nodes[-1] + if last_node.get_last_leaf().type == 'newline': + break + new_nodes.pop() + + if new_nodes: + try: + last_line_offset_leaf = new_nodes[line_offset_index].get_last_leaf() + except IndexError: + line_offset = 0 + # In this case we don't have to calculate an offset, because + # there's no children to be managed. + last_line_offset_leaf = None + tos.add(new_nodes, line_offset, last_line_offset_leaf) + return new_nodes, new_tos + + def _update_tos(self, tree_node): + if tree_node.type in ('suite', 'file_input'): + self._tos = _NodesStackNode(tree_node, self._tos) + self._tos.add(list(tree_node.children)) + self._update_tos(tree_node.children[-1]) + elif tree_node.type in ('classdef', 'funcdef'): + self._update_tos(tree_node.children[-1]) + + def close(self): + while self._tos is not None: + self._close_tos() + + # Add an endmarker. + try: + last_leaf = self._module.get_last_leaf() + end_pos = list(last_leaf.end_pos) + except IndexError: + end_pos = [1, 0] + lines = split_lines(self.prefix) + assert len(lines) > 0 + if len(lines) == 1: + end_pos[1] += len(lines[0]) + else: + end_pos[0] += len(lines) - 1 + end_pos[1] = len(lines[-1]) + + endmarker = EndMarker('', tuple(end_pos), self.prefix + self._last_prefix) + endmarker.parent = self._module + self._module.children.append(endmarker) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/errors.py b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/errors.py new file mode 100644 index 0000000..6529656 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/errors.py @@ -0,0 +1,1053 @@ +# -*- coding: utf-8 -*- +import codecs +import warnings +import re +from contextlib import contextmanager + +from parso.normalizer import Normalizer, NormalizerConfig, Issue, Rule +from parso.python.tree import search_ancestor +from parso.parser import ParserSyntaxError + +_BLOCK_STMTS = ('if_stmt', 'while_stmt', 'for_stmt', 'try_stmt', 'with_stmt') +_STAR_EXPR_PARENTS = ('testlist_star_expr', 'testlist_comp', 'exprlist') +# This is the maximal block size given by python. +_MAX_BLOCK_SIZE = 20 +_MAX_INDENT_COUNT = 100 +ALLOWED_FUTURES = ( + 'all_feature_names', 'nested_scopes', 'generators', 'division', + 'absolute_import', 'with_statement', 'print_function', 'unicode_literals', +) + + +def _iter_stmts(scope): + """ + Iterates over all statements and splits up simple_stmt. + """ + for child in scope.children: + if child.type == 'simple_stmt': + for child2 in child.children: + if child2.type == 'newline' or child2 == ';': + continue + yield child2 + else: + yield child + + +def _get_comprehension_type(atom): + first, second = atom.children[:2] + if second.type == 'testlist_comp' and second.children[1].type == 'comp_for': + if first == '[': + return 'list comprehension' + else: + return 'generator expression' + elif second.type == 'dictorsetmaker' and second.children[-1].type == 'comp_for': + if second.children[1] == ':': + return 'dict comprehension' + else: + return 'set comprehension' + return None + + +def _is_future_import(import_from): + # It looks like a __future__ import that is relative is still a future + # import. That feels kind of odd, but whatever. + # if import_from.level != 0: + # return False + from_names = import_from.get_from_names() + return [n.value for n in from_names] == ['__future__'] + + +def _remove_parens(atom): + """ + Returns the inner part of an expression like `(foo)`. Also removes nested + parens. + """ + try: + children = atom.children + except AttributeError: + pass + else: + if len(children) == 3 and children[0] == '(': + return _remove_parens(atom.children[1]) + return atom + + +def _iter_params(parent_node): + return (n for n in parent_node.children if n.type == 'param') + + +def _is_future_import_first(import_from): + """ + Checks if the import is the first statement of a file. + """ + found_docstring = False + for stmt in _iter_stmts(import_from.get_root_node()): + if stmt.type == 'string' and not found_docstring: + continue + found_docstring = True + + if stmt == import_from: + return True + if stmt.type == 'import_from' and _is_future_import(stmt): + continue + return False + + +def _iter_definition_exprs_from_lists(exprlist): + for child in exprlist.children[::2]: + if child.type == 'atom' and child.children[0] in ('(', '['): + testlist_comp = child.children[0] + if testlist_comp.type == 'testlist_comp': + for expr in _iter_definition_exprs_from_lists(testlist_comp): + yield expr + continue + elif child.children[0] == '[': + yield testlist_comp + continue + + yield child + +def _get_expr_stmt_definition_exprs(expr_stmt): + exprs = [] + for list_ in expr_stmt.children[:-2:2]: + if list_.type in ('testlist_star_expr', 'testlist'): + exprs += _iter_definition_exprs_from_lists(list_) + else: + exprs.append(list_) + return exprs + + +def _get_for_stmt_definition_exprs(for_stmt): + exprlist = for_stmt.children[1] + if exprlist.type != 'exprlist': + return [exprlist] + return list(_iter_definition_exprs_from_lists(exprlist)) + + +class _Context(object): + def __init__(self, node, add_syntax_error, parent_context=None): + self.node = node + self.blocks = [] + self.parent_context = parent_context + self._used_name_dict = {} + self._global_names = [] + self._nonlocal_names = [] + self._nonlocal_names_in_subscopes = [] + self._add_syntax_error = add_syntax_error + + def is_async_funcdef(self): + # Stupidly enough async funcdefs can have two different forms, + # depending if a decorator is used or not. + return self.is_function() \ + and self.node.parent.type in ('async_funcdef', 'async_stmt') + + def is_function(self): + return self.node.type == 'funcdef' + + def add_name(self, name): + parent_type = name.parent.type + if parent_type == 'trailer': + # We are only interested in first level names. + return + + if parent_type == 'global_stmt': + self._global_names.append(name) + elif parent_type == 'nonlocal_stmt': + self._nonlocal_names.append(name) + else: + self._used_name_dict.setdefault(name.value, []).append(name) + + def finalize(self): + """ + Returns a list of nonlocal names that need to be part of that scope. + """ + self._analyze_names(self._global_names, 'global') + self._analyze_names(self._nonlocal_names, 'nonlocal') + + # Python2.6 doesn't have dict comprehensions. + global_name_strs = dict((n.value, n) for n in self._global_names) + for nonlocal_name in self._nonlocal_names: + try: + global_name = global_name_strs[nonlocal_name.value] + except KeyError: + continue + + message = "name '%s' is nonlocal and global" % global_name.value + if global_name.start_pos < nonlocal_name.start_pos: + error_name = global_name + else: + error_name = nonlocal_name + self._add_syntax_error(error_name, message) + + nonlocals_not_handled = [] + for nonlocal_name in self._nonlocal_names_in_subscopes: + search = nonlocal_name.value + if search in global_name_strs or self.parent_context is None: + message = "no binding for nonlocal '%s' found" % nonlocal_name.value + self._add_syntax_error(nonlocal_name, message) + elif not self.is_function() or \ + nonlocal_name.value not in self._used_name_dict: + nonlocals_not_handled.append(nonlocal_name) + return self._nonlocal_names + nonlocals_not_handled + + def _analyze_names(self, globals_or_nonlocals, type_): + def raise_(message): + self._add_syntax_error(base_name, message % (base_name.value, type_)) + + params = [] + if self.node.type == 'funcdef': + params = self.node.get_params() + + for base_name in globals_or_nonlocals: + found_global_or_nonlocal = False + # Somehow Python does it the reversed way. + for name in reversed(self._used_name_dict.get(base_name.value, [])): + if name.start_pos > base_name.start_pos: + # All following names don't have to be checked. + found_global_or_nonlocal = True + + parent = name.parent + if parent.type == 'param' and parent.name == name: + # Skip those here, these definitions belong to the next + # scope. + continue + + if name.is_definition(): + if parent.type == 'expr_stmt' \ + and parent.children[1].type == 'annassign': + if found_global_or_nonlocal: + # If it's after the global the error seems to be + # placed there. + base_name = name + raise_("annotated name '%s' can't be %s") + break + else: + message = "name '%s' is assigned to before %s declaration" + else: + message = "name '%s' is used prior to %s declaration" + + if not found_global_or_nonlocal: + raise_(message) + # Only add an error for the first occurence. + break + + for param in params: + if param.name.value == base_name.value: + raise_("name '%s' is parameter and %s"), + + @contextmanager + def add_block(self, node): + self.blocks.append(node) + yield + self.blocks.pop() + + def add_context(self, node): + return _Context(node, self._add_syntax_error, parent_context=self) + + def close_child_context(self, child_context): + self._nonlocal_names_in_subscopes += child_context.finalize() + + +class ErrorFinder(Normalizer): + """ + Searches for errors in the syntax tree. + """ + def __init__(self, *args, **kwargs): + super(ErrorFinder, self).__init__(*args, **kwargs) + self._error_dict = {} + self.version = self.grammar.version_info + + def initialize(self, node): + def create_context(node): + if node is None: + return None + + parent_context = create_context(node.parent) + if node.type in ('classdef', 'funcdef', 'file_input'): + return _Context(node, self._add_syntax_error, parent_context) + return parent_context + + self.context = create_context(node) or _Context(node, self._add_syntax_error) + self._indentation_count = 0 + + def visit(self, node): + if node.type == 'error_node': + with self.visit_node(node): + # Don't need to investigate the inners of an error node. We + # might find errors in there that should be ignored, because + # the error node itself already shows that there's an issue. + return '' + return super(ErrorFinder, self).visit(node) + + + @contextmanager + def visit_node(self, node): + self._check_type_rules(node) + + if node.type in _BLOCK_STMTS: + with self.context.add_block(node): + if len(self.context.blocks) == _MAX_BLOCK_SIZE: + self._add_syntax_error(node, "too many statically nested blocks") + yield + return + elif node.type == 'suite': + self._indentation_count += 1 + if self._indentation_count == _MAX_INDENT_COUNT: + self._add_indentation_error(node.children[1], "too many levels of indentation") + + yield + + if node.type == 'suite': + self._indentation_count -= 1 + elif node.type in ('classdef', 'funcdef'): + context = self.context + self.context = context.parent_context + self.context.close_child_context(context) + + def visit_leaf(self, leaf): + if leaf.type == 'error_leaf': + if leaf.original_type in ('indent', 'error_dedent'): + # Indents/Dedents itself never have a prefix. They are just + # "pseudo" tokens that get removed by the syntax tree later. + # Therefore in case of an error we also have to check for this. + spacing = list(leaf.get_next_leaf()._split_prefix())[-1] + if leaf.original_type == 'indent': + message = 'unexpected indent' + else: + message = 'unindent does not match any outer indentation level' + self._add_indentation_error(spacing, message) + else: + if leaf.value.startswith('\\'): + message = 'unexpected character after line continuation character' + else: + match = re.match('\\w{,2}("{1,3}|\'{1,3})', leaf.value) + if match is None: + message = 'invalid syntax' + else: + if len(match.group(1)) == 1: + message = 'EOL while scanning string literal' + else: + message = 'EOF while scanning triple-quoted string literal' + self._add_syntax_error(leaf, message) + return '' + elif leaf.value == ':': + parent = leaf.parent + if parent.type in ('classdef', 'funcdef'): + self.context = self.context.add_context(parent) + + # The rest is rule based. + return super(ErrorFinder, self).visit_leaf(leaf) + + def _add_indentation_error(self, spacing, message): + self.add_issue(spacing, 903, "IndentationError: " + message) + + def _add_syntax_error(self, node, message): + self.add_issue(node, 901, "SyntaxError: " + message) + + def add_issue(self, node, code, message): + # Overwrite the default behavior. + # Check if the issues are on the same line. + line = node.start_pos[0] + args = (code, message, node) + self._error_dict.setdefault(line, args) + + def finalize(self): + self.context.finalize() + + for code, message, node in self._error_dict.values(): + self.issues.append(Issue(node, code, message)) + + +class IndentationRule(Rule): + code = 903 + + def _get_message(self, message): + message = super(IndentationRule, self)._get_message(message) + return "IndentationError: " + message + + +@ErrorFinder.register_rule(type='error_node') +class _ExpectIndentedBlock(IndentationRule): + message = 'expected an indented block' + + def get_node(self, node): + leaf = node.get_next_leaf() + return list(leaf._split_prefix())[-1] + + def is_issue(self, node): + # This is the beginning of a suite that is not indented. + return node.children[-1].type == 'newline' + + +class ErrorFinderConfig(NormalizerConfig): + normalizer_class = ErrorFinder + + +class SyntaxRule(Rule): + code = 901 + + def _get_message(self, message): + message = super(SyntaxRule, self)._get_message(message) + return "SyntaxError: " + message + + +@ErrorFinder.register_rule(type='error_node') +class _InvalidSyntaxRule(SyntaxRule): + message = "invalid syntax" + + def get_node(self, node): + return node.get_next_leaf() + + def is_issue(self, node): + # Error leafs will be added later as an error. + return node.get_next_leaf().type != 'error_leaf' + + +@ErrorFinder.register_rule(value='await') +class _AwaitOutsideAsync(SyntaxRule): + message = "'await' outside async function" + + def is_issue(self, leaf): + return not self._normalizer.context.is_async_funcdef() + + def get_error_node(self, node): + # Return the whole await statement. + return node.parent + + +@ErrorFinder.register_rule(value='break') +class _BreakOutsideLoop(SyntaxRule): + message = "'break' outside loop" + + def is_issue(self, leaf): + in_loop = False + for block in self._normalizer.context.blocks: + if block.type in ('for_stmt', 'while_stmt'): + in_loop = True + return not in_loop + + +@ErrorFinder.register_rule(value='continue') +class _ContinueChecks(SyntaxRule): + message = "'continue' not properly in loop" + message_in_finally = "'continue' not supported inside 'finally' clause" + + def is_issue(self, leaf): + in_loop = False + for block in self._normalizer.context.blocks: + if block.type in ('for_stmt', 'while_stmt'): + in_loop = True + if block.type == 'try_stmt': + last_block = block.children[-3] + if last_block == 'finally' and leaf.start_pos > last_block.start_pos: + self.add_issue(leaf, message=self.message_in_finally) + return False # Error already added + if not in_loop: + return True + + +@ErrorFinder.register_rule(value='from') +class _YieldFromCheck(SyntaxRule): + message = "'yield from' inside async function" + + def get_node(self, leaf): + return leaf.parent.parent # This is the actual yield statement. + + def is_issue(self, leaf): + return leaf.parent.type == 'yield_arg' \ + and self._normalizer.context.is_async_funcdef() + + +@ErrorFinder.register_rule(type='name') +class _NameChecks(SyntaxRule): + message = 'cannot assign to __debug__' + message_keyword = 'assignment to keyword' + message_none = 'cannot assign to None' + + def is_issue(self, leaf): + self._normalizer.context.add_name(leaf) + + if leaf.value == '__debug__' and leaf.is_definition(): + if self._normalizer.version < (3, 0): + return True + else: + self.add_issue(leaf, message=self.message_keyword) + if leaf.value == 'None' and self._normalizer.version < (3, 0) \ + and leaf.is_definition(): + self.add_issue(leaf, message=self.message_none) + + +@ErrorFinder.register_rule(type='string') +class _StringChecks(SyntaxRule): + message = "bytes can only contain ASCII literal characters." + + def is_issue(self, leaf): + string_prefix = leaf.string_prefix.lower() + if 'b' in string_prefix \ + and self._normalizer.version >= (3, 0) \ + and any(c for c in leaf.value if ord(c) > 127): + # b'ä' + return True + + if 'r' not in string_prefix: + # Raw strings don't need to be checked if they have proper + # escaping. + is_bytes = self._normalizer.version < (3, 0) + if 'b' in string_prefix: + is_bytes = True + if 'u' in string_prefix: + is_bytes = False + + payload = leaf._get_payload() + if is_bytes: + payload = payload.encode('utf-8') + func = codecs.escape_decode + else: + func = codecs.unicode_escape_decode + + try: + with warnings.catch_warnings(): + # The warnings from parsing strings are not relevant. + warnings.filterwarnings('ignore') + func(payload) + except UnicodeDecodeError as e: + self.add_issue(leaf, message='(unicode error) ' + str(e)) + except ValueError as e: + self.add_issue(leaf, message='(value error) ' + str(e)) + + +@ErrorFinder.register_rule(value='*') +class _StarCheck(SyntaxRule): + message = "named arguments must follow bare *" + + def is_issue(self, leaf): + params = leaf.parent + if params.type == 'parameters' and params: + after = params.children[params.children.index(leaf) + 1:] + after = [child for child in after + if child not in (',', ')') and not child.star_count] + return len(after) == 0 + + +@ErrorFinder.register_rule(value='**') +class _StarStarCheck(SyntaxRule): + # e.g. {**{} for a in [1]} + # TODO this should probably get a better end_pos including + # the next sibling of leaf. + message = "dict unpacking cannot be used in dict comprehension" + + def is_issue(self, leaf): + if leaf.parent.type == 'dictorsetmaker': + comp_for = leaf.get_next_sibling().get_next_sibling() + return comp_for is not None and comp_for.type == 'comp_for' + + +@ErrorFinder.register_rule(value='yield') +@ErrorFinder.register_rule(value='return') +class _ReturnAndYieldChecks(SyntaxRule): + message = "'return' with value in async generator" + message_async_yield = "'yield' inside async function" + + def get_node(self, leaf): + return leaf.parent + + def is_issue(self, leaf): + if self._normalizer.context.node.type != 'funcdef': + self.add_issue(self.get_node(leaf), message="'%s' outside function" % leaf.value) + elif self._normalizer.context.is_async_funcdef() \ + and any(self._normalizer.context.node.iter_yield_exprs()): + if leaf.value == 'return' and leaf.parent.type == 'return_stmt': + return True + elif leaf.value == 'yield' \ + and leaf.get_next_leaf() != 'from' \ + and self._normalizer.version == (3, 5): + self.add_issue(self.get_node(leaf), message=self.message_async_yield) + +@ErrorFinder.register_rule(type='atom') +class _BytesAndStringMix(SyntaxRule): + # e.g. 's' b'' + message = "cannot mix bytes and nonbytes literals" + + def _is_bytes_literal(self, string): + return 'b' in string.string_prefix.lower() + + def is_issue(self, node): + first = node.children[0] + if first.type == 'string' and self._normalizer.version >= (3, 0): + first_is_bytes = self._is_bytes_literal(first) + for string in node.children[1:]: + if first_is_bytes != self._is_bytes_literal(string): + return True + + +@ErrorFinder.register_rule(type='import_as_names') +class _TrailingImportComma(SyntaxRule): + # e.g. from foo import a, + message = "trailing comma not allowed without surrounding parentheses" + + def is_issue(self, node): + if node.children[-1] == ',': + return True + + +@ErrorFinder.register_rule(type='import_from') +class _ImportStarInFunction(SyntaxRule): + message = "import * only allowed at module level" + + def is_issue(self, node): + return node.is_star_import() and self._normalizer.context.parent_context is not None + + +@ErrorFinder.register_rule(type='import_from') +class _FutureImportRule(SyntaxRule): + message = "from __future__ imports must occur at the beginning of the file" + + def is_issue(self, node): + if _is_future_import(node): + if not _is_future_import_first(node): + return True + + for from_name, future_name in node.get_paths(): + name = future_name.value + allowed_futures = list(ALLOWED_FUTURES) + if self._normalizer.version >= (3, 5): + allowed_futures.append('generator_stop') + + if name == 'braces': + self.add_issue(node, message = "not a chance") + elif name == 'barry_as_FLUFL': + m = "Seriously I'm not implementing this :) ~ Dave" + self.add_issue(node, message=m) + elif name not in ALLOWED_FUTURES: + message = "future feature %s is not defined" % name + self.add_issue(node, message=message) + + +@ErrorFinder.register_rule(type='star_expr') +class _StarExprRule(SyntaxRule): + message = "starred assignment target must be in a list or tuple" + message_iterable_unpacking = "iterable unpacking cannot be used in comprehension" + message_assignment = "can use starred expression only as assignment target" + + def is_issue(self, node): + if node.parent.type not in _STAR_EXPR_PARENTS: + return True + if node.parent.type == 'testlist_comp': + # [*[] for a in [1]] + if node.parent.children[1].type == 'comp_for': + self.add_issue(node, message=self.message_iterable_unpacking) + if self._normalizer.version <= (3, 4): + n = search_ancestor(node, 'for_stmt', 'expr_stmt') + found_definition = False + if n is not None: + if n.type == 'expr_stmt': + exprs = _get_expr_stmt_definition_exprs(n) + else: + exprs = _get_for_stmt_definition_exprs(n) + if node in exprs: + found_definition = True + + if not found_definition: + self.add_issue(node, message=self.message_assignment) + + +@ErrorFinder.register_rule(types=_STAR_EXPR_PARENTS) +class _StarExprParentRule(SyntaxRule): + def is_issue(self, node): + if node.parent.type == 'del_stmt': + self.add_issue(node.parent, message="can't use starred expression here") + else: + def is_definition(node, ancestor): + if ancestor is None: + return False + + type_ = ancestor.type + if type_ == 'trailer': + return False + + if type_ == 'expr_stmt': + return node.start_pos < ancestor.children[-1].start_pos + + return is_definition(node, ancestor.parent) + + if is_definition(node, node.parent): + args = [c for c in node.children if c != ','] + starred = [c for c in args if c.type == 'star_expr'] + if len(starred) > 1: + message = "two starred expressions in assignment" + self.add_issue(starred[1], message=message) + elif starred: + count = args.index(starred[0]) + if count >= 256: + message = "too many expressions in star-unpacking assignment" + self.add_issue(starred[0], message=message) + + +@ErrorFinder.register_rule(type='annassign') +class _AnnotatorRule(SyntaxRule): + # True: int + # {}: float + message = "illegal target for annotation" + + def get_node(self, node): + return node.parent + + def is_issue(self, node): + type_ = None + lhs = node.parent.children[0] + lhs = _remove_parens(lhs) + try: + children = lhs.children + except AttributeError: + pass + else: + if ',' in children or lhs.type == 'atom' and children[0] == '(': + type_ = 'tuple' + elif lhs.type == 'atom' and children[0] == '[': + type_ = 'list' + trailer = children[-1] + + if type_ is None: + if not (lhs.type == 'name' + # subscript/attributes are allowed + or lhs.type in ('atom_expr', 'power') + and trailer.type == 'trailer' + and trailer.children[0] != '('): + return True + else: + # x, y: str + message = "only single target (not %s) can be annotated" + self.add_issue(lhs.parent, message=message % type_) + + +@ErrorFinder.register_rule(type='argument') +class _ArgumentRule(SyntaxRule): + def is_issue(self, node): + first = node.children[0] + if node.children[1] == '=' and first.type != 'name': + if first.type == 'lambdef': + # f(lambda: 1=1) + message = "lambda cannot contain assignment" + else: + # f(+x=1) + message = "keyword can't be an expression" + self.add_issue(first, message=message) + + +@ErrorFinder.register_rule(type='nonlocal_stmt') +class _NonlocalModuleLevelRule(SyntaxRule): + message = "nonlocal declaration not allowed at module level" + + def is_issue(self, node): + return self._normalizer.context.parent_context is None + + +@ErrorFinder.register_rule(type='arglist') +class _ArglistRule(SyntaxRule): + message = "Generator expression must be parenthesized if not sole argument" + + def is_issue(self, node): + first_arg = node.children[0] + if first_arg.type == 'argument' \ + and first_arg.children[1].type == 'comp_for': + # e.g. foo(x for x in [], b) + return len(node.children) >= 2 + else: + arg_set = set() + kw_only = False + kw_unpacking_only = False + is_old_starred = False + # In python 3 this would be a bit easier (stars are part of + # argument), but we have to understand both. + for argument in node.children: + if argument == ',': + continue + + if argument in ('*', '**'): + # Python < 3.5 has the order engraved in the grammar + # file. No need to do anything here. + is_old_starred = True + continue + if is_old_starred: + is_old_starred = False + continue + + if argument.type == 'argument': + first = argument.children[0] + if first in ('*', '**'): + if first == '*': + if kw_unpacking_only: + # foo(**kwargs, *args) + message = "iterable argument unpacking follows keyword argument unpacking" + self.add_issue(argument, message=message) + else: + kw_unpacking_only = True + else: # Is a keyword argument. + kw_only = True + if first.type == 'name': + if first.value in arg_set: + # f(x=1, x=2) + self.add_issue(first, message="keyword argument repeated") + else: + arg_set.add(first.value) + else: + if kw_unpacking_only: + # f(**x, y) + message = "positional argument follows keyword argument unpacking" + self.add_issue(argument, message=message) + elif kw_only: + # f(x=2, y) + message = "positional argument follows keyword argument" + self.add_issue(argument, message=message) + +@ErrorFinder.register_rule(type='parameters') +@ErrorFinder.register_rule(type='lambdef') +class _ParameterRule(SyntaxRule): + # def f(x=3, y): pass + message = "non-default argument follows default argument" + + def is_issue(self, node): + param_names = set() + default_only = False + for p in _iter_params(node): + if p.name.value in param_names: + message = "duplicate argument '%s' in function definition" + self.add_issue(p.name, message=message % p.name.value) + param_names.add(p.name.value) + + if p.default is None and not p.star_count: + if default_only: + return True + else: + default_only = True + + +@ErrorFinder.register_rule(type='try_stmt') +class _TryStmtRule(SyntaxRule): + message = "default 'except:' must be last" + + def is_issue(self, try_stmt): + default_except = None + for except_clause in try_stmt.children[3::3]: + if except_clause in ('else', 'finally'): + break + if except_clause == 'except': + default_except = except_clause + elif default_except is not None: + self.add_issue(default_except, message=self.message) + + +@ErrorFinder.register_rule(type='string') +class _FStringRule(SyntaxRule): + _fstring_grammar = None + message_empty = "f-string: empty expression not allowed" # f'{}' + message_single_closing = "f-string: single '}' is not allowed" # f'}' + message_nested = "f-string: expressions nested too deeply" + message_backslash = "f-string expression part cannot include a backslash" # f'{"\"}' or f'{"\\"}' + message_comment = "f-string expression part cannot include '#'" # f'{#}' + message_unterminated_string = "f-string: unterminated string" # f'{"}' + message_conversion = "f-string: invalid conversion character: expected 's', 'r', or 'a'" + message_incomplete = "f-string: expecting '}'" # f'{' + message_syntax = "invalid syntax" + + @classmethod + def _load_grammar(cls): + import parso + + if cls._fstring_grammar is None: + cls._fstring_grammar = parso.load_grammar(language='python-f-string') + return cls._fstring_grammar + + def is_issue(self, fstring): + if 'f' not in fstring.string_prefix.lower(): + return + + parsed = self._load_grammar().parse_leaf(fstring) + for child in parsed.children: + if child.type == 'expression': + self._check_expression(child) + elif child.type == 'error_node': + next_ = child.get_next_leaf() + if next_.type == 'error_leaf' and next_.original_type == 'unterminated_string': + self.add_issue(next_, message=self.message_unterminated_string) + # At this point nothing more is comming except the error + # leaf that we've already checked here. + break + self.add_issue(child, message=self.message_incomplete) + elif child.type == 'error_leaf': + self.add_issue(child, message=self.message_single_closing) + + def _check_python_expr(self, python_expr): + value = python_expr.value + if '\\' in value: + self.add_issue(python_expr, message=self.message_backslash) + return + if '#' in value: + self.add_issue(python_expr, message=self.message_comment) + return + if re.match('\s*$', value) is not None: + self.add_issue(python_expr, message=self.message_empty) + return + + # This is now nested parsing. We parsed the fstring and now + # we're parsing Python again. + try: + # CPython has a bit of a special ways to parse Python code within + # f-strings. It wraps the code in brackets to make sure that + # whitespace doesn't make problems (indentation/newlines). + # Just use that algorithm as well here and adapt start positions. + start_pos = python_expr.start_pos + start_pos = start_pos[0], start_pos[1] - 1 + eval_input = self._normalizer.grammar._parse( + '(%s)' % value, + start_symbol='eval_input', + start_pos=start_pos, + error_recovery=False + ) + except ParserSyntaxError as e: + self.add_issue(e.error_leaf, message=self.message_syntax) + return + + issues = self._normalizer.grammar.iter_errors(eval_input) + self._normalizer.issues += issues + + def _check_format_spec(self, format_spec): + for expression in format_spec.children[1:]: + nested_format_spec = expression.children[-2] + if nested_format_spec.type == 'format_spec': + if len(nested_format_spec.children) > 1: + self.add_issue( + nested_format_spec.children[1], + message=self.message_nested + ) + + self._check_expression(expression) + + def _check_expression(self, expression): + for c in expression.children: + if c.type == 'python_expr': + self._check_python_expr(c) + elif c.type == 'conversion': + if c.value not in ('s', 'r', 'a'): + self.add_issue(c, message=self.message_conversion) + elif c.type == 'format_spec': + self._check_format_spec(c) + + +class _CheckAssignmentRule(SyntaxRule): + def _check_assignment(self, node, is_deletion=False): + error = None + type_ = node.type + if type_ == 'lambdef': + error = 'lambda' + elif type_ == 'atom': + first, second = node.children[:2] + error = _get_comprehension_type(node) + if error is None: + if second.type in ('dictorsetmaker', 'string'): + error = 'literal' + elif first in ('(', '['): + if second.type == 'yield_expr': + error = 'yield expression' + elif second.type == 'testlist_comp': + # This is not a comprehension, they were handled + # further above. + for child in second.children[::2]: + self._check_assignment(child, is_deletion) + else: # Everything handled, must be useless brackets. + self._check_assignment(second, is_deletion) + elif type_ == 'keyword': + error = 'keyword' + elif type_ == 'operator': + if node.value == '...': + error = 'Ellipsis' + elif type_ == 'comparison': + error = 'comparison' + elif type_ in ('string', 'number'): + error = 'literal' + elif type_ == 'yield_expr': + # This one seems to be a slightly different warning in Python. + message = 'assignment to yield expression not possible' + self.add_issue(node, message=message) + elif type_ == 'test': + error = 'conditional expression' + elif type_ in ('atom_expr', 'power'): + if node.children[0] == 'await': + error = 'await expression' + elif node.children[-2] == '**': + error = 'operator' + else: + # Has a trailer + trailer = node.children[-1] + assert trailer.type == 'trailer' + if trailer.children[0] == '(': + error = 'function call' + elif type_ in ('testlist_star_expr', 'exprlist', 'testlist'): + for child in node.children[::2]: + self._check_assignment(child, is_deletion) + elif ('expr' in type_ and type_ != 'star_expr' # is a substring + or '_test' in type_ + or type_ in ('term', 'factor')): + error = 'operator' + + if error is not None: + message = "can't %s %s" % ("delete" if is_deletion else "assign to", error) + self.add_issue(node, message=message) + + +@ErrorFinder.register_rule(type='comp_for') +class _CompForRule(_CheckAssignmentRule): + message = "asynchronous comprehension outside of an asynchronous function" + + def is_issue(self, node): + # Some of the nodes here are already used, so no else if + expr_list = node.children[1 + int(node.children[0] == 'async')] + if expr_list.type != 'expr_list': # Already handled. + self._check_assignment(expr_list) + + return node.children[0] == 'async' \ + and not self._normalizer.context.is_async_funcdef() + + +@ErrorFinder.register_rule(type='expr_stmt') +class _ExprStmtRule(_CheckAssignmentRule): + message = "illegal expression for augmented assignment" + + def is_issue(self, node): + for before_equal in node.children[:-2:2]: + self._check_assignment(before_equal) + + augassign = node.children[1] + if augassign != '=' and augassign.type != 'annassign': # Is augassign. + return node.children[0].type in ('testlist_star_expr', 'atom', 'testlist') + + +@ErrorFinder.register_rule(type='with_item') +class _WithItemRule(_CheckAssignmentRule): + def is_issue(self, with_item): + self._check_assignment(with_item.children[2]) + + +@ErrorFinder.register_rule(type='del_stmt') +class _DelStmtRule(_CheckAssignmentRule): + def is_issue(self, del_stmt): + child = del_stmt.children[1] + + if child.type != 'expr_list': # Already handled. + self._check_assignment(child, is_deletion=True) + + +@ErrorFinder.register_rule(type='expr_list') +class _ExprListRule(_CheckAssignmentRule): + def is_issue(self, expr_list): + for expr in expr_list.children[::2]: + self._check_assignment(expr) + + +@ErrorFinder.register_rule(type='for_stmt') +class _ForStmtRule(_CheckAssignmentRule): + def is_issue(self, for_stmt): + # Some of the nodes here are already used, so no else if + expr_list = for_stmt.children[1] + if expr_list.type != 'expr_list': # Already handled. + self._check_assignment(expr_list) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/fstring.py b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/fstring.py new file mode 100644 index 0000000..a8fe7b4 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/fstring.py @@ -0,0 +1,211 @@ +import re + +from itertools import count +from parso.utils import PythonVersionInfo +from parso.utils import split_lines +from parso.python.tokenize import Token +from parso import parser +from parso.tree import TypedLeaf, ErrorNode, ErrorLeaf + +version36 = PythonVersionInfo(3, 6) + + +class TokenNamespace: + _c = count() + LBRACE = next(_c) + RBRACE = next(_c) + ENDMARKER = next(_c) + COLON = next(_c) + CONVERSION = next(_c) + PYTHON_EXPR = next(_c) + EXCLAMATION_MARK = next(_c) + UNTERMINATED_STRING = next(_c) + + token_map = dict((v, k) for k, v in locals().items() if not k.startswith('_')) + + @classmethod + def generate_token_id(cls, string): + if string == '{': + return cls.LBRACE + elif string == '}': + return cls.RBRACE + elif string == '!': + return cls.EXCLAMATION_MARK + elif string == ':': + return cls.COLON + return getattr(cls, string) + + +GRAMMAR = """ +fstring: expression* ENDMARKER +format_spec: ':' expression* +expression: '{' PYTHON_EXPR [ '!' CONVERSION ] [ format_spec ] '}' +""" + +_prefix = r'((?:[^{}]+)*)' +_expr = _prefix + r'(\{|\}|$)' +_in_expr = r'([^{}\[\]:"\'!]*)(.?)' +# There's only one conversion character allowed. But the rules have to be +# checked later anyway, so allow more here. This makes error recovery nicer. +_conversion = r'([^={}:]*)(.?)' + +_compiled_expr = re.compile(_expr) +_compiled_in_expr = re.compile(_in_expr) +_compiled_conversion = re.compile(_conversion) + + +def tokenize(code, start_pos=(1, 0)): + def add_to_pos(string): + lines = split_lines(string) + l = len(lines[-1]) + if len(lines) > 1: + start_pos[0] += len(lines) - 1 + start_pos[1] = l + else: + start_pos[1] += l + + def tok(value, type=None, prefix=''): + if type is None: + type = TokenNamespace.generate_token_id(value) + + add_to_pos(prefix) + token = Token(type, value, tuple(start_pos), prefix) + add_to_pos(value) + return token + + start = 0 + recursion_level = 0 + added_prefix = '' + start_pos = list(start_pos) + while True: + match = _compiled_expr.match(code, start) + prefix = added_prefix + match.group(1) + found = match.group(2) + start = match.end() + if not found: + # We're at the end. + break + + if found == '}': + if recursion_level == 0 and len(code) > start and code[start] == '}': + # This is a }} escape. + added_prefix = prefix + '}}' + start += 1 + continue + + recursion_level = max(0, recursion_level - 1) + yield tok(found, prefix=prefix) + added_prefix = '' + else: + assert found == '{' + if recursion_level == 0 and len(code) > start and code[start] == '{': + # This is a {{ escape. + added_prefix = prefix + '{{' + start += 1 + continue + + recursion_level += 1 + yield tok(found, prefix=prefix) + added_prefix = '' + + expression = '' + squared_count = 0 + curly_count = 0 + while True: + expr_match = _compiled_in_expr.match(code, start) + expression += expr_match.group(1) + found = expr_match.group(2) + start = expr_match.end() + + if found == '{': + curly_count += 1 + expression += found + elif found == '}' and curly_count > 0: + curly_count -= 1 + expression += found + elif found == '[': + squared_count += 1 + expression += found + elif found == ']': + # Use a max function here, because the Python code might + # just have syntax errors. + squared_count = max(0, squared_count - 1) + expression += found + elif found == ':' and (squared_count or curly_count): + expression += found + elif found in ('"', "'"): + search = found + if len(code) > start + 1 and \ + code[start] == found == code[start+1]: + search *= 3 + start += 2 + + index = code.find(search, start) + if index == -1: + yield tok(expression, type=TokenNamespace.PYTHON_EXPR) + yield tok( + found + code[start:], + type=TokenNamespace.UNTERMINATED_STRING, + ) + start = len(code) + break + expression += found + code[start:index+1] + start = index + 1 + elif found == '!' and len(code) > start and code[start] == '=': + # This is a python `!=` and not a conversion. + expression += found + else: + yield tok(expression, type=TokenNamespace.PYTHON_EXPR) + if found: + yield tok(found) + break + + if found == '!': + conversion_match = _compiled_conversion.match(code, start) + found = conversion_match.group(2) + start = conversion_match.end() + yield tok(conversion_match.group(1), type=TokenNamespace.CONVERSION) + if found: + yield tok(found) + if found == '}': + recursion_level -= 1 + + # We don't need to handle everything after ':', because that is + # basically new tokens. + + yield tok('', type=TokenNamespace.ENDMARKER, prefix=prefix) + + +class Parser(parser.BaseParser): + def parse(self, tokens): + node = super(Parser, self).parse(tokens) + if isinstance(node, self.default_leaf): # Is an endmarker. + # If there's no curly braces we get back a non-module. We always + # want an fstring. + node = self.default_node('fstring', [node]) + + return node + + def convert_leaf(self, pgen_grammar, type, value, prefix, start_pos): + # TODO this is so ugly. + leaf_type = TokenNamespace.token_map[type].lower() + return TypedLeaf(leaf_type, value, start_pos, prefix) + + def error_recovery(self, pgen_grammar, stack, arcs, typ, value, start_pos, prefix, + add_token_callback): + if not self._error_recovery: + return super(Parser, self).error_recovery( + pgen_grammar, stack, arcs, typ, value, start_pos, prefix, + add_token_callback + ) + + token_type = TokenNamespace.token_map[typ].lower() + if len(stack) == 1: + error_leaf = ErrorLeaf(token_type, value, start_pos, prefix) + stack[0][2][1].append(error_leaf) + else: + dfa, state, (type_, nodes) = stack[1] + stack[0][2][1].append(ErrorNode(nodes)) + stack[1:] = [] + + add_token_callback(typ, value, start_pos, prefix) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/grammar26.txt b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/grammar26.txt new file mode 100644 index 0000000..b972a41 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/grammar26.txt @@ -0,0 +1,158 @@ +# Grammar for Python + +# Note: Changing the grammar specified in this file will most likely +# require corresponding changes in the parser module +# (../Modules/parsermodule.c). If you can't make the changes to +# that module yourself, please co-ordinate the required changes +# with someone who can; ask around on python-dev for help. Fred +# Drake will probably be listening there. + +# NOTE WELL: You should also follow all the steps listed in PEP 306, +# "How to Change Python's Grammar" + +# Commands for Kees Blom's railroad program +#diagram:token NAME +#diagram:token NUMBER +#diagram:token STRING +#diagram:token NEWLINE +#diagram:token ENDMARKER +#diagram:token INDENT +#diagram:output\input python.bla +#diagram:token DEDENT +#diagram:output\textwidth 20.04cm\oddsidemargin 0.0cm\evensidemargin 0.0cm +#diagram:rules + +# Start symbols for the grammar: +# single_input is a single interactive statement; +# file_input is a module or sequence of commands read from an input file; +# eval_input is the input for the eval() and input() functions. +# NB: compound_stmt in single_input is followed by extra NEWLINE! +single_input: NEWLINE | simple_stmt | compound_stmt NEWLINE +file_input: (NEWLINE | stmt)* ENDMARKER +eval_input: testlist NEWLINE* ENDMARKER + +decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE +decorators: decorator+ +decorated: decorators (classdef | funcdef) +funcdef: 'def' NAME parameters ':' suite +parameters: '(' [varargslist] ')' +varargslist: ((fpdef ['=' test] ',')* + ('*' NAME [',' '**' NAME] | '**' NAME) | + fpdef ['=' test] (',' fpdef ['=' test])* [',']) +fpdef: NAME | '(' fplist ')' +fplist: fpdef (',' fpdef)* [','] + +stmt: simple_stmt | compound_stmt +simple_stmt: small_stmt (';' small_stmt)* [';'] NEWLINE +small_stmt: (expr_stmt | print_stmt | del_stmt | pass_stmt | flow_stmt | + import_stmt | global_stmt | exec_stmt | assert_stmt) +expr_stmt: testlist (augassign (yield_expr|testlist) | + ('=' (yield_expr|testlist))*) +augassign: ('+=' | '-=' | '*=' | '/=' | '%=' | '&=' | '|=' | '^=' | + '<<=' | '>>=' | '**=' | '//=') +# For normal assignments, additional restrictions enforced by the interpreter +print_stmt: 'print' ( [ test (',' test)* [','] ] | + '>>' test [ (',' test)+ [','] ] ) +del_stmt: 'del' exprlist +pass_stmt: 'pass' +flow_stmt: break_stmt | continue_stmt | return_stmt | raise_stmt | yield_stmt +break_stmt: 'break' +continue_stmt: 'continue' +return_stmt: 'return' [testlist] +yield_stmt: yield_expr +raise_stmt: 'raise' [test [',' test [',' test]]] +import_stmt: import_name | import_from +import_name: 'import' dotted_as_names +import_from: ('from' ('.'* dotted_name | '.'+) + 'import' ('*' | '(' import_as_names ')' | import_as_names)) +import_as_name: NAME ['as' NAME] +dotted_as_name: dotted_name ['as' NAME] +import_as_names: import_as_name (',' import_as_name)* [','] +dotted_as_names: dotted_as_name (',' dotted_as_name)* +dotted_name: NAME ('.' NAME)* +global_stmt: 'global' NAME (',' NAME)* +exec_stmt: 'exec' expr ['in' test [',' test]] +assert_stmt: 'assert' test [',' test] + +compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt | with_stmt | funcdef | classdef | decorated +if_stmt: 'if' test ':' suite ('elif' test ':' suite)* ['else' ':' suite] +while_stmt: 'while' test ':' suite ['else' ':' suite] +for_stmt: 'for' exprlist 'in' testlist ':' suite ['else' ':' suite] +try_stmt: ('try' ':' suite + ((except_clause ':' suite)+ + ['else' ':' suite] + ['finally' ':' suite] | + 'finally' ':' suite)) +with_stmt: 'with' with_item ':' suite +# Dave: Python2.6 actually defines a little bit of a different label called +# 'with_var'. However in 2.7+ this is the default. Apply it for +# consistency reasons. +with_item: test ['as' expr] +# NB compile.c makes sure that the default except clause is last +except_clause: 'except' [test [('as' | ',') test]] +suite: simple_stmt | NEWLINE INDENT stmt+ DEDENT + +# Backward compatibility cruft to support: +# [ x for x in lambda: True, lambda: False if x() ] +# even while also allowing: +# lambda x: 5 if x else 2 +# (But not a mix of the two) +testlist_safe: old_test [(',' old_test)+ [',']] +old_test: or_test | old_lambdef +old_lambdef: 'lambda' [varargslist] ':' old_test + +test: or_test ['if' or_test 'else' test] | lambdef +or_test: and_test ('or' and_test)* +and_test: not_test ('and' not_test)* +not_test: 'not' not_test | comparison +comparison: expr (comp_op expr)* +comp_op: '<'|'>'|'=='|'>='|'<='|'<>'|'!='|'in'|'not' 'in'|'is'|'is' 'not' +expr: xor_expr ('|' xor_expr)* +xor_expr: and_expr ('^' and_expr)* +and_expr: shift_expr ('&' shift_expr)* +shift_expr: arith_expr (('<<'|'>>') arith_expr)* +arith_expr: term (('+'|'-') term)* +term: factor (('*'|'/'|'%'|'//') factor)* +factor: ('+'|'-'|'~') factor | power +power: atom trailer* ['**' factor] +atom: ('(' [yield_expr|testlist_comp] ')' | + '[' [listmaker] ']' | + '{' [dictorsetmaker] '}' | + '`' testlist1 '`' | + NAME | NUMBER | STRING+) +listmaker: test ( list_for | (',' test)* [','] ) +# Dave: Renamed testlist_gexpr to testlist_comp, because in 2.7+ this is the +# default. It's more consistent like this. +testlist_comp: test ( gen_for | (',' test)* [','] ) +lambdef: 'lambda' [varargslist] ':' test +trailer: '(' [arglist] ')' | '[' subscriptlist ']' | '.' NAME +subscriptlist: subscript (',' subscript)* [','] +subscript: '.' '.' '.' | test | [test] ':' [test] [sliceop] +sliceop: ':' [test] +exprlist: expr (',' expr)* [','] +testlist: test (',' test)* [','] +# Dave: Rename from dictmaker to dictorsetmaker, because this is more +# consistent with the following grammars. +dictorsetmaker: test ':' test (',' test ':' test)* [','] + +classdef: 'class' NAME ['(' [testlist] ')'] ':' suite + +arglist: (argument ',')* (argument [','] + |'*' test (',' argument)* [',' '**' test] + |'**' test) +argument: test [gen_for] | test '=' test # Really [keyword '='] test + +list_iter: list_for | list_if +list_for: 'for' exprlist 'in' testlist_safe [list_iter] +list_if: 'if' old_test [list_iter] + +gen_iter: gen_for | gen_if +gen_for: 'for' exprlist 'in' or_test [gen_iter] +gen_if: 'if' old_test [gen_iter] + +testlist1: test (',' test)* + +# not used in grammar, but may appear in "node" passed from Parser to Compiler +encoding_decl: NAME + +yield_expr: 'yield' [testlist] diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/grammar27.txt b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/grammar27.txt new file mode 100644 index 0000000..4c3f33d --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/grammar27.txt @@ -0,0 +1,142 @@ +# Grammar for Python + +# Note: Changing the grammar specified in this file will most likely +# require corresponding changes in the parser module +# (../Modules/parsermodule.c). If you can't make the changes to +# that module yourself, please co-ordinate the required changes +# with someone who can; ask around on python-dev for help. Fred +# Drake will probably be listening there. + +# NOTE WELL: You should also follow all the steps listed in PEP 306, +# "How to Change Python's Grammar" + +# Start symbols for the grammar: +# single_input is a single interactive statement; +# file_input is a module or sequence of commands read from an input file; +# eval_input is the input for the eval() and input() functions. +# NB: compound_stmt in single_input is followed by extra NEWLINE! +single_input: NEWLINE | simple_stmt | compound_stmt NEWLINE +file_input: (NEWLINE | stmt)* ENDMARKER +eval_input: testlist NEWLINE* ENDMARKER + +decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE +decorators: decorator+ +decorated: decorators (classdef | funcdef) +funcdef: 'def' NAME parameters ':' suite +parameters: '(' [varargslist] ')' +varargslist: ((fpdef ['=' test] ',')* + ('*' NAME [',' '**' NAME] | '**' NAME) | + fpdef ['=' test] (',' fpdef ['=' test])* [',']) +fpdef: NAME | '(' fplist ')' +fplist: fpdef (',' fpdef)* [','] + +stmt: simple_stmt | compound_stmt +simple_stmt: small_stmt (';' small_stmt)* [';'] NEWLINE +small_stmt: (expr_stmt | print_stmt | del_stmt | pass_stmt | flow_stmt | + import_stmt | global_stmt | exec_stmt | assert_stmt) +expr_stmt: testlist (augassign (yield_expr|testlist) | + ('=' (yield_expr|testlist))*) +augassign: ('+=' | '-=' | '*=' | '/=' | '%=' | '&=' | '|=' | '^=' | + '<<=' | '>>=' | '**=' | '//=') +# For normal assignments, additional restrictions enforced by the interpreter +print_stmt: 'print' ( [ test (',' test)* [','] ] | + '>>' test [ (',' test)+ [','] ] ) +del_stmt: 'del' exprlist +pass_stmt: 'pass' +flow_stmt: break_stmt | continue_stmt | return_stmt | raise_stmt | yield_stmt +break_stmt: 'break' +continue_stmt: 'continue' +return_stmt: 'return' [testlist] +yield_stmt: yield_expr +raise_stmt: 'raise' [test [',' test [',' test]]] +import_stmt: import_name | import_from +import_name: 'import' dotted_as_names +import_from: ('from' ('.'* dotted_name | '.'+) + 'import' ('*' | '(' import_as_names ')' | import_as_names)) +import_as_name: NAME ['as' NAME] +dotted_as_name: dotted_name ['as' NAME] +import_as_names: import_as_name (',' import_as_name)* [','] +dotted_as_names: dotted_as_name (',' dotted_as_name)* +dotted_name: NAME ('.' NAME)* +global_stmt: 'global' NAME (',' NAME)* +exec_stmt: 'exec' expr ['in' test [',' test]] +assert_stmt: 'assert' test [',' test] + +compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt | with_stmt | funcdef | classdef | decorated +if_stmt: 'if' test ':' suite ('elif' test ':' suite)* ['else' ':' suite] +while_stmt: 'while' test ':' suite ['else' ':' suite] +for_stmt: 'for' exprlist 'in' testlist ':' suite ['else' ':' suite] +try_stmt: ('try' ':' suite + ((except_clause ':' suite)+ + ['else' ':' suite] + ['finally' ':' suite] | + 'finally' ':' suite)) +with_stmt: 'with' with_item (',' with_item)* ':' suite +with_item: test ['as' expr] +# NB compile.c makes sure that the default except clause is last +except_clause: 'except' [test [('as' | ',') test]] +suite: simple_stmt | NEWLINE INDENT stmt+ DEDENT + +# Backward compatibility cruft to support: +# [ x for x in lambda: True, lambda: False if x() ] +# even while also allowing: +# lambda x: 5 if x else 2 +# (But not a mix of the two) +testlist_safe: old_test [(',' old_test)+ [',']] +old_test: or_test | old_lambdef +old_lambdef: 'lambda' [varargslist] ':' old_test + +test: or_test ['if' or_test 'else' test] | lambdef +or_test: and_test ('or' and_test)* +and_test: not_test ('and' not_test)* +not_test: 'not' not_test | comparison +comparison: expr (comp_op expr)* +comp_op: '<'|'>'|'=='|'>='|'<='|'<>'|'!='|'in'|'not' 'in'|'is'|'is' 'not' +expr: xor_expr ('|' xor_expr)* +xor_expr: and_expr ('^' and_expr)* +and_expr: shift_expr ('&' shift_expr)* +shift_expr: arith_expr (('<<'|'>>') arith_expr)* +arith_expr: term (('+'|'-') term)* +term: factor (('*'|'/'|'%'|'//') factor)* +factor: ('+'|'-'|'~') factor | power +power: atom trailer* ['**' factor] +atom: ('(' [yield_expr|testlist_comp] ')' | + '[' [listmaker] ']' | + '{' [dictorsetmaker] '}' | + '`' testlist1 '`' | + NAME | NUMBER | STRING+) +listmaker: test ( list_for | (',' test)* [','] ) +testlist_comp: test ( comp_for | (',' test)* [','] ) +lambdef: 'lambda' [varargslist] ':' test +trailer: '(' [arglist] ')' | '[' subscriptlist ']' | '.' NAME +subscriptlist: subscript (',' subscript)* [','] +subscript: '.' '.' '.' | test | [test] ':' [test] [sliceop] +sliceop: ':' [test] +exprlist: expr (',' expr)* [','] +testlist: test (',' test)* [','] +dictorsetmaker: ( (test ':' test (comp_for | (',' test ':' test)* [','])) | + (test (comp_for | (',' test)* [','])) ) + +classdef: 'class' NAME ['(' [testlist] ')'] ':' suite + +arglist: (argument ',')* (argument [','] + |'*' test (',' argument)* [',' '**' test] + |'**' test) +# The reason that keywords are test nodes instead of NAME is that using NAME +# results in an ambiguity. ast.c makes sure it's a NAME. +argument: test [comp_for] | test '=' test + +list_iter: list_for | list_if +list_for: 'for' exprlist 'in' testlist_safe [list_iter] +list_if: 'if' old_test [list_iter] + +comp_iter: comp_for | comp_if +comp_for: 'for' exprlist 'in' or_test [comp_iter] +comp_if: 'if' old_test [comp_iter] + +testlist1: test (',' test)* + +# not used in grammar, but may appear in "node" passed from Parser to Compiler +encoding_decl: NAME + +yield_expr: 'yield' [testlist] diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/grammar33.txt b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/grammar33.txt new file mode 100644 index 0000000..d7aaffd --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/grammar33.txt @@ -0,0 +1,133 @@ +# Grammar for Python + +# Note: Changing the grammar specified in this file will most likely +# require corresponding changes in the parser module +# (../Modules/parsermodule.c). If you can't make the changes to +# that module yourself, please co-ordinate the required changes +# with someone who can; ask around on python-dev for help. Fred +# Drake will probably be listening there. + +# NOTE WELL: You should also follow all the steps listed in PEP 306, +# "How to Change Python's Grammar" + +# Start symbols for the grammar: +# single_input is a single interactive statement; +# file_input is a module or sequence of commands read from an input file; +# eval_input is the input for the eval() functions. +# NB: compound_stmt in single_input is followed by extra NEWLINE! +single_input: NEWLINE | simple_stmt | compound_stmt NEWLINE +file_input: (NEWLINE | stmt)* ENDMARKER +eval_input: testlist NEWLINE* ENDMARKER + +decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE +decorators: decorator+ +decorated: decorators (classdef | funcdef) +funcdef: 'def' NAME parameters ['->' test] ':' suite +parameters: '(' [typedargslist] ')' +typedargslist: (tfpdef ['=' test] (',' tfpdef ['=' test])* [',' + ['*' [tfpdef] (',' tfpdef ['=' test])* [',' '**' tfpdef] | '**' tfpdef]] + | '*' [tfpdef] (',' tfpdef ['=' test])* [',' '**' tfpdef] | '**' tfpdef) +tfpdef: NAME [':' test] +varargslist: (vfpdef ['=' test] (',' vfpdef ['=' test])* [',' + ['*' [vfpdef] (',' vfpdef ['=' test])* [',' '**' vfpdef] | '**' vfpdef]] + | '*' [vfpdef] (',' vfpdef ['=' test])* [',' '**' vfpdef] | '**' vfpdef) +vfpdef: NAME + +stmt: simple_stmt | compound_stmt +simple_stmt: small_stmt (';' small_stmt)* [';'] NEWLINE +small_stmt: (expr_stmt | del_stmt | pass_stmt | flow_stmt | + import_stmt | global_stmt | nonlocal_stmt | assert_stmt) +expr_stmt: testlist_star_expr (augassign (yield_expr|testlist) | + ('=' (yield_expr|testlist_star_expr))*) +testlist_star_expr: (test|star_expr) (',' (test|star_expr))* [','] +augassign: ('+=' | '-=' | '*=' | '/=' | '%=' | '&=' | '|=' | '^=' | + '<<=' | '>>=' | '**=' | '//=') +# For normal assignments, additional restrictions enforced by the interpreter +del_stmt: 'del' exprlist +pass_stmt: 'pass' +flow_stmt: break_stmt | continue_stmt | return_stmt | raise_stmt | yield_stmt +break_stmt: 'break' +continue_stmt: 'continue' +return_stmt: 'return' [testlist] +yield_stmt: yield_expr +raise_stmt: 'raise' [test ['from' test]] +import_stmt: import_name | import_from +import_name: 'import' dotted_as_names +# note below: the ('.' | '...') is necessary because '...' is tokenized as ELLIPSIS +import_from: ('from' (('.' | '...')* dotted_name | ('.' | '...')+) + 'import' ('*' | '(' import_as_names ')' | import_as_names)) +import_as_name: NAME ['as' NAME] +dotted_as_name: dotted_name ['as' NAME] +import_as_names: import_as_name (',' import_as_name)* [','] +dotted_as_names: dotted_as_name (',' dotted_as_name)* +dotted_name: NAME ('.' NAME)* +global_stmt: 'global' NAME (',' NAME)* +nonlocal_stmt: 'nonlocal' NAME (',' NAME)* +assert_stmt: 'assert' test [',' test] + +compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt | with_stmt | funcdef | classdef | decorated +if_stmt: 'if' test ':' suite ('elif' test ':' suite)* ['else' ':' suite] +while_stmt: 'while' test ':' suite ['else' ':' suite] +for_stmt: 'for' exprlist 'in' testlist ':' suite ['else' ':' suite] +try_stmt: ('try' ':' suite + ((except_clause ':' suite)+ + ['else' ':' suite] + ['finally' ':' suite] | + 'finally' ':' suite)) +with_stmt: 'with' with_item (',' with_item)* ':' suite +with_item: test ['as' expr] +# NB compile.c makes sure that the default except clause is last +except_clause: 'except' [test ['as' NAME]] +suite: simple_stmt | NEWLINE INDENT stmt+ DEDENT + +test: or_test ['if' or_test 'else' test] | lambdef +test_nocond: or_test | lambdef_nocond +lambdef: 'lambda' [varargslist] ':' test +lambdef_nocond: 'lambda' [varargslist] ':' test_nocond +or_test: and_test ('or' and_test)* +and_test: not_test ('and' not_test)* +not_test: 'not' not_test | comparison +comparison: expr (comp_op expr)* +# <> isn't actually a valid comparison operator in Python. It's here for the +# sake of a __future__ import described in PEP 401 +comp_op: '<'|'>'|'=='|'>='|'<='|'<>'|'!='|'in'|'not' 'in'|'is'|'is' 'not' +star_expr: '*' expr +expr: xor_expr ('|' xor_expr)* +xor_expr: and_expr ('^' and_expr)* +and_expr: shift_expr ('&' shift_expr)* +shift_expr: arith_expr (('<<'|'>>') arith_expr)* +arith_expr: term (('+'|'-') term)* +term: factor (('*'|'/'|'%'|'//') factor)* +factor: ('+'|'-'|'~') factor | power +power: atom trailer* ['**' factor] +atom: ('(' [yield_expr|testlist_comp] ')' | + '[' [testlist_comp] ']' | + '{' [dictorsetmaker] '}' | + NAME | NUMBER | STRING+ | '...' | 'None' | 'True' | 'False') +testlist_comp: (test|star_expr) ( comp_for | (',' (test|star_expr))* [','] ) +trailer: '(' [arglist] ')' | '[' subscriptlist ']' | '.' NAME +subscriptlist: subscript (',' subscript)* [','] +subscript: test | [test] ':' [test] [sliceop] +sliceop: ':' [test] +exprlist: (expr|star_expr) (',' (expr|star_expr))* [','] +testlist: test (',' test)* [','] +dictorsetmaker: ( (test ':' test (comp_for | (',' test ':' test)* [','])) | + (test (comp_for | (',' test)* [','])) ) + +classdef: 'class' NAME ['(' [arglist] ')'] ':' suite + +arglist: (argument ',')* (argument [','] + |'*' test (',' argument)* [',' '**' test] + |'**' test) +# The reason that keywords are test nodes instead of NAME is that using NAME +# results in an ambiguity. ast.c makes sure it's a NAME. +argument: test [comp_for] | test '=' test # Really [keyword '='] test +comp_iter: comp_for | comp_if +comp_for: 'for' exprlist 'in' or_test [comp_iter] +comp_if: 'if' test_nocond [comp_iter] + +# not used in grammar, but may appear in "node" passed from Parser to Compiler +encoding_decl: NAME + +yield_expr: 'yield' [yield_arg] +yield_arg: 'from' test | testlist diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/grammar34.txt b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/grammar34.txt new file mode 100644 index 0000000..05c3181 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/grammar34.txt @@ -0,0 +1,133 @@ +# Grammar for Python + +# Note: Changing the grammar specified in this file will most likely +# require corresponding changes in the parser module +# (../Modules/parsermodule.c). If you can't make the changes to +# that module yourself, please co-ordinate the required changes +# with someone who can; ask around on python-dev for help. Fred +# Drake will probably be listening there. + +# NOTE WELL: You should also follow all the steps listed at +# https://docs.python.org/devguide/grammar.html + +# Start symbols for the grammar: +# single_input is a single interactive statement; +# file_input is a module or sequence of commands read from an input file; +# eval_input is the input for the eval() functions. +# NB: compound_stmt in single_input is followed by extra NEWLINE! +single_input: NEWLINE | simple_stmt | compound_stmt NEWLINE +file_input: (NEWLINE | stmt)* ENDMARKER +eval_input: testlist NEWLINE* ENDMARKER + +decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE +decorators: decorator+ +decorated: decorators (classdef | funcdef) +funcdef: 'def' NAME parameters ['->' test] ':' suite +parameters: '(' [typedargslist] ')' +typedargslist: (tfpdef ['=' test] (',' tfpdef ['=' test])* [',' + ['*' [tfpdef] (',' tfpdef ['=' test])* [',' '**' tfpdef] | '**' tfpdef]] + | '*' [tfpdef] (',' tfpdef ['=' test])* [',' '**' tfpdef] | '**' tfpdef) +tfpdef: NAME [':' test] +varargslist: (vfpdef ['=' test] (',' vfpdef ['=' test])* [',' + ['*' [vfpdef] (',' vfpdef ['=' test])* [',' '**' vfpdef] | '**' vfpdef]] + | '*' [vfpdef] (',' vfpdef ['=' test])* [',' '**' vfpdef] | '**' vfpdef) +vfpdef: NAME + +stmt: simple_stmt | compound_stmt +simple_stmt: small_stmt (';' small_stmt)* [';'] NEWLINE +small_stmt: (expr_stmt | del_stmt | pass_stmt | flow_stmt | + import_stmt | global_stmt | nonlocal_stmt | assert_stmt) +expr_stmt: testlist_star_expr (augassign (yield_expr|testlist) | + ('=' (yield_expr|testlist_star_expr))*) +testlist_star_expr: (test|star_expr) (',' (test|star_expr))* [','] +augassign: ('+=' | '-=' | '*=' | '/=' | '%=' | '&=' | '|=' | '^=' | + '<<=' | '>>=' | '**=' | '//=') +# For normal assignments, additional restrictions enforced by the interpreter +del_stmt: 'del' exprlist +pass_stmt: 'pass' +flow_stmt: break_stmt | continue_stmt | return_stmt | raise_stmt | yield_stmt +break_stmt: 'break' +continue_stmt: 'continue' +return_stmt: 'return' [testlist] +yield_stmt: yield_expr +raise_stmt: 'raise' [test ['from' test]] +import_stmt: import_name | import_from +import_name: 'import' dotted_as_names +# note below: the ('.' | '...') is necessary because '...' is tokenized as ELLIPSIS +import_from: ('from' (('.' | '...')* dotted_name | ('.' | '...')+) + 'import' ('*' | '(' import_as_names ')' | import_as_names)) +import_as_name: NAME ['as' NAME] +dotted_as_name: dotted_name ['as' NAME] +import_as_names: import_as_name (',' import_as_name)* [','] +dotted_as_names: dotted_as_name (',' dotted_as_name)* +dotted_name: NAME ('.' NAME)* +global_stmt: 'global' NAME (',' NAME)* +nonlocal_stmt: 'nonlocal' NAME (',' NAME)* +assert_stmt: 'assert' test [',' test] + +compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt | with_stmt | funcdef | classdef | decorated +if_stmt: 'if' test ':' suite ('elif' test ':' suite)* ['else' ':' suite] +while_stmt: 'while' test ':' suite ['else' ':' suite] +for_stmt: 'for' exprlist 'in' testlist ':' suite ['else' ':' suite] +try_stmt: ('try' ':' suite + ((except_clause ':' suite)+ + ['else' ':' suite] + ['finally' ':' suite] | + 'finally' ':' suite)) +with_stmt: 'with' with_item (',' with_item)* ':' suite +with_item: test ['as' expr] +# NB compile.c makes sure that the default except clause is last +except_clause: 'except' [test ['as' NAME]] +suite: simple_stmt | NEWLINE INDENT stmt+ DEDENT + +test: or_test ['if' or_test 'else' test] | lambdef +test_nocond: or_test | lambdef_nocond +lambdef: 'lambda' [varargslist] ':' test +lambdef_nocond: 'lambda' [varargslist] ':' test_nocond +or_test: and_test ('or' and_test)* +and_test: not_test ('and' not_test)* +not_test: 'not' not_test | comparison +comparison: expr (comp_op expr)* +# <> isn't actually a valid comparison operator in Python. It's here for the +# sake of a __future__ import described in PEP 401 +comp_op: '<'|'>'|'=='|'>='|'<='|'<>'|'!='|'in'|'not' 'in'|'is'|'is' 'not' +star_expr: '*' expr +expr: xor_expr ('|' xor_expr)* +xor_expr: and_expr ('^' and_expr)* +and_expr: shift_expr ('&' shift_expr)* +shift_expr: arith_expr (('<<'|'>>') arith_expr)* +arith_expr: term (('+'|'-') term)* +term: factor (('*'|'/'|'%'|'//') factor)* +factor: ('+'|'-'|'~') factor | power +power: atom trailer* ['**' factor] +atom: ('(' [yield_expr|testlist_comp] ')' | + '[' [testlist_comp] ']' | + '{' [dictorsetmaker] '}' | + NAME | NUMBER | STRING+ | '...' | 'None' | 'True' | 'False') +testlist_comp: (test|star_expr) ( comp_for | (',' (test|star_expr))* [','] ) +trailer: '(' [arglist] ')' | '[' subscriptlist ']' | '.' NAME +subscriptlist: subscript (',' subscript)* [','] +subscript: test | [test] ':' [test] [sliceop] +sliceop: ':' [test] +exprlist: (expr|star_expr) (',' (expr|star_expr))* [','] +testlist: test (',' test)* [','] +dictorsetmaker: ( (test ':' test (comp_for | (',' test ':' test)* [','])) | + (test (comp_for | (',' test)* [','])) ) + +classdef: 'class' NAME ['(' [arglist] ')'] ':' suite + +arglist: (argument ',')* (argument [','] + |'*' test (',' argument)* [',' '**' test] + |'**' test) +# The reason that keywords are test nodes instead of NAME is that using NAME +# results in an ambiguity. ast.c makes sure it's a NAME. +argument: test [comp_for] | test '=' test # Really [keyword '='] test +comp_iter: comp_for | comp_if +comp_for: 'for' exprlist 'in' or_test [comp_iter] +comp_if: 'if' test_nocond [comp_iter] + +# not used in grammar, but may appear in "node" passed from Parser to Compiler +encoding_decl: NAME + +yield_expr: 'yield' [yield_arg] +yield_arg: 'from' test | testlist diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/grammar35.txt b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/grammar35.txt new file mode 100644 index 0000000..c38217f --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/grammar35.txt @@ -0,0 +1,152 @@ +# Grammar for Python + +# Note: Changing the grammar specified in this file will most likely +# require corresponding changes in the parser module +# (../Modules/parsermodule.c). If you can't make the changes to +# that module yourself, please co-ordinate the required changes +# with someone who can; ask around on python-dev for help. Fred +# Drake will probably be listening there. + +# NOTE WELL: You should also follow all the steps listed at +# https://docs.python.org/devguide/grammar.html + +# Start symbols for the grammar: +# single_input is a single interactive statement; +# file_input is a module or sequence of commands read from an input file; +# eval_input is the input for the eval() functions. +# NB: compound_stmt in single_input is followed by extra NEWLINE! +single_input: NEWLINE | simple_stmt | compound_stmt NEWLINE +file_input: (NEWLINE | stmt)* ENDMARKER +eval_input: testlist NEWLINE* ENDMARKER + +decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE +decorators: decorator+ +decorated: decorators (classdef | funcdef | async_funcdef) + +# NOTE: Reinoud Elhorst, using ASYNC/AWAIT keywords instead of tokens +# skipping python3.5 compatibility, in favour of 3.7 solution +async_funcdef: 'async' funcdef +funcdef: 'def' NAME parameters ['->' test] ':' suite + +parameters: '(' [typedargslist] ')' +typedargslist: (tfpdef ['=' test] (',' tfpdef ['=' test])* [',' + ['*' [tfpdef] (',' tfpdef ['=' test])* [',' '**' tfpdef] | '**' tfpdef]] + | '*' [tfpdef] (',' tfpdef ['=' test])* [',' '**' tfpdef] | '**' tfpdef) +tfpdef: NAME [':' test] +varargslist: (vfpdef ['=' test] (',' vfpdef ['=' test])* [',' + ['*' [vfpdef] (',' vfpdef ['=' test])* [',' '**' vfpdef] | '**' vfpdef]] + | '*' [vfpdef] (',' vfpdef ['=' test])* [',' '**' vfpdef] | '**' vfpdef) +vfpdef: NAME + +stmt: simple_stmt | compound_stmt +simple_stmt: small_stmt (';' small_stmt)* [';'] NEWLINE +small_stmt: (expr_stmt | del_stmt | pass_stmt | flow_stmt | + import_stmt | global_stmt | nonlocal_stmt | assert_stmt) +expr_stmt: testlist_star_expr (augassign (yield_expr|testlist) | + ('=' (yield_expr|testlist_star_expr))*) +testlist_star_expr: (test|star_expr) (',' (test|star_expr))* [','] +augassign: ('+=' | '-=' | '*=' | '@=' | '/=' | '%=' | '&=' | '|=' | '^=' | + '<<=' | '>>=' | '**=' | '//=') +# For normal assignments, additional restrictions enforced by the interpreter +del_stmt: 'del' exprlist +pass_stmt: 'pass' +flow_stmt: break_stmt | continue_stmt | return_stmt | raise_stmt | yield_stmt +break_stmt: 'break' +continue_stmt: 'continue' +return_stmt: 'return' [testlist] +yield_stmt: yield_expr +raise_stmt: 'raise' [test ['from' test]] +import_stmt: import_name | import_from +import_name: 'import' dotted_as_names +# note below: the ('.' | '...') is necessary because '...' is tokenized as ELLIPSIS +import_from: ('from' (('.' | '...')* dotted_name | ('.' | '...')+) + 'import' ('*' | '(' import_as_names ')' | import_as_names)) +import_as_name: NAME ['as' NAME] +dotted_as_name: dotted_name ['as' NAME] +import_as_names: import_as_name (',' import_as_name)* [','] +dotted_as_names: dotted_as_name (',' dotted_as_name)* +dotted_name: NAME ('.' NAME)* +global_stmt: 'global' NAME (',' NAME)* +nonlocal_stmt: 'nonlocal' NAME (',' NAME)* +assert_stmt: 'assert' test [',' test] + +compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt | with_stmt | funcdef | classdef | decorated | async_stmt +async_stmt: 'async' (funcdef | with_stmt | for_stmt) +if_stmt: 'if' test ':' suite ('elif' test ':' suite)* ['else' ':' suite] +while_stmt: 'while' test ':' suite ['else' ':' suite] +for_stmt: 'for' exprlist 'in' testlist ':' suite ['else' ':' suite] +try_stmt: ('try' ':' suite + ((except_clause ':' suite)+ + ['else' ':' suite] + ['finally' ':' suite] | + 'finally' ':' suite)) +with_stmt: 'with' with_item (',' with_item)* ':' suite +with_item: test ['as' expr] +# NB compile.c makes sure that the default except clause is last +except_clause: 'except' [test ['as' NAME]] +suite: simple_stmt | NEWLINE INDENT stmt+ DEDENT + +test: or_test ['if' or_test 'else' test] | lambdef +test_nocond: or_test | lambdef_nocond +lambdef: 'lambda' [varargslist] ':' test +lambdef_nocond: 'lambda' [varargslist] ':' test_nocond +or_test: and_test ('or' and_test)* +and_test: not_test ('and' not_test)* +not_test: 'not' not_test | comparison +comparison: expr (comp_op expr)* +# <> isn't actually a valid comparison operator in Python. It's here for the +# sake of a __future__ import described in PEP 401 (which really works :-) +comp_op: '<'|'>'|'=='|'>='|'<='|'<>'|'!='|'in'|'not' 'in'|'is'|'is' 'not' +star_expr: '*' expr +expr: xor_expr ('|' xor_expr)* +xor_expr: and_expr ('^' and_expr)* +and_expr: shift_expr ('&' shift_expr)* +shift_expr: arith_expr (('<<'|'>>') arith_expr)* +arith_expr: term (('+'|'-') term)* +term: factor (('*'|'@'|'/'|'%'|'//') factor)* +factor: ('+'|'-'|'~') factor | power +power: atom_expr ['**' factor] +atom_expr: ['await'] atom trailer* +atom: ('(' [yield_expr|testlist_comp] ')' | + '[' [testlist_comp] ']' | + '{' [dictorsetmaker] '}' | + NAME | NUMBER | STRING+ | '...' | 'None' | 'True' | 'False') +testlist_comp: (test|star_expr) ( comp_for | (',' (test|star_expr))* [','] ) +trailer: '(' [arglist] ')' | '[' subscriptlist ']' | '.' NAME +subscriptlist: subscript (',' subscript)* [','] +subscript: test | [test] ':' [test] [sliceop] +sliceop: ':' [test] +exprlist: (expr|star_expr) (',' (expr|star_expr))* [','] +testlist: test (',' test)* [','] +dictorsetmaker: ( ((test ':' test | '**' expr) + (comp_for | (',' (test ':' test | '**' expr))* [','])) | + ((test | star_expr) + (comp_for | (',' (test | star_expr))* [','])) ) + +classdef: 'class' NAME ['(' [arglist] ')'] ':' suite + +arglist: argument (',' argument)* [','] + +# The reason that keywords are test nodes instead of NAME is that using NAME +# results in an ambiguity. ast.c makes sure it's a NAME. +# "test '=' test" is really "keyword '=' test", but we have no such token. +# These need to be in a single rule to avoid grammar that is ambiguous +# to our LL(1) parser. Even though 'test' includes '*expr' in star_expr, +# we explicitly match '*' here, too, to give it proper precedence. +# Illegal combinations and orderings are blocked in ast.c: +# multiple (test comp_for) arguments are blocked; keyword unpackings +# that precede iterable unpackings are blocked; etc. +argument: ( test [comp_for] | + test '=' test | + '**' test | + '*' test ) + +comp_iter: comp_for | comp_if +comp_for: 'for' exprlist 'in' or_test [comp_iter] +comp_if: 'if' test_nocond [comp_iter] + +# not used in grammar, but may appear in "node" passed from Parser to Compiler +encoding_decl: NAME + +yield_expr: 'yield' [yield_arg] +yield_arg: 'from' test | testlist diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/grammar36.txt b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/grammar36.txt new file mode 100644 index 0000000..e76147e --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/grammar36.txt @@ -0,0 +1,150 @@ +# Grammar for Python + +# NOTE WELL: You should also follow all the steps listed at +# https://docs.python.org/devguide/grammar.html + +# Start symbols for the grammar: +# single_input is a single interactive statement; +# file_input is a module or sequence of commands read from an input file; +# eval_input is the input for the eval() functions. +# NB: compound_stmt in single_input is followed by extra NEWLINE! +single_input: NEWLINE | simple_stmt | compound_stmt NEWLINE +file_input: (NEWLINE | stmt)* ENDMARKER +eval_input: testlist NEWLINE* ENDMARKER +decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE +decorators: decorator+ +decorated: decorators (classdef | funcdef | async_funcdef) + +# NOTE: Francisco Souza/Reinoud Elhorst, using ASYNC/'await' keywords instead of +# skipping python3.5+ compatibility, in favour of 3.7 solution +async_funcdef: 'async' funcdef +funcdef: 'def' NAME parameters ['->' test] ':' suite + +parameters: '(' [typedargslist] ')' +typedargslist: (tfpdef ['=' test] (',' tfpdef ['=' test])* [',' [ + '*' [tfpdef] (',' tfpdef ['=' test])* [',' ['**' tfpdef [',']]] + | '**' tfpdef [',']]] + | '*' [tfpdef] (',' tfpdef ['=' test])* [',' ['**' tfpdef [',']]] + | '**' tfpdef [',']) +tfpdef: NAME [':' test] +varargslist: (vfpdef ['=' test] (',' vfpdef ['=' test])* [',' [ + '*' [vfpdef] (',' vfpdef ['=' test])* [',' ['**' vfpdef [',']]] + | '**' vfpdef [',']]] + | '*' [vfpdef] (',' vfpdef ['=' test])* [',' ['**' vfpdef [',']]] + | '**' vfpdef [','] +) +vfpdef: NAME + +stmt: simple_stmt | compound_stmt +simple_stmt: small_stmt (';' small_stmt)* [';'] NEWLINE +small_stmt: (expr_stmt | del_stmt | pass_stmt | flow_stmt | + import_stmt | global_stmt | nonlocal_stmt | assert_stmt) +expr_stmt: testlist_star_expr (annassign | augassign (yield_expr|testlist) | + ('=' (yield_expr|testlist_star_expr))*) +annassign: ':' test ['=' test] +testlist_star_expr: (test|star_expr) (',' (test|star_expr))* [','] +augassign: ('+=' | '-=' | '*=' | '@=' | '/=' | '%=' | '&=' | '|=' | '^=' | + '<<=' | '>>=' | '**=' | '//=') +# For normal and annotated assignments, additional restrictions enforced by the interpreter +del_stmt: 'del' exprlist +pass_stmt: 'pass' +flow_stmt: break_stmt | continue_stmt | return_stmt | raise_stmt | yield_stmt +break_stmt: 'break' +continue_stmt: 'continue' +return_stmt: 'return' [testlist] +yield_stmt: yield_expr +raise_stmt: 'raise' [test ['from' test]] +import_stmt: import_name | import_from +import_name: 'import' dotted_as_names +# note below: the ('.' | '...') is necessary because '...' is tokenized as ELLIPSIS +import_from: ('from' (('.' | '...')* dotted_name | ('.' | '...')+) + 'import' ('*' | '(' import_as_names ')' | import_as_names)) +import_as_name: NAME ['as' NAME] +dotted_as_name: dotted_name ['as' NAME] +import_as_names: import_as_name (',' import_as_name)* [','] +dotted_as_names: dotted_as_name (',' dotted_as_name)* +dotted_name: NAME ('.' NAME)* +global_stmt: 'global' NAME (',' NAME)* +nonlocal_stmt: 'nonlocal' NAME (',' NAME)* +assert_stmt: 'assert' test [',' test] + +compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt | with_stmt | funcdef | classdef | decorated | async_stmt +async_stmt: 'async' (funcdef | with_stmt | for_stmt) +if_stmt: 'if' test ':' suite ('elif' test ':' suite)* ['else' ':' suite] +while_stmt: 'while' test ':' suite ['else' ':' suite] +for_stmt: 'for' exprlist 'in' testlist ':' suite ['else' ':' suite] +try_stmt: ('try' ':' suite + ((except_clause ':' suite)+ + ['else' ':' suite] + ['finally' ':' suite] | + 'finally' ':' suite)) +with_stmt: 'with' with_item (',' with_item)* ':' suite +with_item: test ['as' expr] +# NB compile.c makes sure that the default except clause is last +except_clause: 'except' [test ['as' NAME]] +suite: simple_stmt | NEWLINE INDENT stmt+ DEDENT + +test: or_test ['if' or_test 'else' test] | lambdef +test_nocond: or_test | lambdef_nocond +lambdef: 'lambda' [varargslist] ':' test +lambdef_nocond: 'lambda' [varargslist] ':' test_nocond +or_test: and_test ('or' and_test)* +and_test: not_test ('and' not_test)* +not_test: 'not' not_test | comparison +comparison: expr (comp_op expr)* +# <> isn't actually a valid comparison operator in Python. It's here for the +# sake of a __future__ import described in PEP 401 (which really works :-) +comp_op: '<'|'>'|'=='|'>='|'<='|'<>'|'!='|'in'|'not' 'in'|'is'|'is' 'not' +star_expr: '*' expr +expr: xor_expr ('|' xor_expr)* +xor_expr: and_expr ('^' and_expr)* +and_expr: shift_expr ('&' shift_expr)* +shift_expr: arith_expr (('<<'|'>>') arith_expr)* +arith_expr: term (('+'|'-') term)* +term: factor (('*'|'@'|'/'|'%'|'//') factor)* +factor: ('+'|'-'|'~') factor | power +power: atom_expr ['**' factor] +atom_expr: ['await'] atom trailer* +atom: ('(' [yield_expr|testlist_comp] ')' | + '[' [testlist_comp] ']' | + '{' [dictorsetmaker] '}' | + NAME | NUMBER | STRING+ | '...' | 'None' | 'True' | 'False') +testlist_comp: (test|star_expr) ( comp_for | (',' (test|star_expr))* [','] ) +trailer: '(' [arglist] ')' | '[' subscriptlist ']' | '.' NAME +subscriptlist: subscript (',' subscript)* [','] +subscript: test | [test] ':' [test] [sliceop] +sliceop: ':' [test] +exprlist: (expr|star_expr) (',' (expr|star_expr))* [','] +testlist: test (',' test)* [','] +dictorsetmaker: ( ((test ':' test | '**' expr) + (comp_for | (',' (test ':' test | '**' expr))* [','])) | + ((test | star_expr) + (comp_for | (',' (test | star_expr))* [','])) ) + +classdef: 'class' NAME ['(' [arglist] ')'] ':' suite + +arglist: argument (',' argument)* [','] + +# The reason that keywords are test nodes instead of NAME is that using NAME +# results in an ambiguity. ast.c makes sure it's a NAME. +# "test '=' test" is really "keyword '=' test", but we have no such token. +# These need to be in a single rule to avoid grammar that is ambiguous +# to our LL(1) parser. Even though 'test' includes '*expr' in star_expr, +# we explicitly match '*' here, too, to give it proper precedence. +# Illegal combinations and orderings are blocked in ast.c: +# multiple (test comp_for) arguments are blocked; keyword unpackings +# that precede iterable unpackings are blocked; etc. +argument: ( test [comp_for] | + test '=' test | + '**' test | + '*' test ) + +comp_iter: comp_for | comp_if +comp_for: ['async'] 'for' exprlist 'in' or_test [comp_iter] +comp_if: 'if' test_nocond [comp_iter] + +# not used in grammar, but may appear in "node" passed from Parser to Compiler +encoding_decl: NAME + +yield_expr: 'yield' [yield_arg] +yield_arg: 'from' test | testlist diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/grammar37.txt b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/grammar37.txt new file mode 100644 index 0000000..e76147e --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/grammar37.txt @@ -0,0 +1,150 @@ +# Grammar for Python + +# NOTE WELL: You should also follow all the steps listed at +# https://docs.python.org/devguide/grammar.html + +# Start symbols for the grammar: +# single_input is a single interactive statement; +# file_input is a module or sequence of commands read from an input file; +# eval_input is the input for the eval() functions. +# NB: compound_stmt in single_input is followed by extra NEWLINE! +single_input: NEWLINE | simple_stmt | compound_stmt NEWLINE +file_input: (NEWLINE | stmt)* ENDMARKER +eval_input: testlist NEWLINE* ENDMARKER +decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE +decorators: decorator+ +decorated: decorators (classdef | funcdef | async_funcdef) + +# NOTE: Francisco Souza/Reinoud Elhorst, using ASYNC/'await' keywords instead of +# skipping python3.5+ compatibility, in favour of 3.7 solution +async_funcdef: 'async' funcdef +funcdef: 'def' NAME parameters ['->' test] ':' suite + +parameters: '(' [typedargslist] ')' +typedargslist: (tfpdef ['=' test] (',' tfpdef ['=' test])* [',' [ + '*' [tfpdef] (',' tfpdef ['=' test])* [',' ['**' tfpdef [',']]] + | '**' tfpdef [',']]] + | '*' [tfpdef] (',' tfpdef ['=' test])* [',' ['**' tfpdef [',']]] + | '**' tfpdef [',']) +tfpdef: NAME [':' test] +varargslist: (vfpdef ['=' test] (',' vfpdef ['=' test])* [',' [ + '*' [vfpdef] (',' vfpdef ['=' test])* [',' ['**' vfpdef [',']]] + | '**' vfpdef [',']]] + | '*' [vfpdef] (',' vfpdef ['=' test])* [',' ['**' vfpdef [',']]] + | '**' vfpdef [','] +) +vfpdef: NAME + +stmt: simple_stmt | compound_stmt +simple_stmt: small_stmt (';' small_stmt)* [';'] NEWLINE +small_stmt: (expr_stmt | del_stmt | pass_stmt | flow_stmt | + import_stmt | global_stmt | nonlocal_stmt | assert_stmt) +expr_stmt: testlist_star_expr (annassign | augassign (yield_expr|testlist) | + ('=' (yield_expr|testlist_star_expr))*) +annassign: ':' test ['=' test] +testlist_star_expr: (test|star_expr) (',' (test|star_expr))* [','] +augassign: ('+=' | '-=' | '*=' | '@=' | '/=' | '%=' | '&=' | '|=' | '^=' | + '<<=' | '>>=' | '**=' | '//=') +# For normal and annotated assignments, additional restrictions enforced by the interpreter +del_stmt: 'del' exprlist +pass_stmt: 'pass' +flow_stmt: break_stmt | continue_stmt | return_stmt | raise_stmt | yield_stmt +break_stmt: 'break' +continue_stmt: 'continue' +return_stmt: 'return' [testlist] +yield_stmt: yield_expr +raise_stmt: 'raise' [test ['from' test]] +import_stmt: import_name | import_from +import_name: 'import' dotted_as_names +# note below: the ('.' | '...') is necessary because '...' is tokenized as ELLIPSIS +import_from: ('from' (('.' | '...')* dotted_name | ('.' | '...')+) + 'import' ('*' | '(' import_as_names ')' | import_as_names)) +import_as_name: NAME ['as' NAME] +dotted_as_name: dotted_name ['as' NAME] +import_as_names: import_as_name (',' import_as_name)* [','] +dotted_as_names: dotted_as_name (',' dotted_as_name)* +dotted_name: NAME ('.' NAME)* +global_stmt: 'global' NAME (',' NAME)* +nonlocal_stmt: 'nonlocal' NAME (',' NAME)* +assert_stmt: 'assert' test [',' test] + +compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt | with_stmt | funcdef | classdef | decorated | async_stmt +async_stmt: 'async' (funcdef | with_stmt | for_stmt) +if_stmt: 'if' test ':' suite ('elif' test ':' suite)* ['else' ':' suite] +while_stmt: 'while' test ':' suite ['else' ':' suite] +for_stmt: 'for' exprlist 'in' testlist ':' suite ['else' ':' suite] +try_stmt: ('try' ':' suite + ((except_clause ':' suite)+ + ['else' ':' suite] + ['finally' ':' suite] | + 'finally' ':' suite)) +with_stmt: 'with' with_item (',' with_item)* ':' suite +with_item: test ['as' expr] +# NB compile.c makes sure that the default except clause is last +except_clause: 'except' [test ['as' NAME]] +suite: simple_stmt | NEWLINE INDENT stmt+ DEDENT + +test: or_test ['if' or_test 'else' test] | lambdef +test_nocond: or_test | lambdef_nocond +lambdef: 'lambda' [varargslist] ':' test +lambdef_nocond: 'lambda' [varargslist] ':' test_nocond +or_test: and_test ('or' and_test)* +and_test: not_test ('and' not_test)* +not_test: 'not' not_test | comparison +comparison: expr (comp_op expr)* +# <> isn't actually a valid comparison operator in Python. It's here for the +# sake of a __future__ import described in PEP 401 (which really works :-) +comp_op: '<'|'>'|'=='|'>='|'<='|'<>'|'!='|'in'|'not' 'in'|'is'|'is' 'not' +star_expr: '*' expr +expr: xor_expr ('|' xor_expr)* +xor_expr: and_expr ('^' and_expr)* +and_expr: shift_expr ('&' shift_expr)* +shift_expr: arith_expr (('<<'|'>>') arith_expr)* +arith_expr: term (('+'|'-') term)* +term: factor (('*'|'@'|'/'|'%'|'//') factor)* +factor: ('+'|'-'|'~') factor | power +power: atom_expr ['**' factor] +atom_expr: ['await'] atom trailer* +atom: ('(' [yield_expr|testlist_comp] ')' | + '[' [testlist_comp] ']' | + '{' [dictorsetmaker] '}' | + NAME | NUMBER | STRING+ | '...' | 'None' | 'True' | 'False') +testlist_comp: (test|star_expr) ( comp_for | (',' (test|star_expr))* [','] ) +trailer: '(' [arglist] ')' | '[' subscriptlist ']' | '.' NAME +subscriptlist: subscript (',' subscript)* [','] +subscript: test | [test] ':' [test] [sliceop] +sliceop: ':' [test] +exprlist: (expr|star_expr) (',' (expr|star_expr))* [','] +testlist: test (',' test)* [','] +dictorsetmaker: ( ((test ':' test | '**' expr) + (comp_for | (',' (test ':' test | '**' expr))* [','])) | + ((test | star_expr) + (comp_for | (',' (test | star_expr))* [','])) ) + +classdef: 'class' NAME ['(' [arglist] ')'] ':' suite + +arglist: argument (',' argument)* [','] + +# The reason that keywords are test nodes instead of NAME is that using NAME +# results in an ambiguity. ast.c makes sure it's a NAME. +# "test '=' test" is really "keyword '=' test", but we have no such token. +# These need to be in a single rule to avoid grammar that is ambiguous +# to our LL(1) parser. Even though 'test' includes '*expr' in star_expr, +# we explicitly match '*' here, too, to give it proper precedence. +# Illegal combinations and orderings are blocked in ast.c: +# multiple (test comp_for) arguments are blocked; keyword unpackings +# that precede iterable unpackings are blocked; etc. +argument: ( test [comp_for] | + test '=' test | + '**' test | + '*' test ) + +comp_iter: comp_for | comp_if +comp_for: ['async'] 'for' exprlist 'in' or_test [comp_iter] +comp_if: 'if' test_nocond [comp_iter] + +# not used in grammar, but may appear in "node" passed from Parser to Compiler +encoding_decl: NAME + +yield_expr: 'yield' [yield_arg] +yield_arg: 'from' test | testlist diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/parser.py b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/parser.py new file mode 100644 index 0000000..1897f53 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/parser.py @@ -0,0 +1,261 @@ +from parso.python import tree +from parso.python.token import (DEDENT, INDENT, ENDMARKER, NEWLINE, NUMBER, + STRING, tok_name, NAME) +from parso.parser import BaseParser +from parso.pgen2.parse import token_to_ilabel + + +class Parser(BaseParser): + """ + This class is used to parse a Python file, it then divides them into a + class structure of different scopes. + + :param pgen_grammar: The grammar object of pgen2. Loaded by load_grammar. + """ + + node_map = { + 'expr_stmt': tree.ExprStmt, + 'classdef': tree.Class, + 'funcdef': tree.Function, + 'file_input': tree.Module, + 'import_name': tree.ImportName, + 'import_from': tree.ImportFrom, + 'break_stmt': tree.KeywordStatement, + 'continue_stmt': tree.KeywordStatement, + 'return_stmt': tree.ReturnStmt, + 'raise_stmt': tree.KeywordStatement, + 'yield_expr': tree.YieldExpr, + 'del_stmt': tree.KeywordStatement, + 'pass_stmt': tree.KeywordStatement, + 'global_stmt': tree.GlobalStmt, + 'nonlocal_stmt': tree.KeywordStatement, + 'print_stmt': tree.KeywordStatement, + 'assert_stmt': tree.AssertStmt, + 'if_stmt': tree.IfStmt, + 'with_stmt': tree.WithStmt, + 'for_stmt': tree.ForStmt, + 'while_stmt': tree.WhileStmt, + 'try_stmt': tree.TryStmt, + 'comp_for': tree.CompFor, + # Not sure if this is the best idea, but IMO it's the easiest way to + # avoid extreme amounts of work around the subtle difference of 2/3 + # grammar in list comoprehensions. + 'list_for': tree.CompFor, + # Same here. This just exists in Python 2.6. + 'gen_for': tree.CompFor, + 'decorator': tree.Decorator, + 'lambdef': tree.Lambda, + 'old_lambdef': tree.Lambda, + 'lambdef_nocond': tree.Lambda, + } + default_node = tree.PythonNode + + def __init__(self, pgen_grammar, error_recovery=True, start_symbol='file_input'): + super(Parser, self).__init__(pgen_grammar, start_symbol, error_recovery=error_recovery) + + self.syntax_errors = [] + self._omit_dedent_list = [] + self._indent_counter = 0 + + # TODO do print absolute import detection here. + # try: + # del python_grammar_no_print_statement.keywords["print"] + # except KeyError: + # pass # Doesn't exist in the Python 3 grammar. + + # if self.options["print_function"]: + # python_grammar = pygram.python_grammar_no_print_statement + # else: + + def parse(self, tokens): + if self._error_recovery: + if self._start_symbol != 'file_input': + raise NotImplementedError + + tokens = self._recovery_tokenize(tokens) + + node = super(Parser, self).parse(tokens) + + if self._start_symbol == 'file_input' != node.type: + # If there's only one statement, we get back a non-module. That's + # not what we want, we want a module, so we add it here: + node = self.convert_node( + self._pgen_grammar, + self._pgen_grammar.symbol2number['file_input'], + [node] + ) + + return node + + def convert_node(self, pgen_grammar, type, children): + """ + Convert raw node information to a PythonBaseNode instance. + + This is passed to the parser driver which calls it whenever a reduction of a + grammar rule produces a new complete node, so that the tree is build + strictly bottom-up. + """ + # TODO REMOVE symbol, we don't want type here. + symbol = pgen_grammar.number2symbol[type] + try: + return self.node_map[symbol](children) + except KeyError: + if symbol == 'suite': + # We don't want the INDENT/DEDENT in our parser tree. Those + # leaves are just cancer. They are virtual leaves and not real + # ones and therefore have pseudo start/end positions and no + # prefixes. Just ignore them. + children = [children[0]] + children[2:-1] + elif symbol == 'list_if': + # Make transitioning from 2 to 3 easier. + symbol = 'comp_if' + elif symbol == 'listmaker': + # Same as list_if above. + symbol = 'testlist_comp' + return self.default_node(symbol, children) + + def convert_leaf(self, pgen_grammar, type, value, prefix, start_pos): + # print('leaf', repr(value), token.tok_name[type]) + if type == NAME: + if value in pgen_grammar.keywords: + return tree.Keyword(value, start_pos, prefix) + else: + return tree.Name(value, start_pos, prefix) + elif type == STRING: + return tree.String(value, start_pos, prefix) + elif type == NUMBER: + return tree.Number(value, start_pos, prefix) + elif type == NEWLINE: + return tree.Newline(value, start_pos, prefix) + elif type == ENDMARKER: + return tree.EndMarker(value, start_pos, prefix) + else: + return tree.Operator(value, start_pos, prefix) + + def error_recovery(self, pgen_grammar, stack, arcs, typ, value, start_pos, prefix, + add_token_callback): + def get_symbol_and_nodes(stack): + for dfa, state, (type_, nodes) in stack: + symbol = pgen_grammar.number2symbol[type_] + yield symbol, nodes + + tos_nodes = stack.get_tos_nodes() + if tos_nodes: + last_leaf = tos_nodes[-1].get_last_leaf() + else: + last_leaf = None + + if self._start_symbol == 'file_input' and \ + (typ == ENDMARKER or typ == DEDENT and '\n' not in last_leaf.value): + def reduce_stack(states, newstate): + # reduce + state = newstate + while states[state] == [(0, state)]: + self.pgen_parser._pop() + + dfa, state, (type_, nodes) = stack[-1] + states, first = dfa + + + # In Python statements need to end with a newline. But since it's + # possible (and valid in Python ) that there's no newline at the + # end of a file, we have to recover even if the user doesn't want + # error recovery. + #print('x', pprint.pprint(stack)) + ilabel = token_to_ilabel(pgen_grammar, NEWLINE, value) + + dfa, state, (type_, nodes) = stack[-1] + symbol = pgen_grammar.number2symbol[type_] + states, first = dfa + arcs = states[state] + # Look for a state with this label + for i, newstate in arcs: + if ilabel == i: + if symbol == 'simple_stmt': + # This is basically shifting + stack[-1] = (dfa, newstate, (type_, nodes)) + + reduce_stack(states, newstate) + add_token_callback(typ, value, start_pos, prefix) + return + # Check if we're at the right point + #for symbol, nodes in get_symbol_and_nodes(stack): + # self.pgen_parser._pop() + + #break + break + #symbol = pgen_grammar.number2symbol[type_] + + if not self._error_recovery: + return super(Parser, self).error_recovery( + pgen_grammar, stack, arcs, typ, value, start_pos, prefix, + add_token_callback) + + def current_suite(stack): + # For now just discard everything that is not a suite or + # file_input, if we detect an error. + for index, (symbol, nodes) in reversed(list(enumerate(get_symbol_and_nodes(stack)))): + # `suite` can sometimes be only simple_stmt, not stmt. + if symbol == 'file_input': + break + elif symbol == 'suite' and len(nodes) > 1: + # suites without an indent in them get discarded. + break + return index, symbol, nodes + + index, symbol, nodes = current_suite(stack) + + # print('err', token.tok_name[typ], repr(value), start_pos, len(stack), index) + if self._stack_removal(pgen_grammar, stack, arcs, index + 1, value, start_pos): + add_token_callback(typ, value, start_pos, prefix) + else: + if typ == INDENT: + # For every deleted INDENT we have to delete a DEDENT as well. + # Otherwise the parser will get into trouble and DEDENT too early. + self._omit_dedent_list.append(self._indent_counter) + + error_leaf = tree.PythonErrorLeaf(tok_name[typ].lower(), value, start_pos, prefix) + stack[-1][2][1].append(error_leaf) + + if symbol == 'suite': + dfa, state, node = stack[-1] + states, first = dfa + arcs = states[state] + intended_label = pgen_grammar.symbol2label['stmt'] + # Introduce a proper state transition. We're basically allowing + # there to be no valid statements inside a suite. + if [x[0] for x in arcs] == [intended_label]: + new_state = arcs[0][1] + stack[-1] = dfa, new_state, node + + def _stack_removal(self, pgen_grammar, stack, arcs, start_index, value, start_pos): + failed_stack = False + found = False + all_nodes = [] + for dfa, state, (type_, nodes) in stack[start_index:]: + if nodes: + found = True + if found: + failed_stack = True + all_nodes += nodes + if failed_stack: + stack[start_index - 1][2][1].append(tree.PythonErrorNode(all_nodes)) + + stack[start_index:] = [] + return failed_stack + + def _recovery_tokenize(self, tokens): + for typ, value, start_pos, prefix in tokens: + # print(tok_name[typ], repr(value), start_pos, repr(prefix)) + if typ == DEDENT: + # We need to count indents, because if we just omit any DEDENT, + # we might omit them in the wrong place. + o = self._omit_dedent_list + if o and o[-1] == self._indent_counter: + o.pop() + continue + + self._indent_counter -= 1 + elif typ == INDENT: + self._indent_counter += 1 + yield typ, value, start_pos, prefix diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/pep8.py b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/pep8.py new file mode 100644 index 0000000..59fe452 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/pep8.py @@ -0,0 +1,727 @@ +import re +from contextlib import contextmanager + +from parso.python.errors import ErrorFinder, ErrorFinderConfig +from parso.normalizer import Rule +from parso.python.tree import search_ancestor, Flow, Scope + + +_IMPORT_TYPES = ('import_name', 'import_from') +_SUITE_INTRODUCERS = ('classdef', 'funcdef', 'if_stmt', 'while_stmt', + 'for_stmt', 'try_stmt', 'with_stmt') +_NON_STAR_TYPES = ('term', 'import_from', 'power') +_OPENING_BRACKETS = '(', '[', '{' +_CLOSING_BRACKETS = ')', ']', '}' +_FACTOR = '+', '-', '~' +_ALLOW_SPACE = '*', '+', '-', '**', '/', '//', '@' +_BITWISE_OPERATOR = '<<', '>>', '|', '&', '^' +_NEEDS_SPACE = ('=', '%', '->', + '<', '>', '==', '>=', '<=', '<>', '!=', + '+=', '-=', '*=', '@=', '/=', '%=', '&=', '|=', '^=', '<<=', + '>>=', '**=', '//=') +_NEEDS_SPACE += _BITWISE_OPERATOR +_IMPLICIT_INDENTATION_TYPES = ('dictorsetmaker', 'argument') +_POSSIBLE_SLICE_PARENTS = ('subscript', 'subscriptlist', 'sliceop') + + +class IndentationTypes(object): + VERTICAL_BRACKET = object() + HANGING_BRACKET = object() + BACKSLASH = object() + SUITE = object() + IMPLICIT = object() + + +class IndentationNode(object): + type = IndentationTypes.SUITE + + def __init__(self, config, indentation, parent=None): + self.bracket_indentation = self.indentation = indentation + self.parent = parent + + def __repr__(self): + return '<%s>' % self.__class__.__name__ + + def get_latest_suite_node(self): + n = self + while n is not None: + if n.type == IndentationTypes.SUITE: + return n + + n = n.parent + + +class BracketNode(IndentationNode): + def __init__(self, config, leaf, parent, in_suite_introducer=False): + self.leaf = leaf + + # Figure out here what the indentation is. For chained brackets + # we can basically use the previous indentation. + previous_leaf = leaf + n = parent + if n.type == IndentationTypes.IMPLICIT: + n = n.parent + while True: + if hasattr(n, 'leaf') and previous_leaf.line != n.leaf.line: + break + + previous_leaf = previous_leaf.get_previous_leaf() + if not isinstance(n, BracketNode) or previous_leaf != n.leaf: + break + n = n.parent + parent_indentation = n.indentation + + + next_leaf = leaf.get_next_leaf() + if '\n' in next_leaf.prefix: + # This implies code like: + # foobarbaz( + # a, + # b, + # ) + self.bracket_indentation = parent_indentation \ + + config.closing_bracket_hanging_indentation + self.indentation = parent_indentation + config.indentation + self.type = IndentationTypes.HANGING_BRACKET + else: + # Implies code like: + # foobarbaz( + # a, + # b, + # ) + expected_end_indent = leaf.end_pos[1] + if '\t' in config.indentation: + self.indentation = None + else: + self.indentation = ' ' * expected_end_indent + self.bracket_indentation = self.indentation + self.type = IndentationTypes.VERTICAL_BRACKET + + if in_suite_introducer and parent.type == IndentationTypes.SUITE \ + and self.indentation == parent_indentation + config.indentation: + self.indentation += config.indentation + # The closing bracket should have the same indentation. + self.bracket_indentation = self.indentation + self.parent = parent + + +class ImplicitNode(BracketNode): + """ + Implicit indentation after keyword arguments, default arguments, + annotations and dict values. + """ + def __init__(self, config, leaf, parent): + super(ImplicitNode, self).__init__(config, leaf, parent) + self.type = IndentationTypes.IMPLICIT + + next_leaf = leaf.get_next_leaf() + if leaf == ':' and '\n' not in next_leaf.prefix: + self.indentation += ' ' + + +class BackslashNode(IndentationNode): + type = IndentationTypes.BACKSLASH + + def __init__(self, config, parent_indentation, containing_leaf, spacing, parent=None): + expr_stmt = search_ancestor(containing_leaf, 'expr_stmt') + if expr_stmt is not None: + equals = expr_stmt.children[-2] + + if '\t' in config.indentation: + # TODO unite with the code of BracketNode + self.indentation = None + else: + # If the backslash follows the equals, use normal indentation + # otherwise it should align with the equals. + if equals.end_pos == spacing.start_pos: + self.indentation = parent_indentation + config.indentation + else: + # +1 because there is a space. + self.indentation = ' ' * (equals.end_pos[1] + 1) + else: + self.indentation = parent_indentation + config.indentation + self.bracket_indentation = self.indentation + self.parent = parent + + +def _is_magic_name(name): + return name.value.startswith('__') and name.value.endswith('__') + + +class PEP8Normalizer(ErrorFinder): + def __init__(self, *args, **kwargs): + super(PEP8Normalizer, self).__init__(*args, **kwargs) + self._previous_part = None + self._previous_leaf = None + self._on_newline = True + self._newline_count = 0 + self._wanted_newline_count = None + self._max_new_lines_in_prefix = 0 + self._new_statement = True + self._implicit_indentation_possible = False + # The top of stack of the indentation nodes. + self._indentation_tos = self._last_indentation_tos = \ + IndentationNode(self._config, indentation='') + self._in_suite_introducer = False + + if ' ' in self._config.indentation: + self._indentation_type = 'spaces' + self._wrong_indentation_char = '\t' + else: + self._indentation_type = 'tabs' + self._wrong_indentation_char = ' ' + + @contextmanager + def visit_node(self, node): + with super(PEP8Normalizer, self).visit_node(node): + with self._visit_node(node): + yield + + @contextmanager + def _visit_node(self, node): + typ = node.type + + if typ in 'import_name': + names = node.get_defined_names() + if len(names) > 1: + for name in names[:1]: + self.add_issue(name, 401, 'Multiple imports on one line') + elif typ == 'lambdef': + expr_stmt = node.parent + # Check if it's simply defining a single name, not something like + # foo.bar or x[1], where using a lambda could make more sense. + if expr_stmt.type == 'expr_stmt' and any(n.type == 'name' for n in expr_stmt.children[:-2:2]): + self.add_issue(node, 731, 'Do not assign a lambda expression, use a def') + elif typ == 'try_stmt': + for child in node.children: + # Here we can simply check if it's an except, because otherwise + # it would be an except_clause. + if child.type == 'keyword' and child.value == 'except': + self.add_issue(child, 722, 'Do not use bare except, specify exception instead') + elif typ == 'comparison': + for child in node.children: + if child.type not in ('atom_expr', 'power'): + continue + if len(child.children) > 2: + continue + trailer = child.children[1] + atom = child.children[0] + if trailer.type == 'trailer' and atom.type == 'name' \ + and atom.value == 'type': + self.add_issue(node, 721, "Do not compare types, use 'isinstance()") + break + elif typ == 'file_input': + endmarker = node.children[-1] + prev = endmarker.get_previous_leaf() + prefix = endmarker.prefix + if (not prefix.endswith('\n') and ( + prefix or prev is None or prev.value != '\n')): + self.add_issue(endmarker, 292, "No newline at end of file") + + if typ in _IMPORT_TYPES: + simple_stmt = node.parent + module = simple_stmt.parent + #if module.type == 'simple_stmt': + if module.type == 'file_input': + index = module.children.index(simple_stmt) + for child in module.children[:index]: + children = [child] + if child.type == 'simple_stmt': + # Remove the newline. + children = child.children[:-1] + + found_docstring = False + for c in children: + if c.type == 'string' and not found_docstring: + continue + found_docstring = True + + if c.type == 'expr_stmt' and \ + all(_is_magic_name(n) for n in c.get_defined_names()): + continue + + if c.type in _IMPORT_TYPES or isinstance(c, Flow): + continue + + self.add_issue(node, 402, 'Module level import not at top of file') + break + else: + continue + break + + implicit_indentation_possible = typ in _IMPLICIT_INDENTATION_TYPES + in_introducer = typ in _SUITE_INTRODUCERS + if in_introducer: + self._in_suite_introducer = True + elif typ == 'suite': + if self._indentation_tos.type == IndentationTypes.BACKSLASH: + self._indentation_tos = self._indentation_tos.parent + + self._indentation_tos = IndentationNode( + self._config, + self._indentation_tos.indentation + self._config.indentation, + parent=self._indentation_tos + ) + elif implicit_indentation_possible: + self._implicit_indentation_possible = True + yield + if typ == 'suite': + assert self._indentation_tos.type == IndentationTypes.SUITE + self._indentation_tos = self._indentation_tos.parent + # If we dedent, no lines are needed anymore. + self._wanted_newline_count = None + elif implicit_indentation_possible: + self._implicit_indentation_possible = False + if self._indentation_tos.type == IndentationTypes.IMPLICIT: + self._indentation_tos = self._indentation_tos.parent + elif in_introducer: + self._in_suite_introducer = False + if typ in ('classdef', 'funcdef'): + self._wanted_newline_count = self._get_wanted_blank_lines_count() + + def _check_tabs_spaces(self, spacing): + if self._wrong_indentation_char in spacing.value: + self.add_issue(spacing, 101, 'Indentation contains ' + self._indentation_type) + return True + return False + + def _get_wanted_blank_lines_count(self): + suite_node = self._indentation_tos.get_latest_suite_node() + return int(suite_node.parent is None) + 1 + + def _reset_newlines(self, spacing, leaf, is_comment=False): + self._max_new_lines_in_prefix = \ + max(self._max_new_lines_in_prefix, self._newline_count) + + wanted = self._wanted_newline_count + if wanted is not None: + # Need to substract one + blank_lines = self._newline_count - 1 + if wanted > blank_lines and leaf.type != 'endmarker': + # In case of a comment we don't need to add the issue, yet. + if not is_comment: + # TODO end_pos wrong. + code = 302 if wanted == 2 else 301 + message = "expected %s blank line, found %s" \ + % (wanted, blank_lines) + self.add_issue(spacing, code, message) + self._wanted_newline_count = None + else: + self._wanted_newline_count = None + + if not is_comment: + wanted = self._get_wanted_blank_lines_count() + actual = self._max_new_lines_in_prefix - 1 + + val = leaf.value + needs_lines = ( + val == '@' and leaf.parent.type == 'decorator' + or ( + val == 'class' + or val == 'async' and leaf.get_next_leaf() == 'def' + or val == 'def' and self._previous_leaf != 'async' + ) and leaf.parent.parent.type != 'decorated' + ) + if needs_lines and actual < wanted: + func_or_cls = leaf.parent + suite = func_or_cls.parent + if suite.type == 'decorated': + suite = suite.parent + + # The first leaf of a file or a suite should not need blank + # lines. + if suite.children[int(suite.type == 'suite')] != func_or_cls: + code = 302 if wanted == 2 else 301 + message = "expected %s blank line, found %s" \ + % (wanted, actual) + self.add_issue(spacing, code, message) + + self._max_new_lines_in_prefix = 0 + + self._newline_count = 0 + + def visit_leaf(self, leaf): + super(PEP8Normalizer, self).visit_leaf(leaf) + for part in leaf._split_prefix(): + if part.type == 'spacing': + # This part is used for the part call after for. + break + self._visit_part(part, part.create_spacing_part(), leaf) + + self._analyse_non_prefix(leaf) + self._visit_part(leaf, part, leaf) + + # Cleanup + self._last_indentation_tos = self._indentation_tos + + self._new_statement = leaf.type == 'newline' + + # TODO does this work? with brackets and stuff? + if leaf.type == 'newline' and \ + self._indentation_tos.type == IndentationTypes.BACKSLASH: + self._indentation_tos = self._indentation_tos.parent + + if leaf.value == ':' and leaf.parent.type in _SUITE_INTRODUCERS: + self._in_suite_introducer = False + elif leaf.value == 'elif': + self._in_suite_introducer = True + + if not self._new_statement: + self._reset_newlines(part, leaf) + self._max_blank_lines = 0 + + self._previous_leaf = leaf + + return leaf.value + + def _visit_part(self, part, spacing, leaf): + value = part.value + type_ = part.type + if type_ == 'error_leaf': + return + + if value == ',' and part.parent.type == 'dictorsetmaker': + self._indentation_tos = self._indentation_tos.parent + + node = self._indentation_tos + + if type_ == 'comment': + if value.startswith('##'): + # Whole blocks of # should not raise an error. + if value.lstrip('#'): + self.add_issue(part, 266, "Too many leading '#' for block comment.") + elif self._on_newline: + if not re.match('#:? ', value) and not value == '#' \ + and not (value.startswith('#!') and part.start_pos == (1, 0)): + self.add_issue(part, 265, "Block comment should start with '# '") + else: + if not re.match('#:? [^ ]', value): + self.add_issue(part, 262, "Inline comment should start with '# '") + + self._reset_newlines(spacing, leaf, is_comment=True) + elif type_ == 'newline': + if self._newline_count > self._get_wanted_blank_lines_count(): + self.add_issue(part, 303, "Too many blank lines (%s)" % self._newline_count) + elif leaf in ('def', 'class') \ + and leaf.parent.parent.type == 'decorated': + self.add_issue(part, 304, "Blank lines found after function decorator") + + + self._newline_count += 1 + + if type_ == 'backslash': + # TODO is this enough checking? What about ==? + if node.type != IndentationTypes.BACKSLASH: + if node.type != IndentationTypes.SUITE: + self.add_issue(part, 502, 'The backslash is redundant between brackets') + else: + indentation = node.indentation + if self._in_suite_introducer and node.type == IndentationTypes.SUITE: + indentation += self._config.indentation + + self._indentation_tos = BackslashNode( + self._config, + indentation, + part, + spacing, + parent=self._indentation_tos + ) + elif self._on_newline: + indentation = spacing.value + if node.type == IndentationTypes.BACKSLASH \ + and self._previous_part.type == 'newline': + self._indentation_tos = self._indentation_tos.parent + + if not self._check_tabs_spaces(spacing): + should_be_indentation = node.indentation + if type_ == 'comment': + # Comments can be dedented. So we have to care for that. + n = self._last_indentation_tos + while True: + if len(indentation) > len(n.indentation): + break + + should_be_indentation = n.indentation + + self._last_indentation_tos = n + if n == node: + break + n = n.parent + + if self._new_statement: + if type_ == 'newline': + if indentation: + self.add_issue(spacing, 291, 'Trailing whitespace') + elif indentation != should_be_indentation: + s = '%s %s' % (len(self._config.indentation), self._indentation_type) + self.add_issue(part, 111, 'Indentation is not a multiple of ' + s) + else: + if value in '])}': + should_be_indentation = node.bracket_indentation + else: + should_be_indentation = node.indentation + if self._in_suite_introducer and indentation == \ + node.get_latest_suite_node().indentation \ + + self._config.indentation: + self.add_issue(part, 129, "Line with same indent as next logical block") + elif indentation != should_be_indentation: + if not self._check_tabs_spaces(spacing) and part.value != '\n': + if value in '])}': + if node.type == IndentationTypes.VERTICAL_BRACKET: + self.add_issue(part, 124, "Closing bracket does not match visual indentation") + else: + self.add_issue(part, 123, "Losing bracket does not match indentation of opening bracket's line") + else: + if len(indentation) < len(should_be_indentation): + if node.type == IndentationTypes.VERTICAL_BRACKET: + self.add_issue(part, 128, 'Continuation line under-indented for visual indent') + elif node.type == IndentationTypes.BACKSLASH: + self.add_issue(part, 122, 'Continuation line missing indentation or outdented') + elif node.type == IndentationTypes.IMPLICIT: + self.add_issue(part, 135, 'xxx') + else: + self.add_issue(part, 121, 'Continuation line under-indented for hanging indent') + else: + if node.type == IndentationTypes.VERTICAL_BRACKET: + self.add_issue(part, 127, 'Continuation line over-indented for visual indent') + elif node.type == IndentationTypes.IMPLICIT: + self.add_issue(part, 136, 'xxx') + else: + self.add_issue(part, 126, 'Continuation line over-indented for hanging indent') + else: + self._check_spacing(part, spacing) + + self._check_line_length(part, spacing) + # ------------------------------- + # Finalizing. Updating the state. + # ------------------------------- + if value and value in '()[]{}' and type_ != 'error_leaf' \ + and part.parent.type != 'error_node': + if value in _OPENING_BRACKETS: + self._indentation_tos = BracketNode( + self._config, part, + parent=self._indentation_tos, + in_suite_introducer=self._in_suite_introducer + ) + else: + assert node.type != IndentationTypes.IMPLICIT + self._indentation_tos = self._indentation_tos.parent + elif value in ('=', ':') and self._implicit_indentation_possible \ + and part.parent.type in _IMPLICIT_INDENTATION_TYPES: + indentation = node.indentation + self._indentation_tos = ImplicitNode( + self._config, part, parent=self._indentation_tos + ) + + self._on_newline = type_ in ('newline', 'backslash', 'bom') + + self._previous_part = part + self._previous_spacing = spacing + + def _check_line_length(self, part, spacing): + if part.type == 'backslash': + last_column = part.start_pos[1] + 1 + else: + last_column = part.end_pos[1] + if last_column > self._config.max_characters \ + and spacing.start_pos[1] <= self._config.max_characters : + # Special case for long URLs in multi-line docstrings or comments, + # but still report the error when the 72 first chars are whitespaces. + report = True + if part.type == 'comment': + splitted = part.value[1:].split() + if len(splitted) == 1 \ + and (part.end_pos[1] - len(splitted[0])) < 72: + report = False + if report: + self.add_issue( + part, + 501, + 'Line too long (%s > %s characters)' % + (last_column, self._config.max_characters), + ) + + def _check_spacing(self, part, spacing): + def add_if_spaces(*args): + if spaces: + return self.add_issue(*args) + + def add_not_spaces(*args): + if not spaces: + return self.add_issue(*args) + + spaces = spacing.value + prev = self._previous_part + if prev is not None and prev.type == 'error_leaf' or part.type == 'error_leaf': + return + + type_ = part.type + if '\t' in spaces: + self.add_issue(spacing, 223, 'Used tab to separate tokens') + elif type_ == 'comment': + if len(spaces) < self._config.spaces_before_comment: + self.add_issue(spacing, 261, 'At least two spaces before inline comment') + elif type_ == 'newline': + add_if_spaces(spacing, 291, 'Trailing whitespace') + elif len(spaces) > 1: + self.add_issue(spacing, 221, 'Multiple spaces used') + else: + if prev in _OPENING_BRACKETS: + message = "Whitespace after '%s'" % part.value + add_if_spaces(spacing, 201, message) + elif part in _CLOSING_BRACKETS: + message = "Whitespace before '%s'" % part.value + add_if_spaces(spacing, 202, message) + elif part in (',', ';') or part == ':' \ + and part.parent.type not in _POSSIBLE_SLICE_PARENTS: + message = "Whitespace before '%s'" % part.value + add_if_spaces(spacing, 203, message) + elif prev == ':' and prev.parent.type in _POSSIBLE_SLICE_PARENTS: + pass # TODO + elif prev in (',', ';', ':'): + add_not_spaces(spacing, 231, "missing whitespace after '%s'") + elif part == ':': # Is a subscript + # TODO + pass + elif part in ('*', '**') and part.parent.type not in _NON_STAR_TYPES \ + or prev in ('*', '**') \ + and prev.parent.type not in _NON_STAR_TYPES: + # TODO + pass + elif prev in _FACTOR and prev.parent.type == 'factor': + pass + elif prev == '@' and prev.parent.type == 'decorator': + pass # TODO should probably raise an error if there's a space here + elif part in _NEEDS_SPACE or prev in _NEEDS_SPACE: + if part == '=' and part.parent.type in ('argument', 'param') \ + or prev == '=' and prev.parent.type in ('argument', 'param'): + if part == '=': + param = part.parent + else: + param = prev.parent + if param.type == 'param' and param.annotation: + add_not_spaces(spacing, 252, 'Expected spaces around annotation equals') + else: + add_if_spaces(spacing, 251, 'Unexpected spaces around keyword / parameter equals') + elif part in _BITWISE_OPERATOR or prev in _BITWISE_OPERATOR: + add_not_spaces(spacing, 227, 'Missing whitespace around bitwise or shift operator') + elif part == '%' or prev == '%': + add_not_spaces(spacing, 228, 'Missing whitespace around modulo operator') + else: + message_225 = 'Missing whitespace between tokens' + add_not_spaces(spacing, 225, message_225) + elif type_ == 'keyword' or prev.type == 'keyword': + add_not_spaces(spacing, 275, 'Missing whitespace around keyword') + else: + prev_spacing = self._previous_spacing + if prev in _ALLOW_SPACE and spaces != prev_spacing.value \ + and '\n' not in self._previous_leaf.prefix: + message = "Whitespace before operator doesn't match with whitespace after" + self.add_issue(spacing, 229, message) + + if spaces and part not in _ALLOW_SPACE and prev not in _ALLOW_SPACE: + message_225 = 'Missing whitespace between tokens' + #print('xy', spacing) + #self.add_issue(spacing, 225, message_225) + # TODO why only brackets? + if part in _OPENING_BRACKETS: + message = "Whitespace before '%s'" % part.value + add_if_spaces(spacing, 211, message) + + def _analyse_non_prefix(self, leaf): + typ = leaf.type + if typ == 'name' and leaf.value in ('l', 'O', 'I'): + if leaf.is_definition(): + message = "Do not define %s named 'l', 'O', or 'I' one line" + if leaf.parent.type == 'class' and leaf.parent.name == leaf: + self.add_issue(leaf, 742, message % 'classes') + elif leaf.parent.type == 'function' and leaf.parent.name == leaf: + self.add_issue(leaf, 743, message % 'function') + else: + self.add_issuadd_issue(741, message % 'variables', leaf) + elif leaf.value == ':': + if isinstance(leaf.parent, (Flow, Scope)) and leaf.parent.type != 'lambdef': + next_leaf = leaf.get_next_leaf() + if next_leaf.type != 'newline': + if leaf.parent.type == 'funcdef': + self.add_issue(next_leaf, 704, 'Multiple statements on one line (def)') + else: + self.add_issue(next_leaf, 701, 'Multiple statements on one line (colon)') + elif leaf.value == ';': + if leaf.get_next_leaf().type in ('newline', 'endmarker'): + self.add_issue(leaf, 703, 'Statement ends with a semicolon') + else: + self.add_issue(leaf, 702, 'Multiple statements on one line (semicolon)') + elif leaf.value in ('==', '!='): + comparison = leaf.parent + index = comparison.children.index(leaf) + left = comparison.children[index - 1] + right = comparison.children[index + 1] + for node in left, right: + if node.type == 'keyword' or node.type == 'name': + if node.value == 'None': + message = "comparison to None should be 'if cond is None:'" + self.add_issue(leaf, 711, message) + break + elif node.value in ('True', 'False'): + message = "comparison to False/True should be 'if cond is True:' or 'if cond:'" + self.add_issue(leaf, 712, message) + break + elif leaf.value in ('in', 'is'): + comparison = leaf.parent + if comparison.type == 'comparison' and comparison.parent.type == 'not_test': + if leaf.value == 'in': + self.add_issue(leaf, 713, "test for membership should be 'not in'") + else: + self.add_issue(leaf, 714, "test for object identity should be 'is not'") + elif typ == 'string': + # Checking multiline strings + for i, line in enumerate(leaf.value.splitlines()[1:]): + indentation = re.match('[ \t]*', line).group(0) + start_pos = leaf.line + i, len(indentation) + # TODO check multiline indentation. + elif typ == 'endmarker': + if self._newline_count >= 2: + self.add_issue(leaf, 391, 'Blank line at end of file') + + def add_issue(self, node, code, message): + if self._previous_leaf is not None: + if search_ancestor(self._previous_leaf, 'error_node') is not None: + return + if self._previous_leaf.type == 'error_leaf': + return + if search_ancestor(node, 'error_node') is not None: + return + if code in (901, 903): + # 901 and 903 are raised by the ErrorFinder. + super(PEP8Normalizer, self).add_issue(node, code, message) + else: + # Skip ErrorFinder here, because it has custom behavior. + super(ErrorFinder, self).add_issue(node, code, message) + + +class PEP8NormalizerConfig(ErrorFinderConfig): + normalizer_class = PEP8Normalizer + """ + Normalizing to PEP8. Not really implemented, yet. + """ + def __init__(self, indentation=' ' * 4, hanging_indentation=None, + max_characters=79, spaces_before_comment=2): + self.indentation = indentation + if hanging_indentation is None: + hanging_indentation = indentation + self.hanging_indentation = hanging_indentation + self.closing_bracket_hanging_indentation = '' + self.break_after_binary = False + self.max_characters = max_characters + self.spaces_before_comment = spaces_before_comment + + +# TODO this is not yet ready. +#@PEP8Normalizer.register_rule(type='endmarker') +class BlankLineAtEnd(Rule): + code = 392 + message = 'Blank line at end of file' + + def is_issue(self, leaf): + return self._newline_count >= 2 diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/prefix.py b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/prefix.py new file mode 100644 index 0000000..b7f1e1b --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/prefix.py @@ -0,0 +1,97 @@ +import re +from codecs import BOM_UTF8 + +from parso.python.tokenize import group + +unicode_bom = BOM_UTF8.decode('utf-8') + + +class PrefixPart(object): + def __init__(self, leaf, typ, value, spacing='', start_pos=None): + assert start_pos is not None + self.parent = leaf + self.type = typ + self.value = value + self.spacing = spacing + self.start_pos = start_pos + + @property + def end_pos(self): + if self.value.endswith('\n'): + return self.start_pos[0] + 1, 0 + if self.value == unicode_bom: + # The bom doesn't have a length at the start of a Python file. + return self.start_pos + return self.start_pos[0], self.start_pos[1] + len(self.value) + + def create_spacing_part(self): + column = self.start_pos[1] - len(self.spacing) + return PrefixPart( + self.parent, 'spacing', self.spacing, + start_pos=(self.start_pos[0], column) + ) + + def __repr__(self): + return '%s(%s, %s, %s)' % ( + self.__class__.__name__, + self.type, + repr(self.value), + self.start_pos + ) + + +_comment = r'#[^\n\r\f]*' +_backslash = r'\\\r?\n' +_newline = r'\r?\n' +_form_feed = r'\f' +_only_spacing = '$' +_spacing = r'[ \t]*' +_bom = unicode_bom + +_regex = group( + _comment, _backslash, _newline, _form_feed, _only_spacing, _bom, + capture=True +) +_regex = re.compile(group(_spacing, capture=True) + _regex) + + +_types = { + '#': 'comment', + '\\': 'backslash', + '\f': 'formfeed', + '\n': 'newline', + '\r': 'newline', + unicode_bom: 'bom' +} + + +def split_prefix(leaf, start_pos): + line, column = start_pos + start = 0 + value = spacing = '' + bom = False + while start != len(leaf.prefix): + match =_regex.match(leaf.prefix, start) + spacing = match.group(1) + value = match.group(2) + if not value: + break + type_ = _types[value[0]] + yield PrefixPart( + leaf, type_, value, spacing, + start_pos=(line, column + start - int(bom) + len(spacing)) + ) + if type_ == 'bom': + bom = True + + start = match.end(0) + if value.endswith('\n'): + line += 1 + column = -start + + if value: + spacing = '' + yield PrefixPart( + leaf, 'spacing', spacing, + start_pos=(line, column + start) + ) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/token.py b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/token.py new file mode 100644 index 0000000..fb590a5 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/token.py @@ -0,0 +1,104 @@ +from __future__ import absolute_import +from itertools import count +from token import * + +from parso._compatibility import py_version + + +_counter = count(N_TOKENS) +# Never want to see this thing again. +del N_TOKENS + +COMMENT = next(_counter) +tok_name[COMMENT] = 'COMMENT' + +NL = next(_counter) +tok_name[NL] = 'NL' + +# Sets the attributes that don't exist in these tok_name versions. +if py_version >= 30: + BACKQUOTE = next(_counter) + tok_name[BACKQUOTE] = 'BACKQUOTE' +else: + RARROW = next(_counter) + tok_name[RARROW] = 'RARROW' + ELLIPSIS = next(_counter) + tok_name[ELLIPSIS] = 'ELLIPSIS' + +if py_version < 35: + ATEQUAL = next(_counter) + tok_name[ATEQUAL] = 'ATEQUAL' + +ERROR_DEDENT = next(_counter) +tok_name[ERROR_DEDENT] = 'ERROR_DEDENT' + + +# Map from operator to number (since tokenize doesn't do this) + +opmap_raw = """\ +( LPAR +) RPAR +[ LSQB +] RSQB +: COLON +, COMMA +; SEMI ++ PLUS +- MINUS +* STAR +/ SLASH +| VBAR +& AMPER +< LESS +> GREATER += EQUAL +. DOT +% PERCENT +` BACKQUOTE +{ LBRACE +} RBRACE +@ AT +== EQEQUAL +!= NOTEQUAL +<> NOTEQUAL +<= LESSEQUAL +>= GREATEREQUAL +~ TILDE +^ CIRCUMFLEX +<< LEFTSHIFT +>> RIGHTSHIFT +** DOUBLESTAR ++= PLUSEQUAL +-= MINEQUAL +*= STAREQUAL +/= SLASHEQUAL +%= PERCENTEQUAL +&= AMPEREQUAL +|= VBAREQUAL +@= ATEQUAL +^= CIRCUMFLEXEQUAL +<<= LEFTSHIFTEQUAL +>>= RIGHTSHIFTEQUAL +**= DOUBLESTAREQUAL +// DOUBLESLASH +//= DOUBLESLASHEQUAL +-> RARROW +... ELLIPSIS +""" + +opmap = {} +for line in opmap_raw.splitlines(): + op, name = line.split() + opmap[op] = globals()[name] + + +def generate_token_id(string): + """ + Uses a token in the grammar (e.g. `'+'` or `'and'`returns the corresponding + ID for it. The strings are part of the grammar file. + """ + try: + return opmap[string] + except KeyError: + pass + return globals()[string] diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/tokenize.py b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/tokenize.py new file mode 100644 index 0000000..ecd2437 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/tokenize.py @@ -0,0 +1,420 @@ +# -*- coding: utf-8 -*- +""" +This tokenizer has been copied from the ``tokenize.py`` standard library +tokenizer. The reason was simple: The standard library tokenizer fails +if the indentation is not right. To make it possible to do error recovery the + tokenizer needed to be rewritten. + +Basically this is a stripped down version of the standard library module, so +you can read the documentation there. Additionally we included some speed and +memory optimizations here. +""" +from __future__ import absolute_import + +import sys +import string +import re +from collections import namedtuple +import itertools as _itertools +from codecs import BOM_UTF8 + +from parso.python.token import (tok_name, ENDMARKER, STRING, NUMBER, opmap, + NAME, ERRORTOKEN, NEWLINE, INDENT, DEDENT, + ERROR_DEDENT) +from parso._compatibility import py_version +from parso.utils import split_lines + + +TokenCollection = namedtuple( + 'TokenCollection', + 'pseudo_token single_quoted triple_quoted endpats always_break_tokens', +) + +BOM_UTF8_STRING = BOM_UTF8.decode('utf-8') + +_token_collection_cache = {} + +if py_version >= 30: + # Python 3 has str.isidentifier() to check if a char is a valid identifier + is_identifier = str.isidentifier +else: + namechars = string.ascii_letters + '_' + is_identifier = lambda s: s in namechars + + +def group(*choices, **kwargs): + capture = kwargs.pop('capture', False) # Python 2, arrghhhhh :( + assert not kwargs + + start = '(' + if not capture: + start += '?:' + return start + '|'.join(choices) + ')' + + +def any(*choices): + return group(*choices) + '*' + + +def maybe(*choices): + return group(*choices) + '?' + + +# Return the empty string, plus all of the valid string prefixes. +def _all_string_prefixes(version_info): + def different_case_versions(prefix): + for s in _itertools.product(*[(c, c.upper()) for c in prefix]): + yield ''.join(s) + # The valid string prefixes. Only contain the lower case versions, + # and don't contain any permuations (include 'fr', but not + # 'rf'). The various permutations will be generated. + _valid_string_prefixes = ['b', 'r', 'u'] + if version_info >= (3, 0): + _valid_string_prefixes.append('br') + + if version_info >= (3, 6): + _valid_string_prefixes += ['f', 'fr'] + + # if we add binary f-strings, add: ['fb', 'fbr'] + result = set(['']) + for prefix in _valid_string_prefixes: + for t in _itertools.permutations(prefix): + # create a list with upper and lower versions of each + # character + result.update(different_case_versions(t)) + if version_info <= (2, 7): + # In Python 2 the order cannot just be random. + result.update(different_case_versions('ur')) + result.update(different_case_versions('br')) + return result + + +def _compile(expr): + return re.compile(expr, re.UNICODE) + + +def _get_token_collection(version_info): + try: + return _token_collection_cache[tuple(version_info)] + except KeyError: + _token_collection_cache[tuple(version_info)] = result = \ + _create_token_collection(version_info) + return result + + +def _create_token_collection(version_info): + # Note: we use unicode matching for names ("\w") but ascii matching for + # number literals. + Whitespace = r'[ \f\t]*' + Comment = r'#[^\r\n]*' + Name = r'\w+' + + if version_info >= (3, 6): + Hexnumber = r'0[xX](?:_?[0-9a-fA-F])+' + Binnumber = r'0[bB](?:_?[01])+' + Octnumber = r'0[oO](?:_?[0-7])+' + Decnumber = r'(?:0(?:_?0)*|[1-9](?:_?[0-9])*)' + Intnumber = group(Hexnumber, Binnumber, Octnumber, Decnumber) + Exponent = r'[eE][-+]?[0-9](?:_?[0-9])*' + Pointfloat = group(r'[0-9](?:_?[0-9])*\.(?:[0-9](?:_?[0-9])*)?', + r'\.[0-9](?:_?[0-9])*') + maybe(Exponent) + Expfloat = r'[0-9](?:_?[0-9])*' + Exponent + Floatnumber = group(Pointfloat, Expfloat) + Imagnumber = group(r'[0-9](?:_?[0-9])*[jJ]', Floatnumber + r'[jJ]') + else: + Hexnumber = r'0[xX][0-9a-fA-F]+' + Binnumber = r'0[bB][01]+' + if version_info >= (3, 0): + Octnumber = r'0[oO][0-7]+' + else: + Octnumber = '0[oO]?[0-7]+' + Decnumber = r'(?:0+|[1-9][0-9]*)' + Intnumber = group(Hexnumber, Binnumber, Octnumber, Decnumber) + Exponent = r'[eE][-+]?[0-9]+' + Pointfloat = group(r'[0-9]+\.[0-9]*', r'\.[0-9]+') + maybe(Exponent) + Expfloat = r'[0-9]+' + Exponent + Floatnumber = group(Pointfloat, Expfloat) + Imagnumber = group(r'[0-9]+[jJ]', Floatnumber + r'[jJ]') + Number = group(Imagnumber, Floatnumber, Intnumber) + + # Note that since _all_string_prefixes includes the empty string, + # StringPrefix can be the empty string (making it optional). + possible_prefixes = _all_string_prefixes(version_info) + StringPrefix = group(*possible_prefixes) + + # Tail end of ' string. + Single = r"[^'\\]*(?:\\.[^'\\]*)*'" + # Tail end of " string. + Double = r'[^"\\]*(?:\\.[^"\\]*)*"' + # Tail end of ''' string. + Single3 = r"[^'\\]*(?:(?:\\.|'(?!''))[^'\\]*)*'''" + # Tail end of """ string. + Double3 = r'[^"\\]*(?:(?:\\.|"(?!""))[^"\\]*)*"""' + Triple = group(StringPrefix + "'''", StringPrefix + '"""') + + # Because of leftmost-then-longest match semantics, be sure to put the + # longest operators first (e.g., if = came before ==, == would get + # recognized as two instances of =). + Operator = group(r"\*\*=?", r">>=?", r"<<=?", r"!=", + r"//=?", r"->", + r"[+\-*/%&@`|^=<>]=?", + r"~") + + Bracket = '[][(){}]' + + special_args = [r'\r?\n', r'[:;.,@]'] + if version_info >= (3, 0): + special_args.insert(0, r'\.\.\.') + Special = group(*special_args) + + Funny = group(Operator, Bracket, Special) + + # First (or only) line of ' or " string. + ContStr = group(StringPrefix + r"'[^\n'\\]*(?:\\.[^\n'\\]*)*" + + group("'", r'\\\r?\n'), + StringPrefix + r'"[^\n"\\]*(?:\\.[^\n"\\]*)*' + + group('"', r'\\\r?\n')) + PseudoExtras = group(r'\\\r?\n|\Z', Comment, Triple) + PseudoToken = group(Whitespace, capture=True) + \ + group(PseudoExtras, Number, Funny, ContStr, Name, capture=True) + + # For a given string prefix plus quotes, endpats maps it to a regex + # to match the remainder of that string. _prefix can be empty, for + # a normal single or triple quoted string (with no prefix). + endpats = {} + for _prefix in possible_prefixes: + endpats[_prefix + "'"] = _compile(Single) + endpats[_prefix + '"'] = _compile(Double) + endpats[_prefix + "'''"] = _compile(Single3) + endpats[_prefix + '"""'] = _compile(Double3) + + # A set of all of the single and triple quoted string prefixes, + # including the opening quotes. + single_quoted = set() + triple_quoted = set() + for t in possible_prefixes: + for p in (t + '"', t + "'"): + single_quoted.add(p) + for p in (t + '"""', t + "'''"): + triple_quoted.add(p) + + ALWAYS_BREAK_TOKENS = (';', 'import', 'class', 'def', 'try', 'except', + 'finally', 'while', 'with', 'return') + pseudo_token_compiled = _compile(PseudoToken) + return TokenCollection( + pseudo_token_compiled, single_quoted, triple_quoted, endpats, + ALWAYS_BREAK_TOKENS + ) + + +class Token(namedtuple('Token', ['type', 'string', 'start_pos', 'prefix'])): + @property + def end_pos(self): + lines = split_lines(self.string) + if len(lines) > 1: + return self.start_pos[0] + len(lines) - 1, 0 + else: + return self.start_pos[0], self.start_pos[1] + len(self.string) + + +class PythonToken(Token): + def _get_type_name(self, exact=True): + return tok_name[self.type] + + def __repr__(self): + return ('TokenInfo(type=%s, string=%r, start=%r, prefix=%r)' % + self._replace(type=self._get_type_name())) + + +def tokenize(code, version_info, start_pos=(1, 0)): + """Generate tokens from a the source code (string).""" + lines = split_lines(code, keepends=True) + return tokenize_lines(lines, version_info, start_pos=start_pos) + + +def tokenize_lines(lines, version_info, start_pos=(1, 0)): + """ + A heavily modified Python standard library tokenizer. + + Additionally to the default information, yields also the prefix of each + token. This idea comes from lib2to3. The prefix contains all information + that is irrelevant for the parser like newlines in parentheses or comments. + """ + pseudo_token, single_quoted, triple_quoted, endpats, always_break_tokens, = \ + _get_token_collection(version_info) + paren_level = 0 # count parentheses + indents = [0] + max = 0 + numchars = '0123456789' + contstr = '' + contline = None + # We start with a newline. This makes indent at the first position + # possible. It's not valid Python, but still better than an INDENT in the + # second line (and not in the first). This makes quite a few things in + # Jedi's fast parser possible. + new_line = True + prefix = '' # Should never be required, but here for safety + additional_prefix = '' + first = True + lnum = start_pos[0] - 1 + for line in lines: # loop over lines in stream + lnum += 1 + pos = 0 + max = len(line) + if first: + if line.startswith(BOM_UTF8_STRING): + additional_prefix = BOM_UTF8_STRING + line = line[1:] + max = len(line) + + # Fake that the part before was already parsed. + line = '^' * start_pos[1] + line + pos = start_pos[1] + max += start_pos[1] + + first = False + + if contstr: # continued string + endmatch = endprog.match(line) + if endmatch: + pos = endmatch.end(0) + yield PythonToken(STRING, contstr + line[:pos], contstr_start, prefix) + contstr = '' + contline = None + else: + contstr = contstr + line + contline = contline + line + continue + + while pos < max: + pseudomatch = pseudo_token.match(line, pos) + if not pseudomatch: # scan for tokens + txt = line[pos:] + if txt.endswith('\n'): + new_line = True + yield PythonToken(ERRORTOKEN, txt, (lnum, pos), additional_prefix) + additional_prefix = '' + break + + prefix = additional_prefix + pseudomatch.group(1) + additional_prefix = '' + start, pos = pseudomatch.span(2) + spos = (lnum, start) + token = pseudomatch.group(2) + if token == '': + assert prefix + additional_prefix = prefix + # This means that we have a line with whitespace/comments at + # the end, which just results in an endmarker. + break + initial = token[0] + + if new_line and initial not in '\r\n#': + new_line = False + if paren_level == 0: + i = 0 + while line[i] == '\f': + i += 1 + start -= 1 + if start > indents[-1]: + yield PythonToken(INDENT, '', spos, '') + indents.append(start) + while start < indents[-1]: + if start > indents[-2]: + yield PythonToken(ERROR_DEDENT, '', (lnum, 0), '') + break + yield PythonToken(DEDENT, '', spos, '') + indents.pop() + + if (initial in numchars or # ordinary number + (initial == '.' and token != '.' and token != '...')): + yield PythonToken(NUMBER, token, spos, prefix) + elif initial in '\r\n': + if not new_line and paren_level == 0: + yield PythonToken(NEWLINE, token, spos, prefix) + else: + additional_prefix = prefix + token + new_line = True + elif initial == '#': # Comments + assert not token.endswith("\n") + additional_prefix = prefix + token + elif token in triple_quoted: + endprog = endpats[token] + endmatch = endprog.match(line, pos) + if endmatch: # all on one line + pos = endmatch.end(0) + token = line[start:pos] + yield PythonToken(STRING, token, spos, prefix) + else: + contstr_start = (lnum, start) # multiple lines + contstr = line[start:] + contline = line + break + elif initial in single_quoted or \ + token[:2] in single_quoted or \ + token[:3] in single_quoted: + if token[-1] == '\n': # continued string + contstr_start = lnum, start + endprog = (endpats.get(initial) or endpats.get(token[1]) + or endpats.get(token[2])) + contstr = line[start:] + contline = line + break + else: # ordinary string + yield PythonToken(STRING, token, spos, prefix) + elif is_identifier(initial): # ordinary name + if token in always_break_tokens: + paren_level = 0 + while True: + indent = indents.pop() + if indent > start: + yield PythonToken(DEDENT, '', spos, '') + else: + indents.append(indent) + break + yield PythonToken(NAME, token, spos, prefix) + elif initial == '\\' and line[start:] in ('\\\n', '\\\r\n'): # continued stmt + additional_prefix += prefix + line[start:] + break + else: + if token in '([{': + paren_level += 1 + elif token in ')]}': + paren_level -= 1 + + try: + # This check is needed in any case to check if it's a valid + # operator or just some random unicode character. + typ = opmap[token] + except KeyError: + typ = ERRORTOKEN + yield PythonToken(typ, token, spos, prefix) + + if contstr: + yield PythonToken(ERRORTOKEN, contstr, contstr_start, prefix) + if contstr.endswith('\n'): + new_line = True + + end_pos = lnum, max + # As the last position we just take the maximally possible position. We + # remove -1 for the last new line. + for indent in indents[1:]: + yield PythonToken(DEDENT, '', end_pos, '') + yield PythonToken(ENDMARKER, '', end_pos, additional_prefix) + + +if __name__ == "__main__": + if len(sys.argv) >= 2: + path = sys.argv[1] + with open(path) as f: + code = f.read() + else: + code = sys.stdin.read() + + from parso.utils import python_bytes_to_unicode, parse_version_string + + if isinstance(code, bytes): + code = python_bytes_to_unicode(code) + + for token in tokenize(code, parse_version_string()): + print(token) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/tree.py b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/tree.py new file mode 100644 index 0000000..eb97780 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/python/tree.py @@ -0,0 +1,1165 @@ +""" +This is the syntax tree for Python syntaxes (2 & 3). The classes represent +syntax elements like functions and imports. + +All of the nodes can be traced back to the `Python grammar file +`_. If you want to know how +a tree is structured, just analyse that file (for each Python version it's a +bit different). + +There's a lot of logic here that makes it easier for Jedi (and other libraries) +to deal with a Python syntax tree. + +By using :py:meth:`parso.tree.NodeOrLeaf.get_code` on a module, you can get +back the 1-to-1 representation of the input given to the parser. This is +important if you want to refactor a parser tree. + +>>> from parso import parse +>>> parser = parse('import os') +>>> module = parser.get_root_node() +>>> module + + +Any subclasses of :class:`Scope`, including :class:`Module` has an attribute +:attr:`iter_imports `: + +>>> list(module.iter_imports()) +[] + +Changes to the Python Grammar +----------------------------- + +A few things have changed when looking at Python grammar files: + +- :class:`Param` does not exist in Python grammar files. It is essentially a + part of a ``parameters`` node. |parso| splits it up to make it easier to + analyse parameters. However this just makes it easier to deal with the syntax + tree, it doesn't actually change the valid syntax. +- A few nodes like `lambdef` and `lambdef_nocond` have been merged in the + syntax tree to make it easier to do deal with them. + +Parser Tree Classes +------------------- +""" + +import re + +from parso._compatibility import utf8_repr, unicode +from parso.tree import Node, BaseNode, Leaf, ErrorNode, ErrorLeaf, \ + search_ancestor +from parso.python.prefix import split_prefix + +_FLOW_CONTAINERS = set(['if_stmt', 'while_stmt', 'for_stmt', 'try_stmt', + 'with_stmt', 'async_stmt', 'suite']) +_RETURN_STMT_CONTAINERS = set(['suite', 'simple_stmt']) | _FLOW_CONTAINERS +_FUNC_CONTAINERS = set(['suite', 'simple_stmt', 'decorated']) | _FLOW_CONTAINERS +_GET_DEFINITION_TYPES = set([ + 'expr_stmt', 'comp_for', 'with_stmt', 'for_stmt', 'import_name', + 'import_from', 'param' +]) +_IMPORTS = set(['import_name', 'import_from']) + + + +class DocstringMixin(object): + __slots__ = () + + def get_doc_node(self): + """ + Returns the string leaf of a docstring. e.g. ``r'''foo'''``. + """ + if self.type == 'file_input': + node = self.children[0] + elif self.type in ('funcdef', 'classdef'): + node = self.children[self.children.index(':') + 1] + if node.type == 'suite': # Normally a suite + node = node.children[1] # -> NEWLINE stmt + else: # ExprStmt + simple_stmt = self.parent + c = simple_stmt.parent.children + index = c.index(simple_stmt) + if not index: + return None + node = c[index - 1] + + if node.type == 'simple_stmt': + node = node.children[0] + if node.type == 'string': + return node + return None + + +class PythonMixin(object): + """ + Some Python specific utitilies. + """ + __slots__ = () + + def get_name_of_position(self, position): + """ + Given a (line, column) tuple, returns a :py:class:`Name` or ``None`` if + there is no name at that position. + """ + for c in self.children: + if isinstance(c, Leaf): + if c.type == 'name' and c.start_pos <= position <= c.end_pos: + return c + else: + result = c.get_name_of_position(position) + if result is not None: + return result + return None + + +class PythonLeaf(PythonMixin, Leaf): + __slots__ = () + + def _split_prefix(self): + return split_prefix(self, self.get_start_pos_of_prefix()) + + def get_start_pos_of_prefix(self): + """ + Basically calls :py:meth:`parso.tree.NodeOrLeaf.get_start_pos_of_prefix`. + """ + # TODO it is really ugly that we have to override it. Maybe change + # indent error leafs somehow? No idea how, though. + previous_leaf = self.get_previous_leaf() + if previous_leaf is not None and previous_leaf.type == 'error_leaf' \ + and previous_leaf.original_type in ('indent', 'error_dedent'): + previous_leaf = previous_leaf.get_previous_leaf() + + if previous_leaf is None: + return self.line - self.prefix.count('\n'), 0 # It's the first leaf. + return previous_leaf.end_pos + + + +class _LeafWithoutNewlines(PythonLeaf): + """ + Simply here to optimize performance. + """ + __slots__ = () + + @property + def end_pos(self): + return self.line, self.column + len(self.value) + + +# Python base classes +class PythonBaseNode(PythonMixin, BaseNode): + __slots__ = () + + +class PythonNode(PythonMixin, Node): + __slots__ = () + + +class PythonErrorNode(PythonMixin, ErrorNode): + __slots__ = () + + +class PythonErrorLeaf(ErrorLeaf, PythonLeaf): + __slots__ = () + + +class EndMarker(_LeafWithoutNewlines): + __slots__ = () + type = 'endmarker' + + +class Newline(PythonLeaf): + """Contains NEWLINE and ENDMARKER tokens.""" + __slots__ = () + type = 'newline' + + @utf8_repr + def __repr__(self): + return "<%s: %s>" % (type(self).__name__, repr(self.value)) + + +class Name(_LeafWithoutNewlines): + """ + A string. Sometimes it is important to know if the string belongs to a name + or not. + """ + type = 'name' + __slots__ = () + + def __repr__(self): + return "<%s: %s@%s,%s>" % (type(self).__name__, self.value, + self.line, self.column) + + def is_definition(self): + """ + Returns True if the name is being defined. + """ + return self.get_definition() is not None + + def get_definition(self, import_name_always=False): + """ + Returns None if there's on definition for a name. + + :param import_name_alway: Specifies if an import name is always a + definition. Normally foo in `from foo import bar` is not a + definition. + """ + node = self.parent + type_ = node.type + if type_ in ('power', 'atom_expr'): + # In `self.x = 3` self is not a definition, but x is. + return None + + if type_ in ('funcdef', 'classdef'): + if self == node.name: + return node + return None + + if type_ == 'except_clause': + # TODO in Python 2 this doesn't work correctly. See grammar file. + # I think we'll just let it be. Python 2 will be gone in a few + # years. + if self.get_previous_sibling() == 'as': + return node.parent # The try_stmt. + return None + + while node is not None: + if node.type == 'suite': + return None + if node.type in _GET_DEFINITION_TYPES: + if self in node.get_defined_names(): + return node + if import_name_always and node.type in _IMPORTS: + return node + return None + node = node.parent + return None + + + +class Literal(PythonLeaf): + __slots__ = () + + +class Number(Literal): + type = 'number' + __slots__ = () + + +class String(Literal): + type = 'string' + __slots__ = () + + @property + def string_prefix(self): + return re.match('\w*(?=[\'"])', self.value).group(0) + + def _get_payload(self): + match = re.search( + r'''('{3}|"{3}|'|")(.*)$''', + self.value, + flags=re.DOTALL + ) + return match.group(2)[:-len(match.group(1))] + + +class _StringComparisonMixin(object): + def __eq__(self, other): + """ + Make comparisons with strings easy. + Improves the readability of the parser. + """ + if isinstance(other, (str, unicode)): + return self.value == other + + return self is other + + def __ne__(self, other): + """Python 2 compatibility.""" + return not self.__eq__(other) + + def __hash__(self): + return hash(self.value) + + +class Operator(_LeafWithoutNewlines, _StringComparisonMixin): + type = 'operator' + __slots__ = () + + +class Keyword(_LeafWithoutNewlines, _StringComparisonMixin): + type = 'keyword' + __slots__ = () + + +class Scope(PythonBaseNode, DocstringMixin): + """ + Super class for the parser tree, which represents the state of a python + text file. + A Scope is either a function, class or lambda. + """ + __slots__ = () + + def __init__(self, children): + super(Scope, self).__init__(children) + + def iter_funcdefs(self): + """ + Returns a generator of `funcdef` nodes. + """ + return self._search_in_scope('funcdef') + + def iter_classdefs(self): + """ + Returns a generator of `classdef` nodes. + """ + return self._search_in_scope('classdef') + + def iter_imports(self): + """ + Returns a generator of `import_name` and `import_from` nodes. + """ + return self._search_in_scope('import_name', 'import_from') + + def _search_in_scope(self, *names): + def scan(children): + for element in children: + if element.type in names: + yield element + if element.type in _FUNC_CONTAINERS: + for e in scan(element.children): + yield e + + return scan(self.children) + + def get_suite(self): + """ + Returns the part that is executed by the function. + """ + return self.children[-1] + + def __repr__(self): + try: + name = self.name.value + except AttributeError: + name = '' + + return "<%s: %s@%s-%s>" % (type(self).__name__, name, + self.start_pos[0], self.end_pos[0]) + + +class Module(Scope): + """ + The top scope, which is always a module. + Depending on the underlying parser this may be a full module or just a part + of a module. + """ + __slots__ = ('_used_names',) + type = 'file_input' + + def __init__(self, children): + super(Module, self).__init__(children) + self._used_names = None + + def _iter_future_import_names(self): + """ + :return: A list of future import names. + :rtype: list of str + """ + # In Python it's not allowed to use future imports after the first + # actual (non-future) statement. However this is not a linter here, + # just return all future imports. If people want to scan for issues + # they should use the API. + for imp in self.iter_imports(): + if imp.type == 'import_from' and imp.level == 0: + for path in imp.get_paths(): + names = [name.value for name in path] + if len(names) == 2 and names[0] == '__future__': + yield names[1] + + def _has_explicit_absolute_import(self): + """ + Checks if imports in this module are explicitly absolute, i.e. there + is a ``__future__`` import. + Currently not public, might be in the future. + :return bool: + """ + for name in self._iter_future_import_names(): + if name == 'absolute_import': + return True + return False + + def get_used_names(self): + """ + Returns all the :class:`Name` leafs that exist in this module. This + includes both definitions and references of names. + """ + if self._used_names is None: + # Don't directly use self._used_names to eliminate a lookup. + dct = {} + + def recurse(node): + try: + children = node.children + except AttributeError: + if node.type == 'name': + arr = dct.setdefault(node.value, []) + arr.append(node) + else: + for child in children: + recurse(child) + + recurse(self) + self._used_names = dct + return self._used_names + + +class Decorator(PythonBaseNode): + type = 'decorator' + __slots__ = () + + +class ClassOrFunc(Scope): + __slots__ = () + + @property + def name(self): + """ + Returns the `Name` leaf that defines the function or class name. + """ + return self.children[1] + + def get_decorators(self): + """ + :rtype: list of :class:`Decorator` + """ + decorated = self.parent + if decorated.type == 'decorated': + if decorated.children[0].type == 'decorators': + return decorated.children[0].children + else: + return decorated.children[:1] + else: + return [] + + +class Class(ClassOrFunc): + """ + Used to store the parsed contents of a python class. + """ + type = 'classdef' + __slots__ = () + + def __init__(self, children): + super(Class, self).__init__(children) + + def get_super_arglist(self): + """ + Returns the `arglist` node that defines the super classes. It returns + None if there are no arguments. + """ + if self.children[2] != '(': # Has no parentheses + return None + else: + if self.children[3] == ')': # Empty parentheses + return None + else: + return self.children[3] + + +def _create_params(parent, argslist_list): + """ + `argslist_list` is a list that can contain an argslist as a first item, but + most not. It's basically the items between the parameter brackets (which is + at most one item). + This function modifies the parser structure. It generates `Param` objects + from the normal ast. Those param objects do not exist in a normal ast, but + make the evaluation of the ast tree so much easier. + You could also say that this function replaces the argslist node with a + list of Param objects. + """ + def check_python2_nested_param(node): + """ + Python 2 allows params to look like ``def x(a, (b, c))``, which is + basically a way of unpacking tuples in params. Python 3 has ditched + this behavior. Jedi currently just ignores those constructs. + """ + return node.type == 'fpdef' and node.children[0] == '(' + + try: + first = argslist_list[0] + except IndexError: + return [] + + if first.type in ('name', 'fpdef'): + if check_python2_nested_param(first): + return [first] + else: + return [Param([first], parent)] + elif first == '*': + return [first] + else: # argslist is a `typedargslist` or a `varargslist`. + if first.type == 'tfpdef': + children = [first] + else: + children = first.children + new_children = [] + start = 0 + # Start with offset 1, because the end is higher. + for end, child in enumerate(children + [None], 1): + if child is None or child == ',': + param_children = children[start:end] + if param_children: # Could as well be comma and then end. + if param_children[0] == '*' and param_children[1] == ',' \ + or check_python2_nested_param(param_children[0]): + for p in param_children: + p.parent = parent + new_children += param_children + else: + new_children.append(Param(param_children, parent)) + start = end + return new_children + + +class Function(ClassOrFunc): + """ + Used to store the parsed contents of a python function. + + Children:: + + 0. + 1. + 2. parameter list (including open-paren and close-paren s) + 3. or 5. + 4. or 6. Node() representing function body + 3. -> (if annotation is also present) + 4. annotation (if present) + """ + type = 'funcdef' + + def __init__(self, children): + super(Function, self).__init__(children) + parameters = self.children[2] # After `def foo` + parameters.children[1:-1] = _create_params(parameters, parameters.children[1:-1]) + + def _get_param_nodes(self): + return self.children[2].children + + def get_params(self): + """ + Returns a list of `Param()`. + """ + return [p for p in self._get_param_nodes() if p.type == 'param'] + + @property + def name(self): + return self.children[1] # First token after `def` + + def iter_yield_exprs(self): + """ + Returns a generator of `yield_expr`. + """ + def scan(children): + for element in children: + if element.type in ('classdef', 'funcdef', 'lambdef'): + continue + + try: + nested_children = element.children + except AttributeError: + if element.value == 'yield': + if element.parent.type == 'yield_expr': + yield element.parent + else: + yield element + else: + for result in scan(nested_children): + yield result + + return scan(self.children) + + def iter_return_stmts(self): + """ + Returns a generator of `return_stmt`. + """ + def scan(children): + for element in children: + if element.type == 'return_stmt' \ + or element.type == 'keyword' and element.value == 'return': + yield element + if element.type in _RETURN_STMT_CONTAINERS: + for e in scan(element.children): + yield e + + return scan(self.children) + + def iter_raise_stmts(self): + """ + Returns a generator of `raise_stmt`. Includes raise statements inside try-except blocks + """ + def scan(children): + for element in children: + if element.type == 'raise_stmt' \ + or element.type == 'keyword' and element.value == 'raise': + yield element + if element.type in _RETURN_STMT_CONTAINERS: + for e in scan(element.children): + yield e + + return scan(self.children) + + def is_generator(self): + """ + :return bool: Checks if a function is a generator or not. + """ + return next(self.iter_yield_exprs(), None) is not None + + @property + def annotation(self): + """ + Returns the test node after `->` or `None` if there is no annotation. + """ + try: + if self.children[3] == "->": + return self.children[4] + assert self.children[3] == ":" + return None + except IndexError: + return None + +class Lambda(Function): + """ + Lambdas are basically trimmed functions, so give it the same interface. + + Children:: + + 0. + *. for each argument x + -2. + -1. Node() representing body + """ + type = 'lambdef' + __slots__ = () + + def __init__(self, children): + # We don't want to call the Function constructor, call its parent. + super(Function, self).__init__(children) + # Everything between `lambda` and the `:` operator is a parameter. + self.children[1:-2] = _create_params(self, self.children[1:-2]) + + @property + def name(self): + """ + Raises an AttributeError. Lambdas don't have a defined name. + """ + raise AttributeError("lambda is not named.") + + def _get_param_nodes(self): + return self.children[1:-2] + + @property + def annotation(self): + """ + Returns `None`, lambdas don't have annotations. + """ + return None + + def __repr__(self): + return "<%s@%s>" % (self.__class__.__name__, self.start_pos) + + +class Flow(PythonBaseNode): + __slots__ = () + + +class IfStmt(Flow): + type = 'if_stmt' + __slots__ = () + + def get_test_nodes(self): + """ + E.g. returns all the `test` nodes that are named as x, below: + + if x: + pass + elif x: + pass + """ + for i, c in enumerate(self.children): + if c in ('elif', 'if'): + yield self.children[i + 1] + + def get_corresponding_test_node(self, node): + """ + Searches for the branch in which the node is and returns the + corresponding test node (see function above). However if the node is in + the test node itself and not in the suite return None. + """ + start_pos = node.start_pos + for check_node in reversed(list(self.get_test_nodes())): + if check_node.start_pos < start_pos: + if start_pos < check_node.end_pos: + return None + # In this case the node is within the check_node itself, + # not in the suite + else: + return check_node + + def is_node_after_else(self, node): + """ + Checks if a node is defined after `else`. + """ + for c in self.children: + if c == 'else': + if node.start_pos > c.start_pos: + return True + else: + return False + + +class WhileStmt(Flow): + type = 'while_stmt' + __slots__ = () + + +class ForStmt(Flow): + type = 'for_stmt' + __slots__ = () + + def get_testlist(self): + """ + Returns the input node ``y`` from: ``for x in y:``. + """ + return self.children[3] + + def get_defined_names(self): + return _defined_names(self.children[1]) + + +class TryStmt(Flow): + type = 'try_stmt' + __slots__ = () + + def get_except_clause_tests(self): + """ + Returns the ``test`` nodes found in ``except_clause`` nodes. + Returns ``[None]`` for except clauses without an exception given. + """ + for node in self.children: + if node.type == 'except_clause': + yield node.children[1] + elif node == 'except': + yield None + + +class WithStmt(Flow): + type = 'with_stmt' + __slots__ = () + + def get_defined_names(self): + """ + Returns the a list of `Name` that the with statement defines. The + defined names are set after `as`. + """ + names = [] + for with_item in self.children[1:-2:2]: + # Check with items for 'as' names. + if with_item.type == 'with_item': + names += _defined_names(with_item.children[2]) + return names + + def get_test_node_from_name(self, name): + node = name.parent + if node.type != 'with_item': + raise ValueError('The name is not actually part of a with statement.') + return node.children[0] + + +class Import(PythonBaseNode): + __slots__ = () + + def get_path_for_name(self, name): + """ + The path is the list of names that leads to the searched name. + + :return list of Name: + """ + try: + # The name may be an alias. If it is, just map it back to the name. + name = self._aliases()[name] + except KeyError: + pass + + for path in self.get_paths(): + if name in path: + return path[:path.index(name) + 1] + raise ValueError('Name should be defined in the import itself') + + def is_nested(self): + return False # By default, sub classes may overwrite this behavior + + def is_star_import(self): + return self.children[-1] == '*' + + +class ImportFrom(Import): + type = 'import_from' + __slots__ = () + + def get_defined_names(self): + """ + Returns the a list of `Name` that the import defines. The + defined names are set after `import` or in case an alias - `as` - is + present that name is returned. + """ + return [alias or name for name, alias in self._as_name_tuples()] + + def _aliases(self): + """Mapping from alias to its corresponding name.""" + return dict((alias, name) for name, alias in self._as_name_tuples() + if alias is not None) + + def get_from_names(self): + for n in self.children[1:]: + if n not in ('.', '...'): + break + if n.type == 'dotted_name': # from x.y import + return n.children[::2] + elif n == 'import': # from . import + return [] + else: # from x import + return [n] + + @property + def level(self): + """The level parameter of ``__import__``.""" + level = 0 + for n in self.children[1:]: + if n in ('.', '...'): + level += len(n.value) + else: + break + return level + + def _as_name_tuples(self): + last = self.children[-1] + if last == ')': + last = self.children[-2] + elif last == '*': + return # No names defined directly. + + if last.type == 'import_as_names': + as_names = last.children[::2] + else: + as_names = [last] + for as_name in as_names: + if as_name.type == 'name': + yield as_name, None + else: + yield as_name.children[::2] # yields x, y -> ``x as y`` + + def get_paths(self): + """ + The import paths defined in an import statement. Typically an array + like this: ``[, ]``. + + :return list of list of Name: + """ + dotted = self.get_from_names() + + if self.children[-1] == '*': + return [dotted] + return [dotted + [name] for name, alias in self._as_name_tuples()] + + +class ImportName(Import): + """For ``import_name`` nodes. Covers normal imports without ``from``.""" + type = 'import_name' + __slots__ = () + + def get_defined_names(self): + """ + Returns the a list of `Name` that the import defines. The defined names + is always the first name after `import` or in case an alias - `as` - is + present that name is returned. + """ + return [alias or path[0] for path, alias in self._dotted_as_names()] + + @property + def level(self): + """The level parameter of ``__import__``.""" + return 0 # Obviously 0 for imports without from. + + def get_paths(self): + return [path for path, alias in self._dotted_as_names()] + + def _dotted_as_names(self): + """Generator of (list(path), alias) where alias may be None.""" + dotted_as_names = self.children[1] + if dotted_as_names.type == 'dotted_as_names': + as_names = dotted_as_names.children[::2] + else: + as_names = [dotted_as_names] + + for as_name in as_names: + if as_name.type == 'dotted_as_name': + alias = as_name.children[2] + as_name = as_name.children[0] + else: + alias = None + if as_name.type == 'name': + yield [as_name], alias + else: + # dotted_names + yield as_name.children[::2], alias + + def is_nested(self): + """ + This checks for the special case of nested imports, without aliases and + from statement:: + + import foo.bar + """ + return bool([1 for path, alias in self._dotted_as_names() + if alias is None and len(path) > 1]) + + def _aliases(self): + """ + :return list of Name: Returns all the alias + """ + return dict((alias, path[-1]) for path, alias in self._dotted_as_names() + if alias is not None) + + +class KeywordStatement(PythonBaseNode): + """ + For the following statements: `assert`, `del`, `global`, `nonlocal`, + `raise`, `return`, `yield`, `return`, `yield`. + + `pass`, `continue` and `break` are not in there, because they are just + simple keywords and the parser reduces it to a keyword. + """ + __slots__ = () + + @property + def type(self): + """ + Keyword statements start with the keyword and end with `_stmt`. You can + crosscheck this with the Python grammar. + """ + return '%s_stmt' % self.keyword + + @property + def keyword(self): + return self.children[0].value + + +class AssertStmt(KeywordStatement): + __slots__ = () + + @property + def assertion(self): + return self.children[1] + + +class GlobalStmt(KeywordStatement): + __slots__ = () + + def get_global_names(self): + return self.children[1::2] + + +class ReturnStmt(KeywordStatement): + __slots__ = () + + +class YieldExpr(PythonBaseNode): + type = 'yield_expr' + __slots__ = () + + +def _defined_names(current): + """ + A helper function to find the defined names in statements, for loops and + list comprehensions. + """ + names = [] + if current.type in ('testlist_star_expr', 'testlist_comp', 'exprlist', 'testlist'): + for child in current.children[::2]: + names += _defined_names(child) + elif current.type in ('atom', 'star_expr'): + names += _defined_names(current.children[1]) + elif current.type in ('power', 'atom_expr'): + if current.children[-2] != '**': # Just if there's no operation + trailer = current.children[-1] + if trailer.children[0] == '.': + names.append(trailer.children[1]) + else: + names.append(current) + return names + + +class ExprStmt(PythonBaseNode, DocstringMixin): + type = 'expr_stmt' + __slots__ = () + + def get_defined_names(self): + """ + Returns a list of `Name` defined before the `=` sign. + """ + names = [] + if self.children[1].type == 'annassign': + names = _defined_names(self.children[0]) + return [ + name + for i in range(0, len(self.children) - 2, 2) + if '=' in self.children[i + 1].value + for name in _defined_names(self.children[i]) + ] + names + + def get_rhs(self): + """Returns the right-hand-side of the equals.""" + return self.children[-1] + + def yield_operators(self): + """ + Returns a generator of `+=`, `=`, etc. or None if there is no operation. + """ + first = self.children[1] + if first.type == 'annassign': + if len(first.children) <= 2: + return # No operator is available, it's just PEP 484. + + first = first.children[2] + yield first + + for operator in self.children[3::2]: + yield operator + + +class Param(PythonBaseNode): + """ + It's a helper class that makes business logic with params much easier. The + Python grammar defines no ``param`` node. It defines it in a different way + that is not really suited to working with parameters. + """ + type = 'param' + + def __init__(self, children, parent): + super(Param, self).__init__(children) + self.parent = parent + for child in children: + child.parent = self + + @property + def star_count(self): + """ + Is `0` in case of `foo`, `1` in case of `*foo` or `2` in case of + `**foo`. + """ + first = self.children[0] + if first in ('*', '**'): + return len(first.value) + return 0 + + @property + def default(self): + """ + The default is the test node that appears after the `=`. Is `None` in + case no default is present. + """ + has_comma = self.children[-1] == ',' + try: + if self.children[-2 - int(has_comma)] == '=': + return self.children[-1 - int(has_comma)] + except IndexError: + return None + + @property + def annotation(self): + """ + The default is the test node that appears after `:`. Is `None` in case + no annotation is present. + """ + tfpdef = self._tfpdef() + if tfpdef.type == 'tfpdef': + assert tfpdef.children[1] == ":" + assert len(tfpdef.children) == 3 + annotation = tfpdef.children[2] + return annotation + else: + return None + + def _tfpdef(self): + """ + tfpdef: see e.g. grammar36.txt. + """ + offset = int(self.children[0] in ('*', '**')) + return self.children[offset] + + @property + def name(self): + """ + The `Name` leaf of the param. + """ + if self._tfpdef().type == 'tfpdef': + return self._tfpdef().children[0] + else: + return self._tfpdef() + + def get_defined_names(self): + return [self.name] + + @property + def position_index(self): + """ + Property for the positional index of a paramter. + """ + index = self.parent.children.index(self) + try: + keyword_only_index = self.parent.children.index('*') + if index > keyword_only_index: + # Skip the ` *, ` + index -= 2 + except ValueError: + pass + return index - 1 + + def get_parent_function(self): + """ + Returns the function/lambda of a parameter. + """ + return search_ancestor(self, 'funcdef', 'lambdef') + + def get_code(self, include_prefix=True, include_comma=True): + """ + Like all the other get_code functions, but includes the param + `include_comma`. + + :param include_comma bool: If enabled includes the comma in the string output. + """ + if include_comma: + return super(Param, self).get_code(include_prefix) + + children = self.children + if children[-1] == ',': + children = children[:-1] + return self._get_code_for_children( + children, + include_prefix=include_prefix + ) + + def __repr__(self): + default = '' if self.default is None else '=%s' % self.default.get_code() + return '<%s: %s>' % (type(self).__name__, str(self._tfpdef()) + default) + + +class CompFor(PythonBaseNode): + type = 'comp_for' + __slots__ = () + + def get_defined_names(self): + """ + Returns the a list of `Name` that the comprehension defines. + """ + # allow async for + return _defined_names(self.children[self.children.index('for') + 1]) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/tree.py b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/tree.py new file mode 100644 index 0000000..72a1494 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/tree.py @@ -0,0 +1,364 @@ +from abc import abstractmethod, abstractproperty +from parso._compatibility import utf8_repr, encoding, py_version + + +def search_ancestor(node, *node_types): + """ + Recursively looks at the parents of a node and returns the first found node + that matches node_types. Returns ``None`` if no matching node is found. + + :param node: The ancestors of this node will be checked. + :param node_types: type names that are searched for. + :type node_types: tuple of str + """ + while True: + node = node.parent + if node is None or node.type in node_types: + return node + + +class NodeOrLeaf(object): + """ + The base class for nodes and leaves. + """ + __slots__ = () + type = None + ''' + The type is a string that typically matches the types of the grammar file. + ''' + + def get_root_node(self): + """ + Returns the root node of a parser tree. The returned node doesn't have + a parent node like all the other nodes/leaves. + """ + scope = self + while scope.parent is not None: + scope = scope.parent + return scope + + def get_next_sibling(self): + """ + Returns the node immediately following this node in this parent's + children list. If this node does not have a next sibling, it is None + """ + # Can't use index(); we need to test by identity + for i, child in enumerate(self.parent.children): + if child is self: + try: + return self.parent.children[i + 1] + except IndexError: + return None + + def get_previous_sibling(self): + """ + Returns the node immediately preceding this node in this parent's + children list. If this node does not have a previous sibling, it is + None. + None. + """ + # Can't use index(); we need to test by identity + for i, child in enumerate(self.parent.children): + if child is self: + if i == 0: + return None + return self.parent.children[i - 1] + + def get_previous_leaf(self): + """ + Returns the previous leaf in the parser tree. + Returns `None` if this is the first element in the parser tree. + """ + node = self + while True: + c = node.parent.children + i = c.index(node) + if i == 0: + node = node.parent + if node.parent is None: + return None + else: + node = c[i - 1] + break + + while True: + try: + node = node.children[-1] + except AttributeError: # A Leaf doesn't have children. + return node + + def get_next_leaf(self): + """ + Returns the next leaf in the parser tree. + Returns None if this is the last element in the parser tree. + """ + node = self + while True: + c = node.parent.children + i = c.index(node) + if i == len(c) - 1: + node = node.parent + if node.parent is None: + return None + else: + node = c[i + 1] + break + + while True: + try: + node = node.children[0] + except AttributeError: # A Leaf doesn't have children. + return node + + @abstractproperty + def start_pos(self): + """ + Returns the starting position of the prefix as a tuple, e.g. `(3, 4)`. + + :return tuple of int: (line, column) + """ + + @abstractproperty + def end_pos(self): + """ + Returns the end position of the prefix as a tuple, e.g. `(3, 4)`. + + :return tuple of int: (line, column) + """ + + @abstractmethod + def get_start_pos_of_prefix(self): + """ + Returns the start_pos of the prefix. This means basically it returns + the end_pos of the last prefix. The `get_start_pos_of_prefix()` of the + prefix `+` in `2 + 1` would be `(1, 1)`, while the start_pos is + `(1, 2)`. + + :return tuple of int: (line, column) + """ + + @abstractmethod + def get_first_leaf(self): + """ + Returns the first leaf of a node or itself if this is a leaf. + """ + + @abstractmethod + def get_last_leaf(self): + """ + Returns the last leaf of a node or itself if this is a leaf. + """ + + @abstractmethod + def get_code(self, include_prefix=True): + """ + Returns the code that was input the input for the parser for this node. + + :param include_prefix: Removes the prefix (whitespace and comments) of + e.g. a statement. + """ + + +class Leaf(NodeOrLeaf): + ''' + Leafs are basically tokens with a better API. Leafs exactly know where they + were defined and what text preceeds them. + ''' + __slots__ = ('value', 'parent', 'line', 'column', 'prefix') + + def __init__(self, value, start_pos, prefix=''): + self.value = value + ''' + :py:func:`str` The value of the current token. + ''' + self.start_pos = start_pos + self.prefix = prefix + ''' + :py:func:`str` Typically a mixture of whitespace and comments. Stuff + that is syntactically irrelevant for the syntax tree. + ''' + self.parent = None + ''' + The parent :class:`BaseNode` of this leaf. + ''' + + @property + def start_pos(self): + return self.line, self.column + + @start_pos.setter + def start_pos(self, value): + self.line = value[0] + self.column = value[1] + + def get_start_pos_of_prefix(self): + previous_leaf = self.get_previous_leaf() + if previous_leaf is None: + return self.line - self.prefix.count('\n'), 0 # It's the first leaf. + return previous_leaf.end_pos + + def get_first_leaf(self): + return self + + def get_last_leaf(self): + return self + + def get_code(self, include_prefix=True): + if include_prefix: + return self.prefix + self.value + else: + return self.value + + @property + def end_pos(self): + lines = self.value.split('\n') + end_pos_line = self.line + len(lines) - 1 + # Check for multiline token + if self.line == end_pos_line: + end_pos_column = self.column + len(lines[-1]) + else: + end_pos_column = len(lines[-1]) + return end_pos_line, end_pos_column + + @utf8_repr + def __repr__(self): + value = self.value + if not value: + value = self.type + return "<%s: %s>" % (type(self).__name__, value) + + +class TypedLeaf(Leaf): + __slots__ = ('type',) + def __init__(self, type, value, start_pos, prefix=''): + super(TypedLeaf, self).__init__(value, start_pos, prefix) + self.type = type + + +class BaseNode(NodeOrLeaf): + """ + The super class for all nodes. + A node has children, a type and possibly a parent node. + """ + __slots__ = ('children', 'parent') + type = None + + def __init__(self, children): + for c in children: + c.parent = self + self.children = children + """ + A list of :class:`NodeOrLeaf` child nodes. + """ + self.parent = None + ''' + The parent :class:`BaseNode` of this leaf. + None if this is the root node. + ''' + + @property + def start_pos(self): + return self.children[0].start_pos + + def get_start_pos_of_prefix(self): + return self.children[0].get_start_pos_of_prefix() + + @property + def end_pos(self): + return self.children[-1].end_pos + + def _get_code_for_children(self, children, include_prefix): + if include_prefix: + return "".join(c.get_code() for c in children) + else: + first = children[0].get_code(include_prefix=False) + return first + "".join(c.get_code() for c in children[1:]) + + def get_code(self, include_prefix=True): + return self._get_code_for_children(self.children, include_prefix) + + def get_leaf_for_position(self, position, include_prefixes=False): + """ + Get the :py:class:`parso.tree.Leaf` at ``position`` + + :param tuple position: A position tuple, row, column. Rows start from 1 + :param bool include_prefixes: If ``False``, ``None`` will be returned if ``position`` falls + on whitespace or comments before a leaf + :return: :py:class:`parso.tree.Leaf` at ``position``, or ``None`` + """ + def binary_search(lower, upper): + if lower == upper: + element = self.children[lower] + if not include_prefixes and position < element.start_pos: + # We're on a prefix. + return None + # In case we have prefixes, a leaf always matches + try: + return element.get_leaf_for_position(position, include_prefixes) + except AttributeError: + return element + + + index = int((lower + upper) / 2) + element = self.children[index] + if position <= element.end_pos: + return binary_search(lower, index) + else: + return binary_search(index + 1, upper) + + if not ((1, 0) <= position <= self.children[-1].end_pos): + raise ValueError('Please provide a position that exists within this node.') + return binary_search(0, len(self.children) - 1) + + def get_first_leaf(self): + return self.children[0].get_first_leaf() + + def get_last_leaf(self): + return self.children[-1].get_last_leaf() + + @utf8_repr + def __repr__(self): + code = self.get_code().replace('\n', ' ').strip() + if not py_version >= 30: + code = code.encode(encoding, 'replace') + return "<%s: %s@%s,%s>" % \ + (type(self).__name__, code, self.start_pos[0], self.start_pos[1]) + + +class Node(BaseNode): + """Concrete implementation for interior nodes.""" + __slots__ = ('type',) + + def __init__(self, type, children): + super(Node, self).__init__(children) + self.type = type + + def __repr__(self): + return "%s(%s, %r)" % (self.__class__.__name__, self.type, self.children) + + +class ErrorNode(BaseNode): + """ + A node that containes valid nodes/leaves that we're follow by a token that + was invalid. This basically means that the leaf after this node is where + Python would mark a syntax error. + """ + __slots__ = () + type = 'error_node' + + +class ErrorLeaf(Leaf): + """ + A leaf that is either completely invalid in a language (like `$` in Python) + or is invalid at that position. Like the star in `1 +* 1`. + """ + __slots__ = ('original_type',) + type = 'error_leaf' + + def __init__(self, original_type, value, start_pos, prefix=''): + super(ErrorLeaf, self).__init__(value, start_pos, prefix) + self.original_type = original_type + + def __repr__(self): + return "<%s: %s:%s, %s>" % \ + (type(self).__name__, self.original_type, repr(self.value), self.start_pos) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/utils.py b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/utils.py new file mode 100644 index 0000000..a4801b9 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/parso-0.1.1-py3.6.egg/parso/utils.py @@ -0,0 +1,156 @@ +from collections import namedtuple +import re +import sys +from ast import literal_eval + +from parso._compatibility import unicode, total_ordering + + +Version = namedtuple('Version', 'major, minor, micro') + + +def split_lines(string, keepends=False): + r""" + Intended for Python code. In contrast to Python's :py:meth:`str.splitlines`, + looks at form feeds and other special characters as normal text. Just + splits ``\n`` and ``\r\n``. + Also different: Returns ``[""]`` for an empty string input. + + In Python 2.7 form feeds are used as normal characters when using + str.splitlines. However in Python 3 somewhere there was a decision to split + also on form feeds. + """ + if keepends: + lst = string.splitlines(True) + + # We have to merge lines that were broken by form feed characters. + merge = [] + for i, line in enumerate(lst): + if line.endswith('\f'): + merge.append(i) + + for index in reversed(merge): + try: + lst[index] = lst[index] + lst[index + 1] + del lst[index + 1] + except IndexError: + # index + 1 can be empty and therefore there's no need to + # merge. + pass + + # The stdlib's implementation of the end is inconsistent when calling + # it with/without keepends. One time there's an empty string in the + # end, one time there's none. + if string.endswith('\n') or string == '': + lst.append('') + return lst + else: + return re.split('\n|\r\n', string) + + +def python_bytes_to_unicode(source, encoding='utf-8', errors='strict'): + """ + Checks for unicode BOMs and PEP 263 encoding declarations. Then returns a + unicode object like in :py:meth:`bytes.decode`. + + :param encoding: See :py:meth:`bytes.decode` documentation. + :param errors: See :py:meth:`bytes.decode` documentation. ``errors`` can be + ``'strict'``, ``'replace'`` or ``'ignore'``. + """ + def detect_encoding(): + """ + For the implementation of encoding definitions in Python, look at: + - http://www.python.org/dev/peps/pep-0263/ + - http://docs.python.org/2/reference/lexical_analysis.html#encoding-declarations + """ + byte_mark = literal_eval(r"b'\xef\xbb\xbf'") + if source.startswith(byte_mark): + # UTF-8 byte-order mark + return 'utf-8' + + first_two_lines = re.match(br'(?:[^\n]*\n){0,2}', source).group(0) + possible_encoding = re.search(br"coding[=:]\s*([-\w.]+)", + first_two_lines) + if possible_encoding: + return possible_encoding.group(1) + else: + # the default if nothing else has been set -> PEP 263 + return encoding + + if isinstance(source, unicode): + # only cast str/bytes + return source + + encoding = detect_encoding() + if not isinstance(encoding, unicode): + encoding = unicode(encoding, 'utf-8', 'replace') + + # Cast to unicode + return unicode(source, encoding, errors) + + +def version_info(): + """ + Returns a namedtuple of parso's version, similar to Python's + ``sys.version_info``. + """ + from parso import __version__ + tupl = re.findall(r'[a-z]+|\d+', __version__) + return Version(*[x if i == 3 else int(x) for i, x in enumerate(tupl)]) + + +def _parse_version(version): + match = re.match(r'(\d+)(?:\.(\d)(?:\.\d+)?)?$', version) + if match is None: + raise ValueError('The given version is not in the right format. ' + 'Use something like "3.2" or "3".') + + major = int(match.group(1)) + minor = match.group(2) + if minor is None: + # Use the latest Python in case it's not exactly defined, because the + # grammars are typically backwards compatible? + if major == 2: + minor = "7" + elif major == 3: + minor = "6" + else: + raise NotImplementedError("Sorry, no support yet for those fancy new/old versions.") + minor = int(minor) + return PythonVersionInfo(major, minor) + + +@total_ordering +class PythonVersionInfo(namedtuple('Version', 'major, minor')): + def __gt__(self, other): + if isinstance(other, tuple): + if len(other) != 2: + raise ValueError("Can only compare to tuples of length 2.") + return (self.major, self.minor) > other + super(PythonVersionInfo, self).__gt__(other) + + return (self.major, self.minor) + + def __eq__(self, other): + if isinstance(other, tuple): + if len(other) != 2: + raise ValueError("Can only compare to tuples of length 2.") + return (self.major, self.minor) == other + super(PythonVersionInfo, self).__eq__(other) + + def __ne__(self, other): + return not self.__eq__(other) + + +def parse_version_string(version=None): + """ + Checks for a valid version number (e.g. `3.2` or `2.7.1` or `3`) and + returns a corresponding version info that is always two characters long in + decimal. + """ + if version is None: + version = '%s.%s' % sys.version_info[:2] + if not isinstance(version, (unicode, str)): + raise TypeError("version must be a string like 3.2.") + + return _parse_version(version) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/EGG-INFO/DESCRIPTION.rst b/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/EGG-INFO/DESCRIPTION.rst new file mode 100644 index 0000000..a8bb0e6 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/EGG-INFO/DESCRIPTION.rst @@ -0,0 +1,125 @@ + +.. |travis| image:: https://travis-ci.org/proofit404/service-factory.png + :target: https://travis-ci.org/proofit404/service-factory + :alt: Build Status + +.. |coveralls| image:: https://coveralls.io/repos/proofit404/service-factory/badge.png + :target: https://coveralls.io/r/proofit404/service-factory + :alt: Coverage Status + +.. |requires| image:: https://requires.io/github/proofit404/service-factory/requirements.svg + :target: https://requires.io/github/proofit404/service-factory/requirements + :alt: Requirements Status + +.. |landscape| image:: https://landscape.io/github/proofit404/service-factory/master/landscape.svg + :target: https://landscape.io/github/proofit404/service-factory/master + :alt: Code Health + +=============== +service-factory +=============== + +|travis| |coveralls| |requires| |landscape| + +JSON RPC service factory for Python. + +Usage +----- + +Service factory in a nutshell: + +.. code:: python + + from service_factory import service_factory + + def add(one, two): + """Add two numbers.""" + return one + two + + def mul(one, two): + """Multiply two numbers.""" + return one * two + + app = [add, mul] + + if __name__ == '__main__': + service_factory(app, host='localhost', port=0) + +Run this as usual python file: + +.. code:: bash + + $ python calc.py + service factory starts at port 9001 + +See it works: + +.. code:: bash + + $ curl -X POST -d '{"jsonrpc": "2.0", "method": "add", "params": [1, 2], "id": 1}' -H 'Content-Type:application/json;' http://localhost:9001/ + +You can use any callable list from arbitrary module to run your +application: + +.. code:: bash + + $ python -m service_factory calc:app --host=localhost --port=auto + # or + $ service_factory calc:app --host=localhost --port=auto + +TODO +---- + +* process all errors codes +* batch processing +* notifications +* WSGI provider +* tornado provider +* aiohttp provider +* --port-file option +* console entry point +* make providers act as context managers +* ``user_error(code, message, data=None)`` +* WSGI authorization +* sphinx docs +* Django user permissions for rpc method +* Celery service implementation +* RQ service implementation + +.. :changelog: + +Changelog +--------- + +0.1.5 (2016-10-09) +++++++++++++++++++ + +- Zip unsafe for setuptools. + +0.1.4 (2016-09-02) +++++++++++++++++++ + +- Use 0 port value for automatic port detection. + +0.1.3 (2016-08-25) +++++++++++++++++++ + +- Remove ``six`` library from install requires. + +0.1.2 (2015-03-05) +++++++++++++++++++ + +- Remove allowed hosts parameters from ``service_factory`` function. + +0.1.1 (2015-03-05) +++++++++++++++++++ + +- Remove wildcard parameters from ``service_factory`` function. This + fix ``provider_cls`` resolution issue. + +0.1.0 (2015-03-04) +++++++++++++++++++ + +- Initial release. + + diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/EGG-INFO/PKG-INFO b/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/EGG-INFO/PKG-INFO new file mode 100644 index 0000000..4cd6c29 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/EGG-INFO/PKG-INFO @@ -0,0 +1,145 @@ +Metadata-Version: 2.0 +Name: service-factory +Version: 0.1.5 +Summary: JSON RPC service factory for Python. +Home-page: https://github.com/proofit404/service-factory +Author: Artem Malyshev +Author-email: proofit404@gmail.com +License: GPL3 +Platform: any +Classifier: Development Status :: 4 - Beta +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3) +Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 2.6 +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.3 +Classifier: Programming Language :: Python :: 3.4 +Classifier: Topic :: Software Development + + +.. |travis| image:: https://travis-ci.org/proofit404/service-factory.png + :target: https://travis-ci.org/proofit404/service-factory + :alt: Build Status + +.. |coveralls| image:: https://coveralls.io/repos/proofit404/service-factory/badge.png + :target: https://coveralls.io/r/proofit404/service-factory + :alt: Coverage Status + +.. |requires| image:: https://requires.io/github/proofit404/service-factory/requirements.svg + :target: https://requires.io/github/proofit404/service-factory/requirements + :alt: Requirements Status + +.. |landscape| image:: https://landscape.io/github/proofit404/service-factory/master/landscape.svg + :target: https://landscape.io/github/proofit404/service-factory/master + :alt: Code Health + +=============== +service-factory +=============== + +|travis| |coveralls| |requires| |landscape| + +JSON RPC service factory for Python. + +Usage +----- + +Service factory in a nutshell: + +.. code:: python + + from service_factory import service_factory + + def add(one, two): + """Add two numbers.""" + return one + two + + def mul(one, two): + """Multiply two numbers.""" + return one * two + + app = [add, mul] + + if __name__ == '__main__': + service_factory(app, host='localhost', port=0) + +Run this as usual python file: + +.. code:: bash + + $ python calc.py + service factory starts at port 9001 + +See it works: + +.. code:: bash + + $ curl -X POST -d '{"jsonrpc": "2.0", "method": "add", "params": [1, 2], "id": 1}' -H 'Content-Type:application/json;' http://localhost:9001/ + +You can use any callable list from arbitrary module to run your +application: + +.. code:: bash + + $ python -m service_factory calc:app --host=localhost --port=auto + # or + $ service_factory calc:app --host=localhost --port=auto + +TODO +---- + +* process all errors codes +* batch processing +* notifications +* WSGI provider +* tornado provider +* aiohttp provider +* --port-file option +* console entry point +* make providers act as context managers +* ``user_error(code, message, data=None)`` +* WSGI authorization +* sphinx docs +* Django user permissions for rpc method +* Celery service implementation +* RQ service implementation + +.. :changelog: + +Changelog +--------- + +0.1.5 (2016-10-09) +++++++++++++++++++ + +- Zip unsafe for setuptools. + +0.1.4 (2016-09-02) +++++++++++++++++++ + +- Use 0 port value for automatic port detection. + +0.1.3 (2016-08-25) +++++++++++++++++++ + +- Remove ``six`` library from install requires. + +0.1.2 (2015-03-05) +++++++++++++++++++ + +- Remove allowed hosts parameters from ``service_factory`` function. + +0.1.1 (2015-03-05) +++++++++++++++++++ + +- Remove wildcard parameters from ``service_factory`` function. This + fix ``provider_cls`` resolution issue. + +0.1.0 (2015-03-04) +++++++++++++++++++ + +- Initial release. + + diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/EGG-INFO/RECORD b/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/EGG-INFO/RECORD new file mode 100644 index 0000000..06ee6d1 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/EGG-INFO/RECORD @@ -0,0 +1,15 @@ +service_factory/__init__.py,sha256=qJHg780ZCxGptZpYrBIiw7wV5VSYASi-6uCkfJq2Szw,352 +service_factory/compat.py,sha256=EGD9CEJo1UQ5-HOKYgAmrB8cn3ktkZRxhDpn1o8Egq4,503 +service_factory/errors.py,sha256=3nAv684RdoH4iwe3RkxpLdx2b0cAHVbyJCVcBsDeSbA,1905 +service_factory/exceptions.py,sha256=gpm3N3k6E3nGYeqvHVsqYlu12e4DeYJRsILYB-eZcrE,423 +service_factory/factory.py,sha256=B0FZPGX9lV_9Szq-UKaY4bq5zBz0L6gjWixUzi0eM_E,956 +service_factory/service.py,sha256=jZnz5eoWHNDxM2L4BWKpxbhanb8ljYPyQtSNWTg4eXg,2901 +service_factory/validation.py,sha256=dLqpAM1SNuzpNX1mSzky11ZDHQIgCKVRgE69zd0dOg8,1299 +service_factory/providers/__init__.py,sha256=9bNT0AYhwP2ApaXpRPZxJNKc_vNcQnOahDyvwpdaxUM,92 +service_factory/providers/basehttp.py,sha256=UmKJH0iRgyDuvouHjNUClBVex6je1nGUgBoiSbjNe54,2328 +service_factory-0.1.5.dist-info/DESCRIPTION.rst,sha256=HyyAWuUfaJyIMdbCAzzZQ_CYBGtV0R8bVMSZIjHRE_E,2772 +service_factory-0.1.5.dist-info/METADATA,sha256=9pzo_d0UsghxFTEHPO8_mQ7FrxBkMuiJAPInRwDsHhc,3523 +service_factory-0.1.5.dist-info/RECORD,, +service_factory-0.1.5.dist-info/WHEEL,sha256=rNo05PbNqwnXiIHFsYm0m22u4Zm6YJtugFG2THx4w3g,92 +service_factory-0.1.5.dist-info/metadata.json,sha256=cOwbuzsNrbCBN93C5-BSGo0CfsZWAdyUUB7t3ZrCZqY,887 +service_factory-0.1.5.dist-info/top_level.txt,sha256=gt5UuhlXCDjkJP7XZDe5ulXUJOxZZI9iV4OB9uhJR-M,16 diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/EGG-INFO/WHEEL b/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/EGG-INFO/WHEEL new file mode 100644 index 0000000..bb7f7db --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/EGG-INFO/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.29.0) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/EGG-INFO/metadata.json b/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/EGG-INFO/metadata.json new file mode 100644 index 0000000..2f8e1dd --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/EGG-INFO/metadata.json @@ -0,0 +1 @@ +{"classifiers": ["Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Topic :: Software Development"], "extensions": {"python.details": {"contacts": [{"email": "proofit404@gmail.com", "name": "Artem Malyshev", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "https://github.com/proofit404/service-factory"}}}, "generator": "bdist_wheel (0.29.0)", "license": "GPL3", "metadata_version": "2.0", "name": "service-factory", "platform": "any", "summary": "JSON RPC service factory for Python.", "version": "0.1.5"} \ No newline at end of file diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/EGG-INFO/top_level.txt b/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/EGG-INFO/top_level.txt new file mode 100644 index 0000000..13d42f2 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/EGG-INFO/top_level.txt @@ -0,0 +1 @@ +service_factory diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/__init__.py b/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/__init__.py new file mode 100644 index 0000000..b540fd0 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/__init__.py @@ -0,0 +1,17 @@ +""" + service_factory + ~~~~~~~~~~~~~~~ + + JSON RPC service factory for Python. + + :copyright: (c) 2015-2016 by Artem Malyshev. + :license: GPL3, see LICENSE for more details. +""" + +from __future__ import ( + absolute_import, unicode_literals, division, print_function, +) + +from .factory import service_factory + +__all__ = ['service_factory'] diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/__pycache__/__init__.cpython-36.pyc b/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b2acedac3cc7c29ee0675d9bec1b97ffbc2ce2ab GIT binary patch literal 593 zcmZ8d&2AGh5cY01*>u%XxN-E6m58@()JlyI0#y|Pl@O7eFUGZ<#FBqjwl~sp;C*-k z-es?x`U;%zE=7Wj=8<{Qt<{N$u~Ho^Ey0>Dr3kEPLn6OX@$zySt4;i*b=ic>wp zBc0()kMTGGe8e*~(K*heKi(#I$|q}3=3jplFq#)`FPR`4%7S(6z%UOggc;CXeE(i@jQq}sM*rTEJ zLd6b@7Yq1qbvJ(*e-QBQ{mt!ieLGaw)(OZ(pi+5MJj8)PnRTc1-doiKL8Pv&3*FPk zNM^YpN(SMm^4*lnz4X$W?n&*W31rh47UKIMt`n3=cX}|s%Ok%mkGh-?ZW$q6L82%$ zP7vbyox4#FSr6j~UH-U+LD|cwQiOa5?zm6s;g_#=R*Nb$)KrMuu#rmmN@&V_g@z09 ziWyy|q>+ITRJYyqRV>sf@%kvX;3pBX J^m%ri{syTAt{MOU literal 0 HcmV?d00001 diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/__pycache__/compat.cpython-36.pyc b/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/__pycache__/compat.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..397bcf2b632297faf96e53a11909c1979f847aae GIT binary patch literal 683 zcmZuu&2G~`5MJA9ejHK>s1V0Ja3B&{w?wT(gb+W9Xr&TGq!QqZwee1DtG3tO-4rbc z-iO!VF?{936CiP7919gyjJ4m4W^lV6kB~h;cG|Lc z4F87F{wcaEGVXo(?o%`k>N<-d+VI#&WmznXikn^O>wnGP)t1(zvZO6LTW5J@Ed4Ci zC0BA=3e8&DES8m3S(2I=eH@SJ)5D|V3Bn0oTlz{FDCj$$Tb;r++v(179H!JTqi>hz z(1lW zYQM>?@S>o8;!BgUt6X%-Ls*Q5buWs9jH9Rtc%Eb6uTiPhR=71%4;H+Dxl&Tq9_H&| zYD~qN#{+dERu9jLN-EP5_y3O5w*E%csOj3k@2en{1q5cx%YX@KHdzijfP%+5U^~Y| zz)K#>Qt(M31q6reh&>B#?Q7Cxk0+I#vJ(bLa=RY18)B8M`_EBko5PC%4xsNLbX?za MoxZd0H2whnAM)?SY5)KL literal 0 HcmV?d00001 diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/__pycache__/errors.cpython-36.pyc b/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/__pycache__/errors.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..687f2e92c79839a78033ef2c9afca3ebd8020867 GIT binary patch literal 2006 zcmcJQO>Z1E7{_Nkv+ujfmbSprNE}#1X46Kg#0nu$h@hxlqJ~46%V;|GCPwoX+Z(YV z0Yvx!e1P5o@fG+K9OufZcTQZ&^NeS=lVz`18rx%g$B%#i|Kr^o47#_PzJJ!TtiP;U zA<+K_9`zI|X89Jg8Hw$L_#|zb zSqIu4>#`oSeb#3KXa{WT*cxqL{Mn^Y6qn~B;=wG8bS4)bmok&8oceBK>6UX}o(e^i zjLlx0P6^l6Hozs9_6@k< z3a&`c!&opX`PrPS%92YXLO@|+$WLyrFuv1^yb@+YSIQd`S3*5Sp|&4Zn>;a_j2zj4 zh$Wt{a9OBB80q0iAFBaWMyOv=D5r2G&t*+6QZA8OxERGU)ew5cc6FYhI?r1$sPL;+ z$8aR}(2;lG{RYW3gI-!-P=~o-P~doFgF%~M&?UoGY0z(13=^(TGe*-)L%PjVR(Z9` zW&^Q`ClG8xS3g`r7p%s!z7ledLINu-v6*HmuhA7>A>85PwcWwlE4rJxPQ@?l89<8e zt9>_;9hy@HaLS-Oh_6@sgk1aC?2znmA>0ZZ^BHu0W1HUWChN>qeKa0gnIb@i!#&R9M$&bctDC z^SLAM;sEBuMoIc6NONO+2CIzIdo`!O0i)B=R?!LqmPJ8ObOX4=^<45GkSLTym86Rm zCV}skmnOh)UGyQte7q2!T+wLRu=Ma>~W>+HPwpv4ibYbPrtM zT@bI7>z;T8PD~QIMJq8%09y{s3YOC%x@e@7yg{cllrBzj9U>fhWZ7{p1tRb0{)X>tD2EFps$61jv}Z~?e8_<Be^5V zFF=Dvas7y0JCj#lQdN}3`g&Mt#f^|OS6*6{yLuqhRyi2Fepp(iJzZ6rHz0VEV=u6T z4*C!biLwB|ha$)#5dzex9xgkc^F79!r*|ecoLANY4yCcJv{rh($3hm+<$zMn3Q1|5 zP})HS`-IZZ70drdjwls|Q~DFx2hc*Repl(n6f*S{(<`p`hb!8O0)Ac(`(vltC*0*+>g tRpl!S1KAK9HfmIJ*7lnC@g14=-eI23I%&=fUUeK^AH!E$Ck~(V{s8es%Wl&^6tx{EPE3*(x%Jx_@<47qf zoANXK18Y9QTUPxAR^0Ier4?eNxt_+!PKU#+I%h+fzH{L>*@4*lw zFo;R4*i5XzN?JiHu>(742W`_JEn>%=#0i{o+>X0RFX+LzL!FsL9Mb(}1}^EH8zcAX zr;DITDwZsw;S5KLi8!XgdRgRO0XDh+x3pGK{ zqY-+!yLT`KbBLxZ^iC+6pwBp7$pu|{CGsSOgi=W-=)>8`{tJMm=;YJU@#*<7nsEU^ zg$}7Oi>2q@f+ohuF1GMg@;FyCWJ$(_Dz@{KMV!zuW{L_N%c4uzl1awXVwee*s&JO4 zk%IZHsWHrA=i|l2*?FbNncz!CsDNdsUb=cxtJN?>IuQDz?RC`Fi9mCp>+unE`3#IQ z*2ax_-Co=4_S#%q>(-5Z-C1`o%^L%1V?s47{1j3+5)`YyG6Hdh0ba+X!mGv1u)qnz zSvJuIl){<-QXH`q{8Pm=1a4|k30fUma0w*<-c&$^s6I30c}h@LQ{8mdoF)~&|N054 zJ;Q`biRVzVdY}uHV5MVJ9wpSB0CmtXishsxiJ}-w+2pgqqC9vyvP2j33_Ps-o&gb{{{pNvWt77Zk*&Tgr zI$(@J*BqK+8%C$22Za-cghydmxFK9yl?xh%!h%hq{|>^|M&G*NQA1UFQ!MF1sZ8iA lDf-%I{YuP|@rK!gjiURydeCorFq1AA+j?yG&Ax4!e*kiNW9t9_ literal 0 HcmV?d00001 diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/__pycache__/service.cpython-36.pyc b/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/__pycache__/service.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..64ea1b3b4fe9fa66e82ea6efd68da0b7bade140e GIT binary patch literal 3387 zcmai1-HzMF73K^niQ-DT+N~XU(-vi$G>MWdcWpNYDi}swcj5lHTf=S=hd@AZIU_9{ z{>VdW5eZtOfP9@N=nM2cdeLX#ZLjvAj-#66^~BJ zf%{R^ckdkB{%jB8o_joXAF5KO?q9-WTAavJPwzWOpiWlEf&2LBle?c{Q|UhWy5NG(`(_Q`n-7x+NU3f!Y=w(M8=Bn_>&KBYI%LcGY@b z6JU1xcVQvjWzTcnrz$^=L57&j6UP;RZY8%B}D1xKV4Jye@0k5G!=K$OOum2AP4 zTS7;{-=P0{W5E_|ZUko5)AJnj2Xj3lOz2|G{=Pijjq6_(#?l%6edY{oXAgI5l5FsYNFC>5#2mJD~k%Wi(3$L-u)y8GQ|ULz5WQ)b>Jwtf-s9@Wf6jv zMW|IKz=w@iA(Nr{DfZL`*5Vy>35j~+T{_ijt!yGp2T|IlvpC(qV`SSpsxj{HD z*cnHQ&G~{c8spSDGtn~VCffYWLfe}2xrKH^uz6$1aVLDXcq$cwMe4pR@=T2*ef!r? zNsR{XpPv8qXz$t6NAA+i-Q!$LuQG`if|BRMDvS$R3|0A7FXWfiT(*@OM}Tzl*m}FI(RN-2ie_?ZpRZOgrSKbPHb@*}IlevTq&r z0R#7$QSt@k*GATSVa$QKU>f)I3B}QMA|SQhp~_RjF3v{(;|8A9@%0Mu{~zI_zNv^i zmGfnoOynU&VMQijoWN7>llV0W^22kQs$Zac52bJ*44VU)P1fPF?G;DYcXkP$9v15$ z_X3US`!zfO1A&1kTJmLW)-_=B0Gm~UmVoXVGtM|OW}9WRru0_;5aAI3zveHD3}p#p z0()YC%<&^~{usd}YX|N{3g^c!WmK-IIMCs6y^>t{Jm?+uTdE6t)Fz275@ct!`LICz zAx>*xEBnuKT0`8%^b+E#wcNF8=p=X*XctQlQ3~3efVTCo!){!l;>s&7VZEl}eY`l` zfundbf1r!lwMJvrH^2V#y{t{zfpwzT7IokoPcKB>(MXPhKkI3EVAp);?CD56EJV(-m zl_vOQ)@c+;2kr0KnU&c{ndbM#nFS0EfB`Yf2ea^@IJ;3IED{Ry#sW;!{4#}k)_C0j zzsOZBxN42b?n8oTA9G3{o1h+RyfBDMcQ& zN8*axQ7Q^h3NqLLJ~o9V-eEoF@>zFsig2zhjS2BmBT+TAXBUdxUi*QLv6=wBv-Dj=iED#MvyMbsf$Q|H?E5t!4`_Go OHx|ET_V_J+%la?40zl#b literal 0 HcmV?d00001 diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/__pycache__/validation.cpython-36.pyc b/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/__pycache__/validation.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a0b7952462fc1102b6bea3aa1753e984d2b34d91 GIT binary patch literal 1630 zcmai!-*4MC5XU7-{t?A-(yjy2Vi<@$&1o#94O(EqP_zhwp+n{s%diK%2#R=)xk#c$ z(gtj#dszF=^k32*_tbx3Pdidh?6e(9K*tkFQTP4ak%wDb!JT#-f6;QBf1I^O(0`7P zIz_{r*kLXsxm%E!6khBVe(V>mxaB&`V}9N)I&la67HhwC;x6m3F7_L2g9X?JY?Jk{ z-(*{7&Y-{eJD}JU$QjQd8K;>RavsjooU>GOQQGN0|F;Ep{?`dtv=D5X1LZ}PLjk3x zKc4+O8vgR?m`eC#3QE(}u3_`tQ6{RnG_<#kQxg5Q<~4! z1ZJWA(NT_3mI{vO53f!S_c3mur!S9BMrS8ItmKR#Iq@iF||+_FpJWqlx)MN+Abc-C2T8HG&fG0#CoP^6iPLfeHbO3O48B}<2xXNV5MN8xwT z2W2xfqfds_{4jhP!o|gh^U+!XRP%ag`3l!z-8B^3XdJKS`mXGwcMG+_ZBc)N4q~;i zwfn}vCKmSBnk->^2-{!megwM!JrOLd+l{kMxl9YVM%>I&E$BJcbU723z(&Y4z$z(~ zPRk5r2cwW1Xa=4Pu#5ZGoSU!ZrdePRH)adHdizFov*-a1E=Bi^=sWm+OSF#zR&LDll`yqI2$eQt<-Xcw-g_9kV~01p|yv{|CY$$I;)(0QsCxIMmc+k0V|VnBaXOjw?|Om zF20Wjy}FYmOk_z?2MJy<_dmhO40`5lU={(bxqs&53Vq=D*ylh literal 0 HcmV?d00001 diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/compat.py b/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/compat.py new file mode 100644 index 0000000..b65da4c --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/compat.py @@ -0,0 +1,23 @@ +""" + service_factory.compat + ~~~~~~~~~~~~~~~~~~~~~~ + + Python compatibility workarounds. + + :copyright: (c) 2015-2016 by Artem Malyshev. + :license: GPL3, see LICENSE for more details. +""" + +__all__ = ['string_types', 'BaseHTTPRequestHandler', 'HTTPServer'] + + +try: + string_types = basestring +except NameError: + string_types = str + + +try: + from http.server import BaseHTTPRequestHandler, HTTPServer +except ImportError: + from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/errors.py b/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/errors.py new file mode 100644 index 0000000..dc85071 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/errors.py @@ -0,0 +1,91 @@ +""" + service_factory.errors + ~~~~~~~~~~~~~~~~~~~~~~ + + This module implements different errors emitters. + + :copyright: (c) 2015-2016 by Artem Malyshev. + :license: GPL3, see LICENSE for more details. +""" + +from __future__ import ( + absolute_import, unicode_literals, division, print_function, +) +from json import dumps + +from .exceptions import ServiceException + + +def parse_error(): + """JSON-RPC parse error.""" + + response = { + 'jsonrpc': '2.0', + 'id': None, + 'error': { + 'code': -32700, + 'message': 'Parse error', + }, + } + raise ServiceException(400, dumps(response)) + + +def invalid_request(error): + """JSON-RPC invalid request error. + + :param error: request error + :type error: Exception + + """ + + response = { + 'jsonrpc': '2.0', + 'id': None, + 'error': { + 'code': -32600, + 'message': 'Invalid Request', + 'data': repr(error), + }, + } + raise ServiceException(400, dumps(response)) + + +def method_not_found(request_id): + """JSON-RPC method not found error. + + :param request_id: JSON-RPC request id + :type request_id: int or str or None + + """ + + response = { + 'jsonrpc': '2.0', + 'id': request_id, + 'error': { + 'code': -32601, + 'message': 'Method not found', + }, + } + raise ServiceException(400, dumps(response)) + + +def server_error(request_id, error): + """JSON-RPC server error. + + :param request_id: JSON-RPC request id + :type request_id: int or str or None + :param error: server error + :type error: Exception + + """ + + response = { + 'jsonrpc': '2.0', + 'id': request_id, + 'error': { + 'code': -32000, + 'message': 'Server error', + 'data': repr(error), + }, + } + raise ServiceException(500, dumps(response)) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/exceptions.py b/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/exceptions.py new file mode 100644 index 0000000..8cd3dbe --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/exceptions.py @@ -0,0 +1,19 @@ +""" + service_factory.exceptions + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + + This module contains exceptions raised by service factory. + + :copyright: (c) 2015-2016 by Artem Malyshev. + :license: GPL3, see LICENSE for more details. +""" + +from __future__ import ( + absolute_import, unicode_literals, division, print_function, +) + + +class ServiceException(Exception): + """Exception occurred in running service.""" + + pass diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/factory.py b/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/factory.py new file mode 100644 index 0000000..397406d --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/factory.py @@ -0,0 +1,34 @@ +""" + service_factory.factory + ~~~~~~~~~~~~~~~~~~~~~~~ + + This module define service factory. + + :copyright: (c) 2015-2016 by Artem Malyshev. + :license: GPL3, see LICENSE for more details. +""" + +from __future__ import ( + absolute_import, unicode_literals, division, print_function, +) + +from .providers.basehttp import HTTPServiceProvider +from .service import Service + + +def service_factory(app, host, port, + report_message='service factory port {port}', + provider_cls=HTTPServiceProvider): + """Create service, start server. + + :param app: application to instantiate a service + :param host: interface to bound provider + :param port: port to bound provider + :param report_message: message format to report port + :param provider_cls: server class provide a service + + """ + + service = Service(app) + server = provider_cls(service, host, port, report_message) + server.serve_forever() diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/providers/__init__.py b/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/providers/__init__.py new file mode 100644 index 0000000..56b7a20 --- /dev/null +++ b/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/providers/__init__.py @@ -0,0 +1,3 @@ +from __future__ import ( + absolute_import, unicode_literals, division, print_function, +) diff --git a/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/providers/__pycache__/__init__.cpython-36.pyc b/emacs/.emacs.d/anaconda-mode/0.1.9/service_factory-0.1.5-py3.6.egg/service_factory/providers/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..800e96b39cfa456116656d0569346a72c6aeb798 GIT binary patch literal 329 zcmZ9G$w~w<5Qfvs=rAxYcVD0nohXBXAmS5v@fL&-lk^zK(qw6vgAe2@}60wSneYN3dLh3ghj1x{HtH9Or&Cd?&tcNR8g zd0AfdfB0Yg1^wz1e}N~@=}B02!E#c4`f~bopX=ATva-@V>V@IS1|k2DH$Df(*P+Q5 zKo|)Lqs+=^ZiQBEhj#9SPVR;-#dSOLLeKQIum-)8)$>N!Fg!PF=B==mx5KuXd)Z3f z2|H$7%Z}vTuuI7;!s@K?g0Kc}?b+c`m^WDq<}Kca`6{#TlU{rFs_DZgx!6t<9u49| zm0~BDh;ln+T*zQ6mVBht#B6*1zhBerdoW6+pOTa- zbMJZvMii2-`?oglUbzUDa{um~8#g!Z-}DEi0F?wPq~bJ_LGvX~jZh^9qr~>dlT83s4dv^A1uLN&weeIPR>|TX-1DgCB$j-)`jLDcXx<_~EoQfak zbZqSr=*id~JIb8{2YA-p8hgxwkqw;MxIVY{=x^4pv+EX~YV3itACls_Lsau|Q~XKE zu1Cr2JnU^@B#)ClN{MRYzPUGEsU#ngUjZ%{?0xP%B8Byc%-wOv+~R`dk-39XFzPZ_ z9i6+NiDl-i<{UCUHa?E401yPC>uts75n)ss?LczM|i}+yrZ9of`}G zUBm9Z7uH5RMm*5=kSkqFB}<2?3SEJb)s6tJwxKYz$2gXb_AruM=-MKp0>F@nCXld! zE;mUfJX|~iM0>n2ax0P-3}PoIB^0u5nQ3*own1CnLjF=4_o=zxeJY?*do|I)^IHq! zBG?|*Mf@~kv5K{0s3%pdrV`edSGbibuaj4FQJ)$sqs?FLKR5>y=>s9uqHXwfX_Ky6 zP3Sw+qi0}*<2s$4dPj0C4%z6{bUliSIOkEMn^9C@BaGWo^kf=m6({UMI;%1%vj|*= za1$Ok%0-K!ivYy(Sc#*cj`$GCzSd@hs*4tolh9-xNZoR%W7S==dH_~z;9kdVp8z=k zD@_9`6u_kd6_?dm-GEC2(x;`5p`{DR+FZO8v(pHCK62i|`ry^+MHcvr2gXO7^?ygY zo49a4e%NE7nyR}9gE^g(h|DdZbPn|tS#t*{R+h8KY!`cz)pVohiBlk@olz;3b_|qv z1jl~qK<#X$1=C)&+H+097%A~7hzh(_tRdNVtVsumURtCoiq?TC+dzozLHzLtu|M+; zj|5AR*RX;>ix_JR#KcknDRV4bFmY@TEamLkrf{LGBYOeGXTJxPeRvpsc%0MiSiRw8 zcq-9s479j}WZw$R0xTb_!U%oPqm{J>EfWFk`vICke`24Yvy<;K2K{!x5G-9|2&Ruh zBLET63}_IgvCHTmfPH{w9^#;hlLhGmD16Vv#D_{0YC7@LVo>_3ggGmxD(KmV0W#R3hmcs4;WuSt7?-vcC%6U1g`du31lET z45n%-04W4kgTOi!m^K0n1S~9*$6SfeanevCPWV=wJT_1oo>pyZynNI*P@If - - + + -config - - - - - -
-

config

- +
+

Emacs Configs

+
-

1 Emacs Configuration

+

1 Packages

+
+

1.1 Installed packages:

+
+
    +
  • aggressive-indent +
  • +
  • anaconda-mode +
  • +
  • auctex +
  • +
  • dash +
  • +
  • eclim +
  • +
  • epl +
  • +
  • f +
  • +
  • flycheck +
  • +
  • forest-blue-theme +
  • +
  • google-this +
  • +
  • highlight-indentation +
  • +
  • ivy +
  • +
  • ox-twbs +
  • +
  • pkg-info +
  • +
  • popup +
  • +
  • pythonic +
  • +
  • rainbow-delimiters +
  • +
  • rainbow-mode +
  • +
  • s +
  • +
  • smartparens +
  • +
  • yasnippet +
  • +
+ + +

+Adding the melpa package repository to Emacs. +

(require 'package)
 (add-to-list 'package-archives 
-	     '("melpa" . "https://melpa.org/packages/")
-)
+    '("melpa" . "http://melpa.org/packages/"))
 
- -
-

1.1 Theme

-
+
+
+
+

2 Themes

+
+

+Using the Forest Blue-Theme +

-
;; Add themes inside "~/.emacs.d/themes/" to loaded themes
-(add-to-list 'custom-theme-load-path "~/.emacs.d/themes/")
-(load-theme 'zenburn t)
-
-
-
- -
-

1.1.1 zenburn-theme

-
-
- -

-
-
-
-
- -
-

1.2 Keybindings

-
-
-

1.2.1 Font size

-
-
- -

-
-
-
- -
-

1.2.2

-
-
- -

-
-
-
-
- -
-

1.3 Plugins

-
-
-

1.3.1 Smartparens

-
-
- -
(require 'smartparens-config)
+
(load-theme 'forest-blue t)
 
-
-

1.3.2 LaTeX/AuCeX

-
+
+

3 Functions

+
+
+

3.1 Cut/Copy and Paste by Boruch Baum

+
+
+

3.1.1 Copy

+
+
+ +
(defun copy-to-xclipboard(arg)
+  (interactive "P")
+  (cond
+   ((not (use-region-p))
+    (message "Nothing to yank to X-clipboard"))
+   ((and (not (display-graphic-p))
+	 (/= 0 (shell-command-on-region
+		(region-beginning) (region-end) "xsel -i -b")))
+    (error "Is program `xsel' installed?"))
+   (t
+    (when (display-graphic-p)
+      (call-interactively 'clipboard-kill-ring-save))
+    (message "Yanked region to X-clipboard")
+    (deactivate-mark))))
+
+
+
+
+ +
+

3.1.2 Cut

+
+
+ +
(defun cut-to-xclipboard(arg)
+  (interactive "P")
+  (cond
+   ((not (use-region-p))
+    (message "Nothing to yank to X-clipboard"))
+   ((and (not (display-graphic-p))
+	 (/= 0 (shell-command-on-region
+		(region-beginning) (region-end) "xsel -i -b")))
+    (error "Is program `xsel' installed?"))
+   (t
+    (when (display-graphic-p)
+    (call-interactively 'clipboard-kill-ring-save))
+    (message "Yanked region to X-clipboard")
+    (kill-region  (region-beginning) (region-end))
+    (deactivate-mark))))
+
+
+
+
+ +
+

3.1.3 Paste

+
+
+ +
(defun paste-from-xclipboard()
+  "Uses shell command `xsel -o' to paste from x-clipboard. With
+    one prefix arg, pastes from X-PRIMARY, and with two prefix args,
+    pastes from X-SECONDARY."
+  (interactive)
+  (if (display-graphic-p)
+      (clipboard-yank)
+    (let*
+	((opt (prefix-numeric-value current-prefix-arg))
+	 (opt (cond
+	       ((=  1 opt) "b")
+	       ((=  4 opt) "p")
+	       ((= 16 opt) "s"))))
+      (insert (shell-command-to-string (concat "xsel -o -" opt))))))
+
+
+
+
+
+ +
+

3.2 Personal functions

+
+

+Go back to indentation, if you are at the indentation, go to beginning of the line instead. +

+
+ +
(defun back-to-indentation-or-beginning () 
+"Go back to indentation, if at indentation go to beginning of line"
+(interactive)
+ (if (= (point) (progn (back-to-indentation) (point)))
+     (beginning-of-line)))
+
+
+
+
+
+

3.3 Personal mode to overwrite Emacs' default keybindings

+
+
+ +
(defvar my-keys-minor-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map (kbd "C-a") 'back-to-indentation-or-beginning)
+    (define-key map (kbd "C-c M-w") 'copy-to-xclipboard)
+    (define-key map (kbd "C-c C-w") 'cut-to-xclipboard)
+    (define-key map (kbd "C-c M-y") 'paste-from-xclipboard)
+    map)
+  "my-keys-minor-mode keymap.")
+
+(define-minor-mode my-keys-minor-mode
+  "A minor mode so that my key settings override annoying major modes."
+  :init-value t
+  :lighter " my-keys")
+
+
+
+
+
+
+

4 Mode customization

+
+
+

4.1 Global Modes

+
+
+ +
(global-hl-line-mode 1)
+(my-keys-minor-mode 1)
+(ivy-mode 1)
+(show-paren-mode +1)
+(menu-bar-mode -1)
+(yas-global-mode 1)
+
+
+
+
+ +
+

4.2 Python

+
+
+ +
(add-hook 'python-mode-hook 'anaconda-mode)
+(add-hook 'python-mode-hook 'anaconda-eldoc-mode)
+
+
+
+
+
+

4.3 LaTeX

+
(require 'tex)
 (setq TeX-auto-save t)
 (setq TeX-parse-self t)
-(setq TeX-close-quote "")
-(setq TeX-open-quote "")
-(setq-default TeX-Master nil)
+(setq-default TeX-master nil)
 
-
-
-

1.4 Mode-Hooks

-
+
+

4.4 Org

+
-
(add-hook 'org-mode-hook 'smartparens-strict-mode)
+
(require 'ox-twbs)
+
+
+ +

+Use Evince as default pdf viewer. +

+
+ +
(add-hook 'org-mode-hook
+      '(lambda ()
+	 (delete '("\\.pdf\\'" . default) org-file-apps)
+	 (add-to-list 'org-file-apps '("\\.pdf\\'" . "evince %s"))))
+
+
+ +

+Activate Syntax Highlighting in Org-mode. +

+
+ +
(add-hook 'org-mode-hook 
+      '(lambda () 
+	 (setq org-src-fontify-natively t)))
+
+
+ +

+Add rainbow-delimiteres in org-mode +(add-hook 'org-mode-hook 'rainbow-delimiters-mode) +

+
+
+
+

4.5 Ivy

+
+
+ +

+
+
+
+
+

4.6 Parenthesis

+
+
+ +
(require 'paren)
+(setq show-paren-style 'parenthesis)
+
+
+
+
+
+

4.7 Hightlight Line

+
+
+ +
(set-face-background 'hl-line "#333333")
+(set-face-foreground 'highlight nil)
+
+
+
+
+
+

4.8 Yasnippet

+
+
+ +
(require 'yasnippet)
+(setq yas-snippet-dirs
+  '("~/.emacs.d/snippets/"))
 
+
+
+

Date: <2018-01-11 Do>

+

Author: Tuan-Dat Tran

+

Created: 2018-01-13 Sa 14:55

+

Emacs 25.3.1 (Org-mode 8.2.10)

+
diff --git a/emacs/.emacs.d/config.org b/emacs/.emacs.d/config.org index 2c486da..adec229 100644 --- a/emacs/.emacs.d/config.org +++ b/emacs/.emacs.d/config.org @@ -1,57 +1,204 @@ -* Emacs Configuration +#+TITLE: Emacs configure +#+AUTHOR: Tuan-Dat Tran +#+DATE: <2018-01-11 Do> +#+EMAIL: tran.tuan-dat@mailbox.org +#+OPTIONS: ':nil *:t -:t ::t <:t H:3 \n:nil ^:t arch:headline +#+OPTIONS: author:t c:nil creator:comment d:(not "LOGBOOK") date:t +#+OPTIONS: e:t email:nil f:t inline:t num:t p:nil pri:nil stat:t +#+OPTIONS: tags:t tasks:t tex:t timestamp:t toc:t todo:t |:t +#+KEYWORDS: +#+LANGUAGE: en +#+SELECT_TAGS: export +* Packages +** Installed packages: +- aggressive-indent +- anaconda-mode +- auctex +- dash +- eclim +- epl +- f +- flycheck +- forest-blue-theme +- google-this +- highlight-indentation +- ivy +- ox-twbs +- pkg-info +- popup +- pythonic +- rainbow-delimiters +- rainbow-mode +- s +- smartparens +- yasnippet + +** Package Archives +Adding the melpa package repository to Emacs. #+BEGIN_SRC emacs-lisp (require 'package) (add-to-list 'package-archives - '("melpa" . "https://melpa.org/packages/") -) + '("melpa" . "http://melpa.org/packages/")) #+END_SRC - -** Theme +* Themes +Using the [[https://github.com/olkinn/forest-blue-emacs][Forest Blue]]-Theme. +I chose this theme, since it natively uses "unspecified-bg". #+BEGIN_SRC emacs-lisp -;; Add themes inside "~/.emacs.d/themes/" to loaded themes -(add-to-list 'custom-theme-load-path "~/.emacs.d/themes/") (load-theme 'forest-blue t) #+END_SRC -*** customize-theme +* Functions +** Cut/Copy and Paste by Boruch Baum +*** Copy +Copy the marked area to the clipboard. #+BEGIN_SRC emacs-lisp -(custom-set-faces - '(font-latex-bold-face ((t (:foreground "brightcyan")))) - '(font-latex-sedate-face ((t (:foreground "brightcyan")))) - '(font-lock-comment-face ((t (:foreground "color-142")))) - '(font-lock-doc-face ((t (:foreground "color-83")))) - '(font-lock-keyword-face ((t (:foreground "brightcyan" :weight bold)))) - '(font-lock-type-face ((t (:foreground "green")))) - '(highlight-indentation-face ((t (:background "green"))))) - +(defun copy-to-xclipboard(arg) + (interactive "P") + (cond + ((not (use-region-p)) + (message "Nothing to yank to X-clipboard")) + ((and (not (display-graphic-p)) + (/= 0 (shell-command-on-region + (region-beginning) (region-end) "xsel -i -b"))) + (error "Is program `xsel' installed?")) + (t + (when (display-graphic-p) + (call-interactively 'clipboard-kill-ring-save)) + (message "Yanked region to X-clipboard") + (deactivate-mark)))) #+END_SRC -** Own functions +*** Cut +Cut the marked area to the clipboard. #+BEGIN_SRC emacs-lisp - -#+END_SRC -** Keybindings - -** Plugins - -*** Smartparens -#+BEGIN_SRC emacs-lisp -(require 'smartparens-config) +(defun cut-to-xclipboard(arg) + (interactive "P") + (cond + ((not (use-region-p)) + (message "Nothing to yank to X-clipboard")) + ((and (not (display-graphic-p)) + (/= 0 (shell-command-on-region + (region-beginning) (region-end) "xsel -i -b"))) + (error "Is program `xsel' installed?")) + (t + (when (display-graphic-p) + (call-interactively 'clipboard-kill-ring-save)) + (message "Yanked region to X-clipboard") + (kill-region (region-beginning) (region-end)) + (deactivate-mark)))) #+END_SRC -*** LaTeX/AuCeX +*** Paste +Paste from the clipboard. +#+BEGIN_SRC emacs-lisp +(defun paste-from-xclipboard() + "Uses shell command `xsel -o' to paste from x-clipboard. With + one prefix arg, pastes from X-PRIMARY, and with two prefix args, + pastes from X-SECONDARY." + (interactive) + (if (display-graphic-p) + (clipboard-yank) + (let* + ((opt (prefix-numeric-value current-prefix-arg)) + (opt (cond + ((= 1 opt) "b") + ((= 4 opt) "p") + ((= 16 opt) "s")))) + (insert (shell-command-to-string (concat "xsel -o -" opt)))))) +#+END_SRC + +** Personal functions +Go back to indentation, if you are at the indentation, go to beginning of the line instead. +#+BEGIN_SRC emacs-lisp + (defun back-to-indentation-or-beginning () + "Go back to indentation, if at indentation go to beginning of line" + (interactive) + (if (= (point) (progn (back-to-indentation) (point))) + (beginning-of-line))) +#+END_SRC +* Mode customisation +** Window Modes +#+BEGIN_SRC emacs-lisp +(menu-bar-mode -1) +#+END_SRC + +** Python +#+BEGIN_SRC emacs-lisp +(add-hook 'python-mode-hook 'anaconda-mode) +(add-hook 'python-mode-hook 'anaconda-eldoc-mode) +#+END_SRC +** LaTeX #+BEGIN_SRC emacs-lisp (require 'tex) (setq TeX-auto-save t) (setq TeX-parse-self t) -(setq TeX-close-quote "") -(setq TeX-open-quote "") -(setq-default TeX-Master nil) +(setq-default TeX-master nil) #+END_SRC -** Mode-Hooks +** Org #+BEGIN_SRC emacs-lisp -(add-hook 'org-mode-hook 'smartparens-strict-mode) +(require 'ox-twbs) +#+END_SRC + +Use Evince as default pdf viewer. +#+BEGIN_SRC emacs-lisp +(add-hook 'org-mode-hook + '(lambda () + (delete '("\\.pdf\\'" . default) org-file-apps) + (add-to-list 'org-file-apps '("\\.pdf\\'" . "evince %s")))) +#+END_SRC + +Activate Syntax Highlighting in Org-mode. +#+BEGIN_SRC emacs-lisp +(add-hook 'org-mode-hook + '(lambda () + (setq org-src-fontify-natively t))) + +#+END_SRC + +Add rainbow-delimiters in org-mode +(add-hook 'org-mode-hook 'rainbow-delimiters-mode) +** Ivy +#+BEGIN_SRC emacs-lisp +(ivy-mode 1) +#+END_SRC +** Parenthesis +#+BEGIN_SRC emacs-lisp +(require 'paren) +(setq show-paren-style 'parenthesis) +(show-paren-mode +1) +#+END_SRC +** Highlight line +Globaly highlight the current line in a slightly darker shade of grey. +#+BEGIN_SRC emacs-lisp +(global-hl-line-mode 1) +(set-face-background 'hl-line "#333333") +(set-face-foreground 'highlight nil) +#+END_SRC +** Yasnippet +#+BEGIN_SRC emacs-lisp +(require 'yasnippet) +(setq yas-snippet-dirs + '("~/.emacs.d/snippets/")) +(yas-global-mode 1) +#+END_SRC + +** Personal mode +#+BEGIN_SRC emacs-lisp +(defvar my-keys-minor-mode-map + (let ((map (make-sparse-keymap))) + (define-key map (kbd "C-a") 'back-to-indentation-or-beginning) + (define-key map (kbd "C-c M-w") 'copy-to-xclipboard) + (define-key map (kbd "C-c C-w") 'cut-to-xclipboard) + (define-key map (kbd "C-c M-y") 'paste-from-xclipboard) + map) + "my-keys-minor-mode keymap.") + +(define-minor-mode my-keys-minor-mode + "A minor mode so that my key settings override annoying major modes." + :init-value t + :lighter " my-keys") + +(my-keys-minor-mode 1) #+END_SRC - diff --git a/emacs/.emacs.d/elpa/archives/gnu/archive-contents b/emacs/.emacs.d/elpa/archives/gnu/archive-contents deleted file mode 100644 index d78737f..0000000 --- a/emacs/.emacs.d/elpa/archives/gnu/archive-contents +++ /dev/null @@ -1,1212 +0,0 @@ -(1 - (ace-window . - [(0 9 0) - ((avy - (0 2 0))) - "Quickly switch windows." single - ((:url . "https://github.com/abo-abo/ace-window") - (:keywords "window" "location"))]) - (ack . - [(1 5) - nil "interface to ack-like tools" tar - ((:keywords "tools" "processes" "convenience") - (:url . "https://github.com/leoliu/ack-el"))]) - (ada-mode . - [(5 3 1) - ((wisi - (1 1 6)) - (cl-lib - (0 4)) - (emacs - (24 3))) - "major-mode for editing Ada sources" tar - ((:keywords "languages" "ada") - (:url . "http://www.nongnu.org/ada-mode/"))]) - (ada-ref-man . - [(2012 3) - nil "Ada Reference Manual 2012" tar - ((:keywords "languages" "ada") - (:url . "http://stephe-leake.org/ada/arm.html"))]) - (adaptive-wrap . - [(0 5 1) - nil "Smart line-wrapping with wrap-prefix" single - ((:url . "http://elpa.gnu.org/packages/adaptive-wrap.html") - (:keywords))]) - (adjust-parens . - [(3 0) - nil "Indent and dedent Lisp code, automatically adjust close parens" tar - ((:url . "http://elpa.gnu.org/packages/adjust-parens.html"))]) - (aggressive-indent . - [(1 8 3) - ((emacs - (24 1)) - (cl-lib - (0 5))) - "Minor mode to aggressively keep your code always indented" single - ((:url . "https://github.com/Malabarba/aggressive-indent-mode") - (:keywords "indent" "lisp" "maint" "tools"))]) - (ahungry-theme . - [(1 8 0) - ((emacs - (24))) - "Ahungry color theme for Emacs. Make sure to (load-theme 'ahungry)." tar - ((:keywords "ahungry" "palette" "color" "theme" "emacs" "color-theme" "deftheme") - (:url . "https://github.com/ahungry/color-theme-ahungry"))]) - (all . - [(1 0) - nil "Edit all lines matching a given regexp" single - ((:url . "http://elpa.gnu.org/packages/all.html") - (:keywords "matching"))]) - (ampc . - [(0 2) - nil "Asynchronous Music Player Controller" single - ((:url . "http://elpa.gnu.org/packages/ampc.html") - (:keywords "ampc" "mpc" "mpd"))]) - (arbitools . - [(0 93) - ((cl-lib - (0 5))) - "Package for chess tournaments administration" single - ((:url . "http://elpa.gnu.org/packages/arbitools.html") - (:keywords))]) - (ascii-art-to-unicode . - [(1 11) - nil "a small artist adjunct" single - ((:url . "http://www.gnuvola.org/software/aa2u/") - (:keywords "ascii" "unicode" "box-drawing"))]) - (async . - [(1 9 2) - nil "Asynchronous processing in Emacs" tar - ((:keywords "async") - (:url . "http://elpa.gnu.org/packages/async.html"))]) - (auctex . - [(12 1 0) - nil "Integrated environment for *TeX*" tar - ((:url . "http://www.gnu.org/software/auctex/"))]) - (aumix-mode . - [(7) - nil "run the aumix program in a buffer" single - ((:url . "http://user42.tuxfamily.org/aumix-mode/index.html") - (:keywords "multimedia" "mixer" "aumix"))]) - (auto-correct . - [(1 1 3) - nil "Remembers and automatically fixes past corrections" single - ((:url . "http://elpa.gnu.org/packages/auto-correct.html") - (:keywords "editing"))]) - (auto-overlays . - [(0 10 9) - nil "Automatic regexp-delimited overlays" tar - ((:keywords "extensions") - (:url . "http://www.dr-qubit.org/emacs.php"))]) - (avy . - [(0 4 0) - ((emacs - (24 1)) - (cl-lib - (0 5))) - "tree-based completion" tar - ((:keywords "point" "location") - (:url . "https://github.com/abo-abo/avy"))]) - (bbdb . - [(3 2) - ((emacs - (24))) - "core of BBDB" tar - ((:url . "http://elpa.gnu.org/packages/bbdb.html"))]) - (beacon . - [(1 3 3) - ((seq - (2 14))) - "Highlight the cursor whenever the window scrolls" single - ((:url . "https://github.com/Malabarba/beacon") - (:keywords "convenience"))]) - (bug-hunter . - [(1 3 1) - ((seq - (1 3)) - (cl-lib - (0 5))) - "Hunt down errors by bisecting elisp files" single - ((:url . "https://github.com/Malabarba/elisp-bug-hunter") - (:keywords "lisp"))]) - (caps-lock . - [(1 0) - nil "Caps-lock as a minor mode" single - ((:url . "http://elpa.gnu.org/packages/caps-lock.html") - (:keywords))]) - (captain . - [(1 0 3) - nil "CAPiTalization is Automatic IN emacs" single - ((:url . "http://elpa.gnu.org/packages/captain.html") - (:keywords "editing"))]) - (chess . - [(2 0 4) - ((cl-lib - (0 5))) - "Play chess in GNU Emacs" tar - ((:keywords "games") - (:url . "http://elpa.gnu.org/packages/chess.html"))]) - (cl-generic . - [(0 3) - nil "Forward cl-generic compatibility for Emacs<25" single - ((:url . "http://elpa.gnu.org/packages/cl-generic.html") - (:keywords))]) - (cl-lib . - [(0 6 1) - nil "Properly prefixed CL functions and macros" single - ((:url . "http://elpa.gnu.org/packages/cl-lib.html") - (:keywords))]) - (cl-print . - [(1 0) - ((emacs - (25))) - "CL-style generic printing" single - ((:url . "http://elpa.gnu.org/packages/cl-print.html") - (:keywords))]) - (cobol-mode . - [(1 0 0) - ((cl-lib - (0 5))) - "Mode for editing COBOL code" single - ((:url . "http://elpa.gnu.org/packages/cobol-mode.html") - (:keywords "languages"))]) - (coffee-mode . - [(0 4 1 1) - nil "Major mode for CoffeeScript files" single - ((:url . "http://github.com/defunkt/coffee-mode") - (:keywords "coffeescript" "major" "mode"))]) - (compact-docstrings . - [(0 1) - nil "Shrink blank lines in docstrings and doc comments" single - ((:url . "https://github.com/cpitclaudel/compact-docstrings") - (:keywords "convenience" "faces" "lisp" "maint" "c"))]) - (company . - [(0 9 4) - ((emacs - (24 3))) - "Modular text completion framework" tar - ((:keywords "abbrev" "convenience" "matching") - (:url . "http://company-mode.github.io/"))]) - (company-ebdb . - [(1) - ((company - (0 9 4)) - (ebdb - (0 2))) - "company-mode completion backend for EBDB in message-mode" single - ((:url . "http://elpa.gnu.org/packages/company-ebdb.html") - (:keywords))]) - (company-math . - [(1 1) - ((company - (0 8 0)) - (math-symbol-lists - (1 0))) - "Completion backends for unicode math symbols and latex tags" tar - ((:keywords "unicode" "symbols" "completion") - (:url . "https://github.com/vspinu/company-math"))]) - (company-statistics . - [(0 2 3) - ((emacs - (24 3)) - (company - (0 8 5))) - "Sort candidates using completion history" tar - ((:keywords "abbrev" "convenience" "matching") - (:url . "https://github.com/company-mode/company-statistics"))]) - (context-coloring . - [(8 1 0) - ((emacs - (24 3))) - "Highlight by scope" tar - ((:keywords "convenience" "faces" "tools") - (:url . "https://github.com/jacksonrayhamilton/context-coloring"))]) - (counsel-ebdb . - [(1) - ((ivy - (0 8 0)) - (ebdb - (0 2))) - "Counsel integration for EBDB" single - ((:url . "http://elpa.gnu.org/packages/counsel-ebdb.html") - (:keywords))]) - (crisp . - [(1 3 4) - nil "CRiSP/Brief Emacs emulator" single - ((:url . "http://elpa.gnu.org/packages/crisp.html") - (:keywords "emulations" "brief" "crisp"))]) - (csv-mode . - [(1 7) - nil "Major mode for editing comma/char separated values" single - ((:url . "http://elpa.gnu.org/packages/csv-mode.html") - (:keywords "convenience"))]) - (cycle-quotes . - [(0 1) - nil "Cycle between quote styles" tar - ((:keywords "convenience") - (:url . "http://elpa.gnu.org/packages/cycle-quotes.html"))]) - (darkroom . - [(0 1) - ((cl-lib - (0 5))) - "Remove visual distractions and focus on writing" single - ((:url . "http://elpa.gnu.org/packages/darkroom.html") - (:keywords "convenience" "emulations"))]) - (dash . - [(2 12 0) - nil "A modern list library for Emacs" tar - ((:keywords "lists") - (:url . "http://elpa.gnu.org/packages/dash.html"))]) - (dbus-codegen . - [(0 1) - ((cl-lib - (0 5))) - "Lisp code generation for D-Bus." single - ((:url . "http://elpa.gnu.org/packages/dbus-codegen.html") - (:keywords "comm" "dbus" "convenience"))]) - (debbugs . - [(0 14) - ((soap-client - (3 1 1)) - (cl-lib - (0 5))) - "SOAP library to access debbugs servers" tar - ((:keywords "comm" "hypermedia") - (:url . "http://elpa.gnu.org/packages/debbugs.html"))]) - (delight . - [(1 5) - nil "A dimmer switch for your lighter text." single - ((:url . "https://savannah.nongnu.org/projects/delight") - (:keywords "convenience"))]) - (dict-tree . - [(0 14) - ((trie - (0 3)) - (tNFA - (0 1 1)) - (heap - (0 3))) - "Dictionary data structure" single - ((:url . "http://www.dr-qubit.org/emacs.php") - (:keywords "extensions" "matching" "data structures trie" "tree" "dictionary" "completion" "regexp"))]) - (diff-hl . - [(1 8 4) - ((cl-lib - (0 2))) - "Highlight uncommitted changes using VC" tar - ((:keywords "vc" "diff") - (:url . "https://github.com/dgutov/diff-hl"))]) - (diffview . - [(1 0) - nil "View diffs in side-by-side format" single - ((:url . "https://github.com/mgalgs/diffview-mode") - (:keywords "convenience" "diff"))]) - (dired-du . - [(0 5) - ((emacs - (24 4)) - (cl-lib - (0 5))) - "Dired with recursive directory sizes" tar - ((:keywords "files" "unix" "convenience") - (:url . "http://elpa.gnu.org/packages/dired-du.html"))]) - (dismal . - [(1 5) - ((cl-lib - (0))) - "Dis Mode Ain't Lotus: Spreadsheet program Emacs" tar - ((:url . "http://elpa.gnu.org/packages/dismal.html"))]) - (djvu . - [(0 5) - nil "Edit and view Djvu files via djvused" single - ((:url . "http://elpa.gnu.org/packages/djvu.html") - (:keywords "files" "wp"))]) - (docbook . - [(0 1) - nil "Info-like viewer for DocBook" single - ((:url . "http://elpa.gnu.org/packages/docbook.html") - (:keywords "docs" "help"))]) - (dts-mode . - [(0 1 0) - nil "Major mode for Device Tree source files" single - ((:url . "http://elpa.gnu.org/packages/dts-mode.html") - (:keywords "languages"))]) - (easy-kill . - [(0 9 3) - ((emacs - (24)) - (cl-lib - (0 5))) - "kill & mark things easily" tar - ((:keywords "killing" "convenience") - (:url . "https://github.com/leoliu/easy-kill"))]) - (ebdb . - [(0 4 2) - ((emacs - (25 1)) - (cl-lib - (0 5)) - (seq - (2 15))) - "Contact management package" tar - ((:keywords "convenience" "mail") - (:url . "https://github.com/girzel/ebdb"))]) - (ebdb-gnorb . - [(1 0 2) - ((gnorb - (1 1 0)) - (ebdb - (0 2))) - "Utilities for connecting EBDB to Gnorb" single - ((:url . "http://elpa.gnu.org/packages/ebdb-gnorb.html") - (:keywords))]) - (ebdb-i18n-chn . - [(1 2) - ((pyim - (1 6 0)) - (ebdb - (0 2))) - "China-specific internationalization support for EBDB" single - ((:url . "http://elpa.gnu.org/packages/ebdb-i18n-chn.html") - (:keywords))]) - (ediprolog . - [(1 2) - nil "Emacs Does Interactive Prolog" single - ((:url . "http://elpa.gnu.org/packages/ediprolog.html") - (:keywords "languages" "processes"))]) - (el-search . - [(1 4 0 17) - ((emacs - (25)) - (stream - (2 2 4))) - "Expression based interactive search for Emacs Lisp" tar - ((:keywords "lisp") - (:url . "http://elpa.gnu.org/packages/el-search.html"))]) - (eldoc-eval . - [(0 1) - nil "Enable eldoc support when minibuffer is in use." single - ((:url . "http://elpa.gnu.org/packages/eldoc-eval.html") - (:keywords))]) - (electric-spacing . - [(5 0) - nil "Insert operators with surrounding spaces smartly" single - ((:url . "http://elpa.gnu.org/packages/electric-spacing.html") - (:keywords))]) - (enwc . - [(2 0) - ((emacs - (25 1))) - "The Emacs Network Client" tar - ((:keywords "external" "network" "wicd" "manager" "nm") - (:url . "http://elpa.gnu.org/packages/enwc.html"))]) - (epoch-view . - [(0 0 1) - nil "Minor mode to visualize epoch timestamps" single - ((:url . "http://elpa.gnu.org/packages/epoch-view.html") - (:keywords "data" "timestamp" "epoch" "unix"))]) - (ergoemacs-mode . - [(5 14 7 3) - ((emacs - (24 1)) - (undo-tree - (0 6 5))) - "Emacs mode based on common modern interface and ergonomics." tar - ((:keywords "convenience") - (:url . "https://github.com/ergoemacs/ergoemacs-mode"))]) - (excorporate . - [(0 7 6) - ((emacs - (24 1)) - (fsm - (0 2)) - (soap-client - (3 1 1)) - (url-http-ntlm - (2 0 3))) - "Exchange integration" tar - ((:keywords "calendar") - (:url . "http://elpa.gnu.org/packages/excorporate.html"))]) - (exwm . - [(0 16) - ((xelb - (0 12))) - "Emacs X Window Manager" tar - ((:keywords "unix") - (:url . "https://github.com/ch11ng/exwm"))]) - (f90-interface-browser . - [(1 1) - nil "Parse and browse f90 interfaces" single - ((:url . "http://github.com/wence-/f90-iface/") - (:keywords))]) - (flylisp . - [(0 2) - ((emacs - (24 1)) - (cl-lib - (0 4))) - "Color unbalanced parentheses and parentheses inconsistent with indentation" single - ((:url . "http://elpa.gnu.org/packages/flylisp.html") - (:keywords))]) - (fsm . - [(0 2 1) - ((emacs - (24 1)) - (cl-lib - (0 5))) - "state machine library" single - ((:url . "http://elpa.gnu.org/packages/fsm.html") - (:keywords "extensions"))]) - (ggtags . - [(0 8 12) - ((emacs - (24)) - (cl-lib - (0 5))) - "emacs frontend to GNU Global source code tagging system" single - ((:url . "https://github.com/leoliu/ggtags") - (:keywords "tools" "convenience"))]) - (gited . - [(0 3 3) - ((emacs - (24 4)) - (cl-lib - (0 5))) - "Operate on Git branches like dired" tar - ((:keywords "git" "vc" "convenience") - (:url . "http://elpa.gnu.org/packages/gited.html"))]) - (gle-mode . - [(1 1) - ((cl-lib - (0 5))) - "Major mode to edit Graphics Layout Engine files" single - ((:url . "http://elpa.gnu.org/packages/gle-mode.html") - (:keywords))]) - (gnome-c-style . - [(0 1) - nil "minor mode for editing GNOME-style C source code" tar - ((:keywords "gnome" "c" "coding style") - (:url . "http://elpa.gnu.org/packages/gnome-c-style.html"))]) - (gnorb . - [(1 4 2) - ((cl-lib - (0 5))) - "Glue code between Gnus, Org, and BBDB" tar - ((:keywords "mail" "org" "gnus" "bbdb" "todo" "task") - (:url . "http://elpa.gnu.org/packages/gnorb.html"))]) - (gnugo . - [(3 1 0) - ((ascii-art-to-unicode - (1 5)) - (xpm - (1 0 1)) - (cl-lib - (0 5))) - "play GNU Go in a buffer" tar - ((:keywords "games" "processes") - (:url . "http://www.gnuvola.org/software/gnugo/"))]) - (heap . - [(0 5) - nil "Heap (a.k.a. priority queue) data structure" single - ((:url . "http://www.dr-qubit.org/emacs.php") - (:keywords "extensions" "data structures" "heap" "priority queue"))]) - (helm-ebdb . - [(1) - ((helm - (1 0)) - (ebdb - (0 2))) - "Helm integration for EBDB" single - ((:url . "http://elpa.gnu.org/packages/helm-ebdb.html") - (:keywords "mail" "convenience"))]) - (highlight-escape-sequences . - [(0 3) - nil "Highlight escape sequences" single - ((:url . "https://github.com/dgutov/highlight-escape-sequences") - (:keywords "convenience"))]) - (hook-helpers . - [(1 1) - ((emacs - (25 1))) - "Anonymous, modifiable hook functions" tar - ((:keywords "development" "hooks") - (:url . "https://savannah.nongnu.org/projects/hook-helpers-el/"))]) - (html5-schema . - [(0 1) - nil "Add HTML5 schemas for use by nXML" tar - ((:keywords "html" "xml") - (:url . "https://github.com/validator/validator"))]) - (hydra . - [(0 14 0) - ((cl-lib - (0 5))) - "Make bindings that stick around." tar - ((:keywords "bindings") - (:url . "https://github.com/abo-abo/hydra"))]) - (hyperbole . - [(7 0 2) - ((emacs - (24 4))) - "GNU Hyperbole: The Everyday Hypertextual Information Manager" tar - ((:keywords "comm" "convenience" "files" "frames" "hypermedia" "languages" "mail" "matching" "mouse" "multimedia" "outlines" "tools" "wp") - (:url . "http://www.gnu.org/software/hyperbole"))]) - (ioccur . - [(2 4) - nil "Incremental occur" single - ((:url . "http://elpa.gnu.org/packages/ioccur.html") - (:keywords))]) - (iterators . - [(0 1) - ((emacs - (25))) - "Functions for working with iterators" single - ((:url . "http://elpa.gnu.org/packages/iterators.html") - (:keywords "extensions" "elisp"))]) - (ivy . - [(0 10 0) - ((emacs - (24 1))) - "Incremental Vertical completYon" tar - ((:keywords "matching") - (:url . "https://github.com/abo-abo/swiper"))]) - (javaimp . - [(0 6) - nil "Add and reorder Java import statements in Maven projects" tar - ((:keywords "java" "maven" "programming") - (:url . "http://elpa.gnu.org/packages/javaimp.html"))]) - (jgraph-mode . - [(1 1) - ((cl-lib - (0 5))) - "Major mode for Jgraph files" single - ((:url . "http://elpa.gnu.org/packages/jgraph-mode.html") - (:keywords "tex" "wp"))]) - (js2-mode . - [(20170721) - ((emacs - (24 1)) - (cl-lib - (0 5))) - "Improved JavaScript editing mode" tar - ((:keywords "languages" "javascript") - (:url . "https://github.com/mooz/js2-mode/"))]) - (json-mode . - [(0 1) - ((emacs - (25 1))) - "Major mode for editing JSON files" single - ((:url . "http://elpa.gnu.org/packages/json-mode.html") - (:keywords "data"))]) - (jumpc . - [(3 0) - nil "jump to previous insertion points" single - ((:url . "http://elpa.gnu.org/packages/jumpc.html") - (:keywords))]) - (kmb . - [(0 1) - ((emacs - (24 1))) - "Kill buffers matching a regexp w/o confirmation" single - ((:url . "http://elpa.gnu.org/packages/kmb.html") - (:keywords "lisp" "convenience"))]) - (landmark . - [(1 0) - nil "Neural-network robot that learns landmarks" single - ((:url . "http://elpa.gnu.org/packages/landmark.html") - (:keywords "games" "neural network" "adaptive search" "chemotaxis"))]) - (let-alist . - [(1 0 5) - ((emacs - (24 1))) - "Easily let-bind values of an assoc-list by their names" single - ((:url . "http://elpa.gnu.org/packages/let-alist.html") - (:keywords "extensions" "lisp"))]) - (lex . - [(1 1) - nil "Lexical analyser construction" tar - ((:url . "http://elpa.gnu.org/packages/lex.html"))]) - (lmc . - [(1 4) - ((emacs - (24)) - (cl-lib - (0 5))) - "Little Man Computer in Elisp" single - ((:url . "http://elpa.gnu.org/packages/lmc.html") - (:keywords))]) - (load-dir . - [(0 0 5) - ((cl-lib - (0 5))) - "Load all Emacs Lisp files in a given directory" single - ((:url . "http://elpa.gnu.org/packages/load-dir.html") - (:keywords "lisp" "files" "convenience"))]) - (load-relative . - [(1 3) - nil "relative file load (within a multi-file Emacs package)" single - ((:url . "http://github.com/rocky/emacs-load-relative") - (:keywords "internal"))]) - (loc-changes . - [(1 2) - nil "keep track of positions even after buffer changes" single - ((:url . "http://github.com/rocky/emacs-loc-changes") - (:keywords))]) - (loccur . - [(1 2 3) - ((cl-lib - (0))) - "Perform an occur-like folding in current buffer" single - ((:url . "https://github.com/fourier/loccur") - (:keywords "matching"))]) - (markchars . - [(0 2 0) - nil "Mark chars fitting certain characteristics" single - ((:url . "http://elpa.gnu.org/packages/markchars.html") - (:keywords))]) - (math-symbol-lists . - [(1 1) - nil "Lists of Unicode math symbols and latex commands" tar - ((:keywords "unicode" "symbols" "mathematics") - (:url . "https://github.com/vspinu/math-symbol-lists"))]) - (memory-usage . - [(0 2) - nil "Analyze the memory usage of Emacs in various ways" single - ((:url . "http://elpa.gnu.org/packages/memory-usage.html") - (:keywords "maint"))]) - (metar . - [(0 3) - ((cl-lib - (0 5))) - "Retrieve and decode METAR weather information" single - ((:url . "http://elpa.gnu.org/packages/metar.html") - (:keywords "comm"))]) - (midi-kbd . - [(0 2) - ((emacs - (25))) - "Create keyboard events from Midi input" single - ((:url . "http://elpa.gnu.org/packages/midi-kbd.html") - (:keywords "convenience" "hardware" "multimedia"))]) - (mines . - [(1 2) - ((emacs - (24 4)) - (cl-lib - (0 5))) - "Minesweeper game" tar - ((:keywords "games") - (:url . "https://github.com/calancha/Minesweeper"))]) - (minibuffer-line . - [(0 1) - nil "Display status info in the minibuffer window" single - ((:url . "http://elpa.gnu.org/packages/minibuffer-line.html") - (:keywords))]) - (minimap . - [(1 2) - nil "Sidebar showing a \"mini-map\" of a buffer" single - ((:url . "http://elpa.gnu.org/packages/minimap.html") - (:keywords))]) - (multishell . - [(1 1 5) - nil "Easily use multiple shell buffers, local and remote." tar - ((:keywords "processes") - (:url . "https://github.com/kenmanheimer/EmacsMultishell"))]) - (muse . - [(3 20) - nil "Authoring and publishing tool for Emacs" tar - ((:keywords "hypermedia") - (:url . "http://mwolson.org/projects/EmacsMuse.html"))]) - (myers . - [(0 1) - ((emacs - (25))) - "Random-access singly-linked lists" single - ((:url . "http://elpa.gnu.org/packages/myers.html") - (:keywords "list" "containers"))]) - (nameless . - [(1 0 2) - ((emacs - (24 4))) - "Hide package namespace in your emacs-lisp code" single - ((:url . "https://github.com/Malabarba/nameless") - (:keywords "convenience" "lisp"))]) - (names . - [(20151201 0) - ((emacs - (24 1)) - (cl-lib - (0 5))) - "Namespaces for emacs-lisp. Avoid name clobbering without hiding symbols." tar - ((:keywords "extensions" "lisp") - (:url . "https://github.com/Malabarba/names"))]) - (nhexl-mode . - [(0 2) - ((emacs - (24)) - (cl-lib - (0 5))) - "Minor mode to edit files via hex-dump format" single - ((:url . "http://elpa.gnu.org/packages/nhexl-mode.html") - (:keywords "data"))]) - (nlinum . - [(1 8 1) - nil "Show line numbers in the margin" single - ((:url . "http://elpa.gnu.org/packages/nlinum.html") - (:keywords "convenience"))]) - (notes-mode . - [(1 30) - nil "Indexing system for on-line note-taking" tar - ((:url . "http://elpa.gnu.org/packages/notes-mode.html"))]) - (ntlm . - [(2 1 0) - nil "NTLM (NT LanManager) authentication support" single - ((:url . "http://elpa.gnu.org/packages/ntlm.html") - (:keywords "ntlm" "sasl" "comm"))]) - (num3-mode . - [(1 2) - nil "highlight groups of digits in long numbers" single - ((:url . "http://elpa.gnu.org/packages/num3-mode.html") - (:keywords "faces" "minor-mode"))]) - (oauth2 . - [(0 11) - nil "OAuth 2.0 Authorization Protocol" single - ((:url . "http://elpa.gnu.org/packages/oauth2.html") - (:keywords "comm"))]) - (omn-mode . - [(1 2) - nil "Support for OWL Manchester Notation" single - ((:url . "http://elpa.gnu.org/packages/omn-mode.html") - (:keywords))]) - (on-screen . - [(1 3 2) - ((cl-lib - (0))) - "guide your eyes while scrolling" single - ((:url . "https://github.com/michael-heerdegen/on-screen.el") - (:keywords "convenience"))]) - (org-edna . - [(1 0 -2 4) - ((emacs - (25 1)) - (seq - (2 19)) - (org - (9 0 5))) - "Extensible Dependencies 'N' Actions" tar - ((:keywords "convenience" "text" "org") - (:url . "https://savannah.nongnu.org/projects/org-edna-el/"))]) - (osc . - [(0 1) - nil "Open Sound Control protocol library" single - ((:url . "http://elpa.gnu.org/packages/osc.html") - (:keywords "comm" "processes" "multimedia"))]) - (other-frame-window . - [(1 0 4) - ((emacs - (24 4))) - "Minor mode to enable global prefix keys for other frame/window buffer placement" single - ((:url . "http://elpa.gnu.org/packages/other-frame-window.html") - (:keywords "frame" "window"))]) - (pabbrev . - [(4 2 1) - nil "Predictive abbreviation expansion" single - ((:url . "http://elpa.gnu.org/packages/pabbrev.html") - (:keywords))]) - (paced . - [(1 0) - ((emacs - (25 1)) - (async - (1 9 1))) - "Predictive Abbreviation Completion and Expansion using Dictionaries" tar - ((:keywords "convenience" "completion") - (:url . "https://savannah.nongnu.org/projects/paced-el/"))]) - (parsec . - [(0 1 3) - ((emacs - (24)) - (cl-lib - (0 5))) - "Parser combinator library" tar - ((:keywords "extensions") - (:url . "https://github.com/cute-jumper/parsec.el"))]) - (pinentry . - [(0 1) - nil "GnuPG Pinentry server implementation" single - ((:url . "http://elpa.gnu.org/packages/pinentry.html") - (:keywords "gnupg"))]) - (poker . - [(0 2) - nil "Texas hold 'em poker" single - ((:url . "http://elpa.gnu.org/packages/poker.html") - (:keywords "games"))]) - (psgml . - [(1 3 4) - nil "SGML-editing mode with parsing support" tar - ((:keywords "languages") - (:url . "http://elpa.gnu.org/packages/psgml.html"))]) - (python . - [(0 25 2) - ((emacs - (24 1)) - (cl-lib - (1 0))) - "Python's flying circus support for Emacs" single - ((:url . "https://github.com/fgallina/python.el") - (:keywords "languages"))]) - (quarter-plane . - [(0 1) - nil "Minor mode for quarter-plane style editing" single - ((:url . "http://elpa.gnu.org/packages/quarter-plane.html") - (:keywords "convenience" "wp"))]) - (queue . - [(0 2) - nil "Queue data structure" single - ((:url . "http://www.dr-qubit.org/emacs.php") - (:keywords "extensions" "data structures" "queue"))]) - (rainbow-mode . - [(0 13) - nil "Colorize color names in buffers" single - ((:url . "http://elpa.gnu.org/packages/rainbow-mode.html") - (:keywords "faces"))]) - (rcirc-color . - [(0 3) - nil "color nicks" single - ((:url . "http://elpa.gnu.org/packages/rcirc-color.html") - (:keywords "comm"))]) - (rcirc-menu . - [(1 1) - nil "A menu of all your rcirc connections" single - ((:url . "http://elpa.gnu.org/packages/rcirc-menu.html") - (:keywords "comm"))]) - (realgud . - [(1 4 4) - ((load-relative - (1 2)) - (loc-changes - (1 2)) - (test-simple - (1 2 0)) - (cl-lib - (0 5)) - (emacs - (24))) - "A modular front-end for interacting with external debuggers" tar - ((:keywords "gdb" "python" "perl" "go" "bash" "nodejs" "zsh" "bashdb" "zshdb" "remake" "make" "trepan" "perldb") - (:url . "http://github.com/realgud/realgud/"))]) - (register-list . - [(0 1) - nil "Interactively list/edit registers" single - ((:url . "http://elpa.gnu.org/packages/register-list.html") - (:keywords "register"))]) - (rich-minority . - [(1 0 1) - ((cl-lib - (0 5))) - "Clean-up and Beautify the list of minor-modes." single - ((:url . "https://github.com/Malabarba/rich-minority") - (:keywords "mode-line" "faces"))]) - (rnc-mode . - [(0 2) - nil "Emacs mode to edit Relax-NG Compact files" single - ((:url . "http://elpa.gnu.org/packages/rnc-mode.html") - (:keywords "xml" "relaxng"))]) - (rudel . - [(0 3 1) - ((emacs - (24)) - (cl-lib - (0 5)) - (cl-generic - (0 3))) - "A collaborative editing framework for Emacs" tar - ((:keywords "rudel" "collaboration") - (:url . "http://rudel.sourceforge.net/"))]) - (scroll-restore . - [(1 0) - nil "restore original position after scrolling" single - ((:url . "http://elpa.gnu.org/packages/scroll-restore.html") - (:keywords "scrolling"))]) - (sed-mode . - [(1 0) - nil "Major mode to edit sed scripts" single - ((:url . "http://elpa.gnu.org/packages/sed-mode.html") - (:keywords))]) - (seq . - [(2 20) - nil "Sequence manipulation functions" tar - ((:keywords "sequences") - (:url . "http://elpa.gnu.org/packages/seq.html"))]) - (shen-mode . - [(0 1) - nil "A major mode for editing shen source code" tar - ((:keywords "languages" "shen") - (:url . "http://elpa.gnu.org/packages/shen-mode.html"))]) - (sisu-mode . - [(7 1 8) - nil "Major mode for SiSU markup text" single - ((:url . "http://www.sisudoc.org/") - (:keywords "text" "syntax" "processes" "tools"))]) - (smart-yank . - [(0 1 1) - ((emacs - (24))) - "A different approach of yank pointer handling" single - ((:url . "http://elpa.gnu.org/packages/smart-yank.html") - (:keywords "convenience"))]) - (sml-mode . - [(6 8) - ((emacs - (24)) - (cl-lib - (0 5))) - "Major mode for editing (Standard) ML" single - ((:url . "http://elpa.gnu.org/packages/sml-mode.html") - (:keywords "sml"))]) - (soap-client . - [(3 1 3) - ((cl-lib - (0 6 1))) - "Access SOAP web services" tar - ((:keywords "soap" "web-services" "comm" "hypermedia") - (:url . "http://elpa.gnu.org/packages/soap-client.html"))]) - (sokoban . - [(1 4 6) - ((emacs - (23 1))) - "Implementation of Sokoban for Emacs." tar - ((:keywords "games") - (:url . "http://elpa.gnu.org/packages/sokoban.html"))]) - (sotlisp . - [(1 6 2) - ((emacs - (24 1))) - "Write lisp at the speed of thought." single - ((:url . "https://github.com/Malabarba/speed-of-thought-lisp") - (:keywords "convenience" "lisp"))]) - (spinner . - [(1 7 3) - nil "Add spinners and progress-bars to the mode-line for ongoing operations" single - ((:url . "https://github.com/Malabarba/spinner.el") - (:keywords "processes" "mode-line"))]) - (sql-indent . - [(1 0) - nil "Support for indenting code in SQL files." tar - ((:keywords "languages" "sql") - (:url . "http://elpa.gnu.org/packages/sql-indent.html"))]) - (stream . - [(2 2 4) - ((emacs - (25))) - "Implementation of streams" tar - ((:keywords "stream" "laziness" "sequences") - (:url . "http://elpa.gnu.org/packages/stream.html"))]) - (svg . - [(0 1) - ((emacs - (25))) - "svg image creation functions" single - ((:url . "http://elpa.gnu.org/packages/svg.html") - (:keywords "image"))]) - (svg-clock . - [(1 0) - ((svg - (0 1)) - (emacs - (25 0))) - "Analog clock using Scalable Vector Graphics" single - ((:url . "http://elpa.gnu.org/packages/svg-clock.html") - (:keywords "demo" "svg" "clock"))]) - (tNFA . - [(0 1 1) - ((queue - (0 1))) - "Tagged non-deterministic finite-state automata" single - ((:url . "http://www.dr-qubit.org/emacs.php") - (:keywords "extensions" "matching" "data structures tnfa" "nfa" "dfa" "finite state automata" "automata" "regexp"))]) - (temp-buffer-browse . - [(1 5) - ((emacs - (24))) - "temp buffer browse mode" single - ((:url . "http://elpa.gnu.org/packages/temp-buffer-browse.html") - (:keywords "convenience"))]) - (test-simple . - [(1 3 0) - ((cl-lib - (0))) - "Simple Unit Test Framework for Emacs Lisp" single - ((:url . "http://github.com/rocky/emacs-test-simple") - (:keywords "unit-test"))]) - (timerfunctions . - [(1 4 2) - ((cl-lib - (0 5))) - "Enhanced versions of some timer.el functions" single - ((:url . "http://elpa.gnu.org/packages/timerfunctions.html") - (:keywords))]) - (tiny . - [(0 2 1) - nil "Quickly generate linear ranges in Emacs" tar - ((:keywords "convenience") - (:url . "https://github.com/abo-abo/tiny"))]) - (tramp-theme . - [(0 2) - ((emacs - (24 1))) - "Custom theme for remote buffers" single - ((:url . "http://elpa.gnu.org/packages/tramp-theme.html") - (:keywords "convenience" "faces"))]) - (transcribe . - [(1 5 2) - nil "Package for audio transcriptions" single - ((:url . "http://elpa.gnu.org/packages/transcribe.html") - (:keywords))]) - (trie . - [(0 4) - ((tNFA - (0 1 1)) - (heap - (0 3))) - "Trie data structure" single - ((:url . "http://www.dr-qubit.org/emacs.php") - (:keywords "extensions" "matching" "data structures trie" "ternary search tree" "tree" "completion" "regexp"))]) - (undo-tree . - [(0 6 5) - nil "Treat undo history as a tree" single - ((:url . "http://www.dr-qubit.org/emacs.php") - (:keywords "convenience" "files" "undo" "redo" "history" "tree"))]) - (uni-confusables . - [(0 1) - nil "Unicode confusables table" tar - ((:url . "http://elpa.gnu.org/packages/uni-confusables.html"))]) - (url-http-ntlm . - [(2 0 4) - ((cl-lib - (0 5)) - (ntlm - (2 1 0))) - "NTLM authentication for the url library" single - ((:url . "http://elpa.gnu.org/packages/url-http-ntlm.html") - (:keywords "comm" "data" "processes" "hypermedia"))]) - (validate . - [(1 0 4) - ((emacs - (24 1)) - (cl-lib - (0 5)) - (seq - (2 16))) - "Schema validation for Emacs-lisp" single - ((:url . "http://elpa.gnu.org/packages/validate.html") - (:keywords "lisp"))]) - (vdiff . - [(0 2 3) - ((emacs - (24 4)) - (hydra - (0 13 0))) - "A diff tool similar to vimdiff" single - ((:url . "https://github.com/justbur/emacs-vdiff") - (:keywords "diff"))]) - (vigenere . - [(1 0) - ((emacs - (25 1))) - "Run a vigenere cipher on a block of text ;" single - ((:url . "https://elpa.gnu.org/packages/vigenere.html") - (:keywords "data" "vigenere" "cipher"))]) - (vlf . - [(1 7 1) - nil "View Large Files" tar - ((:keywords "large files" "utilities") - (:url . "https://github.com/m00natic/vlfi"))]) - (w3 . - [(4 0 49) - nil "Fully customizable, largely undocumented web browser for Emacs" tar - ((:keywords "faces" "help" "comm" "news" "mail" "processes" "mouse" "hypermedia") - (:url . "http://elpa.gnu.org/packages/w3.html"))]) - (wcheck-mode . - [(2016 1 30) - nil "General interface for text checkers" single - ((:url . "https://github.com/tlikonen/wcheck-mode") - (:keywords "text" "spell" "check" "languages" "ispell"))]) - (wconf . - [(0 2 1) - ((emacs - (24 4))) - "Minimal window layout manager" single - ((:url . "https://github.com/ilohmar/wconf") - (:keywords "windows" "frames" "layout"))]) - (web-server . - [(0 1 1) - ((emacs - (24 3))) - "Emacs Web Server" tar - ((:keywords "http" "server" "network") - (:url . "https://github.com/eschulte/emacs-web-server"))]) - (websocket . - [(1 8) - ((cl-lib - (0 5))) - "Emacs WebSocket client and server" tar - ((:keywords "communication" "websocket" "server") - (:url . "http://elpa.gnu.org/packages/websocket.html"))]) - (which-key . - [(3 1 0) - ((emacs - (24 4))) - "Display available keybindings in popup" tar - ((:url . "https://github.com/justbur/emacs-which-key"))]) - (windresize . - [(0 1) - nil "Resize windows interactively" single - ((:url . "http://elpa.gnu.org/packages/windresize.html") - (:keywords "window"))]) - (wisi . - [(1 1 6) - ((cl-lib - (0 4)) - (emacs - (24 3))) - "Utilities for implementing an indentation/navigation engine using a generalized LALR parser" tar - ((:keywords "parser" "indentation" "navigation") - (:url . "http://www.nongnu.org/ada-mode/wisi/wisi.html"))]) - (wpuzzle . - [(1 1) - nil "find as many word in a given time" single - ((:url . "http://elpa.gnu.org/packages/wpuzzle.html") - (:keywords))]) - (xclip . - [(1 4) - nil "use xclip to copy&paste" single - ((:url . "http://elpa.gnu.org/packages/xclip.html") - (:keywords "convenience" "tools"))]) - (xelb . - [(0 12) - ((emacs - (24 4)) - (cl-generic - (0 2))) - "X protocol Emacs Lisp Binding" tar - ((:keywords "unix") - (:url . "https://github.com/ch11ng/xelb"))]) - (xpm . - [(1 0 4) - nil "edit XPM images" tar - ((:keywords "multimedia" "xpm") - (:url . "http://www.gnuvola.org/software/xpm/"))]) - (yasnippet . - [(0 12 2) - ((cl-lib - (0 5))) - "Yet another snippet extension for Emacs." tar - ((:keywords "convenience" "emulation") - (:url . "http://github.com/joaotavora/yasnippet"))]) - (ztree . - [(1 0 5) - ((cl-lib - (0))) - "Text mode directory tree" tar - ((:keywords "files" "tools") - (:url . "https://github.com/fourier/ztree"))])) diff --git a/emacs/.emacs.d/elpa/archives/gnu/archive-contents.signed b/emacs/.emacs.d/elpa/archives/gnu/archive-contents.signed deleted file mode 100644 index 672eca6..0000000 --- a/emacs/.emacs.d/elpa/archives/gnu/archive-contents.signed +++ /dev/null @@ -1 +0,0 @@ -Good signature from 474F05837FBDEF9B GNU ELPA Signing Agent (trust undefined) created at 2018-01-09T23:10:03+0100 using DSA \ No newline at end of file diff --git a/emacs/.emacs.d/elpa/archives/melpa/archive-contents b/emacs/.emacs.d/elpa/archives/melpa/archive-contents deleted file mode 100644 index 337ce9e..0000000 --- a/emacs/.emacs.d/elpa/archives/melpa/archive-contents +++ /dev/null @@ -1,2 +0,0 @@ - -(1 (zzz-to-char . [(20171231 2219) ((emacs (24 4)) (cl-lib (0 5)) (avy (0 3 0))) "Fancy version of `zap-to-char' command" single ((:commit . "8ddda49de3356d8fa0308d79b5d68272baf2c57b") (:url . "https://github.com/mrkkrp/zzz-to-char") (:keywords "convenience"))]) (zygospore . [(20140703 152) nil "reversible C-x 1 (delete-other-windows)" single ((:commit . "1af5ee663f5a7aa08d96a77cacff834dcdf55ea8") (:url . "https://github.com/louiskottmann/zygospore.el"))]) (zweilight-theme . [(20170112 2205) nil "A dark color theme for Emacs." single ((:commit . "7f45ab9e23164d65538edb2beb9692ecdc24c31e") (:url . "http://github.com/philiparvidsson/zweilight-emacs"))]) (ztree . [(20170223 1014) ((cl-lib (0))) "Text mode directory tree" tar ((:commit . "febc2d02373312ce69f56c9dbe54cabea3e0813c") (:url . "https://github.com/fourier/ztree") (:keywords "files" "tools"))]) (zpresent . [(20171008 2152) ((emacs (25 1)) (org-parser (0 4)) (dash (2 12 0)) (request (0 3 0))) "Simple presentation mode based on org files." single ((:url . "https://bitbucket.org/zck/zpresent.el") (:keywords "comm"))]) (zoutline . [(20170722 651) nil "Simple outline library." single ((:commit . "e86e739b53a1c8a0a2cf6de43dffabb15d465507") (:url . "https://github.com/abo-abo/zoutline") (:keywords "outline"))]) (zotxt . [(20170109 2040) ((request-deferred (0 2 0))) "Tools to integrate emacs with Zotero via the zotxt plugin." tar ((:commit . "1a010ea5db617269adc132e4cc028a44d9b629bd"))]) (zotelo . [(20160602 249) ((cl-lib (0 5))) "Manage Zotero collections from emacs" single ((:commit . "d9dc089b9adfcc70a63f2a84269a12eb7cb4c748") (:url . "https://github.com/vitoshka/zotelo") (:keywords "zotero" "emacs" "reftex" "bibtex" "mozrepl" "bibliography manager"))]) (zossima . [(20121123 1635) ((inf-ruby (2 2 3))) "Ruby from Emacs" tar ((:commit . "991676635c374d2a12714dcf48c1ce2d6f97a375") (:url . "https://github.com/technomancy/zossima") (:keywords "ruby" "convenience"))]) (zop-to-char . [(20160212 754) ((cl-lib (0 5))) "A replacement of zap-to-char." single ((:commit . "816ea90337db0545a2f0a5079f4d7b3a2822af7d") (:url . "https://github.com/thierryvolpiatto/zop-to-char"))]) (zoom-window . [(20170302 27) ((emacs (24 3))) "Zoom window like tmux" single ((:commit . "cd6ecc103fc30b171bda7daf1f44a550854d0dbf") (:url . "https://github.com/syohex/emacs-zoom-window"))]) (zoom-frm . [(20170309 1439) ((frame-fns (0)) (frame-cmds (0))) "Commands to zoom frame font size." single ((:url . "https://www.emacswiki.org/emacs/download/zoom-frm.el") (:keywords "frames" "extensions" "convenience"))]) (zoom . [(20171110 715) ((emacs (24 4))) "Fixed and automatic balanced window layout" single ((:commit . "d4f417b24fe022b6512a1a0ffebf898044393250") (:url . "https://github.com/cyrus-and/zoom") (:keywords "frames"))]) (zones . [(20170802 1406) nil "Zones of text - like multiple regions" single ((:url . "https://www.emacswiki.org/emacs/download/zones.el") (:keywords "narrow" "restriction" "widen" "region" "zone"))]) (zone-sl . [(20160201 410) ((emacs (24 3))) "Zone out with steam locomotives." single ((:commit . "7ec22e3661c6348382f9fc39a9d0063dbd2352ff") (:url . "https://github.com/kawabata/zone-sl") (:keywords "games"))]) (zone-select . [(20160118 619) ((emacs (24 3)) (dash (2 8))) "Select zone programs." single ((:commit . "bf30da12f1625fe6563448fccf3c506acad10af7") (:url . "https://github.com/kawabata/zone-select") (:keywords "games"))]) (zone-rainbow . [(20160120 534) ((emacs (24 3))) "Zone out with rainbow." single ((:commit . "2ba4f1a87c69c4712124ebf12c1f3ea171e1af36") (:url . "https://github.com/kawabata/zone-rainbow") (:keywords "games"))]) (zone-nyan . [(20170818 944) ((esxml (0 3 1))) "Zone out with nyan cat" single ((:commit . "4b1f8d95f130946718d52806489ffe2762aebfdc") (:url . "https://github.com/wasamasa/zone-nyan") (:keywords "zone"))]) (zombie-trellys-mode . [(20150304 648) ((emacs (24)) (cl-lib (0 5)) (haskell-mode (1 5))) "A minor mode for interaction with Zombie Trellys" single ((:commit . "7f0c45fdda3a44c3b6d1762d116abb1421b8fba2") (:keywords "languages"))]) (zombie . [(20141222 816) nil "major mode for editing ZOMBIE programs" single ((:commit . "ff8cd1b4cdbb4b0b9b8fd1ec8f6fb93eba249345") (:url . "http://hins11.yu-yake.com/"))]) (znc . [(20160627 1332) ((cl-lib (0 2))) "ZNC + ERC" single ((:commit . "ce468d185e4a949c45fdd7586313144bc69d4fe5") (:url . "https://github.com/sshirokov/ZNC.el"))]) (zlc . [(20151010 1857) nil "Provides zsh like completion system to Emacs" single ((:commit . "4dd2ba267ecdeac845a7cbb3147294ee7daa25f4") (:keywords "matching" "convenience"))]) (zig-mode . [(20170920 802) ((emacs (24))) "A major mode for the Zig programming language" single ((:commit . "814657c5b6b0600ace78a7bbd216c3e90d611cfd") (:url . "https://github.com/AndreaOrru/zig-mode") (:keywords "zig" "languages"))]) (zerodark-theme . [(20180103 535) ((all-the-icons (2 0 0)) (magit (2 8 0)) (flycheck (29))) "A dark, medium contrast theme for Emacs" single ((:commit . "12ca2cc6348decc964c148c36a3cde0846f4fc1a") (:url . "https://github.com/NicolasPetton/zerodark-theme") (:keywords "themes"))]) (zephir-mode . [(20170917 2125) ((cl-lib (0 5)) (pkg-info (0 4)) (emacs (24 3))) "Major mode for editing Zephir code" single ((:commit . "c2c6b7451667e68e29c353616f54ef9195c3fffd") (:url . "https://github.com/sergeyklay/zephir-mode") (:keywords "languages"))]) (zenity-color-picker . [(20160302 354) ((emacs (24 4))) "Insert and adjust colors using Zenity" single ((:commit . "4f4f46676a461ebc881487fb70c8c181e323db5e") (:url . "https://bitbucket.org/Soft/zenity-color-picker.el") (:keywords "colors"))]) (zencoding-mode . [(20140213 22) nil "Unfold CSS-selector-like expressions to markup" single ((:commit . "58e42af182c98cb9941d27cd042d227fbf4e146c") (:url . "https://github.com/rooney/zencoding") (:keywords "convenience"))]) (zenburn-theme . [(20171216 1027) nil "A low contrast color theme for Emacs." single ((:commit . "62d91fd7c054b0747f1309c012976deb471d4608") (:url . "http://github.com/bbatsov/zenburn-emacs"))]) (zen-and-art-theme . [(20120622 737) nil "zen and art color theme for GNU Emacs 24" single ((:commit . "a7226cbce0bca2501d69a620cb2aeabfc396c232"))]) (zel . [(20171014 132) ((emacs (25)) (frecency (0 1))) "Access frecent files easily" single ((:commit . "9dae2d212224d1deae1f62561fa8e4d689fd09f2") (:url . "https://github.com/rudolfochrist/zel") (:keywords "convenience" "files" "matching"))]) (zeal-at-point . [(20170427 2042) nil "Search the word at point with Zeal" single ((:commit . "50a1bd4240ff0db7c8f2046c3b00c5a8e14b9d2f") (:url . "https://github.com/jinzhu/zeal-at-point"))]) (z3-mode . [(20151120 1455) ((flycheck (0 23)) (emacs (24))) "A z3/SMTLIBv2 interactive development environment" single ((:commit . "163dc01d59e9880b4dc188d4e1ad84d6c0c852e1") (:url . "https://github.com/zv/z3-mode") (:keywords "z3" "yices" "mathsat" "smt" "beaver"))]) (youdao-dictionary . [(20170226 49) ((popup (0 5 0)) (pos-tip (0 4 6)) (chinese-word-at-point (0 2)) (names (0 5)) (emacs (24))) "Youdao Dictionary interface for Emacs" single ((:commit . "44548f56a1c736e6a7fae4546657bff0a94bf3cb") (:url . "https://github.com/xuchunyang/youdao-dictionary.el") (:keywords "convenience" "chinese" "dictionary"))]) (yoshi-theme . [(20170330 0) nil "Theme named after my cat" single ((:commit . "eab4fb67e8fec47c25c4c1393ac1211f043dbd44") (:url . "http://projects.ryuslash.org/yoshi-theme/") (:keywords "faces"))]) (yoficator . [(20171206 1630) nil "Interactively yoficate Russian texts" tar ((:commit . "5ad60258097147cdd8d71147722cc4203a59a0b0") (:url . "https://gitlab.com/link2xt/yoficator"))]) (yesql-ghosts . [(20150220 437) ((s (1 9 0)) (dash (2 10 0)) (cider (0 8 0))) "Display ghostly yesql defqueries inline" single ((:commit . "8f1faf0137b85a5072d13e1240a463d9a35ce2bb"))]) (ydk-mode . [(20170113 121) nil "Language support for Yu-Gi-Oh! deck files" single ((:commit . "f3f125b29408e0b0a34fec27dcb7c02c5dbfd04e") (:url . "https://github.com/jacksonrayhamilton/ydk-mode") (:keywords "faces" "games" "languages" "ydk" "yugioh" "yu-gi-oh"))]) (ycmd . [(20171111 854) ((emacs (24 4)) (dash (2 13 0)) (s (1 11 0)) (deferred (0 5 1)) (cl-lib (0 6 1)) (let-alist (1 0 5)) (request (0 3 0)) (request-deferred (0 3 0)) (pkg-info (0 6))) "emacs bindings to the ycmd completion server" tar ((:commit . "7f394d02f6f3149b215adcc96043c78d5f32d612") (:url . "https://github.com/abingham/emacs-ycmd"))]) (ycm . [(20150822 1136) nil "Emacs client for the YouCompleteMe auto-completion server." single ((:commit . "4da8a14abcd0f4fa3235042ade2e12b5068c0601") (:keywords "c" "abbrev"))]) (yaxception . [(20150105 652) nil "Provide framework about exception like Java for Elisp" single ((:commit . "4e94cf3e0b9b5631b0e90eb4b7de597ee7185875") (:url . "https://github.com/aki2o/yaxception") (:keywords "exception" "error" "signal"))]) (yatex . [(20180108 2035) nil "Yet Another tex-mode for emacs //野鳥//" tar nil]) (yatemplate . [(20161108 1305) ((yasnippet (0 8 1)) (emacs (24 3))) "File templates with yasnippet" tar ((:commit . "07da11de32feb6cbce0f8c140c0304e3ba1b42c0") (:url . "https://github.com/mineo/yatemplate") (:keywords "files" "convenience"))]) (yasnippet-snippets . [(20180107 147) ((yasnippet (0 8 0))) "Collection of yasnippet snippets" tar ((:commit . "3ab16fb46517d3f084ce838bb5fce71d22601a16") (:keywords "snippets"))]) (yasnippet . [(20180102 1824) ((cl-lib (0 5))) "Yet another snippet extension for Emacs." tar ((:commit . "04062d8b4f7391069058345e1efd673add0357f8") (:url . "http://github.com/joaotavora/yasnippet") (:keywords "convenience" "emulation"))]) (yascroll . [(20170315 1206) ((cl-lib (0 3))) "Yet Another Scroll Bar Mode" single ((:commit . "fe4494e5f4faf2832e665c7de0fed99cdbb39478") (:keywords "convenience"))]) (yarn-mode . [(20170709 1237) ((emacs (24 3))) "Major mode for yarn.lock files." single ((:commit . "998b408d6be05fd1c3a9fd8db6ffaab3bf86d06b") (:url . "https://github.com/anachronic/yarn-mode") (:keywords "convenience"))]) (yari . [(20151127 2339) nil "Yet Another RI interface for Emacs" single ((:commit . "a2cb9656ee5dfe1fc2ee3854f3079a1c8e85dbe9") (:keywords "tools"))]) (yard-mode . [(20170817 537) nil "Minor mode for Ruby YARD comments" single ((:commit . "ba74a47463b0320ae152bd42a7dd7aeecd7b5748") (:url . "https://github.com/pd/yard-mode.el"))]) (yara-mode . [(20170719 2351) ((emacs (24))) "Major mode for editing yara rule file" single ((:commit . "af5c05b34a29fc1bd73a6d21c82cc76320b33e5c") (:url . "not distributed yet") (:keywords "yara"))]) (yapfify . [(20180105 1447) nil "(automatically) format python buffers using YAPF." single ((:commit . "9e63a9135bd8dbfbee55819837a3aa0d119c5e6f") (:url . "https://github.com/JorisE/yapfify"))]) (yaoddmuse . [(20170325 1752) nil "Major mode for EmacsWiki and other Oddmuse wikis" single ((:url . "http://www.emacswiki.org/emacs/download/yaoddmuse.el") (:keywords "yaoddmuse" "oddmuse"))]) (yankpad . [(20171221 636) ((emacs (24))) "Paste snippets from an org-mode file" single ((:commit . "aa643aeaaf72fa19c4610ce47088a1fbc4e33ecb") (:url . "http://github.com/Kungsgeten/yankpad") (:keywords "abbrev" "convenience"))]) (yang-mode . [(20170323 1104) nil "major mode for editing YANG files" single ((:commit . "0d5d5df86dbb6cbb2de3c0f2d0d5f8c8f29d0695"))]) (yandex-weather . [(20160311 1237) nil "Fetch Yandex Weather forecasts." tar ((:commit . "6f823fd9e04ff9efb2aa65f333079e9f7e6e5b28"))]) (yaml-tomato . [(20151122 2353) ((s (1 9))) "copy or show the yaml path currently under cursor." single ((:commit . "f9df1c9bdfcec629b03031b2d2032f9dc533cb14") (:keywords "yaml"))]) (yaml-mode . [(20170727 1531) ((emacs (24 1))) "Major mode for editing YAML files" single ((:commit . "28c34033194130d452d5c958b5241c88d42ca02b") (:keywords "data" "yaml"))]) (yalinum . [(20130217 243) nil "yet another display line numbers." single ((:commit . "d3e0cbe3f4f5ca311e3298e684901d6fea3ad973") (:keywords "convenience" "tools"))]) (yahtzee . [(20171022 712) ((emacs (24 3))) "The yahtzee game" single ((:commit . "b851eb86a8a78378ad0f734e2c56f3f5f4d052ec") (:url . "https://github.com/drdv/yahtzee") (:keywords "games"))]) (yahoo-weather . [(20170822 1544) ((emacs (24))) "Displays weather information in mode-line" single ((:commit . "a74e29bc81b13efe285b87fa4d0694d75f8e2bb5") (:url . "https://github.com/lujun9972/yahoo-weather-mode") (:keywords "weather" "mode-line"))]) (yagist . [(20160417 2208) ((cl-lib (0 3))) "Yet Another Emacs integration for gist.github.com" single ((:commit . "dcdbd84f348414815d02f3da8a6ee0ac271632d4") (:url . "https://github.com/mhayashi1120/yagist.el") (:keywords "tools"))]) (yafolding . [(20170304 1917) nil "Yet another folding extension for Emacs" single ((:commit . "57c015ddd7c3454571c80825bc5391d7a10fa1d7") (:keywords "folding"))]) (yabin . [(20140205 1951) nil "Yet Another Bignum package (A thin wrapper of calc.el)." single ((:commit . "db8c404507560ef9147fcce2b94cd706fbfa03b5") (:keywords "data"))]) (xwidgete . [(20171118 1316) ((emacs (25))) "enhances usability of current xwidget browser" single ((:commit . "e4e8410fe32176df85b46234717824519443fb04") (:url . "https://github.com/tuhdo/xwidgete") (:keywords "xwidgete" "tools"))]) (xtest . [(20141214 906) ((cl-lib (0 5))) "Simple Testing with Emacs & ERT" single ((:commit . "2c2bdf32667506dd9ddf6eb311832add616bdf1c") (:url . "https://github.com/promethial/xtest") (:keywords "testing" "ert"))]) (xterm-title . [(20091203 1023) nil "Update xterm titles" single ((:commit . "b6ea73d297d191d48bba7dd1e2adc23bbdfa1c3c"))]) (xterm-keybinder . [(20160522 1756) ((emacs (24 3)) (cl-lib (0 5)) (let-alist (1 0 1))) "Let you extra keybinds in xterm/urxvt" tar ((:commit . "b29c4f700b0fa0c9f627f6725b36462b8fab06d6") (:keywords "convenient"))]) (xterm-frobs . [(20161207 1609) nil "manipulate xterm when running emacs in tty mode" single ((:commit . "0832d588598dbf6bd8aa8e05c611d7c098c3f9d8"))]) (xterm-color . [(20170102 1525) ((cl-lib (0 5))) "ANSI & XTERM 256 color support" single ((:commit . "5873477fd7bd6e54142ab35fbc623ea9b55200aa") (:url . "https://github.com/atomontage/xterm-color") (:keywords "faces"))]) (xresources-theme . [(20160331 702) nil "Use your .Xresources as your emacs theme" single ((:commit . "feb0552d31cb54210eabbc1abe32c8ea62841b6f") (:keywords "xresources" "theme"))]) (xref-js2 . [(20170530 126) ((emacs (25)) (js2-mode (20150909))) "Jump to references/definitions using ag & js2-mode's AST" single ((:commit . "d5f93605405989529c2f66b542def6c32429b927") (:url . "https://github.com/NicolasPetton/xref-js2") (:keywords "javascript" "convenience" "tools"))]) (xquery-tool . [(20170605 126) nil "A simple interface to saxonb's xquery." single ((:commit . "0d1e2960c48701b83be5255d56324f65a6ee182e") (:url . "https://github.com/paddymcall/xquery-tool.el") (:keywords "xml" "xquery" "emacs"))]) (xquery-mode . [(20170214 319) ((cl-lib (0 5))) "A simple mode for editing xquery programs" single ((:commit . "1b655ccf83d02a7bd473d2cf02359ed60bdf7369") (:url . "https://github.com/xquery-mode/xquery-mode"))]) (xo . [(20160402 2346) nil "XO linter integration with compilation mode" single ((:commit . "72fcd867cfa332fdb82f732925cf8977e690af78") (:keywords "processes"))]) (xmlunicode . [(20160319 912) nil "Unicode support for XML" tar ((:commit . "f5d185da46414c0509ebd0aa0fab416becf94612") (:keywords "utf-8" "unicode" "xml" "characters"))]) (xmlgen . [(20170411 617) nil "A DSL for generating XML." single ((:commit . "dba66681f0c5e621a9e70e8afb34903c9ffe93c4"))]) (xml-rpc . [(20160430 1458) nil "An elisp implementation of clientside XML-RPC" single ((:commit . "0ab093d60140d19e31d217c8abdc7dbdac944486") (:url . "http://github.com/hexmode/xml-rpc-el") (:keywords "xml" "rpc" "network"))]) (xml-quotes . [(20151230 1449) nil "read quotations from an XML document" tar ((:commit . "26db170e80b9295861227cdf970721b12539ed44") (:url . "https://github.com/ndw/xml-quotes") (:keywords "xml" "quotations"))]) (xml+ . [(20170727 1651) ((emacs (24 4)) (dash (2 12 0))) "Utilities for xml and html trees" single ((:commit . "232fa863c08fc159b21dd58c39ea45dce3334895") (:url . "https://github.com/bddean/xml-plus") (:keywords "xml" "html"))]) (xkcd . [(20160419 430) ((json (1 3))) "View xkcd from Emacs" single ((:commit . "66e928706fd660cfdab204c98a347b49c4267bdf") (:url . "https://github.com/vibhavp/emacs-xkcd") (:keywords "xkcd" "webcomic"))]) (xcscope . [(20160628 2324) nil "cscope interface for (X)Emacs" single ((:commit . "1e4c8e60eb841a3ecb56ff4115b6a8ae5c0bf779") (:url . "https://github.com/dkogan/xcscope.el") (:keywords "languages" "c"))]) (xcode-project . [(20170922 612) ((emacs (25))) "A package for reading Xcode project files." tar ((:commit . "ec5d503a51430205daa6f5f382d921b6412b4b55") (:url . "https://github.com/nhojb/xcode-project.git") (:keywords "languages" "tools"))]) (xcode-mode . [(20160907 508) ((emacs (24 4)) (s (1 10 0)) (dash (2 11 0)) (multiple-cursors (1 0 0))) "A minor mode for emacs to perform Xcode like actions." single ((:commit . "2ae4f512d6c601ea39d5ab785c2b5288eac24b59") (:keywords "conveniences"))]) (xbm-life . [(20160103 217) nil "A XBM version of Conway's Game of Life" single ((:commit . "dd6a98ac9ea81b681e68f6318fed47158e5d469e") (:url . "https://github.com/wasamasa/xbm-life") (:keywords "games"))]) (xahk-mode . [(20170821 407) ((emacs (24 1))) "Major mode for editing AutoHotkey scripts." single ((:commit . "02012b20603c00e3b2ef32159a690ed1e05d12c3") (:url . "http://xahlee.info/mswin/emacs_autohotkey_mode.html") (:keywords "languages"))]) (xah-replace-pairs . [(20170823 2028) ((emacs (24 1))) "emacs lisp functions for multi-pair find/replace." single ((:commit . "f051772e097723bafd05a7a05f283b900375ebd7") (:url . "http://ergoemacs.org/emacs/elisp_replace_string_region.html") (:keywords "lisp" "tools" "find replace"))]) (xah-reformat-code . [(20170821 411) nil "commands to reformat source code." single ((:commit . "7fec8b28e46b8cc2813fac5149e3bbb56c0aa6b1") (:url . "http://ergoemacs.org/emacs/emacs_reformat_lines.html") (:keywords "convenience"))]) (xah-math-input . [(20170905 849) ((emacs (24 1))) "a minor mode for inputting math and Unicode symbols." single ((:commit . "fcdfbed46ff81c8da84422611e0009c6b267e359") (:url . "http://ergoemacs.org/emacs/xmsi-math-symbols-input.html") (:keywords "abbrev" "convenience" "unicode" "math" "latex"))]) (xah-lookup . [(20171108 241) ((emacs (24 1))) "look up word on internet." single ((:commit . "3029d8ec04e841c57b7482c244a1733eb4c77cb5") (:url . "http://ergoemacs.org/emacs/xah-lookup.html") (:keywords "help" "docs" "convenience"))]) (xah-get-thing . [(20170821 353) ((emacs (24 1))) "get thing or selection at point." single ((:commit . "e3ef069ea9fea3a092689d45c94c6211b51d0ea4") (:url . "http://ergoemacs.org/emacs/elisp_get-selection-or-unit.html") (:keywords "extensions" "lisp" "tools"))]) (xah-fly-keys . [(20180107 1546) ((emacs (24 1))) "ergonomic modal keybinding minor mode." single ((:commit . "c7ebabe6ccff0bce35cf7feb1cef34f4c69aee50") (:url . "http://ergoemacs.org/misc/ergoemacs_vi_mode.html") (:keywords "convenience" "emulations" "vim" "ergoemacs"))]) (xah-find . [(20170821 358) ((emacs (24 1))) "find replace in pure emacs lisp. Purpose similar to grep/sed." single ((:commit . "6b7a60d6210d42559b46f0e17d7a0e4a2607f887") (:url . "http://ergoemacs.org/emacs/elisp-xah-find-text.html") (:keywords "convenience" "extensions" "files" "tools" "unix"))]) (xah-elisp-mode . [(20170828 1) ((emacs (24 3))) "Major mode for editing emacs lisp." single ((:commit . "6e94446566df206911afa107d06aec50ac3a56fc") (:url . "http://ergoemacs.org/emacs/xah-elisp-mode.html") (:keywords "lisp" "languages"))]) (xah-css-mode . [(20170821 400) ((emacs (24 3))) "Major mode for editing CSS code." single ((:commit . "7167c7a9a0f0dcc167dafa833efd43a0c9ae4307") (:url . "http://ergoemacs.org/emacs/xah-css-mode.html") (:keywords "languages" "convenience" "css" "color"))]) (x86-lookup . [(20161215 448) ((emacs (24 3)) (cl-lib (0 3))) "jump to x86 instruction documentation" single ((:commit . "544a1ad4e8551c60e58e6c431470b6ef4ce7c5cb") (:url . "https://github.com/skeeto/x86-lookup"))]) (x509-mode . [(20170909 632) ((emacs (24 1)) (cl-lib (0 5))) "View certificates, CRLs and keys using OpenSSL." tar ((:commit . "240b5045dcce18190bdabd91d74f48d3610a6fe2"))]) (x-path-walker . [(20160922 1135) ((helm-core (1 9 2))) "Navigation feature for JSON/XML/HTML based on path (imenu like)" tar ((:commit . "3b01dbd7a039c6c84fdf8c8ee53ba72090ee950a") (:keywords "convenience"))]) (x-dict . [(20091203 1023) nil "emacs interface for several online dictionaries" single ((:commit . "920b2430bff9fb8c4bb7944aa358622545c00cee"))]) (www-synonyms . [(20170128 1451) ((request (0 2 0)) (cl-lib (0 5))) "insert synonym for a word" single ((:commit . "7e37ea35064ff31c9945f0198a653647d408c936") (:keywords "lisp"))]) (wwtime . [(20151122 810) nil "Insert a time of day with appropriate world-wide localization" single ((:commit . "d04d8fa814b5d3644efaeb28f25520ada69acbbd") (:keywords "time"))]) (wttrin . [(20170614 506) ((emacs (24 4)) (xterm-color (1 0))) "Emacs frontend for weather web service wttr.in" single ((:commit . "df5427ce2a5ad4dab652dbb1c4a1834d7ddc2abc") (:url . "https://github.com/bcbcarl/emacs-wttrin") (:keywords "comm" "weather" "wttrin"))]) (wsd-mode . [(20170731 837) nil "Emacs major-mode for www.websequencediagrams.com" tar ((:commit . "566ae4b45b4a34b985f1b363d6cdbd463ab6aba6") (:url . "https://github.com/josteink/wsd-mode") (:keywords "wsd" "diagrams" "design" "process" "modelling" "uml"))]) (ws-butler . [(20170111 1534) nil "Unobtrusively remove trailing whitespace." single ((:commit . "80dabd5d158929e8433e46207bb521282b21e4f3") (:url . "https://github.com/lewang/ws-butler"))]) (writeroom-mode . [(20170623 327) ((emacs (24 1)) (visual-fill-column (1 9))) "Minor mode for distraction-free writing" tar ((:commit . "9e924dd7dd83f10b026c89cddef7e1646f1a3869") (:keywords "text"))]) (writegood-mode . [(20170925 647) nil "Polish up poor writing on the fly" single ((:commit . "416453af5a44da52646052fa2ee3a63acfd7bf8a") (:url . "http://github.com/bnbeckwith/writegood-mode") (:keywords "writing" "weasel-words" "grammar"))]) (wrap-region . [(20140116 2320) ((dash (1 0 3))) "Wrap text with punctation or tag" single ((:commit . "fbae9b0f106187af19823f1a6260b5c68b7252e6") (:url . "http://github.com/rejeep/wrap-region") (:keywords "speed" "convenience"))]) (wotd . [(20170328 1248) ((emacs (24 4)) (org (8 2 10))) "Fetch word-of-the-day from multiple online sources" single ((:commit . "d2937a3d91e014f8028a1f33d21c18cc0b065a64") (:keywords "extensions"))]) (world-time-mode . [(20140627 107) nil "show whole days of world-time diffs" single ((:commit . "ce7a3b45c87eb24cfe61eee453175d64f741d7cc") (:keywords "tools" "calendar"))]) (workgroups2 . [(20141102 1122) ((cl-lib (0 4)) (dash (2 8 0)) (anaphora (1 0 0)) (f (0 17))) "New workspaces for Emacs" single ((:commit . "928d509157ec8a4a2e343b6115dff034c3243a7a") (:url . "https://github.com/pashinin/workgroups2") (:keywords "session" "management" "window-configuration" "persistence"))]) (workgroups . [(20110726 941) nil "workgroups for windows (for Emacs)" single ((:commit . "9572b3492ee09054dc329f64ed846c962b395e39") (:keywords "session" "management" "window-configuration" "persistence"))]) (worf . [(20171002 1118) ((swiper (0 7 0)) (ace-link (0 1 0)) (hydra (0 13 0)) (zoutline (0 1 0))) "A warrior does not press so many keys! (in org-mode)" tar ((:commit . "cf2f382b368bcb3c8ba4785a7fac8ee9300e80b5") (:url . "https://github.com/abo-abo/worf") (:keywords "lisp"))]) (wordsmith-mode . [(20171025 730) nil "Syntax analysis and NLP text-processing in Emacs (OSX-only)" single ((:commit . "589a97412138145bea70e0450eeddeb7f138d538"))]) (wordnut . [(20151002 1457) ((emacs (24 4))) "Major mode interface to WordNet" tar ((:commit . "6e223dced5b865e9d38af6f9b7e57b3a56d362bb"))]) (wordgen . [(20170803 1120) ((emacs (24)) (cl-lib (0 5))) "Random word generator" single ((:commit . "aacad928ae99a953e034a831dfd0ebdf7d52ac1d") (:url . "https://github.com/Fanael/wordgen.el"))]) (wonderland . [(20130912 1819) ((dash (2 0 0)) (dash-functional (1 0 0)) (multi (2 0 0)) (emacs (24))) "declarative configuration for Emacsen" single ((:commit . "89d274ad694b0e748efdac23ccd60b7d8b73d7c6") (:url . "http://github.com/kurisuwhyte/emacs-wonderland") (:keywords "configuration" "profile" "wonderland"))]) (wolfram . [(20170122 2356) nil "Wolfram Alpha Integration" single ((:commit . "6b5dceae3fd6cdb4d7562510deeafa02c93c010b") (:keywords "math"))]) (wn-mode . [(20151109 2152) ((emacs (24))) "numeric window switching shortcuts" single ((:commit . "f05c3151523e529af5a0a3fa8c948b61fb369f6e") (:url . "https://github.com/luismbo/wn-mode") (:keywords "buffers" "windows" "switching-windows"))]) (with-simulated-input . [(20170820 2317) ((emacs (24 4)) (seq (2 0)) (s (0))) "A macro to simulate user input non-interactively" single ((:commit . "af9a38ce28a741e6d8742750bef5d7b5afa13796") (:keywords "lisp" "tools" "extensions"))]) (with-namespace . [(20130407 1122) ((dash (1 1 0)) (loop (1 1))) "interoperable elisp namespaces" single ((:commit . "8ac52da3a09cf46087720e30cf730d00f140cde6") (:keywords "namespaces"))]) (with-editor . [(20171217 1239) ((emacs (24 4)) (async (1 9))) "Use the Emacsclient as $EDITOR" tar ((:commit . "05338d893f3879391d7283324364b472e3f4f4d1") (:url . "https://github.com/magit/with-editor") (:keywords "tools"))]) (wispjs-mode . [(20170720 1219) ((clojure-mode (0))) "Major mode for Wisp code." single ((:commit . "60f9f5fd9d1556e2d008939f67eb1b1d0f325fa8") (:url . "https://github.com/krisajenkins/wispjs-mode"))]) (wisp-mode . [(20160419 1232) nil "Tools for wisp: the Whitespace-to-Lisp preprocessor" single ((:keywords "languages" "lisp"))]) (winum . [(20171028 702) ((cl-lib (0 5)) (dash (2 13 0))) "Navigate windows and frames using numbers." single ((:commit . "c56d1cdb8d1723eb4c0d7a7eb3ecd2697739146c") (:url . "http://github.com/deb0ch/winum.el") (:keywords "convenience" "frames" "windows" "multi-screen"))]) (winring . [(20150804 1108) nil "Window configuration rings" single ((:commit . "ad400939b420b5a7914103b7cfe3f0f6574ea48f") (:url . "https://gitlab.com/warsaw/winring") (:keywords "frames" "tools"))]) (winpoint . [(20131023 1013) nil "Remember buffer positions per-window, not per buffer" single ((:commit . "e6050093c076308184566fa1d1012423d6934773") (:url . "https://github.com/jorgenschaefer/winpoint") (:keywords "convenience"))]) (winnow . [(20170903 506) ((emacs (24))) "winnow ag/grep results by matching/excluding lines" single ((:commit . "18cb6b94338f3b7b4f2cd0331dad22f82dd9e0d3") (:url . "https://github.com/dgtized/winnow.el") (:keywords "matching"))]) (windwow . [(20170815 1848) ((dash (2 11 0)) (cl-lib (0 6 1)) (emacs (24))) "simple workspace management" single ((:commit . "77bad26f651744b68d31b389389147014d250f23") (:url . "github.com/vijumathew/windwow") (:keywords "frames"))]) (windsize . [(20151121 540) nil "Simple, intuitive window resizing" single ((:commit . "beb6376fdf52afa6f220c89032448460faf76e7f") (:url . "http://github.com/grammati/windsize") (:keywords "window" "resizing" "convenience"))]) (window-purpose . [(20171107 659) ((emacs (24)) (cl-lib (0 5)) (let-alist (1 0 3)) (imenu-list (0 1))) "Purpose-based window management for Emacs" tar ((:commit . "2655bbe3399f00d3297ded58f92e7be22876148a") (:url . "https://github.com/bmag/emacs-purpose") (:keywords "frames"))]) (window-numbering . [(20160809 1110) nil "Numbered window shortcuts" single ((:commit . "10809b3993a97c7b544240bf5d7ce9b1110a1b89") (:url . "http://nschum.de/src/emacs/window-numbering-mode/") (:keywords "faces" "matching"))]) (window-number . [(20170731 1851) nil "Select windows by numbers." single ((:commit . "d41722de646ffeb3f70d26e4a86a5a1ba5c6be87") (:url . "https://github.com/nikolas/window-number") (:keywords "windows"))]) (window-layout . [(20170214 1633) nil "window layout manager" single ((:commit . "cd2e4f967b610c2bbef53182829e47250d027056") (:keywords "window" "layout"))]) (window-jump . [(20170809 1508) nil "Move left/right/up/down through your windows." single ((:commit . "6bdb51e9a346907d60a9625f6180bddd06be6674") (:url . "https://github.com/chumpage/chumpy-windows") (:keywords "frames" "convenience"))]) (window-end-visible . [(20140508 1341) nil "Find the last visible point in a window" single ((:commit . "525500fb2ebc08f3f9ea493972e5f2e1d79f89ef") (:url . "http://github.com/rolandwalker/window-end-visible") (:keywords "extensions"))]) (window+ . [(20170309 1437) nil "Extensions to `window.el'." single ((:url . "https://www.emacswiki.org/emacs/download/window%2b.el") (:keywords "internal" "window"))]) (windata . [(20090830 340) nil "convert window configuration to list" single ((:commit . "a723fc446ceaec23d5f29ecc8245d94c99d91625") (:keywords "convenience" "frames"))]) (win-switch . [(20161009 927) nil "fast, dynamic bindings for window-switching/resizing" single ((:commit . "954eb5e4c5737f0c06368c42a7f1c3dd374d782f") (:url . "http://www.stat.cmu.edu/~genovese/emacs/win-switch/") (:keywords "window" "switch" "key bindings" "ergonomic" "efficient"))]) (wimpy-del . [(20170309 1436) nil "Require confirmation for large region deletion." single ((:url . "https://www.emacswiki.org/emacs/download/wimpy-del.el") (:keywords "region" "cut" "kill" "copy"))]) (wilt . [(20151105 518) ((emacs (24 3)) (dash (2 12 0)) (s (1 10 0))) "An extensions for calculating WILT in a buffer." single ((:commit . "5febe367c6c3729848654358af4d17ee2987da8d") (:url . "https://github.com/sixty-north/emacs-wilt"))]) (wiki-summary . [(20150408 1422) ((emacs (24))) "View Wikipedia summaries in Emacs easily." single ((:commit . "ed3755dd09f5f73ef78ec295fe842d08b316c8a0") (:url . "https://github.com/jozefg/wiki-summary.el") (:keywords "wikipedia" "utility"))]) (wiki-nav . [(20150223 554) ((button-lock (1 0 2)) (nav-flash (1 0 0))) "Simple file navigation using [[WikiStrings]]" single ((:commit . "f9082feb329432fcf2ac49a95e64bed9fda24d58") (:url . "http://github.com/rolandwalker/button-lock") (:keywords "mouse" "button" "hypermedia" "navigation"))]) (widgetjs . [(20160719 804) ((makey (0 3)) (js2-mode (20140114)) (js2-refactor (0 6 1)) (s (1 9 0))) "Widgetjs mode" single ((:commit . "1b09b1b2848ab21c412f2fe7a259b1dcea2c733c") (:keywords "help"))]) (widget-mvc . [(20150101 2006) nil "MVC framework for the emacs widgets" single ((:commit . "ff5a85880df7b87f9f480fe3c28438a0712b7b87") (:keywords "lisp" "widget"))]) (wide-column . [(20170925 913) nil "Calls functions dependant on column position." single ((:commit . "ce9ef4675485a7bea381077866368ef875226b10") (:keywords "minor mode" "cursor colour" "column width"))]) (wid-edit+ . [(20170309 1434) nil "Extensions to standard library `wid-edit.el'." single ((:url . "https://www.emacswiki.org/emacs/download/wid-edit%2b.el") (:keywords "widget" "color"))]) (whole-line-or-region . [(20170815 212) nil "operate on current line if region undefined" single ((:commit . "1220974153b7eaca5192ed87f86182d121e228e4") (:keywords "convenience" "wp"))]) (whizzml-mode . [(20171015 938) ((emacs (24 4))) "Programming mode for editing WhizzML files" tar ((:commit . "9060fdce07c137abc2c494cb72641b9b9d6fbe22") (:keywords "languages" "lisp"))]) (whitespace-cleanup-mode . [(20170505 1923) nil "Intelligently call whitespace-cleanup on save" single ((:commit . "6d0a35159ee04ef9f3b1a80c548f545643ddb397") (:url . "https://github.com/purcell/whitespace-cleanup-mode") (:keywords "convenience"))]) (white-theme . [(20160917 1043) ((emacs (24))) "Minimalistic light color theme inspired by basic-theme" single ((:commit . "e9e6d5b9d43da6eb15e86f5fbc8b1ba83abe8c78") (:url . "http://github.com/anler/white-theme.el") (:keywords "color" "theme" "minimal" "basic" "simple" "white"))]) (white-sand-theme . [(20151117 848) ((emacs (24))) "Emacs theme with a light background." single ((:commit . "97621edd69267dd143760d94393db2c2558c9ea4"))]) (whitaker . [(20150814 422) ((dash (2 10 0))) "Comint interface for Whitaker's Words" single ((:commit . "eaf26ea647b729ca705b73ea70312d5ffdf89448") (:keywords "processes"))]) (which-key . [(20180108 1930) ((emacs (24 4))) "Display available keybindings in popup" single ((:commit . "1219622b756f149efe4b44c625f2140c5229f936") (:url . "https://github.com/justbur/emacs-which-key"))]) (what-the-commit . [(20150901 616) nil "Random commit message generator" single ((:commit . "868c80a1b8614bcbd2225cd0290142c72f2a7956") (:url . "http://barbarito.me/") (:keywords "git" "commit" "message"))]) (wgrep-pt . [(20140510 1531) ((wgrep (2 1 5))) "Writable pt buffer and apply the changes to files" single ((:commit . "1cdd7c136f1e7565bb13d2df69be3dc77b83698d") (:url . "http://github.com/mhayashi1120/Emacs-wgrep/raw/master/wgrep-pt.el") (:keywords "grep" "edit" "extensions"))]) (wgrep-helm . [(20170510 1539) ((wgrep (2 1 1))) "Writable helm-grep-mode buffer and apply the changes to files" single ((:commit . "1cdd7c136f1e7565bb13d2df69be3dc77b83698d") (:url . "http://github.com/mhayashi1120/Emacs-wgrep/raw/master/wgrep-helm.el") (:keywords "grep" "edit" "extensions"))]) (wgrep-ag . [(20160923 403) ((wgrep (2 1 5)) (cl-lib (0 5))) "Writable ag buffer and apply the changes to files" single ((:commit . "1cdd7c136f1e7565bb13d2df69be3dc77b83698d") (:url . "http://github.com/mhayashi1120/Emacs-wgrep/raw/master/wgrep-ag.el") (:keywords "grep" "edit" "extensions"))]) (wgrep-ack . [(20141012 311) ((wgrep (2 1 1))) "Writable ack-and-a-half buffer and apply the changes to files" single ((:commit . "1cdd7c136f1e7565bb13d2df69be3dc77b83698d") (:url . "http://github.com/mhayashi1120/Emacs-wgrep/raw/master/wgrep-ack.el") (:keywords "grep" "edit" "extensions"))]) (wgrep . [(20141016 1656) nil "Writable grep buffer and apply the changes to files" single ((:commit . "1cdd7c136f1e7565bb13d2df69be3dc77b83698d") (:url . "http://github.com/mhayashi1120/Emacs-wgrep/raw/master/wgrep.el") (:keywords "grep" "edit" "extensions"))]) (weibo . [(20150307 1442) ((cl-lib (0 5))) "Weibo client for Emacs" tar ((:commit . "a8abb50b7602fe15fe2bc6400ac29780e956b390") (:url . "https://github.com/austin-----/weibo.emacs") (:keywords "weibo"))]) (weechat-alert . [(20160416 548) ((weechat (0 3 1)) (cl-lib (0 5)) (alert (1 2))) "Weechat notifier using alerts" single ((:commit . "a8fd557c8f335322f132c1c6c08b6741d6394e2e") (:url . "https://github.com/kungi/weechat-alert") (:keywords "irc" "chat" "network" "weechat"))]) (weechat . [(20171128 440) ((s (1 3 1)) (cl-lib (0 2)) (emacs (24)) (tracking (1 2))) "Chat via WeeChat's relay protocol in Emacs" tar ((:commit . "f8e6a2361f4de2299b861dd8fea1d0a5502be7c4"))]) (wedge-ws . [(20140714 1449) nil "Wedge whitespace between columns in text" single ((:commit . "4669115f02d9c6fee067cc5369bb38c0f9db88b2") (:keywords "formatting" "indentation"))]) (websocket . [(20171113 2045) ((cl-lib (0 5))) "Emacs WebSocket client and server" single ((:commit . "7d2adf218743c52578c8e8fd5584a5e54732e256") (:keywords "communication" "websocket" "server"))]) (webpaste . [(20171025 956) ((emacs (24 4)) (request (0 2 0)) (cl-lib (0 5))) "Paste to pastebin-like services" single ((:commit . "f047313c656e0ea85033bacc564d02ae6f4605ff") (:url . "https://github.com/etu/webpaste.el") (:keywords "convenience" "comm" "paste"))]) (weblogger . [(20110926 918) ((xml-rpc (1 6 8))) "Weblog maintenance via XML-RPC APIs" single ((:commit . "b3dd4aead9d3a87e6d85e7fef4f4f3bd40d87b53") (:url . "http://launchpad.net/weblogger-el") (:keywords "weblog" "blogger" "cms" "movable" "type" "openweblog" "blog"))]) (web-server . [(20140905 1706) ((emacs (24 3))) "Emacs Web Server" tar ((:commit . "469cd3bc117bfb8da0c03a2a2fb185e80c81d068") (:url . "https://github.com/eschulte/emacs-web-server") (:keywords "http" "server" "network"))]) (web-search . [(20170911 1246) ((emacs (24 3))) "Open a web search" tar ((:commit . "bdf590e7d6d62e874810aa4c5017c48e4e93f823") (:url . "https://github.com/xuchunyang/web-search.el") (:keywords "web" "search"))]) (web-narrow-mode . [(20170406 1910) ((web-mode (14 0 27))) "quick narrow code block in web-mode" single ((:commit . "73bdcb7d0701abe65dab4fc295d944885e05ae33") (:url . "https://github.com/Qquanwei/web-narrow-mode") (:keywords "web-mode" "react" "narrow" "web"))]) (web-mode-edit-element . [(20161114 954) ((emacs (24 4)) (web-mode (14))) "Helper-functions for attribute- and element-handling" tar ((:commit . "8b8ac07aa8c920dafd94c96a51effb0d6c0ed1ce") (:url . "https://github.com/jtkDvlp/web-mode-edit-element") (:keywords "languages" "convenience"))]) (web-mode . [(20171118 1132) ((emacs (23 1))) "major mode for editing web templates" single ((:commit . "78d49396b0ddb5e60596dc4a2c09d7cbb5812ff5") (:url . "http://web-mode.org") (:keywords "languages"))]) (web-completion-data . [(20160318 148) nil "Shared completion data for ac-html and company-web" tar ((:commit . "c272c94e8a71b779c29653a532f619acad433a4f") (:url . "https://github.com/osv/web-completion-data") (:keywords "html" "auto-complete" "company"))]) (web-beautify . [(20161115 1447) nil "Format HTML, CSS and JavaScript/JSON" single ((:commit . "e1b45321d8c11b404b12c8e55afe55eaa7c84ee9") (:url . "https://github.com/yasuyk/web-beautify"))]) (web . [(20141231 1201) ((dash (2 9 0)) (s (1 5 0))) "useful HTTP client" single ((:commit . "483188dac4bc6b409b985c9dae45f3324a425efd") (:url . "http://github.com/nicferrier/emacs-web") (:keywords "lisp" "http" "hypermedia"))]) (weather-metno . [(20150831 1807) ((emacs (24)) (cl-lib (0 3))) "Weather data from met.no in Emacs" tar ((:commit . "bfc7137095e0ee71aad70ac46f2af677f3c051b6"))]) (wcheck-mode . [(20160711 2213) nil "General interface for text checkers" tar ((:commit . "d56345a1ec910a7d95103a441536cfba10ec9672"))]) (wc-mode . [(20170126 2029) nil "Running word count with goals (minor mode)" single ((:commit . "f218f42709a651b34d6c1ddd98856f44648ef707") (:url . "https://github.com/bnbeckwith/wc-mode"))]) (wc-goal-mode . [(20140829 659) nil "Running word count with goals (minor mode)" single ((:commit . "bf21ab9c5a449bcc20dd207a4915dcec218d2699") (:url . "https://github.com/bnbeckwith/wc-goal-mode"))]) (wavefront-obj-mode . [(20170808 1016) nil "Major mode for Wavefront obj files" single ((:commit . "34027915de6496460d8e68b5991dd24d47d54859") (:url . "http://github.com/abend/wavefront-obj-mode"))]) (watch-buffer . [(20120331 1344) nil "run a shell command when saving a buffer" single ((:commit . "761fd7252e6d7bf5148283c2a7ee935f087d9427") (:url . "https://github.com/mjsteger/watch-buffer") (:keywords "automation" "convenience"))]) (warm-night-theme . [(20161101 728) ((emacs (24))) "Emacs 24 theme with a dark background." single ((:commit . "020f084d23409b5035150508ba6e57c2509edd64"))]) (wanderlust . [(20171209 227) ((semi (1 14 7))) "Yet Another Message Interface on Emacsen" tar ((:commit . "2a058670d9f65e7c9e5b203b31d5946bcb2bf144"))]) (wandbox . [(20170603 531) ((emacs (24)) (request (0 3 0)) (s (1 10 0))) "Wandbox client" tar ((:commit . "e002fe41f2cd9b4ce2b1dc80b83301176e9117f1") (:url . "https://github.com/kosh04/emacs-wandbox") (:keywords "tools"))]) (wand . [(20171103 513) ((dash (20161121 55)) (s (20160928 636))) "Magic wand for Emacs - Select and execute" tar ((:commit . "83c0c723dae7d8a37e67a9d9f2d00e005b5486ca") (:url . "https://github.com/cmpitg/wand") (:keywords "extensions" "tools"))]) (wakatime-mode . [(20170517 2053) nil "Automatic time tracking extension for WakaTime" single ((:commit . "b1eae15f38a367017e519c10837c44650631b154") (:keywords "calendar" "comm"))]) (waher-theme . [(20141115 430) ((emacs (24 1))) "Emacs 24 theme based on waher for st2 by dduckster" single ((:commit . "60d31519fcfd8e797723d47961b255ae2f2e2c0a") (:url . "https://github.com/jasonm23/emacs-waher-theme"))]) (waf-mode . [(20170403 1240) nil "Waf integration for Emacs" single ((:commit . "20c75eabd1d54fbce8e0dbef785c9fb68577ee4f") (:url . "https://bitbucket.org/dvalchuk/waf-mode"))]) (wacspace . [(20140826 2232) ((dash (1 2 0)) (cl-lib (0 2))) "The WACky WorkSPACE manager for emACS" tar ((:commit . "4a11168d58c9c129cfcd04a1c9581962565eca4a"))]) (w3m . [(20171221 2317) nil "an Emacs interface to w3m" tar ((:commit . "948a1a0f3e96e6c09c938e060f352ec126054ab1") (:keywords "w3m" "www" "hypermedia"))]) (w32browser-dlgopen . [(20170309 1433) nil "Use w32browser with standard Windows Open File box." single ((:url . "https://www.emacswiki.org/emacs/download/w32browser-dlgopen.el") (:keywords "files" "extensions" "convenience" "dialog"))]) (w32-browser . [(20170308 1518) nil "Run Windows application associated with a file." single ((:url . "https://www.emacswiki.org/emacs/download/w32-browser.el") (:keywords "mouse" "dired" "w32" "explorer"))]) (vue-mode . [(20180104 1611) ((mmm-mode (0 5 4)) (vue-html-mode (0 1)) (ssass-mode (0 1)) (edit-indirect (0 1 4))) "Major mode for vue component based on mmm-mode" single ((:commit . "b489a63dabe0f2fee2730121ecabb1b4f4c11761") (:keywords "languages"))]) (vue-html-mode . [(20180104 1421) nil "Major mode for editing Vue.js templates" single ((:commit . "3fa65f8ac8a4c54f13c32fd43c9865c92c22ce07") (:url . "http://github.com/AdamNiederer/vue-html-mode") (:keywords "languages" "vue" "template"))]) (volume . [(20150718 1309) nil "tweak your sound card volume from Emacs" single ((:commit . "ecc1550b3c8b501d37e0f0116b54b535d15f90f6") (:url . "http://www.brockman.se/software/volume-el/"))]) (volatile-highlights . [(20160611 1855) nil "Minor mode for visual feedback on some operations." single ((:commit . "9a20091f0ce7fc0a6b3e641a6a46d5f3ac4d8392") (:url . "http://www.emacswiki.org/emacs/download/volatile-highlights.el") (:keywords "emulations" "convenience" "wp"))]) (voca-builder . [(20161101 945) ((popup (0 5 2))) "Helps you build up your vocabulary" single ((:commit . "51573beec8cd8308477b0faf453aad93e17f57c5") (:url . "https://github.com/yitang/voca-builder") (:keywords "english" "vocabulary"))]) (vmd-mode . [(20161106 125) ((emacs (24 3))) "Fast Github-flavored Markdown preview using a vmd subprocess." single ((:commit . "e3b27f4f179002984643895292bb207c3e221a5c") (:url . "https://github.com/blak3mill3r/vmd-mode") (:keywords "markdown" "preview" "live" "vmd"))]) (vline . [(20120108 445) nil "show vertical line (column highlighting) mode." single ((:url . "http://www.emacswiki.org/cgi-bin/wiki/vline.el") (:keywords "faces" "editing" "emulating"))]) (vlf . [(20170830 1148) nil "View Large Files" tar ((:commit . "a01e9ed416cd81ccddebebbf05d4ca80060b07dc") (:url . "https://github.com/m00natic/vlfi") (:keywords "large files" "utilities"))]) (vkill . [(20091203 1022) nil "view and kill Unix processes from within Emacs" single ((:commit . "8ffe640ed03ddcc23db1c74c76d1acbf25250ad9"))]) (visual-regexp-steroids . [(20170221 1853) ((visual-regexp (1 1))) "Extends visual-regexp to support other regexp engines" tar ((:commit . "a6420b25ec0fbba43bf57875827092e1196d8a9e") (:url . "https://github.com/benma/visual-regexp-steroids.el/") (:keywords "external" "foreign" "regexp" "replace" "python" "visual" "feedback"))]) (visual-regexp . [(20170228 1716) ((cl-lib (0 2))) "A regexp/replace command for Emacs with interactive visual feedback" single ((:commit . "b3096c2d391ff4e28a2a4e8cd82efbf11071ea85") (:url . "https://github.com/benma/visual-regexp.el/") (:keywords "regexp" "replace" "visual" "feedback"))]) (visual-fill-column . [(20170502 1300) ((emacs (24 3))) "fill-column for visual-line-mode" single ((:commit . "57c2a72d46900117ea92e0a01b97e19481800503"))]) (visual-ascii-mode . [(20150129 246) nil "Visualize ascii code (small integer) on buffer." single ((:commit . "99285a099a17472ddd9f1b4f74e9d092dd8c5947") (:url . "https://github.com/Dewdrops/visual-ascii-mode") (:keywords "presentation"))]) (visible-mark . [(20150623 2150) nil "Make marks visible." single ((:commit . "a584db9bc88953b23a9648b3e14ade90767207f8") (:url . "https://gitlab.com/iankelling/visible-mark") (:keywords "marking" "color" "faces"))]) (virtualenvwrapper . [(20171119 1403) ((dash (1 5 0)) (s (1 6 1))) "a featureful virtualenv tool for Emacs" single ((:commit . "fa49954d44cb47a46d7a2bd8566ea21dd0823dea") (:url . "http://github.com/porterjamesj/virtualenvwrapper.el") (:keywords "python" "virtualenv" "virtualenvwrapper"))]) (virtualenv . [(20140220 1501) nil "Virtualenv for Python" single ((:commit . "276c0f4d6493b402dc4d22ecdf17b2b072e911b3") (:keywords "python" "virtualenv"))]) (vimrc-mode . [(20170814 1837) nil "Major mode for vimrc files" single ((:commit . "ba8140fba6e03a35b123acbd62fc8c6f0a03bf4a") (:url . "https://github.com/mcandre/vimrc-mode") (:keywords "languages" "vim"))]) (vimish-fold . [(20171231 2212) ((emacs (24 4)) (cl-lib (0 5)) (f (0 18 0))) "Fold text like in Vim" single ((:commit . "1469c953bc20d21d87ce5d92def767e551cda07c") (:url . "https://github.com/mrkkrp/vimish-fold") (:keywords "convenience"))]) (vim-region . [(20140329 924) ((expand-region (20140127))) "Select region as vim" single ((:commit . "7c4a99ce3678fee40c83ab88e8ad075d2a935fdf") (:url . "https://github.com/ongaeshi/emacs-vim-region"))]) (vim-empty-lines-mode . [(20150110 2026) ((emacs (23))) "Vim-like empty line indicator at end of files." single ((:commit . "d4a5034ca8ea0c962ad6e92c86c0fa2a74d2964b") (:url . "https://github.com/jmickelin/vim-empty-lines-mode") (:keywords "emulations"))]) (viking-mode . [(20160705 1327) nil "kill first, ask later" single ((:commit . "c76aa265d13ad91d6890d242e142d05e31f0340b") (:url . "https://github.com/tlinden/viking-mode") (:keywords "kill" "delete"))]) (viewer . [(20170106 1802) nil "View-mode extension" single ((:commit . "6c8db025bf4021428f7f2c3ef9d74fb13f5d267a") (:url . "http://github.com/rubikitch/viewer/") (:keywords "view" "extensions"))]) (vi-tilde-fringe . [(20141027 1942) ((emacs (24))) "Displays tildes in the fringe on empty lines a la Vi." single ((:commit . "f1597a8d54535bb1d84b442577b2024e6f910308") (:url . "https://github.com/syl20bnr/vi-tilde-fringe") (:keywords "emulation"))]) (vhdl-tools . [(20171111 930) ((ggtags (0 8 12)) (emacs (25 2)) (outshine (2 0)) (helm (2 8 5))) "Utilities for navigating vhdl sources." single ((:commit . "6bbcbdfbff7154517178290371b0182a176c09b5") (:url . "https://csantosb.github.io/vhdl-tools/") (:keywords "vhdl"))]) (vhdl-capf . [(20160221 934) nil "Completion at point function (capf) for vhdl-mode." single ((:commit . "290abe217050f33532bc9ccb04f894123402f414") (:url . "https://github.com/sh-ow/vhdl-capf") (:keywords "convenience" "usability" "vhdl" "completion"))]) (vertigo . [(20160429 2105) ((dash (2 11 0))) "Jump across lines using the home row." single ((:commit . "70b56a57c3a37735cc9e92ffaa6dc27c64437738") (:url . "https://github.com/noctuid/vertigo.el") (:keywords "vim" "vertigo"))]) (vertica . [(20131217 711) ((sql (3 0))) "Vertica SQL mode extension" single ((:commit . "3c9647b425c5c13c30bf0cba483646af18196588") (:keywords "sql" "vertica"))]) (verify-url . [(20160426 528) ((cl-lib (0 5))) "find out invalid urls in the buffer or region" single ((:commit . "d6f3623cda8cd526a2d198619b137059cb1ba1ab") (:url . "https://github.com/lujun9972/verify-url") (:keywords "convenience" "usability" "url"))]) (vector-utils . [(20140508 1341) nil "Vector-manipulation utility functions" single ((:commit . "c38ca1c6a23b2b51a6ac36c2c64e50e21cbe9d21") (:url . "http://github.com/rolandwalker/vector-utils") (:keywords "extensions"))]) (vdirel . [(20170605 43) ((emacs (24 4)) (org-vcard (0 1 0)) (helm (1 7 0)) (seq (1 11))) "Manipulate vdir (i.e., vCard) repositories" single ((:commit . "72399f5e09f53aa25a068be8689cb711b8accf08"))]) (vdiff-magit . [(20170519 1407) ((emacs (24 4)) (vdiff (0 3)) (magit (2 10 0))) "magit integration for vdiff" single ((:commit . "1ccf0a8be5aad18648fd59c775a8dd6070398b74") (:url . "https://github.com/justbur/emacs-vdiff-magit") (:keywords "diff"))]) (vdiff . [(20170525 1231) ((emacs (24 4)) (hydra (0 13 0))) "A diff tool similar to vimdiff" single ((:commit . "66ae1ac324d9ec7ef87abee38f260734f036cf3d") (:url . "https://github.com/justbur/emacs-vdiff") (:keywords "diff"))]) (vcomp . [(20140906 1508) nil "compare version strings" single ((:commit . "092ef48a78e950c0576269d889be6caf9f6e61c5") (:url . "https://github.com/tarsius/vcomp") (:keywords "versions"))]) (vcl-mode . [(20170119 1251) nil "Syntax highlighting for Varnish Command Language" single ((:commit . "3d86c1352a7370d558d25f4c8f7be744e7d27332"))]) (vc-osc . [(20161119 1155) nil "non-resident support for osc version-control" single ((:commit . "8c09a0d5f69237285101554261b77d76b546a24b"))]) (vc-msg . [(20171106 1747) ((emacs (24 3)) (popup (0 5 0))) "Show commit information of current line" tar ((:commit . "9d40d94c0a73f46047e2f6d40be795638e5c3ebc") (:url . "http://github.com/redguardtoo/vc-msg") (:keywords "git" "vc" "svn" "hg" "messenger"))]) (vc-fossil . [(20171018 2216) nil "VC backend for the fossil sofware configuraiton management system" tar ((:commit . "abdb5487831e641c291c0dcb3848f539ca11f400"))]) (vc-darcs . [(20170904 2020) ((emacs (24))) "a VC backend for darcs" single ((:commit . "390fb1ebdda1ffac45b9be02626dde3b6d95ac11") (:keywords "vc"))]) (vc-check-status . [(20170107 534) nil "Warn you when quitting emacs and leaving repo dirty." tar ((:commit . "37734beb16bfd8633ea328059bf9a47eed826d5c") (:url . "https://github.com/thisirs/vc-check-status") (:keywords "vc" "convenience"))]) (vc-auto-commit . [(20170107 533) nil "Auto-committing feature for your repository" tar ((:commit . "446f664f4ec835532f4f18ba18b5fb731f6030aa") (:url . "http://github.com/thisirs/vc-auto-commit.git") (:keywords "vc" "convenience"))]) (vbasense . [(20140221 1553) ((auto-complete (1 4 0)) (log4e (0 2 0)) (yaxception (0 1))) "provide a environment like Visual Basic Editor." tar ((:commit . "8c61a492d7c15218ae1a96e2aebfe6f78bfff6db") (:url . "https://github.com/aki2o/emacs-vbasense") (:keywords "vba" "completion"))]) (vala-snippets . [(20150428 2052) ((yasnippet (0 8 0))) "Yasnippets for Vala" tar ((:commit . "671439501060449bd100b9fffd524a86064fbfbb") (:url . "https://github.com/gopar/vala-snippets"))]) (vala-mode . [(20150324 1525) nil "Vala mode derived mode" single ((:commit . "fb2871a4492d75d03d72e60474919ab89adb267b") (:keywords "vala" "languages" "oop"))]) (vagrant-tramp . [(20160427 1632) ((dash (2 12 0))) "Vagrant method for TRAMP" tar ((:commit . "453ba605b28d2964bb4e10074f1e6891ebb4d2d6") (:url . "https://github.com/dougm/vagrant-tramp") (:keywords "vagrant"))]) (vagrant . [(20170301 1406) nil "Manage a vagrant box from emacs" single ((:commit . "636ce2f9af32ea199170335a9cf1201b64873440") (:url . "https://github.com/ottbot/vagrant.el") (:keywords "vagrant" "chef"))]) (v2ex-mode . [(20160719 2045) ((cl-lib (0 5)) (request (0 2)) (let-alist (1 0 3))) "Major mode for visit http://v2ex.com/ site." single ((:commit . "b7d19bb594b43ea3824a6f215dd1e5d1d4c0e8ad") (:url . "https://github.com/aborn/v2ex-mode") (:keywords "v2ex" "v2ex.com"))]) (uuidgen . [(20140918 1601) nil "Provides various UUID generating functions" single ((:commit . "7eb96415484c3854a3f383d1a3e10b87ae674e22") (:keywords "extensions" "lisp" "tools"))]) (uuid . [(20120910 151) nil "UUID's for EmacsLisp" single ((:commit . "1519bfeb0e31602b840bc8dd35d7c7e732c159fe") (:keywords "lisp"))]) (utop . [(20170508 2343) ((emacs (24))) "Universal toplevel for OCaml" single ((:commit . "d6e873cafc40291f0fe27ac9fffb1051c0ab448d") (:url . "https://github.com/diml/utop") (:keywords "ocaml" "languages"))]) (use-package-ensure-system-package . [(20171205 1029) ((use-package (2 1)) (system-packages (0 1))) "auto install system packages" single ((:commit . "8a82221a395619ba325a611b50938f6bbca0ebed") (:url . "https://github.com/waymondo/use-package-ensure-system-package") (:keywords "convenience" "tools" "extensions"))]) (use-package-chords . [(20171207 2240) ((use-package (2 1)) (bind-key (1 0)) (bind-chord (0 2)) (key-chord (0 6))) "key-chord keyword for use-package" single ((:commit . "012c6b6c11234c9463deab9b8d0b266ef6509463") (:url . "https://github.com/waymondo/use-package-chords") (:keywords "convenience" "tools" "extensions"))]) (use-package . [(20180108 1754) ((emacs (24 3)) (bind-key (2 4))) "A configuration macro for simplifying your .emacs" tar ((:commit . "05a4033b830bf52c596ceedea10b2cbd91f85fdb") (:url . "https://github.com/jwiegley/use-package") (:keywords "dotemacs" "startup" "speed" "config" "package"))]) (usage-memo . [(20110722 851) nil "integration of Emacs help system and memo" single ((:url . "http://www.emacswiki.org/cgi-bin/wiki/download/usage-memo.el") (:keywords "convenience" "languages" "lisp" "help" "tools" "docs"))]) (urlenc . [(20140116 656) nil "URL encoding/decoding utility for Emacs." single ((:commit . "835a6dcb783bbe84714bae87a3464aa0b128bfac") (:url . "https://github.com/buzztaiki/urlenc-el") (:keywords "url"))]) (url-shortener . [(20170804 1942) nil "shorten long url and expand tinyurl" single ((:commit . "06db8270213b9e352d6c335b0663059a1353d05e") (:url . "https://github.com/yuyang0/url-shortener"))]) (uptimes . [(20170830 533) ((cl-lib (0 5)) (emacs (24))) "Track and display emacs session uptimes." single ((:commit . "c2c1b44b16a0fd873193b17c580ef3dfdacea580") (:url . "https://github.com/davep/uptimes.el") (:keywords "processes" "uptime"))]) (untitled-new-buffer . [(20161212 708) ((emacs (24 4)) (magic-filetype (0 2 0))) "Open untitled new buffer like other text editors." single ((:commit . "4eabc6937b0e83062ffce9de0d42110224063a6c") (:url . "https://github.com/zonuexe/untitled-new-buffer.el") (:keywords "files" "convenience"))]) (unkillable-scratch . [(20160504 1903) nil "Disallow buffers from being killed by regexp -- default is *scratch* buffer" single ((:commit . "676a5a97658830caece18fa65a23e3d113933151") (:keywords "scratch"))]) (universal-emotions-emoticons . [(20171209 1820) ((emacs (24 4))) "Emoticons For The Six Universal Expressions" single ((:commit . "9f249b39172bf9b8e148856ad941eee485161215") (:url . "https://github.com/grettke/universal-emotions-emoticons") (:keywords "convenience" "docs" "languages"))]) (unison-mode . [(20160513 801) nil "Syntax highlighting for unison file synchronization program" single ((:commit . "0bd6a65c0d12f87fcf7bdff15fe54444959b93bf") (:url . "https://github.com/impaktor/unison-mode") (:keywords "symchronization" "unison"))]) (unison . [(20160704 40) ((emacs (24 1))) "sync with Unison" single ((:commit . "a78a04c0d1398d00f75a1bd4799622a65bcb0f28") (:url . "http://github.com/unhammer/unison.el") (:keywords "sync"))]) (unipoint . [(20140113 1424) nil "a simple way to insert unicode characters by TeX name" single ((:commit . "5da04aebac35a5c9e1d8704f2231808d42f4b36a") (:url . "https://github.com/apgwoz/unipoint"))]) (unify-opening . [(20171122 1212) ((emacs (24 4))) "Unify the mechanism to open files" single ((:commit . "502469ddba6d8d52159f53976265f7d956b6b17c") (:url . "https://github.com/DamienCassou/unify-opening"))]) (unidecode . [(20140317 2118) ((cl-lib (0 4))) "Convert Unicode text into safe ASCII strings" tar ((:commit . "9e279e88a689584027d5a1b088fe5def25d0f75c"))]) (unicode-whitespace . [(20140508 1341) ((ucs-utils (0 7 6)) (list-utils (0 4 2)) (persistent-soft (0 8 8)) (pcache (0 2 3))) "teach whitespace-mode about fancy characters" single ((:commit . "a18c6b38d78b94f2eb1dcc4cb4fa91b6a17efabe") (:url . "http://github.com/rolandwalker/unicode-whitespace") (:keywords "faces" "wp" "interface"))]) (unicode-troll-stopper . [(20151023 1831) nil "Minor mode for Highlighting Unicode homoglyphs" single ((:commit . "15e4b57b78bf643bb56e5000078030cbb5c66e2a") (:url . "https://github.com/camsaul/emacs-unicode-troll-stopper") (:keywords "unicode"))]) (unicode-progress-reporter . [(20140508 1341) ((emacs (24 1 0)) (ucs-utils (0 7 6)) (list-utils (0 4 2)) (persistent-soft (0 8 8)) (pcache (0 2 3))) "Progress-reporter with fancy characters" single ((:commit . "5e66724fd7d15743213b082474d798117b194494") (:url . "http://github.com/rolandwalker/unicode-progress-reporter") (:keywords "interface"))]) (unicode-input . [(20141218 2320) nil "Support for unicode character input" single ((:keywords "unicode" "input"))]) (unicode-fonts . [(20150826 1532) ((font-utils (0 7 8)) (ucs-utils (0 8 2)) (list-utils (0 4 2)) (persistent-soft (0 8 10)) (pcache (0 3 1))) "Configure Unicode fonts" single ((:commit . "a36597d83e0248bd0e6b2c1d5fb95bff72add527") (:url . "http://github.com/rolandwalker/unicode-fonts") (:keywords "i18n" "faces" "frames" "wp" "interface"))]) (unicode-escape . [(20160614 534) ((emacs (24)) (names (20151201 0)) (dash (2 12 1))) "Escape/Unescape unicode notations" single ((:commit . "fc69ec780d9e54c364a9252bd0cf1d2507f3fab7") (:url . "https://github.com/kosh04/unicode-escape.el") (:keywords "i18n" "unicode"))]) (unicode-enbox . [(20140508 1341) ((string-utils (0 3 2)) (ucs-utils (0 7 6)) (list-utils (0 4 2)) (persistent-soft (0 8 8)) (pcache (0 2 3))) "Surround a string with box-drawing characters" single ((:commit . "77074fac1994a4236f111d6a1d0cf79ea3fca151") (:url . "http://github.com/rolandwalker/unicode-enbox") (:keywords "extensions" "interface"))]) (unicode-emoticons . [(20150204 308) nil "Shortcuts for common unicode emoticons" single ((:commit . "fb18631f342b0243cf77cf59ed2067c47aae5233") (:url . "https://github.com/hagleitn/unicode-emoticons") (:keywords "games" "entertainment" "comms"))]) (unfill . [(20170722 1846) nil "Unfill paragraphs or regions, and toggle between filled & unfilled" single ((:commit . "df0c4dee19a3874b11c7c7f04e8a2fba629fda9b") (:url . "https://github.com/purcell/unfill") (:keywords "utilities"))]) (undohist . [(20150315 542) ((cl-lib (1 0))) "Persistent undo history for GNU Emacs" single ((:commit . "d2239a5f736724ceb9e3b6bcaa86f4064805cda0") (:keywords "convenience"))]) (undo-tree . [(20170706 246) nil "Treat undo history as a tree" single ((:commit . "e9a9102f515acd7523158f20e83f300600374989") (:url . "http://www.dr-qubit.org/emacs.php") (:keywords "convenience" "files" "undo" "redo" "history" "tree"))]) (underwater-theme . [(20131117 1602) nil "A gentle, deep blue color theme" single ((:commit . "4eb9ef014f580adc135d91d1cd68d37a310640b6") (:keywords "faces"))]) (underline-with-char . [(20170814 223) ((emacs (24))) "Underline with a char" single ((:commit . "6daeba77e17dc11558ca3ccb0495524f5104d581") (:keywords "convenience"))]) (undercover . [(20170502 912) ((emacs (24)) (dash (2 0 0)) (shut-up (0 3 2))) "Test coverage library for Emacs Lisp" single ((:commit . "d947e6410a3b269c657645b499a413d90d4b69ca") (:url . "https://github.com/sviridov/undercover.el") (:keywords "lisp" "tests" "coverage" "tools"))]) (uncrustify-mode . [(20130707 659) nil "Minor mode to automatically uncrustify." single ((:commit . "73893d000361e95784911e5ec268ad0ab2a1473c") (:keywords "uncrustify"))]) (unbound . [(20160505 2355) nil "Find convenient unbound keystrokes" single ((:keywords "keyboard"))]) (ukrainian-holidays . [(20130720 649) nil "Ukrainian holidays for Emacs calendar." single ((:commit . "e52b0c92843e9f4d0415a7ba3b8559785497d23d") (:url . "https://github.com/abo-abo/ukrainian-holidays"))]) (ujelly-theme . [(20170905 1505) nil "Ujelly theme for GNU Emacs 24 (deftheme)" single ((:commit . "d08fe8e01db6df151b38c3001fba239a9a22369a") (:url . "http://github.com/marktran/color-theme-ujelly"))]) (uimage . [(20160901 521) nil "An iimage like mode with the ability to display url images" single ((:commit . "9893d09160ef7e8c0ecdcd74fca99ffeb5f9d70d") (:keywords "lisp" "url" "image"))]) (ucs-utils . [(20150826 714) ((persistent-soft (0 8 8)) (pcache (0 2 3)) (list-utils (0 4 2))) "Utilities for Unicode characters" tar ((:commit . "cbfd42f822bf5717934fa2d92060e6e24a813433") (:url . "http://github.com/rolandwalker/ucs-utils") (:keywords "i18n" "extensions"))]) (ucs-cmds . [(20170308 1512) nil "Commands to create commands that insert Unicode chars." single ((:url . "https://www.emacswiki.org/emacs/download/ucs-cmds.el") (:keywords "unicode" "characters" "encoding" "commands" "ucs-names"))]) (ubuntu-theme . [(20150805 806) nil "A theme inspired by the default terminal colors in Ubuntu" single ((:commit . "88b0eefc75d4cbcde103057e1c5968d4c3052f69") (:url . "http://github.com/rocher/ubuntu-theme"))]) (typoscript-mode . [(20170126 112) ((emacs (24 4)) (use-package (0))) "mode for TypoScript files" single ((:commit . "44e7567e921573c4f33c537b827f71fb1f565c32") (:url . "https://github.com/ksjogo/typoscript-mode") (:keywords "typo3" "typoscript"))]) (typo . [(20171209 223) nil "Minor mode for typographic editing" single ((:commit . "9dad93b6f367f02f52c8d9bf15d446d922cec294") (:url . "https://github.com/jorgenschaefer/typoel") (:keywords "convenience" "wp"))]) (typit . [(20171231 2214) ((emacs (24 4)) (f (0 18)) (mmt (0 1 1))) "Typing game similar to tests on 10 fast fingers" tar ((:commit . "41309d8a64a992f532753093742c15d413c446b5") (:url . "https://github.com/mrkkrp/typit") (:keywords "games"))]) (typing-game . [(20160426 520) nil "a simple typing game" single ((:commit . "616435a5270274f4c7b698697674dbb2039049a4") (:keywords "lisp" "game"))]) (typing . [(20171115 2331) nil "The Typing Of Emacs" single ((:commit . "1ada06484695b8959f4a7c41cacf7f78c2aad998") (:url . "http://www.emacswiki.org/emacs/TypingOfEmacs") (:keywords "games"))]) (typescript-mode . [(20171229 810) nil "Major mode for editing typescript" single ((:commit . "330c887241cf585aa4e2e3f3e9d851f28b92b08e") (:url . "http://github.com/ananthakumaran/typescript.el") (:keywords "typescript" "languages"))]) (typed-clojure-mode . [(20151003 1122) ((clojure-mode (2 1 1)) (cider (0 10 0 -3))) "Typed Clojure minor mode for Emacs" tar ((:commit . "3abd53d8cc1ad77ffe76e02849d0ab7731fd8364") (:url . "https://github.com/typedclojure/typed-clojure-mode"))]) (twittering-mode . [(20180107 412) nil "Major mode for Twitter" single ((:commit . "c27d9b5b1dd20a1600e89909ac9c0ccd08af9bf9") (:url . "http://twmode.sf.net/") (:keywords "twitter" "web"))]) (twilight-theme . [(20120412 603) nil "Twilight theme for GNU Emacs 24 (deftheme)" single ((:commit . "77c4741cb3dcf16e53d06d6c2ffdc660c40afb5b"))]) (twilight-bright-theme . [(20130605 143) nil "A Emacs 24 faces port of the TextMate theme" single ((:commit . "322157cb2f3bf7920ecd209dafc31bc1c7959f49") (:url . "https://github.com/jimeh/twilight-bright-theme.el") (:keywords "themes"))]) (twilight-anti-bright-theme . [(20160622 148) nil "A soothing Emacs 24 light-on-dark theme" single ((:commit . "523b95fcdbf4a6a6483af314ad05354a3d80f23f") (:url . "https://github.com/jimeh/twilight-anti-bright-theme.el") (:keywords "themes"))]) (twig-mode . [(20130220 1050) nil "A major mode for twig" single ((:commit . "2849f273a4855d3314a9c0cc84134f5b28ad5ea6"))]) (turnip . [(20150308 2329) ((dash (2 6 0)) (s (1 9 0))) "Interacting with tmux from Emacs" single ((:commit . "2fd32562fc6fc1cda6d91aa939cfb29f9b16e9de") (:keywords "terminals" "tools"))]) (turkish . [(20170910 811) nil "Convert to Turkish characters on-the-fly" single ((:commit . "9831a316c176bb21a1b91226323ea4133163e00c") (:url . "http://www.denizyuret.com/2006/11/emacs-turkish-mode.html") (:keywords "turkish" "languages" "automatic" "conversion"))]) (turing-machine . [(20170512 1438) ((emacs (24 4)) (cl-lib (0 6 1))) "Single-tape Turing machine simulator" single ((:commit . "4b5901a13b38028b05ce19cecc78bcd2f708f97d") (:url . "http://github.com/therockmandolinist/turing-machine") (:keywords "turing" "machine" "simulation"))]) (tup-mode . [(20140410 914) nil "Major mode for editing files for Tup" single ((:commit . "bcc100c6485f1c81fdcd1215dfc6c41a81c215c8") (:url . "https://github.com/ejmr/tup-mode"))]) (tumblesocks . [(20140215 1247) ((htmlize (1 39)) (oauth (1 0 3)) (markdown-mode (1 8 1))) "An Emacs tumblr client." tar ((:commit . "85a6cdc2db3390593fd886c474959b675460b310"))]) (tumble . [(20160111 2329) ((http-post-simple (0)) (cl-lib (0 5))) "an Tumblr mode for Emacs" single ((:commit . "e8fd7643cccf2b6ea4170f0c5f1f87d007e7fa00") (:keywords "tumblr"))]) (tuareg . [(20171204 1417) ((caml (3 12 0 1))) "OCaml mode for Emacs." tar ((:commit . "a6d1589e256d861bfb51c59756b0aa25e88dfb89") (:url . "https://github.com/ocaml/tuareg") (:keywords "ocaml" "languages"))]) (ttl-mode . [(20160505 132) nil "mode for Turtle (and Notation 3)" single nil]) (tt-mode . [(20130804 410) nil "Emacs major mode for editing Template Toolkit files." single ((:commit . "85ed3832e7eef391f7879d9990d59c7a3493c15e"))]) (tss . [(20150913 708) ((auto-complete (1 4 0)) (json-mode (1 1 0)) (log4e (0 2 0)) (yaxception (0 1))) "provide a interface for auto-complete.el/flymake.el on typescript-mode." tar ((:commit . "81ac6351a2ae258fd0ebf916dae9bd5a179fefd0") (:url . "https://github.com/aki2o/emacs-tss") (:keywords "typescript" "completion"))]) (ts-comint . [(20171105 2247) nil "Run a Typescript interpreter in an inferior process window." single ((:commit . "8817dc7b3a6eb78c3cad42e5677c2113274a1963") (:url . "https://github.com/josteink/ts-comint") (:keywords "typescript" "node" "inferior-mode" "convenience"))]) (try . [(20170226 805) ((emacs (24))) "Try out Emacs packages." single ((:commit . "271b0a362cadf44d0694628b9e213f54516ef913") (:url . "http://github.com/larstvei/try") (:keywords "packages"))]) (truthy . [(20140508 1341) ((list-utils (0 4 2))) "Test the content of a value" single ((:commit . "8ed8d07772aa8457554547eb17e264b5df2b4a69") (:url . "http://github.com/rolandwalker/truthy") (:keywords "extensions"))]) (trr . [(20170221 42) nil "a type-writing training program on GNU Emacs." tar ((:commit . "83660d8343ef3367837354dc684dfdde2f95826a") (:keywords "games" "faces"))]) (trident-mode . [(20130726 1207) ((emacs (24)) (slime (20130526)) (skewer-mode (1 5 0)) (dash (1 0 3))) "Live Parenscript interaction" single ((:commit . "ad3201f47e114de35df189c3d80f0fdea9507ea9") (:url . "https://github.com/johnmastro/trident-mode.el") (:keywords "languages" "lisp" "processes" "tools"))]) (treepy . [(20170722 355) ((emacs (25 1))) "Generic tree traversal tools" single ((:commit . "282fbc94747fe2a00d36e2a74d147c8fa0ac4be7") (:url . "https://github.com/volrath/treepy.el") (:keywords "lisp" "maint" "tools"))]) (treemacs-projectile . [(20171204 845) ((projectile (0 14 0)) (treemacs (0))) "Projectile integration for treemacs" single ((:commit . "bca3ee8cea8ea56a25f81b0f88d6747bdeaa7722") (:url . "https://github.com/Alexander-Miller/treemacs"))]) (treemacs-evil . [(20171225 951) ((evil (1 2 12)) (treemacs (0))) "Evil mode integration for treemacs" single ((:commit . "4397c144c5bbff91f86101397cc10855be3aa8d5") (:url . "https://github.com/Alexander-Miller/treemacs"))]) (treemacs . [(20180107 1246) ((emacs (24 4)) (cl-lib (0 5)) (dash (2 11 0)) (s (1 10 0)) (f (0 11 0)) (ace-window (0 9 0)) (pfuture (1 2)) (hydra (0 13 2))) "A tree style file explorer package" tar ((:commit . "2dabf88d5948a04d0313b0195be397761fc22b58") (:url . "https://github.com/Alexander-Miller/treemacs"))]) (tree-mode . [(20151104 531) nil "A mode to manage tree widgets" single ((:commit . "b06078826d5875d74b0e7b7ac47b0d0917610534") (:keywords "help" "convenience" "widget"))]) (travis . [(20150825 438) ((s (1 9 0)) (dash (2 9 0)) (pkg-info (0 5 0)) (request (0 1 0))) "Emacs client for Travis" tar ((:commit . "754ef07c17fed17ab03664ad11e2b0b2ef5e78ed") (:url . "https://github.com/nlamirault/emacs-travis") (:keywords "travis"))]) (transpose-mark . [(20150405 16) nil "Transpose data using the Emacs mark" single ((:commit . "667327602004794de97214cf336ac61650ef75b7") (:keywords "transpose" "convenience"))]) (transpose-frame . [(20151126 626) nil "Transpose windows arrangement in a frame" single ((:commit . "011f420c3496b69fc22d789f64cb8091834feba7") (:keywords "window"))]) (transmission . [(20180101 1803) ((emacs (24 4)) (let-alist (1 0 5))) "Interface to a Transmission session" single ((:commit . "b52760e0160f99312a1773953e7725800c13bb40") (:keywords "comm" "tools"))]) (transfer-sh . [(20160828 424) ((async (1 0))) "Simple interface for sending buffer contents to transfer.sh" single ((:commit . "70cd5c50b56ed2597221796014298417f503d10f") (:keywords "cloud" "upload" "share"))]) (tramp-term . [(20141104 1345) nil "Automatic setup of directory tracking in ssh sessions." single ((:commit . "983ed67ee65d26a51c641f306fa6b921ec83eeaf") (:url . "https://github.com/randymorris/tramp-term.el") (:keywords "tramp" "ssh"))]) (tramp-hdfs . [(20170821 620) ((emacs (24 4))) "Tramp extension to access hadoop/hdfs file system in Emacs" single ((:commit . "b64f24d0419a80dffaa2c4ecec317aa2bba56e35") (:keywords "tramp" "emacs" "hdfs" "hadoop" "webhdfs" "rest"))]) (tracwiki-mode . [(20150119 821) ((xml-rpc (1 6 8))) "Emacs Major mode for working with Trac" single ((:commit . "6a620444d59b438f42383b48cd4c19c03105dba6") (:keywords "trac" "wiki" "tickets"))]) (tracking . [(20171210 1302) nil "Buffer modification tracking" tar ((:commit . "e71a66df56008baa97e657f4fdf1e7d3daf4e578") (:url . "https://github.com/jorgenschaefer/circe/wiki/Tracking"))]) (traad . [(20180104 2351) ((dash (2 13 0)) (deferred (0 3 2)) (popup (0 5 0)) (request (0 2 0)) (request-deferred (0 2 0)) (virtualenvwrapper (20151123))) "emacs interface to the traad refactoring server." single ((:commit . "ad160e32f4cc9849aa570ed8e29269a0845921ae") (:url . "https://github.com/abingham/traad"))]) (tql-mode . [(20170723 1954) ((emacs (24))) "TQL mode" single ((:commit . "488add79eb3fc8ec02aedaa997fe1ed9e5c3e638") (:keywords "languages" "tql"))]) (toxi-theme . [(20160424 1426) ((emacs (24))) "A dark color theme by toxi" single ((:url . "http://bitbucket.org/postspectacular/toxi-theme/"))]) (tox . [(20160810 855) nil "Launch current python test with tox" single ((:commit . "7655eb254038d5e34433e8a9d66b3ffc9c72e40c") (:url . "https://github.com/chmouel/tox.el") (:keywords "convenience" "tox" "python" "tests"))]) (totd . [(20150519 740) ((s (1 9 0)) (cl-lib (0 5))) "Display a random daily emacs command." single ((:commit . "ca47b618ea8290776cdb5b0f1c2c335691f69660") (:keywords "help"))]) (total-lines . [(20171227 439) ((emacs (24 3))) "Keep track of a buffer's total number of lines" single ((:commit . "c762f08d039c8103f71c747e00304f209c2254f4") (:url . "https://github.com/hinrik/total-lines") (:keywords "convenience" "mode-line"))]) (tornado-template-mode . [(20141128 208) nil "A major mode for editing tornado templates" single ((:commit . "667c0663dbbd279b6c345446b9f2bc50eb52b747"))]) (top-mode . [(20130605 1039) nil "run \"top\" from emacs" single ((:keywords "extensions" "processes"))]) (tool-bar+ . [(20170307 1542) nil "Extensions to standard library tool-bar.el" single ((:url . "https://www.emacswiki.org/emacs/download/tool-bar%2b.el") (:keywords "tool-bar" "convenience" "mouse" "button" "frame"))]) (tommyh-theme . [(20131004 1630) nil "A bright, bold-colored theme for emacs" single ((:commit . "46d1c69ee0a1ca7c67b569b891a2f28fed89e7d5"))]) (toml-mode . [(20161107 1000) ((emacs (24)) (cl-lib (0 5))) "Major mode for editing TOML files" single ((:commit . "f6c61817b00f9c4a3cab1bae9c309e0fc45cdd06") (:url . "https://github.com/dryman/toml-mode.el") (:keywords "data" "toml"))]) (toml . [(20130903 555) nil "TOML (Tom's Obvious, Minimal Language) parser" single ((:commit . "9633a6872928e737a2335aae1065768b23d8c3b3") (:url . "https://github.com/gongo/emacs-toml") (:keywords "toml" "parser"))]) (tomatinho . [(20161023 1853) nil "Simple and beautiful pomodoro timer" tar ((:commit . "7c301d343ecf7feac7348d1146075b2d9ba7d77a") (:keywords "time" "productivity" "pomodoro technique"))]) (toggle-window . [(20141207 748) nil "toggle current window size between half and full" single ((:commit . "e82c60e543933880402ede11e9423e48a17dde53") (:url . "https://github.com/deadghost/toggle-window") (:keywords "hide" "window"))]) (toggle-test . [(20140722 2237) nil "Toggle between source and test files in various programming languages" single ((:commit . "e969321f274903d705995a7d0345a257576ec5ff") (:url . "https://github.com/rags/toggle-test") (:keywords "tdd" "test" "toggle" "productivity"))]) (toggle-quotes . [(20140710 226) nil "Toggle between single and double quoted string" single ((:commit . "33abc221d6887f0518337851318065cd86c34b03") (:url . "https://github.com/toctan/toggle-quotes.el") (:keywords "convenience" "quotes"))]) (toggle . [(20160331 100) ((cl-lib (0 5))) "quickly open corresponding file (eg test vs impl)." single ((:commit . "c1b59448e103e32202423a56c873967033778a92") (:keywords "files" "extensions" "convenience"))]) (togetherly . [(20170425 2316) ((cl-lib (0 3))) "allow multiple clients to edit a single buffer online" single ((:commit . "a6491bd5dd84f2aded0cd112ff06ae76ff78dfeb") (:url . "http://hins11.yu-yake.com/"))]) (todotxt-mode . [(20150424 704) nil "Major mode for editing todo.txt files" single ((:commit . "dc6ae151edee88f329ba7abc5d39b7440002232f") (:keywords "wp" "files"))]) (todotxt . [(20170919 1141) nil "A major mode for editing todo.txt files" single ((:commit . "afa4079f15f705a4fa34ea8e14b122e73028f285") (:url . "https://github.com/rpdillon/todotxt.el") (:keywords "todo.txt" "todotxt" "todotxt.el"))]) (toc-org . [(20171009 156) nil "add table of contents to org-mode files (formerly, org-toc)" single ((:commit . "4d259c9cea3f575e5210974c025ebe3d51cc317f") (:url . "https://github.com/snosov1/toc-org") (:keywords "org-mode" "org-toc" "toc-org" "org" "toc" "table" "of" "contents"))]) (tmmofl . [(20121025 401) nil "Calls functions dependant on font lock highlighting at point" single ((:commit . "532aa6978e994e2b069ffe37aaf9a0011a07dadc") (:keywords "minor mode" "font lock" "toggling."))]) (tldr . [(20171023 1929) ((emacs (24 3))) "tldr client for Emacs" single ((:commit . "fe1bd5cee3d30741c816f3ccc118b94105ceba4c") (:url . "https://github.com/kuanyui/tldr.el") (:keywords "tools" "docs"))]) (tinysegmenter . [(20141124 213) ((cl-lib (0 5))) "Super compact Japanese tokenizer in Javascript ported to emacs lisp" single ((:commit . "872134704bd25c13a4c59552433da4c6881b5230") (:url . "https://github.com/myuhe/tinysegmenter.el") (:keywords "convenience"))]) (tiny-menu . [(20161213 435) ((emacs (24 4))) "Display tiny menus." single ((:commit . "05563b94537b6eb22aeddedef2a6e59e3f88d073") (:url . "https://github.com/aaronbieber/tiny-menu.el") (:keywords "menu" "tools"))]) (tiny . [(20170903 249) nil "Quickly generate linear ranges in Emacs" single ((:commit . "012b2e7a67b9f067bbfa0292479861ffbaa201fa") (:url . "https://github.com/abo-abo/tiny") (:keywords "convenience"))]) (tinkerer . [(20170906 524) ((s (1 2 0))) "Elisp wrapper for Tinkerer Blogging Engine." single ((:commit . "e34135555f3748b578c7f8706dfd0c888fb87581") (:url . "https://github.com/yyr/tinkerer.el") (:keywords "tinkerer" "blog" "wrapper"))]) (timp . [(20160618 103) ((emacs (24 4)) (cl-lib (0 5)) (fifo-class (1 0)) (signal (1 0))) "Multithreading library" tar ((:commit . "66b21934b1eb8ee428c06dd64b3562ad44776a35") (:url . "https://github.com/mola-T/timp") (:keywords "internal" "lisp" "processes" "tools"))]) (timonier . [(20170411 100) ((emacs (24 4)) (s (1 11 0)) (f (0 19 0)) (dash (2 12 0)) (pkg-info (0 5 0)) (hydra (0 13 6)) (request (0 2 0)) (all-the-icons (2 0 0))) "Manage Kubernetes Applications" tar ((:commit . "0a150ea87bf695b43cf1740dfd7e553e0ae7601c") (:url . "https://github.com/nlamirault/timonier") (:keywords "kubernetes" "docker"))]) (timesheet . [(20160530 1445) ((s (1)) (org (7)) (auctex (11))) "Timesheet management add-on for org-mode" tar ((:commit . "2ed6fea9b508eb7eaff659d9a34a09ba064d4df8") (:url . "https://github.com/tmarble/timesheet.el") (:keywords "org" "timesheet"))]) (timer-revert . [(20150122 1232) nil "minor mode to revert buffer for a given time interval." tar ((:commit . "615c91dec8b440d2b9b7c725dd733d7432564e45"))]) (timecop . [(20160520 352) ((cl-lib (0 5)) (datetime-format (0 0 1))) "Freeze Time for testing" single ((:commit . "e6427538b547cbe02e1bd6ed4b765c73620bdae8") (:url . "https://github.com/zonuexe/emacs-datetime") (:keywords "datetime" "testing"))]) (time-ext . [(20170126 415) nil "more function for time/date" single ((:commit . "d128becf660fe3f30178eb1b05cd266741f4784a") (:url . "http://www.emacswiki.org/cgi-bin/wiki/download/time-ext.el") (:keywords "lisp"))]) (tile . [(20161224 1957) ((emacs (25 1)) (s (1 9 0)) (dash (2 12 0)) (stream (2 2 3))) "Tile windows with layouts" single ((:commit . "22660f21f6e95de5aba55cd5d293d4841e9a4661") (:url . "https://github.com/IvanMalison/tile") (:keywords "tile" "tiling" "window" "manager" "dynamic" "frames"))]) (tidy . [(20111222 956) nil "Interface to the HTML Tidy program" single ((:url . "http://www.emacswiki.org/elisp/tidy.el") (:keywords "languages"))]) (tide . [(20171214 543) ((dash (2 10 0)) (s (1 11 0)) (flycheck (27)) (typescript-mode (0 1)) (cl-lib (0 5))) "Typescript Interactive Development Environment" tar ((:commit . "008f8f9cf44c81e230d58ed3d932e0ee43c2e09f") (:url . "http://github.com/ananthakumaran/tide") (:keywords "typescript"))]) (tidal . [(20171207 1452) ((haskell-mode (16)) (emacs (24))) "Interact with TidalCycles for live coding patterns" single ((:commit . "9c7a5bd0a237e199da83258f8b383ed74d992c74") (:url . "https://github.com/tidalcycles/Tidal") (:keywords "tools"))]) (tickscript-mode . [(20171218 1803) ((emacs (24 1))) "A major mode for Tickscript files" single ((:commit . "f0579f38ff14954df5002ce30ae6d4a2c978d461") (:url . "https://github.com/msherry/tickscript-mode") (:keywords "languages"))]) (thumb-through . [(20120118 2134) nil "Plain text reader of HTML documents" single ((:commit . "08d8fb720f93c6172653e035191a8fa9c3305e63") (:keywords "html"))]) (thumb-frm . [(20170307 1540) ((frame-fns (0)) (frame-cmds (0))) "Commands for thumbnail frames." single ((:url . "https://www.emacswiki.org/emacs/download/thumb-frm.el") (:keywords "frame" "icon"))]) (thrift . [(20140312 1348) nil "Major mode for Apache Thrift files" single ((:commit . "1b855d47aab32dc89e6e4271e8ac8872b049e1ba") (:keywords "files"))]) (threes . [(20160820 542) ((emacs (24)) (seq (1 11))) "A clone of Threes (a tiny puzzle game)" single ((:commit . "6981acb30b856c77cba6aba63fefbf102cbdfbb2") (:url . "https://github.com/xuchunyang/threes.el") (:keywords "games"))]) (thread-dump . [(20170816 1150) nil "Java thread dump viewer" single ((:commit . "204c9600242756d4b514bb5ff6293e052bf4b49d") (:url . "http://github.com/nd/thread-dump.el"))]) (thinks . [(20170802 428) ((cl-lib (0 5))) "Insert text in a think bubble." single ((:commit . "c02f236abc8c2025d9f01460b09b89ebdc96e28d") (:url . "https://github.com/davep/thinks.el") (:keywords "convenience" "quoting"))]) (thingopt . [(20160520 1618) nil "Thing at Point optional utilities" single ((:commit . "5679815852652479f3b3c9f3a98affc927384b2c") (:keywords "convenience"))]) (thingatpt+ . [(20170307 1539) nil "Extensions to `thingatpt.el'." single ((:url . "https://www.emacswiki.org/emacs/download/thingatpt%2b.el") (:keywords "extensions" "matching" "mouse"))]) (thing-cmds . [(20170726 1355) ((hide-comnt (0))) "Commands that use things, as defined by `thingatpt.el'." single ((:url . "https://www.emacswiki.org/emacs/download/thing-cmds.el") (:keywords "thingatpt" "thing" "region" "selection"))]) (thesaurus . [(20121125 1137) nil "replace a word with a synonym looked up in a web service." single ((:url . "http://www.emacswiki.org/cgi-bin/wiki/thesaurus.el") (:keywords "thesaurus" "synonym"))]) (therapy . [(20151113 1153) ((emacs (24))) "Hooks for managing multiple Python major versions" single ((:commit . "775a92bb7b6b0fcc5b38c0b5198a9d0a1bef788a") (:url . "https://github.com/abingham/therapy"))]) (theme-looper . [(20170425 606) ((cl-lib (0 5))) "Loop thru the available color-themes" single ((:commit . "0feeed3c93fc54305499bda5953112487f25a3a0") (:url . "http://ismail.teamfluxion.com") (:keywords "convenience" "color-themes"))]) (theme-changer . [(20171221 1127) nil "Sunrise/Sunset Theme Changer for Emacs" single ((:commit . "61945695a30d678e6a5d47cbe7c8aff59a8c30ea") (:url . "https://github.com/hadronzoo/theme-changer") (:keywords "color-theme" "deftheme" "solar" "sunrise" "sunset"))]) (tfs . [(20120508 1120) nil "MS Team Foundation Server commands for Emacs." single ((:url . "http://cheeso.members.winisp.net/srcview.aspx?dir=emacs&file=tfs.el"))]) (tf2-conf-mode . [(20161209 820) nil "TF2 Configuration files syntax highlighting" single ((:commit . "536950f64c071ffd8495fb2c7ac7c63a11e25f93") (:url . "https://github.com/wynro/emacs-tf2-conf-mode") (:keywords "languages"))]) (textx-mode . [(20170516 211) ((emacs (24 3))) "Major mode for editing TextX files" single ((:commit . "72f9f0c5855b382024f0da8f56833c22a70a5cb3") (:url . "https://github.com/novakboskov/textx-mode") (:keywords "textx"))]) (textmate-to-yas . [(20160409 1008) nil "Import Textmate macros into yasnippet syntax" tar ((:commit . "be3a768b7ac4c2e24b9d4aa6e9ac1d916cdc5a73") (:url . "https://github.com/mlf176f2/textmate-to-yas.el/") (:keywords "yasnippet" "textmate"))]) (textmate . [(20110816 1446) nil "TextMate minor mode for Emacs" single ((:commit . "350918b070148f0ace6d9d3cd4ebcaf15c1a8781") (:keywords "textmate" "osx" "mac"))]) (textile-mode . [(20170304 916) nil "Textile markup editing major mode" single ((:commit . "c37aaab809503df008209390e31e19abf4e23630"))]) (texfrag . [(20180109 1546) ((emacs (25)) (auctex (11 90 2))) "preview LaTeX fragments in alien major modes" single ((:commit . "204349999ed8655f1013267e90caed68c1e7b6e7") (:url . "https://github.com/TobiasZawada/texfrag") (:keywords "tex" "languages" "wp"))]) (tex-smart-umlauts . [(20160427 58) nil "Smart umlaut conversion for TeX." single ((:commit . "5261b931443558f4252489a1e6616034848aff02") (:url . "http://hub.darcs.net/lyro/tex-smart-umlauts") (:keywords "tex" "wp"))]) (test-simple . [(20170527 832) ((cl-lib (0))) "Simple Unit Test Framework for Emacs Lisp" single ((:commit . "b3b69f52207d3a8111421ad7ab9ed82abbe85316") (:url . "http://github.com/rocky/emacs-test-simple") (:keywords "unit-test"))]) (test-kitchen . [(20171129 1235) nil "Run test-kitchen inside of emacs" single ((:commit . "0fc0ca4808425f03fbeb8125246043723e2a179a") (:url . "http://github.com/jjasghar/test-kitchen-el") (:keywords "chef" "ruby" "test-kitchen"))]) (test-case-mode . [(20130525 734) ((fringe-helper (0 1 1))) "unit test front-end" single ((:commit . "6074df10ebc97ddfcc228c71c73db179e672dac3") (:url . "http://nschum.de/src/emacs/test-case-mode/") (:keywords "tools"))]) (test-c . [(20170316 1432) ((emacs (24 3))) "quickly test c code" single ((:commit . "5a8c22a0e5ae6e2b0157bf1c41f0fe798c562a21") (:url . "http://github.com/aaptel/test-c"))]) (terraform-mode . [(20170111 2117) ((emacs (24 3)) (hcl-mode (0 3))) "Major mode for terraform configuration file" single ((:commit . "6973d1acaba2835dfdf174f5a5e27de6366002e1") (:url . "https://github.com/syohex/emacs-terraform-mode"))]) (tern-django . [(20160221 1123) ((emacs (24)) (tern (0 0 1)) (f (0 17 1))) "Create tern projects for django applications." tar ((:commit . "46f2cd5e96bc804069f18455a828b8e4c5ec358a") (:url . "https://github.com/proofit404/tern-django"))]) (tern-context-coloring . [(20161217 2347) ((emacs (24 3)) (context-coloring (8 1 0)) (tern (0 0 1))) "Use Tern for context coloring" single ((:commit . "3a8e979d6cc83aabcb3dda3f5f31a6422532efba") (:url . "https://github.com/jacksonrayhamilton/tern-context-coloring") (:keywords "convenience" "faces" "tools"))]) (tern-auto-complete . [(20170521 1235) ((tern (0 0 1)) (auto-complete (1 4)) (cl-lib (0 5)) (emacs (24))) "Tern Completion by auto-complete.el" single ((:commit . "ae83725819286d3f134a6b9956f1117b341e1040"))]) (tern . [(20170925 1333) ((json (1 2)) (cl-lib (0 5)) (emacs (24))) "Tern-powered JavaScript integration" single ((:commit . "ae83725819286d3f134a6b9956f1117b341e1040") (:url . "http://ternjs.net/"))]) (terminal-here . [(20171022 552) ((emacs (24)) (cl-lib (0 5))) "Run an external terminal in current directory" single ((:commit . "b3659e13d3d41503b4fc59dd2c7ea622631fc3ec") (:url . "https://github.com/davidshepherd7/terminal-here") (:keywords "tools" "frames"))]) (termbright-theme . [(20151030 1935) ((emacs (24 1))) "a more usable theme for white-on-black terminals" single ((:commit . "bec6ab14336c0611e85f45486276004f16d20607") (:url . "https://github.com/bmastenbrook/termbright-theme-el") (:keywords "themes"))]) (term-run . [(20151228 105) nil "Run arbitrary command in terminal buffer" single ((:commit . "54650dbbabb13cb2a6c0670ff6b24b29717a6a8b") (:url . "https://github.com/10sr/term-run-el") (:keywords "utility" "shell" "command" "term-mode"))]) (term-projectile . [(20170421 105) ((emacs (24)) (term-manager (0 1 0)) (projectile (0 13 0))) "projectile terminal management" single ((:commit . "13a0f1637a1f075d70211ccb8162e63a18a474da") (:url . "https://www.github.com/IvanMalison/term-manager") (:keywords "projectile" "tools" "terminals" "vc"))]) (term-manager . [(20171020 141) ((dash (2 12 0)) (emacs (24 4))) "Contextual terminal management" tar ((:commit . "13a0f1637a1f075d70211ccb8162e63a18a474da") (:url . "https://www.github.com/IvanMalison/term-manager") (:keywords "terminals" "tools"))]) (term-cmd . [(20160517 345) ((emacs (24 0)) (dash (2 12 0)) (f (0 18 2))) "Send commands from programs running in term.el." tar ((:commit . "6c9cbc659b70241d2ed1601eea34aeeca0646dac"))]) (term-alert . [(20161119 145) ((emacs (24 0)) (term-cmd (1 1)) (alert (1 1)) (f (0 18 2))) "Notifications when commands complete in term.el." tar ((:commit . "47af9e6fe483ef0d393098c145f499362a33292a"))]) (term+mux . [(20140210 2349) ((term+ (0 1)) (tab-group (0 1))) "term+ terminal multiplexer and session management" single ((:commit . "81b60e80cf008472bfd7fad9233af2ef722c208a") (:url . "http://github.com/tarao/term+-el") (:keywords "terminal" "emulation"))]) (term+key-intercept . [(20140210 2350) ((term+ (0 1)) (key-intercept (0 1))) "term+ intercept key mapping" single ((:commit . "fd0771fd66b8c7a909aaac972194485c79ba48c4") (:url . "http://github.com/tarao/term+-el") (:keywords "terminal" "emulation"))]) (term+ . [(20170508 1717) ((emacs (24)) (cl-lib (0 5))) "term-mode enhancement" tar ((:commit . "c3c9239b339c127231860de43abfa08c44c0201a") (:url . "https://github.com/tarao/term-plus-el") (:keywords "terminal" "emulation"))]) (ten-hundred-mode . [(20161028 1536) ((cl-lib (0 5))) "use only the ten hundred most usual words" tar ((:commit . "bdcfda49b1819e82d61fe90947e50bb948cf7933"))]) (temporary-persistent . [(20161210 333) ((emacs (24 3)) (names (20151201 0)) (dash (2 12 1)) (s (1 10 0))) "Keep temp notes buffers persistent -*- lexical-binding: t" single ((:commit . "ac66f3054fc701d53f11ada9d2d9ab18ea481dc0") (:url . "https://github.com/kostafey/temporary-persistent") (:keywords "temp" "buffers" "notes"))]) (telephone-line . [(20171109 1616) ((emacs (24 4)) (cl-lib (0 5)) (cl-generic (0 2)) (seq (1 8))) "Rewrite of Powerline" tar ((:commit . "b3eaf4b8254bb1031f85ce7ac73ffdc856059d9a") (:url . "https://github.com/dbordak/telephone-line") (:keywords "mode-line"))]) (telepathy . [(20131209 458) nil "Access Telepathy from Emacs" single ((:commit . "211d785b02a29ddc254422fdcc3db45262582f8c") (:keywords "telepathy" "tools"))]) (tea-time . [(20120331 120) nil "Simple timer package, useful to make perfect tea." single ((:commit . "1f6cf0bdd27c5eb3508989c5095427781f858eca") (:keywords "timer" "tea-time"))]) (tdd-status-mode-line . [(20131123 916) nil "TDD status on the mode-line" single ((:commit . "4c082e62f4915b573338a97efcc6854d132323dc") (:url . "https://github.com/algernon/tdd-status-mode-line") (:keywords "faces" "tdd"))]) (tco . [(20160810 1712) ((dash (1 2 0)) (emacs (24))) "tail-call optimisation for Emacs lisp" single ((:commit . "97529ed7a0939c51ce0084c0aa8b12b313654735"))]) (tc . [(20150113 1926) nil "a Japanese input method with T-Code on Emacs" tar ((:commit . "6aa9d27c475be8d009adf9cd417f2cdf348a91e8"))]) (tbx2org . [(20140224 759) ((dash (2 5 0)) (s (1 8 0)) (cl-lib (0 4))) "Tinderbox to org-mode conversion" single ((:commit . "08e9816ba6066f56936050b58d07ceb2187ae6f7") (:url . "https://github.com/istib/tbx2org") (:keywords "org-mode"))]) (tblui . [(20161007 1212) ((dash (2 12 1)) (magit-popup (2 6 0)) (tablist (0 70)) (cl-lib (0 5))) "Define tabulated list UI easily" single ((:commit . "bb29323bb3e27093d50cb42db3a9329a096b6e4d") (:url . "https://github.com/Yuki-Inoue/tblui.el"))]) (tawny-mode . [(20170422 1502) ((cider (0 12)) (emacs (25))) "Ontology Editing with Tawny-OWL" single ((:commit . "a8fc8300481a1e033a3811ccda54e552392d1689"))]) (tao-theme . [(20171221 1001) nil "This package provides two parametrized uncoloured color themes for Emacs: tao-yin and tao-yang." tar ((:commit . "a97df8c51d77696787aaf55c67207f19c803fabe"))]) (tangotango-theme . [(20170924 809) nil "Tango Palette color theme for Emacs 24." single ((:commit . "e2f2ea9c35f06dfc43a29c91c14cf0cdb19f2144") (:url . "https://github.com/juba/color-theme-tangotango") (:keywords "tango" "palette" "color" "theme" "emacs"))]) (tango-plus-theme . [(20170214 908) nil "A color theme based on the tango palette" single ((:commit . "8ba8901397e3e9f1d53110487bfa0effc65015e7") (:url . "https://github.com/tmalsburg/tango-plus-theme"))]) (tango-2-theme . [(20120312 1325) nil "Tango 2 color theme for GNU Emacs 24" single ((:commit . "64e44c98e41ebbe3b827d54280e3b9615787daaa"))]) (take-off . [(20140531 217) ((emacs (24 3)) (web-server (0 1 0))) "Emacs remote web access" tar ((:commit . "aa9ea45566fc74febbb6ee9c409ecc4b59246215") (:url . "https://github.com/tburette/take-off"))]) (tagedit . [(20161121 55) ((s (1 3 1)) (dash (1 0 3))) "Some paredit-like features for html-mode" single ((:commit . "b3a70101a0dcf85498c92b7fcfa7fdbac869746c") (:keywords "convenience"))]) (tabula-rasa . [(20141215 2147) ((emacs (24 4))) "Distraction free writing mode" single ((:commit . "e85fff9de18dc31bc6a7aca726e34a95cc5459f5") (:url . "https://github.com/idomagal/Tabula-Rasa/blob/master/tabula-rasa.el") (:keywords "distraction free" "writing"))]) (tablist . [(20170219 1935) ((emacs (24 3))) "Extended tabulated-list-mode" tar ((:commit . "c834a84efb6efa32497efe1e73160fade741b836") (:keywords "extensions" "lisp"))]) (tabbar-ruler . [(20160801 2007) ((tabbar (2 0 1)) (powerline (2 3)) (mode-icons (0 4 0)) (cl-lib (0 5))) "Pretty tabbar, autohide, use both tabbar/ruler" tar ((:commit . "535568189aa12a3eff7f977d2783e57b6a65ab6a") (:url . "http://github.com/mlf176f2/tabbar-ruler.el") (:keywords "tabbar" "ruler mode" "menu" "tool bar."))]) (tabbar . [(20160524 1401) nil "Display a tab bar in the header line" tar ((:commit . "b6c285a7d59dcdb1f17716f0b60787922fa4be82") (:keywords "convenience"))]) (tab-jump-out . [(20151005 1830) ((dash (2 10)) (emacs (24 4))) "Use tab to jump out of delimiter pairs." single ((:commit . "1c3fec1826d2891177ea78e4e7cce1dc67e83e51") (:keywords "tab" "editing"))]) (tab-group . [(20140306 650) nil "Grouped tabs and their tabbar" single ((:commit . "5a290ec2608e4100fb188fd60ecb77affcc3465b") (:url . "http://github.com/tarao/tab-group-el") (:keywords "convenience" "tabs"))]) (ta . [(20160619 945) ((emacs (24 3)) (cl-lib (0 5))) "A tool to deal with Chinese homophonic characters" single ((:commit . "668ad41e71f374f8c32c8d0532f3d8485b355d35") (:url . "http://github.com/kuanyui/ta.el") (:keywords "tools"))]) (systemtap-mode . [(20151122 1140) nil "A mode for SystemTap" single ((:commit . "1a968c2b1f3a054bebf91ac49739d3a81ce050a9") (:url . "https://github.com/ruediger/systemtap-mode") (:keywords "tools" "languages"))]) (systemd . [(20180101 1803) ((emacs (24 4))) "Major mode for editing systemd units" tar ((:commit . "228f0b99ca3e1f3139ae8cacd15f9698d5b6da90") (:keywords "tools" "unix"))]) (system-specific-settings . [(20140818 757) nil "Apply settings only on certain systems" single ((:commit . "0050d85b2175095aa5ecf580a2fe43c069b0eef3") (:url . "https://github.com/DarwinAwardWinner/emacs-system-specific-settings") (:keywords "configuration"))]) (system-packages . [(20180109 1407) ((cl-lib (0 5))) "functions to manage system packages" single ((:commit . "936bb1a1f3df903e73d1485a14dc483a790b2573") (:url . "https://github.com/jabranham/system-packages"))]) (syntax-subword . [(20160519 1205) nil "make operations on words more fine-grained" single nil]) (syntactic-sugar . [(20140508 1341) nil "Effect-free forms such as if/then/else" single ((:commit . "7ddc4502c831abe1c4ad4c7d1ca628a2c9e13968") (:url . "http://github.com/rolandwalker/syntactic-sugar") (:keywords "extensions"))]) (syntactic-close . [(20180109 316) ((emacs (24)) (cl-lib (0 5))) "Insert closing delimiter" single ((:commit . "71228722aba804b6b3ff87cc0ffc90e604c4c719") (:url . "https://github.com/emacs-berlin/syntactic-close") (:keywords "languages" "convenience"))]) (synquid . [(20160930 850) ((flycheck (27)) (emacs (24 3))) "Major mode for editing Synquid files" single ((:commit . "28701ce1a15437202f53ab93a14bcba1de83fd2c") (:url . "https://github.com/cpitclaudel/synquid-mode") (:keywords "languages"))]) (synosaurus . [(20170621 957) ((cl-lib (0 5))) "An extensible thesaurus supporting lookup and substitution." tar ((:commit . "acc4c634eb7c7f6dd9bce8610efa7fc900e9c47b") (:url . "https://github.com/hpdeifel/synosaurus"))]) (synonyms . [(20170307 1537) nil "Look up synonyms for a word or phrase in a thesaurus." single ((:url . "https://www.emacswiki.org/emacs/download/synonyms.el") (:keywords "text" "dictionary" "thesaurus" "spelling" "apropos" "help"))]) (synonymous . [(20160721 2255) ((emacs (24)) (cl-lib (0 5)) (request (0 2 0))) "A thesaurus at your fingertips" single ((:commit . "1cbdc016c70ed3834c514621f9a33adc93707024") (:url . "http://github.com/toroidal-code/synonymous.el") (:keywords "utility"))]) (syndicate . [(20160603 823) ((evil (1 0))) "evil keybindings for org-mode" single ((:commit . "90cee202a06f5bab48268ebf9f62c43334b69f50") (:url . "https://github.com/KNX32542/syndicate.git") (:keywords "evil" "org" "bindings"))]) (sync-recentf . [(20160326 1301) nil "Synchronize the recent files list between Emacs instances" single ((:commit . "0052561d5c5b5c2684faedc3eead776aec06c3ed") (:url . "https://github.com/ffevotte/sync-recentf") (:keywords "recentf"))]) (symon-lingr . [(20150719 642) ((symon (1 1 2)) (cl-lib (0 5))) "A notification-based Lingr client powered by symon.el" single ((:commit . "056d1a473e36992ff5881e5ce6fdc331cead975f") (:url . "http://hins11.yu-yake.com/"))]) (symon . [(20170224 33) nil "tiny graphical system monitor" single ((:commit . "8dd8b6df49b03cd7d31b85aedbe9dd08fb922335") (:url . "http://hins11.yu-yake.com/"))]) (symbol-overlay . [(20171103 2306) ((emacs (24 3))) "Highlight symbols with keymap-enabled overlays" single ((:commit . "305ef1d283923d2b0f1cd751f57f71754ab714e6") (:url . "https://github.com/wolray/symbol-overlay/") (:keywords "faces" "matching"))]) (sx . [(20171225 1159) ((emacs (24 1)) (cl-lib (0 5)) (json (1 3)) (markdown-mode (2 0)) (let-alist (1 0 3))) "StackExchange client. Ask and answer questions on Stack Overflow, Super User, and the likes" tar ((:commit . "9488c03726464e4bd0ed0b448d203c5c7f8c212f") (:url . "https://github.com/vermiculus/sx.el/") (:keywords "help" "hypermedia" "tools"))]) (sws-mode . [(20150317 1245) nil "(S)ignificant (W)hite(S)pace mode" single ((:commit . "4dbde92542fc7ad61df38776980905a4721d642e") (:url . "https://github.com/brianc/jade-mode"))]) (swoop . [(20160120 915) ((ht (2 0)) (pcre2el (1 5)) (async (1 1)) (emacs (24))) "Peculiar buffer navigation for Emacs" tar ((:commit . "a5e475db7a9f5db02ba3d08cd3c1c3594e2e01d7") (:url . "https://github.com/ShingoFukuyama/emacs-swoop") (:keywords "swoop" "inner" "buffer" "search" "navigation"))]) (switch-window . [(20170718 1932) ((cl-lib (0 5))) "A *visual* way to choose a window to switch to" tar ((:commit . "67113287ba61ce1951363a49f54148743dcea51e") (:url . "https://github.com/dimitri/switch-window") (:keywords "window" "navigation"))]) (switch-buffer-functions . [(20171011 1004) nil "Hook run when current buffer changed" single ((:commit . "651696ef9dec7affbe51c81d9318288376c35899") (:url . "https://github.com/10sr/switch-buffer-functions-el") (:keywords "hook" "utility"))]) (swiper-helm . [(20151116 330) ((emacs (24 1)) (swiper (0 1 0)) (helm (1 5 3))) "Helm version of Swiper." single ((:commit . "57012ab626486fcb3dfba0ee6720b0625e489b8c") (:url . "https://github.com/abo-abo/swiper-helm") (:keywords "matching"))]) (swiper . [(20180102 1035) ((emacs (24 1)) (ivy (0 9 0))) "Isearch with an overview. Oh, man!" single ((:commit . "71476ff62b6c42f8a5cd7776f37ef8db0c1d8945") (:url . "https://github.com/abo-abo/swiper") (:keywords "matching"))]) (swift3-mode . [(20160918 550) ((emacs (24 4))) "Major-mode for Apple's Swift programming language." tar ((:commit . "4e51265c6905e17d8910e35b0b37cf51e20ecdfe") (:url . "https://github.com/taku0/swift3-mode") (:keywords "languages" "swift"))]) (swift-mode . [(20171228 2315) ((emacs (24 4)) (seq (2 3))) "Major-mode for Apple's Swift programming language." tar ((:commit . "8c45f69a078c41619a7a3db6d54a732c3fad8e3f") (:url . "https://github.com/swift-emacs/swift-mode") (:keywords "languages" "swift"))]) (sweetgreen . [(20151207 916) ((dash (2 12 1)) (helm (1 5 6)) (request (0 2 0)) (cl-lib (0 5))) "Order Salads from sweetgreen.com" single ((:commit . "a456dd7948a25da8ff007a142cf1325b4855d908") (:url . "https://www.github.com/CestDiego/sweetgreen.el") (:keywords "salad" "food" "sweetgreen" "request"))]) (swbuff-x . [(20130607 314) ((swbuff (19991231 1800))) "Modifications to David Ponce's swbuff" single ((:url . "http://www.emacswiki.org/elisp/swbuff-x.el") (:keywords "files" "convenience"))]) (swbuff . [(20160824 707) nil "Quick switch between Emacs buffers." single ((:commit . "8d5b2bec12503509554f9dd83b97c198b259db2b") (:keywords "extensions" "convenience"))]) (swap-regions . [(20160413 1023) ((emacs (24 3))) "Swap two regions of text" single ((:commit . "2789091b6f34c0d4b82546eb39c4e73dc96e8679") (:url . "https://github.com/xuchunyang/swap-regions.el") (:keywords "convenience"))]) (swap-buffers . [(20150506 1439) nil "The quickest way to swap buffers between windows. Based on switch-window package." single ((:commit . "46ab31359b70d935add6c6e9533443116dc51103") (:url . "https://github.com/ekazakov/swap-buffers") (:keywords "window" "swap" "buffer" "exchange"))]) (swagger-to-org . [(20160610 1756) ((emacs (24)) (cl-lib (0 5)) (json (1 4))) "Convert a swagger.json file into an org-mode file" single ((:commit . "181357c71ea24bede263f5706d8781ad65e16877") (:url . "https://github.com/ahungry/swagger-to-org") (:keywords "ahungry" "emacs" "swagger" "openapi" "orgmode" "org" "export"))]) (svg-mode-line-themes . [(20150425 1306) ((xmlgen (0 4))) "SVG-based themes for mode-line" tar ((:commit . "80a0e01839cafbd66899202e7764c33231974259") (:url . "https://github.com/sabof/svg-mode-line-themes"))]) (suscolors-theme . [(20161109 1215) nil "Colorful theme, inspired by Gruvbox." single ((:commit . "b946e7924aa02fa7441c970026898f17fe97601f") (:url . "https://github.com/TheSuspiciousWombat/SusColors-emacs"))]) (supergenpass . [(20130328 2248) nil "SuperGenPass for Emacs" single ((:commit . "549072ef7b5b82913cadd4758e8a0a9926f0a04a") (:keywords "supergenpass"))]) (super-save . [(20171008 3) ((emacs (24 4))) "Auto-save buffers, based on your activity." single ((:commit . "1c8fbd5e18277e4af0ada2678a854b1c9072db38") (:url . "https://github.com/bbatsov/super-save") (:keywords "convenience"))]) (suomalainen-kalenteri . [(20170801 126) nil "Finnish national and Christian holidays for calendar" tar ((:commit . "c702e33cb6e13cb28bd761844e95be112a3c04f3"))]) (sunshine . [(20160410 1317) ((cl-lib (0 5))) "Provide weather and forecast information." single ((:commit . "11e49846a116bdec6e2e463bed2db4c2df9c8ad2") (:url . "https://github.com/aaronbieber/sunshine.el") (:keywords "tools" "weather"))]) (sunny-day-theme . [(20140413 1425) nil "Emacs24 theme with a light background." single ((:commit . "420e0a6eb33fcc9b75c2c9e88ab60a975d782a00") (:url . "http://github.com/mswift42/sunny-day-theme"))]) (sunburn-theme . [(20171101 1126) ((emacs (24))) "A low contrast color theme" single ((:commit . "c57190f87e2e6c5ef6c7fbfd40964eb8f11b32ca") (:url . "http://github.com/mvarela/Sunburn-Theme"))]) (summarye . [(20130328 327) nil "list up matched strings from a buffer, and display them in summary buffer" single nil]) (suggestion-box . [(20170830 107) ((emacs (25 1)) (popup (0 5 3))) "show tooltip on the cursor" single ((:commit . "50af0776c8caf3c79c4d37fd51cbf304ea34b68e") (:keywords "convenience"))]) (suggest . [(20171229 1712) ((emacs (24 4)) (loop (1 3)) (dash (2 13 0)) (s (1 11 0)) (f (0 18 2))) "suggest elisp functions that give the output requested" single ((:commit . "5caf98ab49c6b3c421d8f274c0682bbb7fc662fe") (:url . "https://github.com/Wilfred/suggest.el") (:keywords "convenience"))]) (sudoku . [(20161110 2306) ((emacs (24 4))) "Simple sudoku game, can download puzzles" single ((:commit . "77c11b5041b58fc943cf1668b44b40bae039cb5b") (:keywords "games"))]) (sudo-ext . [(20170126 414) nil "sudo support" single ((:commit . "9d4580f304121ce7b8104bd4bd3b64e4dfa3c9b3") (:url . "http://www.emacswiki.org/cgi-bin/wiki/download/sudo-ext.el") (:keywords "unix"))]) (sudo-edit . [(20170803 2052) ((emacs (24)) (cl-lib (0 5))) "Open files as another user" single ((:commit . "bcb12aaa0da0c56d851cfa2f1b3ea4afdd2a755b") (:url . "https://github.com/nflath/sudo-edit") (:keywords "convenience"))]) (subr+ . [(20170501 916) nil "Extensions to standard library `subr.el'." single ((:url . "https://www.emacswiki.org/emacs/download/subr%2b.el") (:keywords "strings" "text"))]) (sublimity . [(20170820 827) ((cl-lib (0 3))) "smooth-scrolling, minimap and distraction-free mode" tar ((:commit . "62b0c526c599a0178a16a75f16513fc1f93a0d53") (:url . "https://github.com/zk-phi/sublimity"))]) (sublime-themes . [(20170606 1144) nil "A collection of themes based on Sublime Text" tar ((:commit . "60ee40af82eb55b79d5ed4026f1911326311603f") (:keywords "faces"))]) (subemacs . [(20170401 234) nil "Evaluating expressions in a fresh Emacs subprocess" single ((:commit . "18d53939fec8968c08dfc5aff7240ca07efb1aac") (:url . "https://github.com/kbauer/subemacs") (:keywords "extensions" "lisp" "multiprocessing"))]) (subatomic256-theme . [(20130620 1910) nil "Fork of subatomic-theme for terminals." single ((:commit . "326177d6f99cd2b1d30df695e67ee3bc441cd96f") (:url . "https://github.com/cryon/subatomic256"))]) (subatomic-theme . [(20160126 738) nil "Low contrast bluish color theme" single ((:commit . "6a4086af748b1ecb27f6ba2aa2614988db16d594") (:url . "https://github.com/cryon/subatomic") (:keywords "color-theme" "blue" "low contrast"))]) (stylus-mode . [(20150313 812) ((sws-mode (0))) "Major mode for editing .jade files" single ((:commit . "4dbde92542fc7ad61df38776980905a4721d642e") (:url . "https://github.com/brianc/jade-mode"))]) (stylefmt . [(20161025 124) nil "Stylefmt interface" single ((:commit . "7a38f26bf8ff947215f34f0a064c7ca80575ccbc") (:url . "https://github.com/KeenS/stylefmt.el") (:keywords "style" "code" "formatter"))]) (stupid-indent-mode . [(20170525 417) nil "Plain stupid indentation minor mode" single ((:commit . "3295e7de5e2cfddc3bf0e462e852bf58972f5d70"))]) (stumpwm-mode . [(20140130 1816) nil "special lisp mode for evaluating code into running stumpwm" single ((:commit . "61a7cf27e49e0779a53c018b2342f5f1c5cc70b4") (:keywords "comm" "lisp" "tools"))]) (stripe-buffer . [(20141208 708) ((cl-lib (1 0))) "Use a different background for even and odd lines" single ((:commit . "c252080f55cb78c951b19ebab9687f6d00237baf") (:url . "https://github.com/sabof/stripe-buffer"))]) (strings . [(20170307 1533) nil "Miscellaneous string functions." single ((:url . "https://www.emacswiki.org/emacs/download/strings.el") (:keywords "internal" "strings" "text"))]) (string-utils . [(20140508 1341) ((list-utils (0 4 2))) "String-manipulation utilities" single ((:commit . "c2232d691617973ecf12a970c6008a161c21da14") (:url . "http://github.com/rolandwalker/string-utils") (:keywords "extensions"))]) (string-inflection . [(20180102 643) nil "underscore -> UPCASE -> CamelCase -> lowerCamelCase conversion of names" single ((:commit . "d3bbc560bad160ba183778ca4628a2cce34fdd65") (:keywords "elisp"))]) (string-edit . [(20160410 2356) ((dash (1 2 0))) "Avoid escape nightmares by editing string in separate buffer" single ((:commit . "c44b65b4c5e9f52be9c14d88ca2f402a18d9e1dd"))]) (strie . [(20160211 1422) ((cl-lib (0 5))) "A simple trie data structure implementation" single ((:commit . "eb7efb0cccc127c414f6a64db11454869d9c10a8"))]) (strace-mode . [(20171116 1239) nil "strace output syntax highlighting" single ((:commit . "2901baa968d5180ab985ac40ca22cc20914d01f5") (:keywords "languages"))]) (stock-ticker . [(20150204 252) ((s (1 9 0)) (request (0 2 0))) "Show stock prices in mode line" single ((:commit . "f2e564142c9de84232839a5b01979cf95b04d6a9") (:url . "https://github.com/hagleitn/stock-ticker") (:keywords "comms"))]) (stickyfunc-enhance . [(20150429 1114) ((emacs (24 3))) "An enhancement to stock `semantic-stickyfunc-mode'" single ((:commit . "13bdba51fcd83ccbc3267959d23afc94d458dcb0") (:url . "https://github.com/tuhdo/semantic-stickyfunc-enhance") (:keywords "c" "languages" "tools"))]) (sticky . [(20101129 1852) nil "Sticky key for capital letters" single ((:url . "http://www.emacswiki.org/cgi-bin/wiki/download/sticky.el") (:keywords "convenience"))]) (stem-english . [(20180108 1958) ((emacs (24 3))) "- routines for stemming English word" single ((:commit . "c9fc4c6ed6bf82382e479dae80912f4ae17d31f4") (:url . "http://github.com/kawabata/stem-english") (:keywords "text"))]) (stem . [(20131102 409) nil "Routines for stemming" single ((:commit . "d74e6611d6ba5025e0276a2cc7c8a90f46bfa9ac") (:url . "https://github.com/yuutayamada/stem") (:keywords "stemming"))]) (steam . [(20171108 1613) ((cl-lib (0 5))) "Organize and launch Steam games" single ((:commit . "d6ca2a828b0824da51978397e198bf91c51ce793") (:url . "http://github.com/Kungsgeten/steam.el") (:keywords "games"))]) (status . [(20151230 608) nil "This package adds support for status icons to Emacs." tar ((:commit . "b62c74bf272566f82a68622f29fb9edafea0f241"))]) (state . [(20170107 535) ((emacs (24))) "Quick navigation between workspaces" single ((:commit . "ea6e2cf6f592cbcfc5800b68f0fc2462555cacce") (:url . "https://github.com/thisirs/state.git") (:keywords "convenience" "workspaces"))]) (stash . [(20151117 627) nil "lightweight persistent caching" single ((:commit . "c2e494d20c752b80ebbdffbf66687b3cdfc425ad") (:url . "https://www.github.com/vermiculus/stash.el/") (:keywords "extensions" "data" "internal" "lisp"))]) (start-menu . [(20160426 525) ((cl-lib (0 5)) (config-parser (0 1))) "start-menu for executing external program like in windows" single ((:commit . "f7d33fed7ad2dc61156f1c1cff9e1805366fbd69") (:url . "https://github.com/lujun9972/el-start-menu") (:keywords "convenience" "menu"))]) (standoff-mode . [(20171115 931) nil "Create stand-off markup, also called external markup." tar ((:commit . "cf84b14066d63694d931395c6026fd0245d8a62b"))]) (stan-snippets . [(20161023 1958) ((stan-mode (9 2 0)) (yasnippet (0 8 0))) "Yasnippets for Stan" tar ((:commit . "45b8242611fe0437fcff48f5f4f7d8f0552531ac") (:url . "http://github.com/stan-dev/stan-mode") (:keywords "snippets"))]) (stan-mode . [(20161023 1958) nil "Major mode for editing Stan files" tar ((:commit . "45b8242611fe0437fcff48f5f4f7d8f0552531ac") (:url . "http://github.com/stan-dev/stan-mode") (:keywords "languanges"))]) (stack-mode . [(20150923 823) ((haskell-mode (13 14)) (cl-lib (0 5)) (flycheck (0 23))) "A minor mode enabling various features based on stack-ide." tar ((:commit . "f3481e239dde9817152ec00e32bfc3ebf5aaf2cb") (:url . "https://github.com/commercialhaskell/stack-ide") (:keywords "haskell" "stack"))]) (ssh-tunnels . [(20141219 318) ((cl-lib (0 5)) (emacs (24))) "Manage SSH tunnels" single ((:commit . "b08ba7a560ba5b16aa95c3cc17ed6fea59529cc4") (:url . "http://github.com/death/ssh-tunnels") (:keywords "tools" "convenience"))]) (ssh-deploy . [(20171211 311) nil "Deployment via TRAMP, global or per directory." single ((:commit . "ee808acef916c7cf828923e6517a6867044caaf5") (:url . "https://github.com/cjohansson/emacs-ssh-deploy") (:keywords "tools" "convenience"))]) (ssh-config-mode . [(20171109 1549) nil "Mode for fontification of ~/.ssh/config" tar ((:commit . "7824d5f8baf2c97856f5bc7b1ef88befbb1978f3") (:url . "https://github.com/jhgorrell/ssh-config-mode-el") (:keywords "ssh" "config" "emacs"))]) (ssh-agency . [(20170807 1152) ((emacs (24 4)) (dash (2 10 0))) "manage ssh-agent from Emacs" single ((:commit . "e572e031852561f98a7053afcdc9a3796dde2137") (:url . "https://github.com/magit/ssh-agency"))]) (ssh . [(20120904 1342) nil "Support for remote logins using ssh." single ((:commit . "c17cf5b43df8ac4662a0580f85898e1f078df0d1") (:keywords "unix" "comm"))]) (ssass-mode . [(20171201 509) ((emacs (24 3))) "Edit Sass without a Turing Machine" single ((:commit . "a95c4c9f99895cc582849b35e90ae13f1587ddce") (:url . "http://github.com/AdamNiederer/ssass-mode") (:keywords "languages" "sass"))]) (srefactor . [(20170223 540) ((emacs (24 4))) "A refactoring tool based on Semantic parser framework" tar ((:commit . "531753fdc24570a1341c169f36b9fa0d4c09ff42") (:url . "https://github.com/tuhdo/semantic-refactor") (:keywords "c" "languages" "tools"))]) (sr-speedbar . [(20161025 131) nil "Same frame speedbar" single ((:commit . "77a83fb50f763a465c021eca7343243f465b4a47") (:url . "http://www.emacswiki.org/emacs/download/sr-speedbar.el") (:keywords "speedbar" "sr-speedbar.el"))]) (sqlup-mode . [(20170610 837) nil "Upcase SQL words for you" single ((:commit . "04970977b4abb4d44301651618bbf1cdb0b263dd") (:url . "https://github.com/trevoke/sqlup-mode.el") (:keywords "sql" "tools" "redis" "upcase"))]) (sqlplus . [(20170710 150) nil "User friendly interface to SQL*Plus and support for PL/SQL compilation" single ((:keywords "sql" "sqlplus" "oracle" "plsql"))]) (sqlite . [(20150416 2215) nil "use sqlite via elisp" single ((:commit . "9a7fb5836a19bc0ea8b4c5a50177112524380986"))]) (sql-indent . [(20170112 1507) nil "indentation of SQL statements" single ((:commit . "761a5724d181b75f30e64040408b8836d41f9db9") (:url . "https://github.com/bsvingen/sql-indent") (:keywords "languages"))]) (sql-impala . [(20160427 1658) nil "comint support for Cloudera Impala" single ((:commit . "e7a2d79d60b0a6339d730fc39ca024c3d6c56de7") (:url . "https://github.com/jterk/sql-impala") (:keywords "sql" "impala"))]) (spu . [(20161213 1924) ((emacs (24 4)) (signal (1 0)) (timp (1 2 0))) "Silently upgrade package in the background" tar ((:commit . "41eec86b595816e3852e8ad1a8e07e51a27fd065") (:url . "https://github.com/mola-T/spu") (:keywords "convenience" "package"))]) (sprunge . [(20160229 1843) ((request (0 2 0)) (cl-lib (0 5))) "Upload pastes to sprunge.us" single ((:commit . "0fd386b8b29c4175022a04ad70ea5643185b6726") (:keywords "tools"))]) (sproto-mode . [(20151115 1005) nil "Major mode for editing sproto." single ((:commit . "0583a88273204dccd884b7edaa3590cefd31e7f7") (:keywords "sproto"))]) (sprintly-mode . [(20121005 2234) ((furl (0 0 2))) "Major mode for dealing with sprint.ly" single ((:commit . "6695892bae5860b5268bf3ae62be990ee9b63c11") (:url . "https://github.com/sprintly/sprintly-mode"))]) (springboard . [(20170105 2355) ((helm (1 6 9))) "Temporarily change default-directory for one command" single ((:commit . "263a8cd4582c81bfc29d7db37d5267e2488b148c") (:url . "https://github.com/jwiegley/springboard") (:keywords "helm"))]) (spray . [(20160304 1420) nil "a speed reading mode" single ((:commit . "df326991acb2bd64af373bcf09816df9c6424d0d") (:url . "https://github.com/ian-kelling/spray") (:keywords "convenience"))]) (spotlight . [(20150929 55) ((emacs (24 1)) (swiper (0 6 0)) (counsel (0 6 0))) "search files with Mac OS X spotlight" single ((:commit . "ab902900f22e7d1ea2dd8169441d2da7155aaa68") (:url . "http://www.pragmaticemacs.com") (:keywords "search" "external"))]) (spotify . [(20170302 2229) ((cl-lib (0 5))) "Control the spotify application from emacs" single ((:commit . "2825b5cac8406969405096660aeab6e5fef765eb") (:url . "https://github.com/remvee/spotify-el") (:keywords "convenience"))]) (splitter . [(20170809 1508) nil "Manage window splits" single ((:commit . "6bdb51e9a346907d60a9625f6180bddd06be6674") (:url . "https://github.com/chumpage/chumpy-windows") (:keywords "frames" "convenience"))]) (splitjoin . [(20150505 732) ((cl-lib (0 5))) "Transition between multiline and single-line code" single ((:commit . "e2945ee269e6e90f0243d6f2a33e067bb0a2873c") (:url . "https://github.com/syohex/emacs-splitjoin"))]) (spiral . [(20180105 1253) ((emacs (25 1)) (a (0 1 0 -3 4)) (avy (0 4 0)) (clojure-mode (5 6 0)) (highlight (0)) (treepy (1 0 0))) "Clojure IDE based on UNREPL" tar ((:commit . "b25c42dd5add3192e846a5fe34be689e73f0c28c") (:url . "https://github.com/Unrepl/spiral") (:keywords "languages" "clojure"))]) (spike-theme . [(20160530 733) nil "A light color theme with muted, autumnal colors." single ((:commit . "7a7766be0b6197103840644bb074f864d0d91cd8") (:url . "https://github.com/m31271n/spike-theme") (:keywords "color" "theme" "green"))]) (spice-mode . [(20171027 2343) ((emacs (24 3))) "Major mode for SPICE" single ((:commit . "702bf2d5c3561be44771ea77b476532d32068504") (:url . "http://spice-mode.4t.com/") (:keywords "spice" "spice2g6" "spice3" "eldo" "hspice" "layla" "mondriaan" "fasthenry" "cdl" "spectre compatibility" "netlist editing"))]) (sphinx-mode . [(20170607 1436) nil "Minor mode providing sphinx support." tar ((:commit . "0a9fcd60639f1f4235b4747e8449b9f48651705f"))]) (sphinx-frontend . [(20161025 58) nil "Launch build process for rst documents via sphinx." single ((:commit . "0cbb03361c245382d3e679dded30c4fc1713c252") (:url . "https://github.com/kostafey/sphinx-frontend") (:keywords "compile" "sphinx" "restructuredtext"))]) (sphinx-doc . [(20160116 317) ((s (1 9 0)) (cl-lib (0 5)) (dash (2 10 0))) "Sphinx friendly docstrings for Python functions" single ((:commit . "f39da2e6cae55d5d7c7ce887e69755b7529bcd67") (:url . "https://github.com/naiquevin/sphinx-doc.el") (:keywords "sphinx" "python"))]) (speed-type . [(20171230 847) ((emacs (24 3)) (cl-lib (0 3))) "Practice touch and speed typing" single ((:commit . "7a67fcd7bf825eee890097bd4a1b3c4f531a1135") (:url . "https://github.com/parkouss/speed-type") (:keywords "games"))]) (speechd-el . [(20160710 359) nil "Client to speech synthesizers and Braille displays." tar ((:commit . "ec344edd498f95e3c945958475b31bae6505c34c"))]) (speech-tagger . [(20170728 1129) ((cl-lib (0 5))) "tag parts of speech using coreNLP" tar ((:commit . "61955b40d4e8b09e66a3e8033e82893f81657c06") (:url . "https://github.com/cosmicexplorer/speech-tagger") (:keywords "speech" "tag" "nlp" "language" "corenlp" "parsing" "natural"))]) (speck . [(20160717 951) nil "minor mode for spell checking" single ((:keywords "spell" "checking"))]) (sparql-mode . [(20171116 510) ((cl-lib (0 5)) (emacs (25 1))) "Edit and interactively evaluate SPARQL queries." tar ((:commit . "00527b8172ae61b667bc70a802c112132e06ba0b") (:url . "https://github.com/ljos/sparql-mode"))]) (sparkline . [(20150101 519) ((cl-lib (0 3))) "Make sparkline images from a list of numbers" single ((:commit . "a2b5d817d272d6363b67ed8f8cc75499a19fa8d2") (:keywords "extensions"))]) (spark . [(20160414 1901) ((emacs (24 3))) "sparkline generation" single ((:commit . "0bf148c3ede3b31d56fd75f347cdd0b0eae60025") (:url . "https://github.com/alvinfrancis/spark") (:keywords "lisp" "data"))]) (spaces . [(20170809 1508) nil "Create and switch between named window configurations." single ((:commit . "6bdb51e9a346907d60a9625f6180bddd06be6674") (:url . "https://github.com/chumpage/chumpy-windows") (:keywords "frames" "convenience"))]) (spacemacs-theme . [(20180107 1039) nil "Color theme with a dark and light versions" tar ((:commit . "3c43532474164ff5829a7558b49173b5b565a048") (:keywords "color" "theme") (:url . "https://github.com/nashamri/spacemacs-theme"))]) (spaceline-all-the-icons . [(20170829 120) ((emacs (24 4)) (all-the-icons (2 6 0)) (spaceline (2 0 0)) (memoize (1 0 1))) "A Spaceline theme using All The Icons" tar ((:commit . "e2e195f64a541d72b6d0ba0451f1e3072234b820") (:url . "https://github.com/domtronn/spaceline-all-the-icons.el") (:keywords "convenience" "lisp" "tools"))]) (spaceline . [(20171111 334) ((emacs (24 4)) (cl-lib (0 5)) (powerline (2 3)) (dash (2 11 0)) (s (1 10 0))) "Modeline configuration library for powerline" tar ((:commit . "ca20430271f80d46892d62cb7624b4dee6cafe72") (:url . "https://github.com/TheBB/spaceline") (:keywords "mode-line" "powerline" "spacemacs"))]) (spacegray-theme . [(20150719 1231) ((emacs (24 1))) "A Hyperminimal UI Theme" single ((:commit . "7f70ee36297e5ccf9bc90b1f81472024f5a7a749") (:url . "http://github.com/bruce/emacs-spacegray-theme") (:keywords "themes"))]) (sourcetrail . [(20170410 1437) ((emacs (24 4))) "Communication with Sourcetrail" single ((:commit . "b8d5557aa565ae979622312576db20515f65f977") (:keywords "external" "tool"))]) (sourcerer-theme . [(20161014 925) nil "A version of sourcerer by xero" single ((:commit . "c7f8e665d53bb48fb72f95f706710d53d24bd407") (:url . "http://github.com/gilbertw1/sourcerer-emacs") (:keywords "themes"))]) (sourcemap . [(20161215 2140) ((emacs (24 3))) "Sourcemap parser" single ((:commit . "64c89d296186f48d9135fb8aad501de19f64bceb") (:url . "https://github.com/syohex/emacs-sourcemap"))]) (sourcekit . [(20180101 34) ((emacs (24 3)) (dash (2 12 1)) (dash-functional (1 2 0)) (request (0 2 0))) "Library to interact with sourcekittendaemon" single ((:commit . "abf9bc5a0102eb666d3aa6d6bf22f6efcc852781") (:url . "https://github.com/nathankot/company-sourcekit") (:keywords "tools" "processes"))]) (soundklaus . [(20160314 531) ((dash (2 12 1)) (emacs (24)) (emms (4 0)) (s (1 11 0)) (pkg-info (0 4)) (cl-lib (0 5)) (request (0 2 0))) "Play music on SoundCloud with Emacs via EMMS" tar ((:commit . "09ec030843482594beae2664b8fe1e0ad1e66472") (:url . "https://github.com/r0man/soundklaus.el") (:keywords "soundcloud" "music" "emms"))]) (soundcloud . [(20150501 2026) ((emms (20131016)) (json (1 2)) (deferred (0 3 1)) (string-utils (0 3 2)) (request (20140316 417)) (request-deferred (20130526 1015))) "a SoundCloud client for Emacs" single ((:commit . "f998d4276ea90258909c698f6a5a51fccb667c08") (:keywords "soundcloud" "music" "audio"))]) (sound-wav . [(20160725 724) ((deferred (0 3 1)) (cl-lib (0 5))) "Play wav file" single ((:commit . "406868043761524118c27b1207be0f8bbda8798e") (:url . "https://github.com/syohex/emacs-sound-wav"))]) (sotlisp . [(20170429 1945) ((emacs (24 1))) "Write lisp at the speed of thought." single ((:commit . "89dfed2b5d2e9a3b16bfc47f169412b583626059") (:url . "https://github.com/Malabarba/speed-of-thought-lisp") (:keywords "convenience" "lisp"))]) (sotclojure . [(20170921 1708) ((emacs (24 1)) (clojure-mode (4 0 0)) (cider (0 8)) (sotlisp (1 3))) "Write clojure at the speed of thought." tar ((:commit . "ceac82aa691e8d98946471be6aaff9c9a4603c32") (:url . "https://github.com/Malabarba/speed-of-thought-clojure") (:keywords "convenience" "clojure"))]) (sos . [(20141214 2003) ((org (7))) "StackOverflow Search" single ((:commit . "1573adca912b88b5010d99a25c83a5b2313bd39c") (:url . "https://github.com/omouse/emacs-sos") (:keywords "tools" "search" "questions"))]) (sort-words . [(20160929 635) nil "Sort words in a selected region" single ((:commit . "7b6e108f80237363faf7ec28b2c58dec270b8601") (:url . "http://github.org/dotemacs/sort-words.el") (:keywords "tools"))]) (soothe-theme . [(20141027 741) ((emacs (24 1))) "a dark colorful theme for Emacs24." single ((:commit . "0786fe70c6c1b4ddcfb932fdc6862b9611cfc09b") (:url . "https://github.com/jasonm23/emacs-soothe-theme"))]) (sonic-pi . [(20171205 405) ((cl-lib (0 5)) (osc (0 1)) (dash (2 2 0)) (emacs (24)) (highlight (0))) "A Emacs client for SonicPi" tar ((:commit . "3cf101b3b299735ed91658c7791ea4f04164e076") (:url . "http://www.github.com/repl-electric/sonic-pi.el") (:keywords "sonicpi" "ruby"))]) (solidity-mode . [(20171231 741) nil "Major mode for ethereum's solidity language" tar ((:commit . "b5d95ef678305ca70b17e94fc2ee4289a8328048") (:keywords "languages"))]) (solarized-theme . [(20180101 42) ((emacs (24 1)) (cl-lib (0 5)) (dash (2 6 0))) "The Solarized color theme, ported to Emacs." tar ((:commit . "2dd2699b2f315374333292b132dc0dc03719aba2"))]) (solaire-mode . [(20171209 1350) ((emacs (24 4)) (cl-lib (0 5))) "make certain buffers grossly incandescent" single ((:commit . "dd93cfd6c02e4575e6c7048ecf9dac8c09864bf2") (:url . "https://github.com/hlissner/emacs-solaire-mode") (:keywords "dim" "bright" "window" "buffer" "faces"))]) (soft-stone-theme . [(20140614 135) ((emacs (24))) "Emacs 24 theme with a light background." single ((:commit . "fb475514cfb02cf30ce358a61c48e46614344d48") (:url . "http://github.com/mswift42/soft-stone-theme"))]) (soft-morning-theme . [(20150918 1341) nil "Emacs24 theme with a light background." single ((:commit . "c0f9c70c97ef2be2a093cf839c4bfe27740a111c") (:url . "http://github.com/mswift42/soft-morning-theme"))]) (soft-charcoal-theme . [(20140420 943) nil "Dark charcoal theme with soft colors" single ((:commit . "5607ab977fae6638e78b1495e02da8955c9ba19f") (:url . "http://github.com/mswift42/soft-charcoal-theme"))]) (socyl . [(20170211 2242) ((s (1 11 0)) (dash (2 12 0)) (pkg-info (0 5 0)) (cl-lib (0 5))) "Frontend for several search tools" tar ((:commit . "1ef2da42f66f3ab31a34131e51648f352416f0ba") (:url . "https://github.com/nlamirault/socyl") (:keywords "ripgrep" "sift" "ack" "pt" "ag" "grep" "search"))]) (snoopy . [(20171008 1304) ((emacs (24)) (cl-lib (0 6))) "minor mode for number row unshifted character insertion" single ((:commit . "ec4123bdebfe0bb7bf4feaac2dc02b59caffe386") (:keywords "lisp"))]) (snippet . [(20130210 1515) nil "Insert snippets of text into a buffer" single ((:commit . "11d00dd803874b93836f2010b08bd2c97b0f3c63"))]) (snazzy-theme . [(20170823 1132) ((emacs (24)) (base16-theme (2 1))) "An elegant syntax theme with bright colors" single ((:commit . "479351a34cd7f754375ee45f161f83a19d0fd29c") (:url . "https://github.com/weijiangan/emacs-snazzy/") (:keywords "faces" "theme" "color" "snazzy"))]) (snapshot-timemachine-rsnapshot . [(20170324 513) ((snapshot-timemachine (20160222 132)) (seq (2 19))) "rsnapshot backend for snapshot-timemachine" single ((:commit . "72b0b700d80f1a0442e62bbbb6a0c8c59182f97f"))]) (snapshot-timemachine . [(20161221 129) ((emacs (24 4))) "Step through (Btrfs, ZFS, ...) snapshots of files" single ((:commit . "99efcebab309b11ed512a8dc62555d3834df5efb") (:url . "https://github.com/mrBliss/snapshot-timemachine"))]) (snakemake-mode . [(20171030 1016) ((emacs (24)) (cl-lib (0 5)) (magit-popup (2 4 0))) "Major mode for editing Snakemake files" tar ((:commit . "990d6d8e98b96b9afe5b9b340507b1aecd8de1ce") (:url . "https://github.com/kyleam/snakemake-mode") (:keywords "tools"))]) (smyx-theme . [(20141127 28) nil "smyx Color Theme" single ((:commit . "6263f6b401bbabaed388c8efcfc0be2e58c51401") (:keywords "color" "theme" "smyx"))]) (smtpmail-multi . [(20160218 1549) nil "Use different smtp servers for sending mail" single ((:commit . "81eabfe56f620ee044ff9dd52fa8b6148d0a9f30") (:url . "https://github.com/vapniks/smtpmail-multi") (:keywords "comm"))]) (smotitah . [(20150218 230) nil "Modular emacs configuration framework" tar ((:commit . "f9ab562128a5460549d016913533778e8c94bcf3"))]) (smooth-scrolling . [(20161002 1249) nil "Make emacs scroll smoothly" single ((:commit . "2462c13640aa4c75ab3ddad443fedc29acf68f84") (:url . "http://github.com/aspiers/smooth-scrolling/") (:keywords "convenience"))]) (smooth-scroll . [(20130321 2114) nil "Minor mode for smooth scrolling and in-place scrolling." single ((:commit . "02320f28abb5cae28b3a18f6b9ce93129bdbfc45") (:url . "http://www.emacswiki.org/emacs/download/smooth-scroll.el") (:keywords "convenience" "emulations" "frames"))]) (smmry . [(20161024 201) nil "SMMRY client" single ((:commit . "986a1b0aec8ab1ef17dbfb7886f47e5558cf738a") (:url . "https://github.com/microamp/smmry.el") (:keywords "api" "smmry"))]) (sml-modeline . [(20170614 1411) nil "Show position in a scrollbar like way in mode-line" single ((:commit . "d2f9f70174c4cf68c67eb3bb8088235735e34d9a") (:url . "http://bazaar.launchpad.net/~nxhtml/nxhtml/main/annotate/head%3A/util/sml-modeline.el"))]) (smiles-mode . [(20160717 420) nil "Major mode for SMILES." single ((:commit . "fbb381758adcb000a0c304be1b797f985f00e2de") (:keywords "smiles"))]) (smex . [(20151212 1409) ((emacs (24))) "M-x interface with Ido-style fuzzy matching." single ((:commit . "55aaebe3d793c2c990b39a302eb26c184281c42c") (:url . "http://github.com/nonsequitur/smex/") (:keywords "convenience" "usability"))]) (smeargle . [(20161212 1558) ((emacs (24 3))) "Highlighting region by last updated time" single ((:commit . "0665b1ff5109731898bc4a0ca6d939933b804777") (:url . "https://github.com/syohex/emacs-smeargle"))]) (smblog . [(20170419 321) ((emacs (24 3))) "samba log viewer" single ((:commit . "5245e7aeac20915121946f59bba30899305d950b") (:url . "http://github.com/aaptel/smblog-mode"))]) (smbc . [(20171229 1008) nil "View SMBC from Emacs" single ((:commit . "10538e3d575ba6ef3c94d555af2744b42dfd36c7") (:url . "https://github.com/sakshamsharma/emacs-smbc") (:keywords "smbc" "webcomic"))]) (smarty-mode . [(20100703 458) nil "major mode for editing smarty templates" single ((:commit . "3dfdfe1571f5e9ef55a29c51e5a80046d4cb7568") (:url . "none yet") (:keywords "smarty" "php" "languages" "templates"))]) (smartscan . [(20170211 1233) nil "Jumps between other symbols found at point" single ((:commit . "234e077145710a174c20742de792b97ed2f965f6") (:keywords "extensions"))]) (smartrep . [(20150508 1930) nil "Support sequential operation which omitted prefix keys." single ((:commit . "f0ff5a6d7b8603603598ae3045c98b011e58d86e") (:url . "https://github.com/myuhe/smartrep.el") (:keywords "convenience"))]) (smartparens . [(20171201 242) ((dash (2 13 0)) (cl-lib (0 3))) "Automatic insertion, wrapping and paredit-like navigation with user defined pairs." tar ((:commit . "65fbcfc849afb89e2642f9b87f66e6a96382f88c"))]) (smart-window . [(20160716 1830) ((cl-lib (0 5))) "vim-like window controlling plugin" single ((:commit . "5996461b7cbc5ab4509ac48537916eb29a8e4c16") (:url . "https://github.com/dryman/smart-window.el") (:keywords "window"))]) (smart-tabs-mode . [(20160629 752) nil "Intelligently indent with tabs, align with spaces!" single ((:commit . "9cc2594b82b03e7d68645a4878f9359f8b8c34c5") (:url . "http://www.emacswiki.org/emacs/SmartTabs") (:keywords "languages"))]) (smart-tab . [(20170902 1407) nil "Intelligent tab completion and indentation." single ((:commit . "76a8ec13384975d39aa1b25e5384a02558dba574") (:url . "http://github.com/genehack/smart-tab/tree/master") (:keywords "extensions"))]) (smart-shift . [(20150202 2325) nil "Smart shift text left/right." single ((:commit . "a26ab2b240137e62ec4bce1698ed9c5f7b6d13ae") (:url . "https://github.com/hbin/smart-shift") (:keywords "convenience" "tools"))]) (smart-semicolon . [(20171007 1833) ((emacs (25))) "Insert semicolon smartly" single ((:commit . "c11096679dbed3875c37413337ee490ee7951b63") (:url . "https://github.com/iquiw/smart-semicolon"))]) (smart-region . [(20150903 703) ((emacs (24 4)) (expand-region (0 10 0)) (multiple-cursors (1 3 0)) (cl-lib (0 5))) "Smartly select region, rectangle, multi cursors" single ((:commit . "5a8017fd8e8dc3483865951c4942cab3f96f69f6") (:url . "https://github.com/uk-ar/smart-region") (:keywords "marking" "region"))]) (smart-newline . [(20131207 1940) nil "Provide smart newline for one keybind." single ((:commit . "0553a9e4be7188352de1a28f2eddfd28e7436f94"))]) (smart-mode-line-powerline-theme . [(20160705 1738) ((emacs (24 3)) (powerline (2 2)) (smart-mode-line (2 5))) "smart-mode-line theme that mimics the powerline appearance." tar ((:commit . "1facbe9816b602c640ddb23602e30588d6d904ca") (:url . "http://github.com/Bruce-Connor/smart-mode-line") (:keywords "mode-line" "faces" "themes"))]) (smart-mode-line . [(20171013 849) ((emacs (24 3)) (rich-minority (0 1 1))) "A color coded smart mode-line." tar ((:commit . "1facbe9816b602c640ddb23602e30588d6d904ca") (:url . "http://github.com/Malabarba/smart-mode-line") (:keywords "mode-line" "faces" "themes"))]) (smart-mark . [(20150911 1910) nil "Restore point after C-g when mark" single ((:commit . "04b522a23e3aae8381c6a976fc978532fcb2e7d0") (:keywords "mark" "restore"))]) (smart-jump . [(20180107 1054) ((emacs (25 1)) (dumb-jump (0 5 1))) "Smart go to definition." tar ((:commit . "7042923b6edff126d59808fa718bf38c5f53464e") (:url . "https://github.com/jojojames/smart-jump") (:keywords "tools"))]) (smart-indent-rigidly . [(20141205 1615) nil "Smart rigid indenting" single ((:commit . "323d1fe4d0b81e598249aad01bc44adb180ece0e") (:url . "https://github.com/re5et/smart-indent-rigidly") (:keywords "indenting" "coffee-mode" "haml-mode" "sass-mode"))]) (smart-hungry-delete . [(20170412 643) ((emacs (24 3))) "smart hungry deletion of whitespace" single ((:commit . "7c1d56a92481594e14d40b5fdf6c48657a0108a0") (:url . "https://github.com/hrehfeld/emacs-smart-hungry-delete") (:keywords "convenience"))]) (smart-forward . [(20140430 13) ((expand-region (0 8 0))) "Semantic navigation" single ((:commit . "7b6dbfdbd4b646376a567c70e1a161545431b72b") (:keywords "navigation"))]) (smart-dash . [(20110130 1916) nil "Smart-Dash minor mode" single nil]) (smart-cursor-color . [(20141124 919) nil "Change cursor color dynamically" single ((:commit . "1d190f49ca77734b55ac58f1b6276e42ada967b0") (:url . "https://github.com/7696122/smart-cursor-color/") (:keywords "cursor" "color" "face"))]) (smart-compile . [(20171104 2333) nil "an interface to `compile'" single ((:commit . "2a0c9b33bd97461d100e24df0103d4e5526a30d6") (:keywords "tools" "unix"))]) (smart-comment . [(20160322 1139) nil "smarter commenting" single ((:commit . "17ddbd83205818763e6d68aa7a1aa9aaf414cbd4") (:keywords "lisp"))]) (smart-backspace . [(20171013 2226) nil "intellj like backspace" single ((:commit . "a10ec44ff325ec8c4c98b1a6e44e89e60a9aa4ac") (:url . "https://github.com/itome/smart-backspace"))]) (sly-quicklisp . [(20170112 135) ((sly (1 0 0 -2 2))) "Quicklisp support for SLY" tar ((:commit . "8a9e3c0c07c6861ec33b338cc46ac12e7ce6a477") (:url . "https://github.com/capitaomorte/sly-quicklisp") (:keywords "languages" "lisp" "sly"))]) (sly-named-readtables . [(20150817 816) ((sly (1 0 0 -2 2))) "Support named readtables in Common Lisp files" tar ((:commit . "df4ed79064cf85275804e201899b677bef4ab3f5") (:url . "https://github.com/capitaomorte/sly-named-readtables") (:keywords "languages" "lisp" "sly"))]) (sly-macrostep . [(20160119 434) ((sly (1 0 0 -2 2)) (macrostep (0 9))) "fancy macro-expansion via macrostep.el" tar ((:commit . "eb16778d104413a3e2a8d5537437c4ad76c2954b") (:url . "https://github.com/capitaomorte/sly-macrostep") (:keywords "languages" "lisp" "sly"))]) (sly-hello-world . [(20160119 636) ((sly (1 0 0 -2 2))) "A template SLY contrib" tar ((:commit . "1bfcca692b6ec0670ed309ffe29eb9384397c183") (:url . "https://github.com/capitaomorte/sly-hello-world") (:keywords "languages" "lisp" "sly"))]) (sly-company . [(20160308 557) ((sly (1 0 0 -3)) (company (0 7)) (emacs (24 3))) "sly completion backend for company mode" single ((:commit . "08aef69394fbef31dfeb3d3bb72a4557df9d7624") (:keywords "convenience" "lisp" "abbrev"))]) (sly . [(20171220 1443) ((emacs (24 3))) "Sylvester the Cat's Common Lisp IDE" tar ((:commit . "436094626698e77efa38cbf45681db7ea6b7e9f7") (:url . "https://github.com/joaotavora/sly") (:keywords "languages" "lisp" "sly"))]) (slstats . [(20170823 149) ((cl-lib (0 5)) (emacs (24))) "Acquire and display stats about Second Life" single ((:commit . "e9696066abf3f2b7b818a57c062530dfd9377033") (:url . "https://github.com/davep/slstats.el") (:keywords "games"))]) (slovak-holidays . [(20150418 155) nil "Adds a list of slovak holidays to Emacs calendar" single ((:commit . "effb16dfcd14797bf7448f5113085479db339c02") (:keywords "calendar"))]) (slirm . [(20160201 625) ((emacs (24 4))) "Systematic Literature Review Mode for Emacs." single ((:commit . "9adfbe1fc67580e7d0d90f7e927a25d63a797464") (:url . "http://github.com/fbie/slirm"))]) (slime-volleyball . [(20140717 2141) nil "An SVG Slime Volleyball Game" tar ((:commit . "159b5c0f40b109e3854e94b89ec5383854c46ae3") (:keywords "games"))]) (slime-theme . [(20170808 622) ((emacs (24 0))) "an Emacs 24 theme based on Slime (tmTheme)" single ((:commit . "8e5880ac69e0b6a079103001cc3a90bdb688998f") (:url . "https://github.com/emacsfodder/tmtheme-to-deftheme"))]) (slime-docker . [(20171004 1151) ((emacs (24)) (slime (2 16)) (docker-tramp (0 1)) (cl-lib (0 5))) "Integration of SLIME with Docker containers." tar ((:commit . "13fa8be2fca516f3ff5fb70fa79dd8404bf86439") (:url . "https://github.com/daewok/slime-docker") (:keywords "docker" "lisp" "slime"))]) (slime-company . [(20180108 426) ((slime (2 13)) (company (0 9 0))) "slime completion backend for company mode" single ((:commit . "fb54d166ca3e61e8f82020b7c5cfeafd3f4ad425") (:keywords "convenience" "lisp" "abbrev"))]) (slime . [(20171230 1630) ((cl-lib (0 5)) (macrostep (0 9))) "Superior Lisp Interaction Mode for Emacs" tar ((:commit . "179741a0616f78f4e5901fe04dea79654c504fba") (:url . "https://github.com/slime/slime") (:keywords "languages" "lisp" "slime"))]) (slim-mode . [(20170728 648) nil "Major mode for editing Slim files" single ((:commit . "3636d18ab1c8b316eea71c4732eb44743e2ded87") (:url . "http://github.com/slim-template/emacs-slim") (:keywords "markup" "language"))]) (slideview . [(20150324 1540) ((cl-lib (0 3))) "File slideshow" single ((:commit . "b6d170bda139aedf81b47dc55cbd1a3af512fb4c") (:url . "https://github.com/mhayashi1120/Emacs-slideview") (:keywords "files"))]) (slack . [(20180103 1928) ((websocket (1 8)) (request (0 2 0)) (oauth2 (0 10)) (circe (2 2)) (alert (1 2)) (emojify (0 2))) "Slack client for Emacs" tar ((:commit . "58b1309255563819ee8f83f625af49ac0353bed1") (:url . "https://github.com/yuya373/emacs-slack"))]) (sl . [(20161217 604) ((cl-lib (0 5))) "An Emacs clone of sl(1)" tar ((:commit . "0882117728be91276b815e18c2a66106bf9d69d3") (:url . "https://github.com/xuchunyang/sl.el"))]) (skype . [(20160711 124) nil "skype UI for emacs users.." tar ((:commit . "8e3b33e620ed355522aa36434ff41e3ced080629") (:keywords "skype" "chat"))]) (skewer-reload-stylesheets . [(20160725 520) ((skewer-mode (1 5 3))) "live-edit CSS, SCSS, Less, and friends." tar ((:commit . "b9cc5635230ac3c0603a6da690c6e632d0a7490a"))]) (skewer-mode . [(20170730 1241) ((simple-httpd (1 4 0)) (js2-mode (20090723)) (emacs (24))) "live browser JavaScript, CSS, and HTML interaction" tar ((:commit . "7df248a4b7ec2eb0f3cabcbdfb052593d1f86590"))]) (skewer-less . [(20160828 1321) ((skewer-mode (1 5 3))) "Skewer support for live LESS stylesheet updates" single ((:commit . "927d6848a1ea9428d4cc995f76bd42f7b8da6bc8") (:keywords "languages" "tools"))]) (skeletor . [(20170616 1746) ((s (1 7 0)) (f (0 14 0)) (dash (2 2 0)) (cl-lib (0 3)) (let-alist (1 0 3)) (emacs (24 1))) "Provides project skeletons for Emacs" tar ((:commit . "01c330ec115fc29bba5d9bdf6c15beb4a44e2281"))]) (simplezen . [(20130421 300) ((s (1 4 0)) (dash (1 1 0))) "A simple subset of zencoding-mode for Emacs." single ((:commit . "119fdf2c6890a0c56045ae72cf4fce0071a81481"))]) (simplenote2 . [(20171201 1806) ((request-deferred (0 2 0))) "Interact with app.simplenote.com" tar ((:commit . "0fd6dbd0566af29964078e4b74baf69c2f52381a") (:keywords "simplenote"))]) (simplenote . [(20141118 640) nil "Interact with simple-note.appspot.com" single ((:commit . "e836fcdb5a6497a9ffd6bceddd19b4bc52189078") (:keywords "simplenote"))]) (simpleclip . [(20170803 540) nil "Simplified access to the system clipboard" single ((:commit . "d461c462c237cd896553adb468cd77499d0d26ad") (:url . "http://github.com/rolandwalker/simpleclip") (:keywords "convenience"))]) (simple-screen . [(20141023 758) nil "Simple screen configuration manager" single ((:commit . "4fcbdb4575310c0a2b4dd17fc8aeb4d7e6e9ffae") (:url . "https://github.com/wachikun/simple-screen") (:keywords "tools"))]) (simple-rtm . [(20160222 734) ((rtm (0 1)) (dash (2 0 0))) "Interactive Emacs mode for Remember The Milk" single ((:commit . "8c7cd96cf66ef112be5c363e3378e304f8f83999") (:keywords "remember" "the" "milk" "productivity" "todo"))]) (simple-paren . [(20180104 1016) ((emacs (24)) (cl-lib (0 5))) "Insert paired delimiter, wrap" single ((:commit . "6a8c33443a1e8d502d272584a4a09b23a2342679") (:url . "https://github.com/andreas-roehler/simple-paren") (:keywords "convenience"))]) (simple-mpc . [(20161103 1219) ((s (1 10 0))) "provides a simple interface to mpc" tar ((:commit . "61b39d02313fa51a1dd7326fe24871666c64a077") (:url . "https://github.com/jorenvo/simple-mpc") (:keywords "multimedia" "mpd" "mpc"))]) (simple-httpd . [(20171004 938) ((cl-lib (0 3))) "pure elisp HTTP server" single ((:commit . "e7775d3bc5c6b73255814d0a62dc954e23a12c15") (:url . "https://github.com/skeeto/emacs-http-server"))]) (simple-call-tree . [(20171223 1037) ((emacs (24 3)) (anaphora (1 0 0))) "analyze source code based on font-lock text-properties" single ((:commit . "51cbb9baac4a71c9e2759b3dbbd48829b7b0ea79") (:url . "http://www.emacswiki.org/emacs/download/simple-call-tree.el") (:keywords "programming"))]) (simple-bookmarks . [(20160804 701) ((cl-lib (0 5))) "Bookmark / functioncall manager" tar ((:commit . "6c58337f2b7dbe9e58b5e097b1567f046a01d071") (:url . "https://github.com/jtkDvlp/simple-bookmarks") (:keywords "bookmark" "functioncall"))]) (simple+ . [(20170307 1529) ((strings (0))) "Extensions to standard library `simple.el'." single ((:url . "https://www.emacswiki.org/emacs/download/simple%2b.el") (:keywords "internal" "lisp" "extensions" "abbrev"))]) (simp . [(20161206 2151) nil "Simple project definition, chiefly for file finding, and grepping" tar ((:commit . "13959cabdc7a10d8878592ef4333b3e6df2f1483") (:url . "https://github.com/re5et/simp") (:keywords "project" "grep" "find"))]) (silkworm-theme . [(20160217 509) ((emacs (24))) "Light theme with pleasant, low contrast colors." single ((:commit . "7951b53e5caf9daf6a5a15a57ae3a668cb78bd7b"))]) (signature . [(20140730 1249) nil "Signature Survey" tar ((:commit . "c47df2e1189a84505f9224aa78e87b6c65d13d37"))]) (signal . [(20160816 738) ((emacs (24)) (cl-lib (0 5))) "Advanced hook" single ((:commit . "aa58327e2297df921d72a0370468b48663efd438") (:url . "https://github.com/mola-T/signal") (:keywords "internal" "lisp" "processes" "tools"))]) (sift . [(20160107 215) nil "Front-end for sift, a fast and powerful grep alternative" single ((:commit . "4ce8878a0fc396ded7521ce38852d93e1d863065") (:url . "https://github.com/nlamirault/sift.el") (:keywords "sift" "ack" "pt" "ag" "grep" "search"))]) (sicp . [(20171028 1523) nil "Structure and Interpretation of Computer Programs in info format" tar ((:commit . "8e13f7ff4695a05471486d37a6c5f979a5b965fb") (:url . "https://mitpress.mit.edu/sicp"))]) (sibilant-mode . [(20151119 1345) nil "Support for the Sibilant programming language" single ((:commit . "bc1b5d8cd597918bafc9b2880ee49024740e54ab") (:url . "http://sibilantjs.info") (:keywords "languages"))]) (shx . [(20171230 1219) ((emacs (24 4))) "\"Extras\" for the (comint-mode) shell" single ((:commit . "33383bd359d795df2d7ef725b5349c953f5a6aa8") (:url . "https://github.com/riscy/shx-for-emacs") (:keywords "processes" "tools"))]) (shut-up . [(20150423 522) ((cl-lib (0 3)) (emacs (24))) "Shut up would you!" single ((:commit . "a4fd18f37e20ae991c0dbba821b2c8e6f1679c39") (:url . "http://github.com/rejeep/shut-up.el"))]) (shrink-whitespace . [(20150916 1215) nil "Whitespace removal DWIM key" single ((:commit . "8d4263d974fbe66417c0bb9edc155ecc2f48e4b7") (:url . "https://github.com/jcpetkovich/shrink-whitespace.el") (:keywords "editing"))]) (shrink-path . [(20170812 1947) ((emacs (24)) (s (1 6 1)) (dash (1 8 0)) (f (0 10 0))) "fish-style path" single ((:commit . "9d06c453d1537df46a4b703a29213cc7f7857aa0") (:url . "https://gitlab.com/bennya/shrink-path.el"))]) (shr-tag-pre-highlight . [(20171113 114) ((emacs (25 1)) (language-detection (0 1 0))) "Syntax highlighting code block in HTML" single ((:commit . "6182f43a36b0f82ba6edcf6e423b5f69a46a814e") (:url . "https://github.com/xuchunyang/shr-tag-pre-highlight.el") (:keywords "html"))]) (shpec-mode . [(20150530 222) nil "Minor mode for shpec specification" single ((:commit . "146adc8281d0f115df39a3a3f982ac59ab61b754") (:url . "http://github.com/shpec/shpec-mode") (:keywords "languages" "tools"))]) (showtip . [(20090830 340) nil "Show tip at cursor" single ((:commit . "930da302809a4257e8d69425455b29e1cc91949b") (:keywords "help"))]) (showkey . [(20170307 1528) nil "Show keys as you use them." single ((:url . "https://www.emacswiki.org/emacs/download/showkey.el") (:keywords "help" "keys" "mouse"))]) (show-marks . [(20130805 749) ((fm (1 0))) "Navigate and visualize the mark-ring" single ((:commit . "97609566582e65eed0d0a854efa5c312f209115d") (:url . "https://github.com/vapniks/mark") (:keywords "convenience"))]) (show-css . [(20160210 608) ((doom (1 3)) (s (1 10 0))) "Show the css of the html attribute the cursor is on" tar ((:commit . "771daeddd4df7a7c10f66419a837145649bab63b") (:url . "https://github.com/smmcg/showcss-mode") (:keywords "hypermedia"))]) (shoulda . [(20140616 1133) ((cl-lib (0 5))) "Shoulda test support for ruby" single ((:commit . "fbe8eb8efc6cfcca1713283a290882cfcdc8725e") (:keywords "ruby" "tests" "shoulda"))]) (shm . [(20170523 238) nil "Structured Haskell Mode" tar ((:commit . "bd08a0b2297667e2ac7896e3b480033ae5721d4d") (:keywords "development" "haskell" "structured"))]) (shimbun . [(20171224 1958) nil "interfacing with web newspapers" tar ((:commit . "948a1a0f3e96e6c09c938e060f352ec126054ab1") (:keywords "news"))]) (shift-text . [(20130831 955) ((cl-lib (1 0)) (es-lib (0 3))) "Move the region in 4 directions, in a way similar to Eclipse's" single ((:commit . "1be9cbf994000022172ceb746fe1d597f57ea8ba") (:url . "https://github.com/sabof/shift-text"))]) (shift-number . [(20170301 659) nil "Increase/decrease the number at point" single ((:commit . "cd099a5582fc996b800ac7607f6c38a004ce9740") (:url . "https://github.com/alezost/shift-number.el") (:keywords "convenience"))]) (shen-elisp . [(20170427 1502) ((emacs (24 4))) "Shen implementation in Elisp" tar ((:commit . "ffe17dee05f75539cf5e4c59395e4c7400ececaa") (:keywords "shen" "elisp") (:url . "http://github.com/deech/shen-elisp"))]) (shelltest-mode . [(20141227 248) nil "Major mode for shelltestrunner" single ((:commit . "b4bdd547bcdac427561aa1452f2aeb65e3a3c9f5") (:url . "https://github.com/rtrn/shelltest-mode") (:keywords "languages"))]) (shelldoc . [(20151114 1925) ((cl-lib (0 3)) (s (1 9 0))) "shell command editing support with man page." single ((:commit . "5df2264eb60e45066f3633df4f34834751667346") (:url . "http://github.com/mhayashi1120/Emacs-shelldoc") (:keywords "applications"))]) (shell-toggle . [(20150226 611) nil "Toggle to and from the shell buffer" single ((:commit . "0d01bd9a780fdb7fe6609c552523f4498649a3b9") (:url . "https://github.com/knu/shell-toggle.el") (:keywords "processes"))]) (shell-switcher . [(20161028 2252) ((emacs (24))) "Provide fast switching between shell buffers." tar ((:commit . "28a7f753dd7addd2933510526f52620cb5a22048"))]) (shell-split-string . [(20151224 208) nil "Split strings using shell-like syntax" single ((:commit . "19f6f999c33cc66a4c91bacdcc3697c25d97bf5a") (:url . "https://github.com/10sr/shell-split-string-el") (:keywords "utility" "library" "shell" "string"))]) (shell-pop . [(20170304 616) ((emacs (24)) (cl-lib (0 5))) "helps you to use shell easily on Emacs. Only one key action to work." single ((:commit . "4a3a9d093ad1add792bba764c601aa28de302b34") (:url . "http://github.com/kyagi/shell-pop-el") (:keywords "shell" "terminal" "tools"))]) (shell-history . [(20100505 139) nil "integration with shell history" single ((:commit . "ee371a81f2d2bf5a308344078329ca1e9b5ed38c") (:url . "http://www.emacswiki.org/cgi-bin/wiki/download/shell-history.el") (:keywords "processes" "convenience"))]) (shell-here . [(20150728 1004) nil "Open a shell relative to the working directory" single ((:commit . "251309141e18978d2b8014345acc6f5afcd4d509") (:keywords "unix" "tools" "processes"))]) (shell-current-directory . [(20140101 1554) nil "create new shell based on buffer directory" single ((:commit . "bf843771bf9a4aa05e054ade799eb8862f3be89a") (:keywords "shell" "comint"))]) (shell-command . [(20090830 340) nil "enables tab-completion for `shell-command'" single ((:commit . "7e22125f746ce9ffbe9b0282d62f4b4bbbe672bd") (:keywords "shell"))]) (shampoo . [(20131230 219) nil "A remote Smalltalk development mode" tar ((:commit . "bc193c39636c30182159c5c91c37a9a4cb50fedf"))]) (shakespeare-mode . [(20160908 1511) nil "A major mode for editing Shakespearean templates." single ((:commit . "0406a5ac4c98fcd171f0539c5cd88050aa351ea8") (:url . "http://github.com/CodyReichert/shakespeare-mode") (:keywords "shakespeare" "hamlet" "lucius" "julius" "mode"))]) (shader-mode . [(20180105 1500) ((emacs (24))) "Major mode for shader" single ((:commit . "c141841feeee48299cff6651ed2e201a052e0570") (:url . "https://github.com/midnightSuyama/shader-mode"))]) (shadchen . [(20141102 1039) nil "pattern matching for elisp" single ((:commit . "35f2b9c304eec990c16efbd557198289dc7cbb1f"))]) (shackle . [(20171209 1401) ((cl-lib (0 5))) "Enforce rules for popups" single ((:commit . "4189c1c773aab533969b587f7801ffbcd1d7d613") (:url . "https://github.com/wasamasa/shackle") (:keywords "convenience"))]) (sexy-monochrome-theme . [(20171125 1212) nil "A sexy dark Emacs >= 24 theme for your sexy code" single ((:commit . "529a1c75196391d7f2f1f42cf9d9f4a52c7d9007") (:url . "https://github.com/voloyev/sexy-monochrome-theme") (:keywords "themes"))]) (sexp-move . [(20150915 1030) nil "Improved S-Expression Movement" single ((:commit . "117f7a91ab7c25e438413753e916570122011ce7") (:url . "https://gitlab.com/elzair/sexp-move") (:keywords "sexp"))]) (seti-theme . [(20161208 836) nil "A dark colored theme, inspired by Seti Atom Theme" single ((:commit . "cbfef2fc15d19ce4c8326e65fafdd61737077132") (:url . "https://github.com/caisah/seti-theme") (:keywords "themes"))]) (session . [(20120510 1700) nil "use variables, registers and buffer places across sessions" single ((:commit . "19ea0806873daac3539a4b956e15655e99e3dd6c") (:url . "http://emacs-session.sourceforge.net/") (:keywords "session" "session management" "desktop" "data" "tools"))]) (services . [(20170802 430) ((cl-lib (0 5))) "Services database access functions." single ((:commit . "04c7986041a33dfa0b0ae57c7d6fbd600548c596") (:url . "https://github.com/davep/services.el") (:keywords "convenience" "net" "services"))]) (serverspec . [(20150623 455) ((dash (2 6 0)) (s (1 9 0)) (f (0 16 2)) (helm (1 6 1))) "Serverspec minor mode" tar ((:commit . "b6dfe82af9869438de5e5d860ced196641f372c0") (:url . "http://101000lab.org"))]) (servant . [(20140216 419) ((s (1 8 0)) (dash (2 2 0)) (f (0 11 0)) (ansi (0 3 0)) (commander (0 5 0)) (epl (0 2)) (shut-up (0 2 1)) (web-server (0 0 1))) "ELPA server written in Emacs Lisp" tar ((:commit . "4d2aa8250b54b28e6e7ee4cd5ebd98a33db2c134") (:url . "http://github.com/rejeep/servant.el") (:keywords "elpa" "server"))]) (sequential-command . [(20151207 1403) nil "Many commands into one command" tar ((:url . "http://www.emacswiki.org/cgi-bin/wiki/download/sequential-command.el") (:keywords "convenience" "lisp"))]) (sequences . [(20170818 552) ((emacs (24))) "Ports of some Clojure sequence functions." single ((:commit . "564ebbd93b0beea4e75acfbf824350e90b5d5738") (:keywords "convenience"))]) (seoul256-theme . [(20171213 1209) ((emacs (24 3))) "Low-contrast color scheme based on Seoul Colors." single ((:commit . "1b487722ba817347030b50df01491dbbff4b2891") (:url . "http://github.com/anandpiyer/seoul256-emacs") (:keywords "theme"))]) (sentence-navigation . [(20171215 1007) ((ample-regexps (0 1)) (cl-lib (0 5)) (emacs (24 4))) "Commands to navigate one-spaced sentences." single ((:commit . "8ddf1dfe3f13f8ac753a6465a4bd965f88d0dbe5") (:url . "https://github.com/noctuid/emacs-sentence-navigation") (:keywords "sentence" "evil"))]) (sensitive . [(20170818 551) ((emacs (24)) (sequences (0 1 0))) "A dead simple way to load sensitive information" single ((:commit . "69dd6125a41d8b55f4b6ba61daa4d1aa1f716fa8") (:keywords "convenience"))]) (sendto . [(20160425 550) ((emacs (24 4))) "send the region content to a function" single ((:commit . "076b81d7a53f75b0a59b0ef3448f35570567054c") (:url . "https://github.com/lujun9972/sendto.el") (:keywords "convenience" "region"))]) (semi . [(20160816 239) ((flim (1 14 9))) "A library to provide MIME features." tar ((:commit . "6b9c62a76f22caf1476c837ee1976eaf0eaf38e7"))]) (selectric-mode . [(20170216 311) nil "IBM Selectric mode for Emacs" tar ((:commit . "a35cb3815caceaf273ad7d16ac3b2dd3c7a3003e") (:url . "https://github.com/rbanffy/selectric-mode") (:keywords "multimedia" "convenience" "typewriter" "selectric"))]) (selected . [(20170222 34) nil "Keymap for when region is active" single ((:commit . "03edaeac90bc6000d263f03be3d889b4685e1bf7") (:url . "http://github.com/Kungsgeten/selected.el") (:keywords "convenience"))]) (select-themes . [(20160220 1706) nil "Color theme selection with completing-read" single ((:commit . "236f54287519a3ea6dd7b3992d053e4f4ff5d0fe") (:url . "https://github.com/jasonm23/emacs-select-themes"))]) (sekka . [(20170803 547) ((cl-lib (0 3)) (concurrent (0 3 1)) (popup (0 5 2))) "A client for Sekka IME server" single ((:commit . "61840b57d9ae32bf8e297b175942590a1319c7e7") (:url . "https://github.com/kiyoka/sekka") (:keywords "ime" "skk" "japanese"))]) (seethru . [(20150218 1029) ((shadchen (1 4))) "Easily change Emacs' transparency" single ((:commit . "d87e231f99313bea75b1e69e48c0f32968c82060") (:url . "http://github.com/benaiah/seethru") (:keywords "lisp" "tools" "alpha" "transparency"))]) (seeing-is-believing . [(20170214 520) nil "minor mode for running the seeing-is-believing ruby gem" single ((:commit . "fbbe246c0fda87bb26227bb826eebadb418a220f"))]) (secretaria . [(20180104 720) ((emacs (24 4)) (alert (1 2)) (s (1 12)) (f (0 19 0))) "A personal assistant based on org-mode" tar ((:commit . "e9d59d264ba30f8055a1ee1576fe9296d5b41055") (:url . "https://bitbucket.org/shackra/secretaria.el") (:keywords "org" "convenience"))]) (second-sel . [(20170702 729) nil "Secondary selection commands" single ((:url . "https://www.emacswiki.org/emacs/download/second-sel.el") (:keywords "region" "selection" "yank" "paste" "edit"))]) (seclusion-mode . [(20121118 1553) nil "Edit in seclusion. A Dark Room mode." single ((:commit . "9634e76c52bfb7200ff0f9f01404f743429e9ef0") (:url . "http://github.com/dleslie/seclusion-mode"))]) (searchq . [(20150829 511) ((emacs (24 3))) "Framework of queued search tasks using GREP, ACK, AG and more." tar ((:commit . "dd510d55ad66a82c6ef022cfe7c4a73ad5365f82"))]) (search-web . [(20150312 403) nil "Post web search queries using `browse-url'." single ((:commit . "c4ae86ac1acfc572b81f3d78764bd9a54034c331"))]) (sdlang-mode . [(20161130 2311) ((emacs (24 3))) "Major mode for Simple Declarative Language files." single ((:commit . "d42a6eedefeb44919fbacf58d302b6df18f05bbc") (:url . "https://github.com/CyberShadow/sdlang-mode") (:keywords "languages"))]) (sdcv . [(20171002 210) ((emacs (24 3)) (popup (0 5 3)) (showtip (0 1)) (pos-tip (0 4 6)) (cl-lib (0 3))) "Interface for sdcv (StartDict console version)." single ((:commit . "1aad9defb871dc07e27f603092bb81413be54cf2") (:url . "http://www.emacswiki.org/emacs/download/sdcv.el") (:keywords "startdict" "sdcv"))]) (scss-mode . [(20150107 1400) nil "Major mode for editing SCSS files" single ((:commit . "b010d134f499c4b4ad33fe8a669a81e9a531b0b2") (:url . "https://github.com/antonj/scss-mode") (:keywords "scss" "css" "mode"))]) (scrooge . [(20170728 1106) ((emacs (24)) (thrift (0 9 3))) "Major mode for Twitter Scrooge files" single ((:commit . "fb55c64eb2ae4db57b14bc99d2e411d81b2c5c2a") (:keywords "scrooge" "thrift"))]) (scribble-mode . [(20160124 1528) ((emacs (24))) "Major mode for editing Scribble documents" single ((:commit . "34e9e5edb921813b6483e0fefa848efb6ee4b314") (:url . "https://github.com/emacs-pe/scribble-mode") (:keywords "convenience"))]) (screenshot . [(20120509 405) nil "Take a screenshot in Emacs" single ((:url . "http://www.emacswiki.org/cgi-bin/wiki/download/screenshot.el") (:keywords "images" "hypermedia"))]) (scratches . [(20151005 2116) ((dash (2 11 0)) (f (0 17 0))) "Multiple scratches in any language" single ((:commit . "9441afe6396ca38f08029123fab5d87429cbf315") (:keywords "scratch"))]) (scratch-pop . [(20170510 758) ((popwin (0 7 0 -3))) "Generate, popup (& optionally backup) scratch buffer(s)." single ((:commit . "7f4172c792b10bd38898dd8963cf0ade91921869") (:url . "http://hins11.yu-yake.com/"))]) (scratch-palette . [(20150225 42) ((popwin (0 7 0 -3))) "make scratch buffer for each files" single ((:commit . "f6803b448079f4a81cc699cec7442ef543cd5818") (:url . "http://hins11.yu-yake.com/"))]) (scratch-message . [(20170107 536) nil "Changing message in your scratch buffer" single ((:commit . "3ecc7f5e3b8a597ebd1492fd426d3720a7f34302") (:url . "https://github.com/thisirs/scratch-message.git") (:keywords "util" "scratch"))]) (scratch-log . [(20141114 2343) nil "Utility for *scratch* buffer." single ((:commit . "1168f7f16d36ca0f4ddf2bb98881f8db62cc5dc0"))]) (scratch-ext . [(20140103 2116) nil "Extensions for *scratch*" single ((:commit . "388c53cddd0466b451264894667ed64a6947ad67") (:url . "https://github.com/kyanagi/scratch-ext-el"))]) (scratch . [(20170614 1401) nil "Mode-specific scratch buffers" single ((:commit . "2cdf2b841ce7a0987093f65b0cc431947549f897") (:keywords "convenience" "tools" "files"))]) (scpaste . [(20171101 922) ((htmlize (1 39))) "Paste to the web via scp." single ((:commit . "10559d6b0feb34dc60f039a237052adcca77b5d9") (:url . "https://github.com/technomancy/scpaste") (:keywords "convenience" "hypermedia"))]) (scp . [(20171203 1851) ((emacs (25 1)) (cl-lib (0 5))) "Use the SCP command to transfer files with the remote server" single ((:commit . "3f437ee9f52df7d9f4c57275a8cfb7f06c3c26ff") (:url . "https://github.com/tszg/emacs-scp") (:keywords "convenience" "scp"))]) (sclang-snippets . [(20130513 51) ((yasnippet (0 8 0))) "Snippets for the SuperCollider Emacs mode" tar ((:commit . "c840a416b96f83bdd70491e3d1fbe2f1ae8b3f58") (:keywords "snippets"))]) (sclang-extensions . [(20160508 2038) ((auto-complete (1 4 0)) (s (1 3 1)) (dash (1 2 0)) (emacs (24 1))) "Extensions for the SuperCollider Emacs mode." tar ((:commit . "e9cc79732f16fdb582129303110c163dcc0d6da0") (:keywords "sclang" "supercollider" "languages" "tools"))]) (scion . [(20130315 555) nil "Haskell Minor Mode for Interacting with the Scion Library" single ((:commit . "99b4589175665687181a932cd836850205625f71") (:url . "https://code.google.com/p/scion-lib/"))]) (schrute . [(20170521 1140) ((emacs (24 3))) "Help you remember there is a better way to do something." single ((:commit . "59faa6c4232ae183cea93237301acad8c0763997") (:url . "https://bitbucket.org/shackra/dwight-k.-schrute") (:keywords "convenience"))]) (scheme-here . [(20141028 18) nil "cmuscheme extension for multiple inferior processes" single ((:commit . "430ba017cc530865218de23a8f7985095a58343f") (:url . "https://github.com/kaihaosw/scheme-here") (:keywords "scheme"))]) (scheme-complete . [(20170824 713) nil "Smart auto completion for Scheme in Emacs" single ((:commit . "4c77038048cbcf34b5907f0439c93058a71a2d2b"))]) (scf-mode . [(20151121 1848) nil "shorten file-names in compilation type buffers" single ((:commit . "dbfcdcd89034f208d65e181af58e0d73ad09f8b2") (:url . "https://github.com/lewang/scf-mode") (:keywords "compilation"))]) (scala-mode . [(20170802 432) nil "Major mode for editing Scala" tar ((:commit . "56cba2903cf6e12c715dbb5c99b34c97b2679379") (:url . "https://github.com/ensime/emacs-scala-mode") (:keywords "languages"))]) (scad-preview . [(20160206 536) ((scad-mode (91 0))) "Preview SCAD models in real-time within Emacs" single ((:commit . "fee011589671cc8f1296cb6aa81553e5bb699819") (:url . "http://hins11.yu-yake.com/"))]) (scad-mode . [(20180108 1809) nil "A major mode for editing OpenSCAD code" single ((:commit . "2de6815c7c2ade42e53e86751b9584ac4a5e1ef9") (:url . "https://raw.github.com/openscad/openscad/master/contrib/scad-mode.el") (:keywords "languages"))]) (sbt-mode . [(20171111 1558) ((emacs (24 4))) "Interactive support for sbt projects" tar ((:commit . "84c3d178a1f2c580f620fd8f03a05ac6413086a3") (:url . "https://github.com/ensime/emacs-sbt-mode") (:keywords "languages"))]) (sayid . [(20170509 1215) ((cider (0 14 0))) "sayid nREPL middleware client" single ((:commit . "20a92323c3edc060c521aa93edab9dad47646b4f") (:url . "https://github.com/bpiel/sayid"))]) (say-what-im-doing . [(20160706 1231) nil "dictate what you're doing with text to speech" single ((:commit . "5b2ce6783b02805bcac1107a149bfba3852cd9d5") (:url . "http://github.com/benaiah/say-what-im-doing") (:keywords "text to speech" "dumb" "funny"))]) (savekill . [(20140417 1929) nil "Save kill ring to disk" single ((:commit . "67fc94e3d8fe8ce3ca16f90518f6a46479b63e34") (:url . "http://www.emacswiki.org/cgi-bin/wiki/download/savekill.el") (:keywords "tools"))]) (save-visited-files . [(20170228 2250) nil "save opened files across sessions" single ((:commit . "33e8d223f622001f5792c52d8b36661e46b5834c") (:url . "http://github.com/nflath/save-visited-files"))]) (save-load-path . [(20140206 414) nil "save load-path and reuse it to test" single ((:commit . "6cb763a37e2b8af505bff2bcd11fd49c9ea04d66") (:url . "http://www.emacswiki.org/cgi-bin/wiki/download/save-load-path.el") (:keywords "lisp"))]) (sauron . [(20171105 247) nil "Track (erc/org/dbus/...) events and react to them." tar ((:commit . "50f09bfc6f5bf79e72a1223e345ee720b507e56a"))]) (sass-mode . [(20161006 2326) ((haml-mode (3 0 15)) (cl-lib (0 5))) "Major mode for editing Sass files" single ((:commit . "37105f46f6ea3592039f2ea7d0463ae7f042616e") (:url . "http://github.com/nex3/haml/tree/master") (:keywords "markup" "language" "css"))]) (sane-term . [(20160620 647) ((emacs (24 1))) "Multi Term is crazy. This is not." single ((:commit . "ef6fd08078f49f2bb3be60855d2d002bb6a5e0d2") (:url . "http://github.com/adamrt/sane-term"))]) (salt-mode . [(20170702 246) ((emacs (24 4)) (yaml-mode (0 0 12)) (mmm-mode (0 5 4)) (mmm-jinja2 (0 1))) "Major mode for Salt States" single ((:commit . "a41c07660199cfad3f9dd928d5674d2727508035") (:url . "https://github.com/glynnforrest/salt-mode") (:keywords "languages"))]) (salesforce-utils . [(20160813 1854) ((cl-lib (0 5))) "simple utilities for Salesforce" single ((:commit . "73328baf0fb94ac0d0de645a8f6d42e5ae27f773") (:url . "https://github.com/grimnebulin/emacs-salesforce"))]) (sailfish-scratchbox . [(20171202 532) nil "Sailfish OS scratchbox inside the emacs." single ((:commit . "bb5ed0f0b0cd72f2eb1af065b7587ec81866b089") (:url . "https://github.com/vityafx/sailfish-scratchbox.el") (:keywords "sb2" "mb2" "building" "scratchbox" "sailfish"))]) (sage-shell-mode . [(20171119 234) ((cl-lib (0 6 1)) (emacs (24 4)) (let-alist (1 0 5)) (deferred (0 5 1))) "A front-end for Sage Math" tar ((:commit . "e4e7523178f09270a28b8b712191b1e980e6e8c9") (:url . "https://github.com/sagemath/sage-shell-mode") (:keywords "sage" "math"))]) (sackspace . [(20130719 256) nil "A better backspace" single ((:commit . "fd0480eaaf6d3d11fd30ac5feb2da2f4f7572708") (:url . "http://github.com/cofi/sackspace.el") (:keywords "delete" "convenience"))]) (s12cpuv2-mode . [(20171013 1351) ((emacs (24 3))) "Major-mode for S12CPUV2 assembly" single ((:commit . "b17d4cf848dec1e20e66458e5c7ff77a2c051a8c") (:url . "https://github.com/AdamNiederer/s12cpuv2-mode") (:keywords "s12cpuv2" "assembly" "languages"))]) (s-buffer . [(20130605 1424) ((s (1 6 0)) (noflet (0 0 3))) "s operations for buffers" single ((:commit . "f95d234282377f00a2c3a9846681080cb95bb1df") (:url . "http://github.com/nicferrier/emacs-s-buffer") (:keywords "lisp"))]) (s . [(20171102 227) nil "The long lost Emacs string manipulation library." single ((:commit . "5e9a6857d42015c67681616aa3519f599f97b8d8") (:keywords "strings"))]) (ryo-modal . [(20180102 547) ((emacs (24 4))) "Roll your own modal mode" single ((:commit . "fee33898b5726b3c15b6ceb2ebb051bebd4f3592") (:url . "http://github.com/Kungsgeten/ryo-modal") (:keywords "convenience" "modal" "keys"))]) (rvm . [(20150402 742) nil "Emacs integration for rvm" single ((:commit . "134497bc460990c71ab8fa75431156e62c17da2d") (:url . "http://www.emacswiki.org/emacs/RvmEl") (:keywords "ruby" "rvm"))]) (rust-playground . [(20170211 5) ((emacs (24 3)) (rust-mode (0 3 0))) "Local Rust playground for short code snippets." single ((:commit . "ff4149489c30a65817750428847217368bd995ba") (:url . "https://github.com/grafov/rust-playground") (:keywords "tools" "rust"))]) (rust-mode . [(20180109 544) ((emacs (24 0))) "A major emacs mode for editing Rust source code" single ((:commit . "cfb440810a010b099e7196f8701c9d990a3641d8") (:url . "https://github.com/rust-lang/rust-mode") (:keywords "languages"))]) (russian-holidays . [(20170109 1340) nil "Russian holidays for the calendar" single ((:commit . "b285a30f29d85c48e3ea4eb93972d34a090c167b") (:url . "https://github.com/grafov/russian-holidays"))]) (runtests . [(20150807 131) nil "Run unit tests from Emacs" single ((:commit . "ed90249f24cc48290018df48b9b9b7172440be3e") (:url . "https://github.com/sunesimonsen/emacs-runtests") (:keywords "test"))]) (runner . [(20160524 43) nil "Improved \"open with\" suggestions for dired" single ((:commit . "a211d57ddc600410d07a8b534920ba905b093d87") (:url . "https://github.com/thamer/runner") (:keywords "shell command" "dired" "file extension" "open with"))]) (run-stuff . [(20170813 1957) ((emacs (24 4))) "context based command execution" single ((:commit . "2e23a78c26f62141142c743febd57ec54c78c0e3") (:url . "https://github.com/ideasman42/emacs-run-stuff") (:keywords "files" "lisp" "files" "convenience" "hypermedia"))]) (rufo . [(20170718 716) ((emacs (24 3))) "use rufo to automatically format ruby files" single ((:commit . "85a6d80fb05fef396a8029b8f944c92a53faf8fe") (:url . "https://github.com/danielma/rufo.el"))]) (ruby-tools . [(20151209 815) nil "Collection of handy functions for ruby-mode." tar ((:commit . "6b97066b58a4f82eb2ecea6434a0a7e981aa4c18"))]) (ruby-test-mode . [(20171016 931) ((ruby-mode (1 0)) (pcre2el (1 8))) "Minor mode for Behaviour and Test Driven" single ((:commit . "87f6d770f8d2326c8d36099aeee5d577f3e2af69") (:keywords "ruby" "unit" "test" "rspec"))]) (ruby-refactor . [(20160214 850) ((ruby-mode (1 2))) "A minor mode which presents various Ruby refactoring helpers." single ((:commit . "e6b7125878a08518bffec6942df0c606f748e9ee") (:url . "https://github.com/ajvargo/ruby-refactor") (:keywords "refactor" "ruby"))]) (ruby-interpolation . [(20131112 852) nil "Ruby string interpolation helpers" single ((:commit . "1978e337601222cedf00e117bf4b5cac15d1f203") (:url . "http://github.com/leoc/ruby-interpolation.el"))]) (ruby-hash-syntax . [(20171013 50) nil "Toggle ruby hash syntax between classic and 1.9 styles" single ((:commit . "bc05c3130a5d3237f04c6064297e56de5f73887d") (:url . "https://github.com/purcell/ruby-hash-syntax") (:keywords "languages"))]) (ruby-factory . [(20160101 2321) ((inflections (1 1))) "Minor mode for Ruby test object generation libraries" tar ((:commit . "2bb7ccc2fccb5257376a989aa395bc7b9eb1d55d") (:url . "http://github.com/sshaw/ruby-factory-mode") (:keywords "ruby" "rails" "convenience"))]) (ruby-extra-highlight . [(20171106 1133) nil "Highlight Ruby parameters." single ((:commit . "83942d18eae361998d24c1c523b308eea821f048") (:url . "https://github.com/Lindydancer/ruby-extra-highlight") (:keywords "languages" "faces"))]) (ruby-end . [(20141215 423) nil "Automatic insertion of end blocks for Ruby" single ((:commit . "a136f75abb6d5577ce40d61dfeb778c2e9bb09c0") (:url . "http://github.com/rejeep/ruby-end") (:keywords "speed" "convenience" "ruby"))]) (ruby-electric . [(20170810 430) nil "Minor mode for electrically editing ruby code" single ((:commit . "3553448a780a1ea5c3b0e9becd820d4762876593") (:url . "https://github.com/knu/ruby-electric.el") (:keywords "languages" "ruby"))]) (ruby-compilation . [(20150708 2340) ((inf-ruby (2 2 1))) "run a ruby process in a compilation buffer" single ((:commit . "134438af8fbdfa9c8077267c768d273a9792b484") (:url . "https://github.com/eschulte/rinari") (:keywords "test" "convenience"))]) (ruby-block . [(20131210 1931) nil "highlight matching block" single ((:keywords "languages" "faces" "ruby"))]) (ruby-additional . [(20171001 2106) ((emacs (24 3)) (ruby-mode (1 2))) "ruby-mode extensions yet to be merged into Emacs" tar ((:commit . "14f380893cb7c1d9ddbb4ed1a2fc280999c82fde") (:url . "https://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/misc/") (:keywords "ruby" "languages"))]) (rubocop . [(20170311 2211) ((emacs (24))) "An Emacs interface for RuboCop" single ((:commit . "980bedb455e3551d35a212fae515c054888907c1") (:url . "https://github.com/bbatsov/rubocop-emacs") (:keywords "project" "convenience"))]) (rtm . [(20160116 927) ((cl-lib (1 0))) "An elisp implementation of the Remember The Milk API" single ((:commit . "08dc10458b56e72f1512896192b2114ef57e58c5") (:url . "https://github.com/pmiddend/emacs-rtm") (:keywords "remember" "the" "milk" "productivity" "todo"))]) (rtags . [(20180107 2358) nil "A front-end for rtags" single ((:commit . "db5ad3a48c579b3522411bd2411c09dbb27af578") (:url . "http://rtags.net"))]) (rspec-mode . [(20171025 1606) ((ruby-mode (1 0)) (cl-lib (0 4))) "Enhance ruby-mode for RSpec" tar ((:commit . "94a04f148922852b591957b0b3b22de5c4237448") (:url . "http://github.com/pezra/rspec-mode") (:keywords "rspec" "ruby"))]) (rsense . [(20100510 2105) nil "RSense client for Emacs" single ((:commit . "8b5ee58318747ca1dde84ee41d48c4f50175cf35") (:keywords "convenience"))]) (rpn-calc . [(20170522 1842) ((popup (0 4))) "quick RPN calculator for hackers" single ((:commit . "66fcb64dbfddfc23823356b6213215bd7ab5efc6") (:url . "https://github.com/zk-phi/rpn-calc"))]) (rpm-spec-mode . [(20160710 436) nil "RPM spec file editing commands for Emacs/XEmacs" single ((:commit . "c1c38050c48ea330c7cea632b8785d66daeefb2b") (:keywords "unix" "languages"))]) (roy-mode . [(20121208 358) nil "Roy major mode" single ((:commit . "0416f561edbc6b4a29fced8be84d2527a9613d65") (:url . "https://github.com/folone/roy-mode") (:keywords "extensions"))]) (rotate . [(20160909 136) nil "Rotate the layout of emacs" single ((:commit . "091b5ac4fc310773253efb317e3dbe8e46959ba6") (:url . "https://github.com/daichirata/emacs-rotate") (:keywords "window" "layout"))]) (rope-read-mode . [(20171003 719) nil "Rearrange lines to read text smoothly" single ((:commit . "77b183a6f5450138388509f54a6a2ce442766e50") (:url . "https://github.com/marcowahl/rope-read-mode") (:keywords "reading" "convenience" "chill"))]) (roguel-ike . [(20160119 1902) ((popup (0 5 0))) "A coffee-break roguelike" tar ((:commit . "706dcb0687e8016d7d776f9d9e5ace9fdbbca43c"))]) (robots-txt-mode . [(20170908 642) nil "Major mode for editing robots.txt" single ((:commit . "4a77674ab2963b829d3b751741c4ce1169e87f6b") (:url . "https://github.com/emacs-php/robots-txt-mode") (:keywords "languages" "comm" "web"))]) (robe . [(20171116 1249) ((inf-ruby (2 5 1)) (emacs (24 4))) "Code navigation, documentation lookup and completion for Ruby" tar ((:commit . "7829f4fdda41eee0add8868646ab86e6b17de4b4") (:url . "https://github.com/dgutov/robe") (:keywords "ruby" "convenience" "rails"))]) (rjsx-mode . [(20171029 1156) ((emacs (24 4)) (js2-mode (20170504))) "Real support for JSX" single ((:commit . "4c10dcd764ade8e3d5dc235c26ba9299576a513d") (:url . "https://github.com/felipeochoa/rjsx-mode/") (:keywords "languages"))]) (riscv-mode . [(20170804 821) ((emacs (24 4))) "Major-mode for RISC V assembly" single ((:commit . "99febf97d1fa9441e8dada94fe30c2aa439c9749") (:url . "https://github.com/AdamNiederer/riscv-mode") (:keywords "riscv" "assembly"))]) (ripgrep . [(20170810 1118) nil "Front-end for ripgrep, a command line search tool" single ((:commit . "c47a2da4668ca338e7fadc3d8c095e075caaa17d") (:url . "https://github.com/nlamirault/ripgrep.el") (:keywords "ripgrep" "ack" "pt" "ag" "sift" "grep" "search"))]) (rings . [(20160531 1327) nil "Buffer rings. Like tabs, but better." single ((:commit . "3590b222eb80652cbd27866f066bd3571d86edfc") (:url . "http://github.com/konr/rings") (:keywords "utilities" "productivity"))]) (rinari . [(20150708 2340) ((ruby-mode (1 0)) (inf-ruby (2 2 5)) (ruby-compilation (0 16)) (jump (2 0))) "Rinari Is Not A Rails IDE" single ((:commit . "134438af8fbdfa9c8077267c768d273a9792b484") (:url . "https://github.com/eschulte/rinari") (:keywords "ruby" "rails" "project" "convenience" "web"))]) (rimero-theme . [(20171001 821) ((emacs (24))) "Theme with a dark background suitable for UI and terminal usage." single ((:commit . "2c15da5a4d56f1b29db2fc178d387eb86e7abd39") (:url . "https://github.com/yveszoundi/emacs-rimero-theme") (:keywords "faces" "theme" "dark" "light colors"))]) (rigid-tabs . [(20170903 859) ((emacs (24 3))) "Fix TAB alignment in diff buffers" single ((:commit . "eba84ceaba2e57e76ad2dfbb7a7154238a25d956") (:url . "https://github.com/wavexx/rigid-tabs.el") (:keywords "diff" "whitespace" "version control" "magit"))]) (rich-minority . [(20170813 622) ((cl-lib (0 5))) "Clean-up and Beautify the list of minor-modes." single ((:commit . "3201f6e1769beb9f6cbbda392bef99fce337acf4") (:url . "https://github.com/Malabarba/rich-minority") (:keywords "mode-line" "faces"))]) (rib-mode . [(20170726 748) ((emacs (24))) "RenderMan® Interface Bytestream (RIB) Major Mode" single ((:commit . "97470158784c3c212e22e2c20b8471ee65ba59af") (:url . "https://github.com/blezek/rib-mode"))]) (rhtml-mode . [(20130422 611) nil "major mode for editing RHTML files" tar ((:commit . "a6d71b38a3db867ccf82999c99805db1a3a33c33"))]) (rg . [(20171121 1151) ((cl-lib (0 5)) (emacs (24)) (s (1 10 0))) "A search tool based on ripgrep." single ((:commit . "68984092d0e0725057e7b67ba32016903170f189") (:url . "https://github.com/dajva/rg.el") (:keywords "matching" "tools"))]) (rfringe . [(20110405 820) nil "display the relative location of the region, in the fringe." single ((:url . "http://www.emacswiki.org/emacs/rfringe.el") (:keywords "fringe" "bitmap"))]) (reykjavik-theme . [(20160109 0) ((emacs (24))) "Theme with a dark background." single ((:commit . "d9bb783d6cf3c3b52cf377d9207484fba54657fd"))]) (review-mode . [(20171029 650) nil "major mode for ReVIEW" single ((:commit . "115cd06558c01889f89feaa659e0d7513a2ad21e") (:url . "https://github.com/kmuto/review-el"))]) (reverse-theme . [(20141204 1745) nil "Reverse theme for Emacs" single ((:commit . "8319d0d5342890a3530ffa4daafdb7c35feda1ca") (:url . "https://github.com/syohex/emacs-reverse-theme"))]) (reverse-im . [(20170721 940) ((emacs (24 4))) "Reverse mapping for keyboard layouts other than english." single ((:commit . "63fb1edee017177c44f8b663a707201b3dd78345") (:url . "https://github.com/a13/reverse-im.el") (:keywords "input" "method"))]) (reveal-next . [(20170101 1120) nil "Progressively reveal text after the cursor." single ((:url . "http://www.emacswiki.org/reveal-next.el") (:keywords "hide" "show" "invisible" "learning"))]) (reveal-in-osx-finder . [(20150802 957) nil "Reveal file associated with buffer in OS X Finder" single ((:commit . "5710e5936e47139a610ec9a06899f72e77ddc7bc") (:url . "https://github.com/kaz-yos/reveal-in-osx-finder") (:keywords "os x" "finder"))]) (restclient-test . [(20180106 1246) ((emacs (24 4)) (restclient (0))) "Run tests with restclient.el" single ((:commit . "4518561bc9661fedacb6fb352e9677207f45c418") (:url . "https://github.com/simenheg/restclient-test.el"))]) (restclient-helm . [(20170314 854) ((restclient (0)) (helm (1 9 4))) "helm interface for restclient.el" single ((:commit . "0ce4513a6b5ff1e63c73fda30f11efdb7a296c38") (:keywords "http" "helm"))]) (restclient . [(20171203 1248) nil "An interactive HTTP client for Emacs" single ((:commit . "0ce4513a6b5ff1e63c73fda30f11efdb7a296c38") (:keywords "http"))]) (restart-emacs . [(20170609 905) nil "Restart emacs from within emacs" single ((:commit . "98aa4efd2caeaf0f42ca385c24fa14a843b271b7") (:url . "https://github.com/iqbalansari/restart-emacs") (:keywords "convenience"))]) (resize-window . [(20170704 2212) ((emacs (24)) (cl-lib (0 5))) "easily resize windows" single ((:commit . "dcbbd30f4f4435070a66a22c5a169b752ca9f904") (:url . "https://github.com/dpsutton/resize-mode") (:keywords "window" "resize"))]) (requirejs-mode . [(20130215 1304) nil "Improved AMD module management" single ((:commit . "bbb0c09f8eb2d6a33c17319be8137f68bb16bc92") (:keywords "javascript" "amd" "requirejs"))]) (requirejs . [(20151203 2319) ((js2-mode (20150713)) (popup (0 5 3)) (s (1 9 0)) (cl-lib (0 5)) (yasnippet (20151011 1823))) "Requirejs import manipulation and source traversal." tar ((:commit . "4ea2a5fcbc76e4cbb6a7461e6f05f019b75865b1") (:url . "https://github.com/joeheyming/requirejs-emacs") (:keywords "javascript" "requirejs"))]) (request-deferred . [(20160419 1605) ((deferred (0 3 1)) (request (0 2 0))) "Wrap request.el by deferred" single ((:commit . "a3d080e57eb8be606fbf39d1baff94e1b16e1fb8"))]) (request . [(20170131 1747) ((emacs (24 4))) "Compatible layer for URL request in Emacs" single ((:commit . "a3d080e57eb8be606fbf39d1baff94e1b16e1fb8"))]) (req-package . [(20170826 2252) ((use-package (1 0)) (dash (2 7 0)) (log4e (0 2 0)) (ht (0))) "A use-package wrapper for package runtime dependencies management" tar ((:commit . "179ab70bb3d4f7a94401dace64f695c50acfe389") (:url . "https://github.com/edvorg/req-package") (:keywords "dotemacs" "startup" "speed" "config" "package"))]) (repo . [(20170213 139) ((emacs (24 3))) "Running repo from Emacs" single ((:commit . "d7b87cd515bad8a67d3a892a46a23f5fe81e08de") (:url . "https://github.com/canatella/repo-el") (:keywords "convenience"))]) (replace-with-inflections . [(20170911 245) ((cl-lib (0 5)) (string-inflection (1 0 5)) (inflections (1 1))) "Inflection aware `query-replace'" single ((:commit . "e286036a5d1dbac06a72a1e831b2a8d9cad27238") (:url . "https://github.com/knu/replace-with-inflections.el") (:keywords "matching"))]) (replace-symbol . [(20160517 1712) nil "Rename symbols in expressions or buffers" single ((:commit . "baf949e528aee1881f455f9c84e67718bedcb3f6") (:url . "https://github.com/bmastenbrook/replace-symbol-el"))]) (replace-pairs . [(20160207 451) ((emacs (24 4))) "Query-replace pairs of things" single ((:commit . "1e49071e2ef46a458a28f77681e313a63db5663c") (:url . "https://github.com/davidshepherd7/replace-pairs"))]) (replace-from-region . [(20170227 1516) nil "Replace commands whose query is from region" single ((:commit . "dc9318b9b2822da7b00ecc34d1dc965c8f96c9bb") (:url . "http://www.emacswiki.org/emacs/download/replace-from-region.el") (:keywords "replace" "search" "region"))]) (replace+ . [(20170801 1947) nil "Extensions to `replace.el'." single ((:url . "https://www.emacswiki.org/emacs/download/replace%2b.el") (:keywords "matching" "help" "internal" "tools" "local"))]) (repl-toggle . [(20161203 414) ((fullframe (0 0 5))) "Switch to/from repl buffer for current major-mode" single ((:commit . "50044030969d68e9f78a6db4e0a9229f5f3eaec3") (:keywords "repl" "buffers" "toggle"))]) (repeatable-motion . [(20170620 1148) ((emacs (24))) "Make repeatable versions of motions" tar ((:commit . "f29effdc4121c2dc7e3fec9b3a62debce29cda9d") (:url . "https://github.com/willghatch/emacs-repeatable-motion") (:keywords "motion" "repeatable"))]) (remember-last-theme . [(20170619 1433) ((emacs (24 4))) "Remember the last used theme between sessions." single ((:commit . "0973f1aa6b96355fa376fffe8b45733b6e963c51") (:url . "https://github.com/anler/remember-last-theme") (:keywords "convenience" "faces"))]) (remark-mode . [(20171217 2356) ((emacs (25 1)) (markdown-mode (2 0))) "Major mode for the remark slideshow tool" tar ((:commit . "e8a95f25d865d6165a7fdb1cadf5e6f0bb5ee73b") (:keywords "remark" "slideshow" "markdown" "hot reload"))]) (relax . [(20131029 1434) ((json (1 2))) "For browsing and interacting with CouchDB" single ((:commit . "6e33892623ab87833082262321dc8e1977209626") (:url . "http://github.com/technomancy/relax.el") (:keywords "database" "http"))]) (relative-buffers . [(20160221 1123) ((cl-lib (0 5)) (dash (2 6 0)) (s (1 9 0)) (f (0 16 2))) "Emacs buffers naming convention" single ((:commit . "2547475084244d266b507e563c9b4034705cfeca") (:url . "https://github.com/proofit404/relative-buffers"))]) (related . [(20161002 2310) ((cl-lib (0 5))) "Switch back and forth between similarly named buffers." single ((:commit . "0065a2e16eeaa9bface49f7f0815b9cf9719f441") (:url . "https://bitbucket.org/lyude/related/raw/master/related.el") (:keywords "file" "buffer" "switch" "selection" "matching" "convenience"))]) (register-channel . [(20150513 2059) nil "Jump around fast using registers" single ((:commit . "f62f9a62ebd2537d4a8c8f2e358562c67d2aefc1") (:keywords "convenience"))]) (region-state . [(20151128 238) nil "Show the number of chars/lines or rows/columns in the region" single ((:commit . "07ffb7d9ada2fcd204f3447f078c265d25f36f60") (:url . "https://github.com/xuchunyang/region-state.el") (:keywords "convenience"))]) (region-convert . [(20161118 1859) nil "Convert string in region by Lisp function" single ((:commit . "a50d473c3bfb33537d12025115a14c821fa5325a") (:url . "https://github.com/zonuexe/right-click-context") (:keywords "region" "convenience"))]) (region-bindings-mode . [(20140407 1514) nil "Enable custom bindings when mark is active." single ((:commit . "3fa5dbdbd7c000bebff6d9d14a4be326ec24b6fc") (:url . "https://github.com/fgallina/region-bindings-mode") (:keywords "convenience"))]) (regex-tool . [(20170104 1118) nil "A regular expression evaluation tool for programmers" single ((:commit . "0b4a0111143c88ef94bec56624cb2e00c1a054e6") (:url . "http://www.newartisans.com/") (:keywords "regex" "languages" "programming" "development"))]) (regex-dsl . [(20100124 228) nil "lisp syntax for regexps" single ((:commit . "ac89ab8b7691a165ef3007cb84417125cfc0632e"))]) (refine . [(20170322 1527) ((emacs (24 3)) (s (1 11 0)) (dash (2 12 0)) (list-utils (0 4 4)) (loop (1 2))) "interactive value editing" single ((:commit . "55984dbd570c361e7d56d85f2d4ecfbcc567bda1") (:keywords "convenience"))]) (redtick . [(20170129 1428) ((emacs (24 4))) "Smallest pomodoro timer (1 char)" tar ((:commit . "e6d2e9b69ec666f460f9158dd31cdf035eeb1080") (:url . "http://github.com/ferfebles/redtick") (:keywords "calendar"))]) (redshank . [(20171115 1156) ((paredit (21))) "Common Lisp Editing Extensions" tar ((:commit . "9b64da7895973a29a32320a13c08de69befa0006") (:keywords "languages" "lisp"))]) (redprl . [(20180102 1356) ((emacs (24 3))) "Major mode for editing RedPRL proofs and interacting with RedPRL" single ((:commit . "4657a8461e0aabaa5caf9673f40c3406657d9c35") (:keywords "languages"))]) (redpen-paragraph . [(20160625 350) ((emacs (24)) (cl-lib (0 5)) (json (1 4))) "RedPen interface." single ((:commit . "770ffb34b04bfa0ea8484fa1506e96c530168e13") (:url . "https://github.com/karronoli/redpen-paragraph.el") (:keywords "document" "proofreading" "help"))]) (redo+ . [(20131117 351) nil "Redo/undo system for Emacs" single ((:keywords "lisp" "extensions"))]) (redis . [(20150531 1248) ((emacs (24)) (cl-lib (0 5))) "Redis integration" single ((:commit . "2c33f3397bc14e7a8192867b55920492d4eead8c") (:url . "https://github.com/emacs-pe/redis.el") (:keywords "convenience"))]) (recursive-narrow . [(20140902 1027) nil "narrow-to-region that operates recursively" single ((:commit . "bc0cab88234ca92640d4b8da0d83e132c1897922") (:url . "http://github.com/nflath/recursive-narrow"))]) (rectangle-utils . [(20160914 2108) ((emacs (24)) (cl-lib (0 5))) "Some useful rectangle functions." single ((:commit . "6fe38fdd48ef5305a908b94a043a966ac3f2053a") (:url . "https://github.com/thierryvolpiatto/rectangle-utils"))]) (rect+ . [(20150620 1744) nil "Extensions to rect.el" single ((:commit . "299b742faa0bc4448e0d5fe9cb98ab1eb93b8dcc") (:url . "https://github.com/mhayashi1120/Emacs-rectplus") (:keywords "extensions" "data" "tools"))]) (recover-buffers . [(20171008 2137) nil "revisit all buffers from an auto-save file" tar ((:commit . "81a5cb53099955ebc2a411a44cba5a394ee3f2d1"))]) (recompile-on-save . [(20151126 646) ((dash (1 1 0)) (cl-lib (0 5))) "Trigger recompilation on file save." single ((:commit . "92e11446869d878803d4f3dec5d2101380c12bb2") (:url . "https://github.com/maio/recompile-on-save.el") (:keywords "convenience" "files" "processes" "tools"))]) (recentf-ext . [(20161210 840) nil "Recentf extensions" single ((:url . "http://www.emacswiki.org/cgi-bin/wiki/download/recentf-ext.el") (:keywords "convenience" "files"))]) (rebox2 . [(20121113 500) nil "Handling of comment boxes in various styles." single ((:commit . "00634eca420cc48657b81e40e599ff8548083985") (:url . "https://github.com/lewang/rebox2"))]) (rebecca-theme . [(20171114 2208) ((emacs (24))) "Rebecca Purple Theme" single ((:commit . "f34089f176def79ecee5feda7dd79896f555bbe2") (:url . "https://github.com/vic/rebecca-theme") (:keywords "theme" "dark"))]) (reason-mode . [(20171027 2235) ((emacs (24 3))) "A major mode for editing ReasonML" tar ((:commit . "a9de59cced37b44db72ee248107021a660561d11") (:url . "https://github.com/reasonml-editor/reason-mode") (:keywords "languages" "ocaml"))]) (realgud-rdb2 . [(20160303 43) ((realgud (1 3))) "realgud front-end for interacting with Ruby debugger2" tar ((:commit . "b394bee61e75b7c6a5fa565594aa79b74887f5df") (:url . "http://github.com/rocky/realgud-ruby-debugger2"))]) (realgud-pry . [(20160805 745) ((realgud (1 4 3)) (cl-lib (0 5)) (emacs (24))) "realgud front-end to the Ruby pry debugger" tar ((:commit . "9b3834048fcbc16827c55af38f8cfef0cf6533da") (:url . "http://github.com/rocky/realgud-pry"))]) (realgud-old-debuggers . [(20170316 31) ((realgud (1 4 3)) (cl-lib (0 5)) (emacs (24))) "realgud front-end to older lesser-used debuggers" tar ((:commit . "1e1d573a6ba731afbe68c1309a316457ca3fbb94") (:url . "http://github.com/rocky/realgud-old-debuggers"))]) (realgud-byebug . [(20160805 732) ((realgud (1 4 3)) (cl-lib (0 5)) (emacs (24))) "realgud front-end to the Ruby byebug debugger" tar ((:commit . "cb75d6bd9abbe04afa4c74a7ce9c66852814e0c3") (:url . "http://github.com/rocky/realgud-byebug"))]) (realgud . [(20180102 1645) ((load-relative (1 2)) (loc-changes (1 2)) (test-simple (1 2 0)) (cl-lib (0 5)) (emacs (24))) "A modular front-end for interacting with external debuggers" tar ((:commit . "2b3ffb5c375dd32a633668eec969148590b489b4") (:url . "http://github.com/realgud/realgud/") (:keywords "gdb" "python" "perl" "go" "bash" "nodejs" "zsh" "bashdb" "zshdb" "remake" "make" "trepan" "perldb"))]) (real-auto-save . [(20180107 1850) nil "Automatically save your all your buffers/files at regular intervals." single ((:commit . "d813632c1e754539cc92953ac4c3609105f9af58"))]) (readline-complete . [(20150708 737) nil "offers completions in shell mode" single ((:commit . "30c020c37b2741160cc37e656e13c85d826a0ebf"))]) (readability . [(20140715 1727) ((oauth (1 4)) (ov (1 0)) (emacs (24 3))) "Read articles from Readability in Emacs" single ((:commit . "6c220ab8e0ca63946574ed892add5c8fd14002ce") (:url . "https://github.com/ShingoFukuyama/emacs-readability") (:keywords "readability" "oauth"))]) (read-aloud . [(20160922 2200) ((emacs (24 4))) "A simple interface to TTS engines" single ((:commit . "c662366226abfb07204ab442b4f853ed85438d8a") (:url . "https://github.com/gromnitsky/read-aloud.el") (:keywords "multimedia"))]) (react-snippets . [(20170803 1550) ((yasnippet (0 7 0))) "Yasnippets for React" tar ((:commit . "bfc4b68b81374a6a080240592641091a7e8a6d61"))]) (rdxmk . [(20170629 1834) nil "A small set of tools for redox developments" tar ((:commit . "e78749fb29738365ffa4d863ffabeb969ebb0bcf") (:url . "https://github.com/jsalzbergedu/rdxmk") (:keywords "redox" "convenience" "tools"))]) (rdp . [(20120928 1854) nil "Recursive Descent Parser library" single ((:commit . "b620192afada04aec33b38cc130fef0765f41ca9") (:url . "https://github.com/skeeto/rdp"))]) (rdf-prefix . [(20170915 1200) nil "Prefix lookup for RDF" single ((:commit . "25cc3c8902f16191496b549705b00ffc7dff51f1") (:url . "https://github.com/simenheg/rdf-prefix") (:keywords "convenience" "abbrev"))]) (rcirc-styles . [(20160206 1850) ((cl-lib (0 5))) "support mIRC-style color and attribute codes" single ((:commit . "f313bf6a7470bed314b27c7a40558cb787d7bc67"))]) (rcirc-notify . [(20150219 1404) nil "libnotify popups" single ((:commit . "841a7b5a6cdb0c11a812df924d2c6a7d364fd455") (:keywords "lisp" "rcirc" "irc" "notify" "growl"))]) (rcirc-groups . [(20170731 1401) nil "an emacs buffer in rcirc-groups major mode" single ((:commit . "b68ece9d219b909244d4e3c0d8bf6a746d6fead7") (:url . "http://tapoueh.org/emacs/rcirc-groups.html") (:keywords "comm" "convenience"))]) (rcirc-alertify . [(20140406 1819) ((alert (20140406 1353))) "Cross platform notifications for rcirc" single ((:commit . "ea5cafc55893f375eccbe013d12dbaa94bf6e259") (:keywords "comm" "convenience"))]) (rcirc-alert . [(20141127 247) nil "Configurable alert messages on top of RCIRC" tar ((:commit . "0adf8ff9c47023fec578f678424be62b0f49057f") (:keywords "lisp" "rcirc" "irc" "alert" "awesome"))]) (rc-mode . [(20160913 1218) nil "Major mode for the Plan9 rc shell" single ((:commit . "fe2e0570bf9c19a292e16b18fd4b0a256df5d93f") (:url . "https://github.com/mrhmouse/rc-mode.el") (:keywords "rc" "plan9" "shell"))]) (rbt . [(20170202 1502) ((popup (0 5 3)) (magit (20160128 1201))) "Integrate reviewboard with emacs." single ((:commit . "32bfba9062a014e375451cf4203c29535b5efc1e") (:keywords "reviewboard" "rbt"))]) (rbenv . [(20141119 2349) nil "Emacs integration for rbenv" single ((:commit . "2ea1a5bdc1266caef1dd77700f2c8f42429b03f1") (:url . "https://github.com/senny/rbenv.el") (:keywords "ruby" "rbenv"))]) (rats . [(20170818 313) ((s (1 10 0)) (go-mode (1 3 1)) (cl-lib (0 5))) "Rapid testing suite for Go" single ((:commit . "a6d55aebcc54f669c6c6ffedf84364c4097903cc") (:keywords "go"))]) (rase . [(20120928 1345) nil "Run At Sun Event daemon" single ((:commit . "59b5f7e8102570b65040e8d55781c7ea28de7338") (:url . "https://github.com/m00natic/rase/") (:keywords "solar" "sunrise" "sunset" "midday" "midnight"))]) (ranger . [(20170817 857) ((emacs (24 4))) "Make dired more like ranger" single ((:commit . "6bbff5df2e55f56047fca5058d9ca93ba4963aef") (:url . "https://github.com/ralesi/ranger") (:keywords "files" "convenience" "dired"))]) (random-splash-image . [(20151002 1830) nil "Randomly sets splash image to *GNU Emacs* buffer on startup." single ((:commit . "53a39ebfd8ac6be066a652a508a717870f94218a") (:url . "https://github.com/kakakaya/random-splash-image") (:keywords "games"))]) (rand-theme . [(20151219 1535) ((cl-lib (0 5))) "Random Emacs theme at start-up!" single ((:commit . "65a00e5c5150f857aa96803b68f50bc8da0215b7") (:url . "https://github.com/gopar/rand-theme"))]) (rally-mode . [(20161113 1954) ((popwin (1 0 0))) "a mode to interact with the Rally Software web site." single ((:commit . "0f5e09a6abe2de7613f174b4f54863df93343134") (:url . "https://pragcraft.wordpress.com/") (:keywords "rally" "ca" "agile"))]) (rake . [(20170921 801) ((f (0 13 0)) (dash (1 5 0)) (cl-lib (0 5))) "Run rake commands" single ((:commit . "a27322262ebcce7765574b577000f6f939400206") (:url . "https://github.com/asok/rake.el") (:keywords "rake" "ruby"))]) (rainbow-identifiers . [(20141102 726) ((emacs (24))) "Highlight identifiers according to their names" single ((:commit . "19fbfded1baa98d12335f26f6d7b20e5ae44ce2e") (:url . "https://github.com/Fanael/rainbow-identifiers"))]) (rainbow-delimiters . [(20170929 432) nil "Highlight brackets according to their depth" single ((:commit . "19b93892afa0494ba749c2ca9c154e04447ad778") (:url . "https://github.com/Fanael/rainbow-delimiters") (:keywords "faces" "convenience" "lisp" "tools"))]) (rainbow-blocks . [(20171025 738) nil "Block syntax highlighting for lisp code" single ((:commit . "dd435d7bb34ff6f162a5f315df308b90b7e9f842") (:url . "https://github.com/istib/rainbow-blocks"))]) (railscasts-theme . [(20150219 725) nil "Railscasts color theme for GNU Emacs." single ((:commit . "1340c3f6c2717761cab95617cf8dcbd962b1095b") (:url . "https://github.com/mikenichols/railscasts-theme") (:keywords "railscasts" "color" "theme"))]) (railscasts-reloaded-theme . [(20170314 146) nil "Railscasts Reloaded color theme" single ((:commit . "bd6e385752c89760fdee7bdf331e24d1d80ee7e9") (:url . "https://github.com/thegeorgeous/railscasts-reloaded-theme"))]) (rails-log-mode . [(20140407 2125) nil "Major mode for viewing Rails log files" single ((:commit . "ff440003ad7d47cb0ac3300f2a632f4cfd36a446") (:keywords "rails" "log"))]) (racket-mode . [(20171116 1435) ((emacs (24 3)) (faceup (0 0 2)) (s (1 9 0))) "Major mode for Racket language." tar ((:commit . "132175062ca4b8436bfc69b60e0de1feac0d2c8c") (:url . "https://github.com/greghendershott/racket-mode"))]) (racer . [(20171211 1548) ((emacs (24 3)) (rust-mode (0 2 0)) (dash (2 13 0)) (s (1 10 0)) (f (0 18 2)) (pos-tip (0 4 6))) "code completion, goto-definition and docs browsing for Rust via racer" single ((:commit . "cb74060bbaff8e505ba36e20e4a3a763ee7dd4c8") (:url . "https://github.com/racer-rust/emacs-racer") (:keywords "abbrev" "convenience" "matching" "rust" "tools"))]) (r-autoyas . [(20140101 710) ((ess (0)) (yasnippet (0 8 0))) "Provides automatically created yasnippets for R function argument lists." tar ((:commit . "b4020ee7f5f895e0065b8b26da8a49c51432d530") (:url . "https://github.com/mlf176f2/r-autoyas.el") (:keywords "r" "yasnippet"))]) (quiz . [(20170818 415) ((cl-lib (0 5)) (emacs (25))) "Multiple choice quiz game" single ((:commit . "c43151212ead2330e7ec8e5ac6914c617a12e4f8") (:url . "https://github.com/davep/quiz.el") (:keywords "games" "trivia" "quiz"))]) (quiet . [(20160508 556) nil "disconnect from the online world for a while" single ((:commit . "6f20309f99e26fcae2601d1544b342f044e54baf") (:url . "https://github.com/zzkt/quiet") (:keywords "quiet" "distraction" "network" "detachment" "offline"))]) (quickrun . [(20170222 1715) ((emacs (24 3))) "Run commands quickly" single ((:commit . "55bbe5d54b80206ea5a60bf2f58eb6368b2c8201") (:url . "https://github.com/syohex/emacs-quickrun"))]) (quickref . [(20170817 532) ((dash (1 0 3)) (s (1 0 0))) "Display relevant notes-to-self in the echo area" single ((:commit . "f368c8b8219bb90498c5ab84e26f00eedaa234cf") (:url . "https://github.com/pd/quickref.el"))]) (quick-shell-keybind . [(20171022 2313) ((emacs (24))) "Interactively bind a key to shell commands" single ((:commit . "5f4541a5a5554d108bf16b5fd1713e962161ca1b") (:url . "https://github.com/eyeinsky/quick-shell-keybind") (:keywords "maint" "convenience" "processes"))]) (quick-preview . [(20150828 2139) nil "quick preview using GNOME sushi, gloobus or quick look" single ((:commit . "29c884c6ab385ef67d9aa656ebb7c94cabeb5c35") (:url . "https://github.com/myuhe/quick-preview.el") (:keywords "files" "hypermedia"))]) (quick-peek . [(20170327 27) ((emacs (24 3))) "Inline quick-peek windows" single ((:commit . "6a006fbf1a41b04c0e7522d50c942ec89c3637fc") (:keywords "tools" "help" "doc" "convenience"))]) (quick-buffer-switch . [(20151007 1508) nil "Quick switch to file or dir buffers." single ((:commit . "d5fdd67b4c9f04b7a7122da2215e4ae076a03b1b") (:keywords "emacs" "configuration"))]) (quelpa-use-package . [(20161212 1038) ((emacs (24 3)) (quelpa (0)) (use-package (2))) "quelpa handler for use-package" single ((:commit . "f276555d6bead02a0d869149f03a545d4d4265ad") (:url . "https://github.com/quelpa/quelpa-use-package") (:keywords "package" "management" "elpa" "use-package"))]) (quelpa . [(20171207 1139) ((package-build (0)) (emacs (24 3))) "Emacs Lisp packages built directly from source" tar ((:commit . "b9f5640a2459e627bd69ca3a1be3037080cac776") (:url . "https://github.com/quelpa/quelpa") (:keywords "package" "management" "build" "source" "elpa"))]) (quasi-monochrome-theme . [(20171126 203) nil "Quasi Monochrome theme" tar ((:commit . "aa6a3649ad518b9eebd7bc5c84f184469ea735a9") (:keywords "color" "theme" "monochrome"))]) (quack . [(20160410 207) nil "enhanced support for editing and running Scheme code" single ((:commit . "c1c8e448d295cc1b5752104a63a5759a9c5fdf6d"))]) (qt-pro-mode . [(20170604 1141) ((emacs (24))) "Qt Pro/Pri major mode" single ((:commit . "66601441cc728a609765b149ee0d7dcfb74dc8bf") (:keywords "extensions"))]) (qml-mode . [(20161015 1731) nil "Major mode for editing QT Declarative (QML) code." single ((:commit . "6c5f33ba88ae010bf201a80ee8095e20a724558c") (:url . "https://github.com/coldnew/qml-mode") (:keywords "qml" "qt" "qt declarative"))]) (qiita . [(20140118 44) ((helm (1 5 9)) (markdown-mode (2 0))) "Qiita API Library for emacs" single ((:commit . "93c697b97d540fd1601a13a3d9889fb939b19878") (:url . "https://github.com/gongo/qiita-el") (:keywords "qiita"))]) (pyvenv . [(20171215 1329) nil "Python virtual environment interface" single ((:commit . "651a624fb41898d0c68970889ef7a72bad78b10b") (:url . "http://github.com/jorgenschaefer/pyvenv") (:keywords "python" "virtualenv" "tools"))]) (pythonic . [(20171219 810) ((emacs (24)) (cl-lib (0 5)) (dash (2 11)) (s (1 9)) (f (0 17 2))) "Utility functions for writing pythonic emacs package." single ((:commit . "ce9c45564efa5553f6268c34f5f1ca2dfcb4d4da") (:url . "https://github.com/proofit404/pythonic"))]) (python-x . [(20171006 336) ((python (0 24)) (folding (0)) (cl-lib (0 5))) "python.el extras for interactive evaluation" tar ((:commit . "9bf0d16cfe7b5f24b98d6b33cbc8763edaceb174") (:keywords "python" "eval" "folding") (:url . "https://github.com/wavexx/python-x.el") (:author . "Yuri D'Elia "))]) (python-test . [(20171112 2137) ((emacs (25 1))) "Python testing integration" single ((:commit . "f00b9de14647b15b6f36ceee77d7e9e08dd074a4") (:url . "https://github.com/emacs-pe/python-test.el") (:keywords "convenience" "tools" "processes"))]) (python-switch-quotes . [(20161228 9) ((emacs (24 3))) "cycle between ' and \" quotes in python strings" single ((:commit . "93f1e9b40e061a6cea480139e8b1362b6404abd0") (:url . "https://github.com/werehuman/python-switch-quotes") (:keywords "python" "tools" "convenience"))]) (python-mode . [(20180104 1009) nil "Python major mode" tar ((:commit . "ff5ca6ed9e5eabad355bfb1218bd8020a846b77f"))]) (python-info . [(20151228 1052) nil "Python info manual for Emacs" tar ((:commit . "306f15441b54b25757cdfd3b327b84024ea21ed7"))]) (python-environment . [(20150310 153) ((deferred (0 3 1))) "virtualenv API for Emacs Lisp" tar ((:commit . "401006584e32864a10c69d29f14414828909362e") (:keywords "applications" "tools"))]) (python-docstring . [(20170508 156) nil "Smart Python docstring formatting" tar ((:commit . "d35d2e0fbe468743c19a870fec7b28a7e725790d"))]) (python-django . [(20150821 2104) nil "A Jazzy package for managing Django projects" single ((:commit . "fc54ad74f0309670359b939f64d0f1fff68aeac4") (:url . "https://github.com/fgallina/python-django.el") (:keywords "languages"))]) (python-cell . [(20131029 1616) nil "Support for MATLAB-like cells in python mode" single ((:commit . "ccacd91a19be784860d687eb1e8ce88fddaacaf6") (:keywords "python" "matlab" "cell"))]) (pytest . [(20170614 745) ((s (1 9 0))) "Easy Python test running in Emacs" single ((:commit . "013fccd684fc8f2092d6e1ec4203ec574e12051d") (:url . "https://github.com/ionrock/pytest-el") (:keywords "pytest" "python" "testing"))]) (pylint . [(20170402 555) nil "minor mode for running `pylint'" single ((:commit . "f5a7e4327d2f31744d3ae84e46ac4cde1b76b2d3") (:keywords "languages" "python"))]) (pyimpsort . [(20160129 2053) ((emacs (24 3))) "Sort python imports." tar ((:commit . "d5c61d70896b642646dfd3c809c06174ae086c1a") (:url . "https://github.com/emacs-pe/pyimpsort.el") (:keywords "convenience"))]) (pyimport . [(20170808 346) ((dash (2 8 0)) (s (1 9 0)) (shut-up (0 3 2))) "Manage Python imports!" single ((:commit . "50789ef8c5e19997bd5b0d4c47acb7660d128e76"))]) (pyim-wbdict . [(20170724 1527) ((pyim (1 0))) "Some wubi dicts for pyim" tar ((:commit . "114489ed97e825ae11a8d09da6e873820cf23106") (:url . "https://github.com/tumashu/pyim-wbdict") (:keywords "convenience" "chinese" "pinyin" "input-method" "complete"))]) (pyim-cangjie5dict . [(20170729 1946) ((pyim (1 0))) "Some cangjie5 dicts for pyim" tar ((:commit . "c8618590780b818db1a67a29bc47c5d25903517a") (:url . "https://github.com/erstern/pyim-cangjie5dict") (:keywords "convenience" "chinese" "pinyin" "input-method" "complete"))]) (pyim-basedict . [(20170726 1959) nil "The default pinyin dict of pyim" tar ((:commit . "3196cb210e056702c5a4ea1dac1d8e1e27740fab") (:url . "https://github.com/tumashu/pyim-basedict") (:keywords "convenience" "chinese" "pinyin" "input-method" "complete"))]) (pyim . [(20180108 1452) ((emacs (24 3)) (cl-lib (0 5)) (popup (0 1)) (async (1 6)) (pyim-basedict (0 1))) "A Chinese input method which support quanpin, shuangpin, wubi and cangjie." tar ((:commit . "ff5269cd5e438452cf8855a46b7c548b5268b7b9") (:url . "https://github.com/tumashu/pyim") (:keywords "convenience" "chinese" "pinyin" "input-method"))]) (pygen . [(20161120 2106) ((elpy (1 12 0)) (python-mode (6 2 2)) (dash (2 13 0))) "Python code generation using Elpy and Python-mode." single ((:commit . "9019ff44ba49d7295b1476530feab91fdadb084b") (:url . "https://github.com/JackCrawley/pygen/") (:keywords "python" "code generation"))]) (pyfmt . [(20150521 1356) nil "Emacs interface to pyfmt" single ((:commit . "cb92be2cf0804cc53142dc5edb36f8e0ef5cec32") (:url . "https://github.com/aheaume/pyfmt.el") (:keywords "tools"))]) (pyenv-mode-auto . [(20160122 2341) ((pyenv-mode (0 1 0)) (s (1 11 0)) (f (0 17 0))) "Automatically activates pyenv version if .python-version file exists." single ((:commit . "783a93488e255346f9b1b2658424ffe0d670e8cf") (:url . "https://github.com/ssbb/pyenv-mode-auto") (:keywords "python" "pyenv"))]) (pyenv-mode . [(20170801 1648) ((pythonic (0 1 0))) "Integrate pyenv with python-mode" single ((:commit . "215b7f0ed3847e0c844adbff7d9b19057aa7c820") (:url . "https://github.com/proofit404/pyenv-mode"))]) (pydoc-info . [(20110301 34) nil "Better Python support for info-lookup-symbol." tar nil]) (pydoc . [(20170429 1158) nil "functional, syntax highlighted pydoc navigation" single ((:commit . "916153516382e5546b59b46342c58ed76cf27faf") (:url . "https://github.com/statmobile/pydoc") (:keywords "pydoc" "python"))]) (pycoverage . [(20160324 1812) ((emacs (24 3))) "Support for coverage stats on Python 2.X and 3" tar ((:commit . "4f5451f4d6e1e2ddd5878fc7d18f5fc4fc92a83d") (:url . "https://github.com/mattharrison/pycoverage.el") (:keywords "project" "convenience"))]) (pycarddavel . [(20150831 516) ((helm (1 7 0)) (emacs (24 0))) "Integrate pycarddav" single ((:commit . "a6d81ee4eb8309cd82f6082aeca68c5a015702a3") (:keywords "helm" "pyccarddav" "carddav" "message" "mu4e" "contacts"))]) (py-yapf . [(20160925 422) nil "Use yapf to beautify a Python buffer" single ((:commit . "a878304202ad827a1f3de3dce1badd9ca8731146") (:url . "https://github.com/paetzke/py-yapf.el"))]) (py-test . [(20151116 2222) ((dash (2 9 0)) (f (0 17)) (emacs (24 4))) "A test runner for Python code." single ((:commit . "3b2a0bdaacb54df6f2bee8317423e5c0d159d5cf") (:url . "https://github.com/Bogdanp/py-test.el") (:keywords "python" "testing" "py.test"))]) (py-smart-operator . [(20170531 509) ((s (1 9 0))) "smart-operator for python-mode" single ((:commit . "0c8a66faca4b35158d0b5885472cb75286039167") (:keywords "python" "convenience" "smart-operator"))]) (py-isort . [(20160925 318) nil "Use isort to sort the imports in a Python buffer" single ((:commit . "e67306f459c47c53a65604e4eea88a3914596560") (:url . "http://paetzke.me/project/py-isort.el"))]) (py-import-check . [(20130802 411) nil "Finds the unused python imports using importchecker" single ((:commit . "9787f87745a4234cd9bed711860b707902bc8ae4") (:url . "https://github.com/psibi/emacs-py-import-check") (:keywords "python" "import" "check"))]) (py-gnitset . [(20170821 1032) nil "Run your Python tests any way you'd like" single ((:commit . "1e993cc29cbc31e06fe1e335dec198e21972fa55") (:url . "https://www.github.com/quodlibetor/py-gnitset"))]) (py-autopep8 . [(20160925 352) nil "Use autopep8 to beautify a Python buffer" single ((:commit . "68e12d8788c91c7ec53a68acf1d23adb2ffa4788") (:url . "http://paetzke.me/project/py-autopep8.el"))]) (px . [(20170317 1630) nil "preview inline latex in any mode" single ((:commit . "0c52f7933eab3ca1642ab0df151db9950430c9e2") (:url . "http://github.com/aaptel/preview-latex"))]) (pushover . [(20170818 1403) ((cl-lib (0 5))) "Pushover API Access" single ((:commit . "bbe3ac8df3c532a72da4552615af960b8a577588") (:url . "http://github.com/swflint/pushover.el") (:keywords "notifications"))]) (pushbullet . [(20140809 532) ((grapnel (0 5 2)) (json (1 2))) "Emacs client for the PushBullet Android app" single ((:commit . "73c59a0f1dc04875b3e5a2c8afbc26c32128e445") (:url . "http://www.github.com/theanalyst/revolver") (:keywords "convenience"))]) (purty-mode . [(20131004 1559) nil "Safely pretty-print greek letters, mathematical symbols, or anything else." single ((:commit . "8eef77317a3bab07ade212353a50fbd3f20f365a"))]) (purple-haze-theme . [(20141014 1929) ((emacs (24 0))) "an overtly purple color theme for Emacs24." single ((:commit . "3e245cbef7cd09e6b3ee124963e372a04e9a6485") (:url . "https://github.com/jasonm23/emacs-purple-haze-theme"))]) (purescript-mode . [(20171203 2234) nil "A PureScript editing mode" tar ((:commit . "2d1fa590a6de875ea4bd964349df0ba5e24fb1f3"))]) (puppet-mode . [(20171220 2249) ((emacs (24 1)) (pkg-info (0 4))) "Major mode for Puppet manifests" single ((:commit . "b3ed5057166a4f49dfa9be638523a348b55a2fd2") (:url . "https://github.com/voxpupuli/puppet-mode") (:keywords "languages"))]) (punpun-theme . [(20161103 147) nil "A bleak theme" tar ((:commit . "cce8b10b2df6f9187a9eaa0c3f21ff0dda175968"))]) (pungi . [(20150222 446) ((jedi (0 2 0 -3 2)) (pyvenv (1 5))) "Integrates jedi with virtualenv and buildout python environments" single ((:commit . "a2d4d439ea371be0b064a12248288903b8a521a0") (:keywords "convenience"))]) (punctuality-logger . [(20141120 1231) nil "Punctuality logger for Emacs" single ((:commit . "e09e5dd37bc92289fa2f7dc44aed51a7b5e04bb0") (:url . "https://gitlab.com/elzair/punctuality-logger") (:keywords "reminder" "calendar"))]) (pulseaudio-control . [(20171024 2339) nil "Use `pactl' to manage PulseAudio volumes." single ((:commit . "08c59e1dc45ec96edb62f34036e82cf5f14c0e8b") (:url . "https://github.com/flexibeast/pulseaudio-control") (:keywords "multimedia" "hardware" "sound" "pulseaudio"))]) (pug-mode . [(20171208 2029) ((emacs (24 4)) (cl-lib (0 5))) "Major mode for jade/pug template files" single ((:commit . "894a86d0ae4e855ae6044af6d7e106f8996c97c2") (:url . "https://github.com/hlissner/emacs-pug-mode") (:keywords "markup" "language" "jade" "pug"))]) (pt . [(20161226 1159) nil "A front-end for pt, The Platinum Searcher." single ((:commit . "6d99b2aaded3ece3db19a20f4b8f1d4abe382622") (:url . "https://github.com/bling/pt.el") (:keywords "pt" "ack" "ag" "grep" "search"))]) (psysh . [(20171022 2229) ((emacs (24 3)) (s (1 9 0)) (f (0 17))) "PsySH, PHP interactive shell (REPL)" single ((:commit . "926af4ae0c068ed699fc939f4b3e642aaa6f7c9e") (:url . "https://github.com/zonuexe/psysh.el") (:keywords "processes" "php"))]) (psvn . [(20151103 1042) nil "Subversion interface for emacs" single ((:commit . "23048d302858fc3a52c118652bd83491a4956410"))]) (psession . [(20171107 2313) ((emacs (24)) (cl-lib (0 5)) (async (1 9 2))) "Persistent save of elisp objects." single ((:commit . "d087644db226e2c66481d3c248e26afa9e4eb670") (:url . "https://github.com/thierryvolpiatto/psession"))]) (psci . [(20171011 50) ((purescript-mode (13 10)) (dash (2 9 0)) (s (1 9 0)) (f (0 17 1))) "Major mode for purescript repl psci" tar ((:commit . "5360b244c588ed2f2a5bb86180cb5d4deb2216de") (:url . "https://github.com/ardumont/emacs-psci") (:keywords "purescript" "psci" "repl" "major" "mode"))]) (psc-ide . [(20180101 1421) ((dash (2 13 0)) (dash-functional (1 2 0)) (company (0 8 7)) (cl-lib (0 5)) (s (1 10 0)) (emacs (24 4)) (flycheck (0 24)) (let-alist (1 0 4)) (seq (1 11))) "Minor mode for PureScript's psc-ide tool." tar ((:commit . "085e9d5541ccf35e876a6135daaddaa0a58f3bb2") (:url . "https://github.com/epost/psc-ide-emacs") (:keywords "languages"))]) (protocols . [(20170802 432) ((cl-lib (0 5))) "Protocol database access functions." single ((:commit . "d0f7c4acb05465f1a0d4be54363bbd2802647e77") (:url . "https://github.com/davep/protocols.el") (:keywords "convenience" "net" "protocols"))]) (protobuf-mode . [(20170526 950) nil "major mode for editing protocol buffers." single ((:commit . "b77aa8011d450e314690e430ede85d4ab20abaf3") (:keywords "google" "protobuf" "languages"))]) (prosjekt . [(20151127 616) ((dash (2 8 0))) "a software project tool for emacs" tar ((:commit . "a864a8be5842223043702395f311e3350c28e9db") (:url . "https://github.com/abingham/prosjekt"))]) (proportional . [(20171025 1637) ((emacs (25 1))) "use a proportional font everywhere" single ((:commit . "f671ffe8fd803e2fc462e2e1844aeeab1a13918e") (:url . "https://github.com/ksjogo/proportional") (:keywords "faces"))]) (propfont-mixed . [(20150113 1411) ((emacs (24)) (cl-lib (0 5))) "Use proportional fonts with space-based indentation." single ((:commit . "0b461ef4754a469610dba71874a34b6da42176bf") (:url . "https://github.com/ikirill/propfont-mixed") (:keywords "faces"))]) (prop-menu . [(20150728 418) ((emacs (24 3)) (cl-lib (0 5))) "Create and display a context menu based on text and overlay properties" single ((:commit . "50b102c1c0935fd3e0c465feed7f27d66b21cdf3") (:url . "https://github.com/david-christiansen/prop-menu-el") (:keywords "convenience"))]) (prompts . [(20160916 341) ((dash (2 13 0))) "utilities for working with text prompts." single ((:commit . "1cd5e732ff2a86b47836eb7252e5b59cd4b6ab26") (:url . "https://github.com/guiltydolphin/prompts.el") (:keywords "input" "minibuffer"))]) (prompt-text . [(20160106 609) nil "Various information in minibuffer prompt" single ((:commit . "bb9265ebfada42d0e3c67c809665e1e5d980691e") (:url . "https://github.com/10sr/prompt-text-el") (:keywords "utility" "minibuffer"))]) (promise . [(20170215 2204) ((emacs (25)) (async (1 9))) "Promises/A+" tar ((:commit . "d3cad4e1f7825404828cd9f5b887f18d3fd83c56") (:url . "https://github.com/chuntaro/emacs-promise") (:keywords "async" "promise" "convenience"))]) (projmake-mode . [(20161031 1015) ((dash (20150611 922)) (indicators (20130217 1405))) "Project oriented automatic builder and error highlighter, flymake for projects" tar ((:commit . "a897701f7e8f8cc11459ed44eb0e454db2a460c1"))]) (projekt . [(20150324 148) ((emacs (24))) "some kind of staging for CVS" single ((:commit . "a65e554e5d8b0def08c5d06f3fe34fec40bebd83"))]) (projector . [(20171006 1258) ((alert (1 1)) (projectile (0 11 0)) (cl-lib (0 5))) "Lightweight library for managing project-aware shell and command buffers" single ((:commit . "03751fca880c95cf47e560c78cfc2aaa056cd455") (:url . "https://github.com/waymondo/projector"))]) (projectile-variable . [(20170208 918) ((emacs (24)) (cl-lib (0 5))) "Store project local variables." single ((:commit . "8d348ac70bdd6dc320c13a12941b32b38140e264") (:url . "https://github.com/zonuexe/projectile-variable") (:keywords "project" "convenience"))]) (projectile-trailblazer . [(20170928 924) ((emacs (24 4)) (projectile (0 12 0)) (inflections (1 1)) (inf-ruby (2 2 6)) (f (0 13 0)) (rake (0 3 2))) "Minor mode for Rails projects using trailblazer" single ((:commit . "a37a4f7b7f727d98e4c74c0256e059e84263553d") (:url . "https://github.com/micdahl/projectile-trailblazer") (:keywords "rails" "projectile" "trailblazer" "languages"))]) (projectile-speedbar . [(20170516 1943) ((projectile (0 11 0)) (sr-speedbar (0))) "projectile integration for speedbar" single ((:commit . "dcab13db72c2084edbebe808e35f1126fe0b3bcd") (:url . "https://github.com/anshulverma/projectile-speedbar") (:keywords "project" "convenience" "speedbar" "projectile"))]) (projectile-sift . [(20160107 215) ((sift (0 2 0)) (projectile (0 13 0))) "Run a sift with Projectile" single ((:commit . "4ce8878a0fc396ded7521ce38852d93e1d863065") (:url . "https://github.com/nlamirault/sift.el") (:keywords "sift" "projectile"))]) (projectile-ripgrep . [(20170211 857) ((ripgrep (0 3 0)) (projectile (0 14 0))) "Run ripgrep with Projectile" single ((:commit . "c47a2da4668ca338e7fadc3d8c095e075caaa17d") (:url . "https://github.com/nlamirault/ripgrep.el") (:keywords "ripgrep" "projectile"))]) (projectile-rails . [(20171117 730) ((emacs (24 3)) (projectile (0 12 0)) (inflections (1 1)) (inf-ruby (2 2 6)) (f (0 13 0)) (rake (0 3 2))) "Minor mode for Rails projects based on projectile-mode" single ((:commit . "348b11b237e87d87e784ab7accaef2bf97664bd6") (:url . "https://github.com/asok/projectile-rails") (:keywords "rails" "projectile"))]) (projectile-hanami . [(20160505 611) ((emacs (24 3)) (projectile (0 12 0)) (rake (0 3 2)) (inf-ruby (2 2 6))) "Minor mode for Hanami projects based on projectile" single ((:commit . "c4b8e7d4dfec789ef8493a7c5d4ce0cf7937e579") (:url . "https://github.com/avdgaag/projectile-hanami") (:keywords "hanami" "ruby" "projectile"))]) (projectile-git-autofetch . [(20171129 1447) ((projectile (0 14 0)) (alert (1 2))) "automatically fetch git repositories" single ((:commit . "da02069d906e6e7f28ea1dd6a9196529315a5cba") (:url . "https://github.com/andrmuel/projectile-git-autofetch") (:keywords "tools" "vc"))]) (projectile-direnv . [(20160305 1738) ((emacs (24)) (s (1 11 0)) (dash (2 12 0)) (projectile (0 13 0))) "Set environment variables from .envrc" single ((:commit . "d5d29e5228f840b7a25358a2fd50353ef2dc9b16") (:url . "https://github.com/christianromney/projectile-direnv") (:keywords "convenience"))]) (projectile-codesearch . [(20171129 600) ((codesearch (20171122 431)) (projectile (20150405 126))) "Integration of codesearch into projectile" single ((:commit . "4e6a2382c26d1218a4a007d31de2bab8ef9d2e7c") (:url . "https://github.com/abingham/emacs-codesearch") (:keywords "tools" "development" "search"))]) (projectile . [(20180107 2233) ((emacs (24 3)) (pkg-info (0 4))) "Manage and navigate projects in Emacs easily" single ((:commit . "293849974df45b60bad572bfdc5166575fbbf0a5") (:url . "https://github.com/bbatsov/projectile") (:keywords "project" "convenience"))]) (project-shells . [(20171107 51) ((emacs (24 3)) (seq (2 19))) "Manage the shell buffers of each project" single ((:commit . "d9401de750e444697c2eb9de1ff79f2a2eba4af8") (:url . "https://github.com/hying-caritas/project-shells") (:keywords "processes" "terminals"))]) (project-root . [(20110206 1230) nil "Define a project root and take actions based upon it." single nil]) (project-persist-drawer . [(20151108 422) ((project-persist (0 3))) "Use a project drawer with project-persist." tar ((:commit . "35bbe132a4fab6a0fec15ce6c0fd2fe6a4aa9626"))]) (project-persist . [(20150519 1324) nil "A minor mode to allow loading and saving of project settings." tar ((:commit . "8da45c80b23b1d7499eac11a258fd7382312a304"))]) (project-local-variables . [(20080502 952) nil "Set project-local variables from a file." single ((:url . "http://www.emacswiki.org/cgi-bin/wiki/ProjectLocalVariables") (:keywords "project" "convenience"))]) (project-explorer . [(20150503 1714) ((cl-lib (0 3)) (es-lib (0 3)) (es-windows (0 1)) (emacs (24))) "A project explorer sidebar" single ((:commit . "589a09008706f5f4ef91393dc4306eede0d15ca9") (:url . "https://github.com/sabof/project-explorer"))]) (programmer-dvorak . [(20150426 1837) nil "Input method for Programmer Dvorak." single ((:commit . "3288a8f058eca4cab390a564babbbcb17cfa0350") (:url . "https://github.com/yangchenyun/programmer-dvorak") (:keywords "dvorak" "programmer-dvorak" "input-method"))]) (prognth . [(20130920 1059) nil "Extend prog1 to arbitrary index" single ((:commit . "2f1ca4d34b1fd581163e1df122c85418137e8e62") (:keywords "lisp"))]) (professional-theme . [(20150315 400) nil "Emacs port of Vim's professional theme" single ((:commit . "0927d1474049a193f9f366bde5eb1887b9ba20ed") (:url . "https://github.com/juanjux/emacs-professional-theme") (:keywords "theme" "light" "professional"))]) (prodigy . [(20171121 512) ((s (1 8 0)) (dash (2 4 0)) (f (0 14 0)) (emacs (24))) "Manage external services from within Emacs" single ((:commit . "da9ab59dc807968841ef369617edd6a67a9ad1de") (:url . "http://github.com/rejeep/prodigy.el"))]) (processing-snippets . [(20140426 728) ((yasnippet (0 8 0))) "Snippets for processing-mode" tar ((:commit . "448aba82970c98322629eaf2746e73be6c30c98e"))]) (processing-mode . [(20171022 1602) nil "Major mode for Processing 2.0" single ((:commit . "448aba82970c98322629eaf2746e73be6c30c98e") (:url . "https://github.com/ptrv/processing2-emacs") (:keywords "languages" "snippets"))]) (proc-net . [(20130321 1712) nil "network process tools" single ((:commit . "10861112a1f3994c8e6374d6c5bb5d734cfeaf73") (:url . "http://github.com/nicferrier/emacs-procnet") (:keywords "processes"))]) (private-diary . [(20151216 857) ((emacs (24 0))) "maintain a private diary in Emacs" single ((:commit . "0c86fb6150ad8ed14f94def3504f5a68f4147283") (:url . "https://github.com/cacology/private-diary") (:keywords "diary" "encryption"))]) (private . [(20150121 1757) ((aes (0 6))) "take care of your private configuration files." single ((:commit . "9266d01c095895cc3ee9de95bc20511e88353755") (:url . "https://github.com/cheunghy/private") (:keywords "private" "configuration" "backup" "recover"))]) (pretty-symbols . [(20140814 259) nil "Draw tokens as Unicode glyphs." single ((:commit . "582cbe51ecfe1cc0a5b185bc06113c8a661e3956") (:url . "http://github.com/drothlis/pretty-symbols") (:keywords "faces"))]) (pretty-sha-path . [(20141105 1026) nil "Prettify Guix/Nix store paths" single ((:commit . "a2b43dd9de423a38d67cda2e3bd9412f7d363257") (:url . "https://gitorious.org/alezost-emacs/pretty-sha-path") (:keywords "faces" "convenience"))]) (pretty-mode . [(20160614 1146) nil "Redisplay parts of the buffer as pretty Unicode symbols." single ((:commit . "500085206e25b98d00b9ec996f91c87ba569c4ce") (:url . "https://github.com/akatov/pretty-mode") (:keywords "pretty" "unicode" "symbols"))]) (pretty-lambdada . [(20170307 940) nil "Show the word `lambda' as the Greek letter." single ((:url . "https://www.emacswiki.org/emacs/download/pretty-lambdada.el") (:keywords "convenience" "display"))]) (prettify-greek . [(20160603 208) nil "Greek letters for prettify-symbols" single ((:commit . "698d07a6ffe85f6fb53f3bfec4f49380c25cfd90") (:url . "https://gitlab.com/fommil/emacs-prettify-greek") (:keywords "faces"))]) (prettier-js . [(20180108 2326) nil "Minor mode to format JS code on file save" single ((:commit . "0e8b95c4e5898a03e85dbc555c37b4f968292aec") (:url . "https://github.com/prettier/prettier-emacs") (:keywords "convenience" "wp" "edit" "js"))]) (preseed-generic-mode . [(20170802 1753) nil "Debian preseed file major mode" single ((:commit . "341d85f8ecdc8834956a0352ece542f45def88db") (:url . "https://github.com/suntong001/preseed-generic-mode"))]) (preproc-font-lock . [(20151107 1218) nil "Highlight C-style preprocessor directives." single ((:commit . "565fda9f5fdeb0598986174a07e9fb09f7604397") (:url . "https://github.com/Lindydancer/preproc-font-lock") (:keywords "c" "languages" "faces"))]) (prassee-theme . [(20180105 1644) ((emacs (24))) "A high contrast color theme for Emacs." single ((:commit . "b68d13f929364b9bb087f8f587798144218f7dc6") (:url . "https://github.com/prassee/prassee-emacs-theme") (:keywords "dark" "high-contrast" "faces"))]) (ppd-sr-speedbar . [(20151108 424) ((sr-speedbar (20140914 2339)) (project-persist-drawer (0 0 4))) "Sr Speedbar adaptor for project-persist-drawer." tar ((:commit . "19d3e924407f40a6bb38c8fe427a159af755adce"))]) (pp-c-l . [(20170307 939) nil "Display Control-l characters in a pretty way" single ((:url . "https://www.emacswiki.org/emacs/download/pp-c-l.el") (:keywords "display" "convenience" "faces"))]) (pp+ . [(20170307 938) nil "Extensions to `pp.el'." single ((:url . "https://www.emacswiki.org/emacs/download/pp%2b.el") (:keywords "lisp"))]) (powershell . [(20161103 2354) ((emacs (24))) "Mode for editing Powershell scripts" single ((:commit . "3c09e1b87064bedc065e45346fd4c3e051eeb0f0") (:url . "http://github.com/jschaf/powershell.el") (:keywords "powershell" "languages"))]) (powerline-evil . [(20151112 710) ((evil (1 0 8)) (powerline (2 3))) "Utilities for better Evil support for Powerline" tar ((:commit . "98b3a102b6dba6632aa0755a7257300c9b164309") (:url . "http://github.com/raugturi/powerline-evil/") (:keywords "evil" "mode-line" "powerline"))]) (powerline . [(20171023 750) ((cl-lib (0 2))) "Rewrite of Powerline" tar ((:commit . "fda4fb96984607d4a6502b1d8c8898e56d10cf6c") (:url . "http://github.com/milkypostman/powerline/") (:keywords "mode-line"))]) (pow . [(20140420 106) ((emacs (24)) (cl-lib (0 5))) "pow (http://pow.cx/) manager for emacs" tar ((:commit . "ea83986b8ca8e27cb996290d6463b111ec0966ce") (:url . "http://github.com/yukihr/emacs-pow") (:keywords "develop" "web" "pow"))]) (pov-mode . [(20161114 2343) nil "Major mode for editing POV-Ray scene files." tar ((:commit . "9fc1db3aab7c27155674dd1a87ec62606035d074"))]) (postcss-sorting . [(20170531 1858) ((emacs (24))) "postcss-sorting interface" single ((:commit . "1320d74abd8ee7f0a09b5f7920d554650a7047a6") (:url . "https://github.com/P233/postcss-sorting.el"))]) (pos-tip . [(20150318 813) nil "Show tooltip at point" single ((:commit . "051e08fec5cf30b7574bdf439f79fef7d42d689d") (:keywords "tooltip"))]) (portage-navi . [(20141208 555) ((concurrent (0 3 1)) (ctable (0 1 2))) "portage viewer" single ((:commit . "8016c3e99fe6cef101d479a3d69185796b22ca2f") (:url . "https://github.com/kiwanami/emacs-portage-navi") (:keywords "tools" "gentoo"))]) (popwin . [(20150315 600) nil "Popup Window Manager." single ((:commit . "95dea14c60019d6cccf9a3b33e0dec4e1f22c304") (:keywords "convenience"))]) (popup-switcher . [(20171205 51) ((cl-lib (0 3)) (popup (0 5 3))) "switch to other buffers and files via popup." single ((:commit . "f5788a31918e37bb5c04139048c667bcec9f1b62") (:url . "https://github.com/kostafey/popup-switcher") (:keywords "popup" "switch" "buffers" "functions"))]) (popup-kill-ring . [(20131020 1154) ((popup (0 4)) (pos-tip (0 4))) "interactively insert item from kill-ring" single ((:commit . "5773dfadc104a906c088a3ec62e8cdd3e01e57fa") (:url . "https://github.com/waymondo/popup-kill-ring") (:keywords "popup" "kill-ring" "pos-tip"))]) (popup-imenu . [(20170326 340) ((dash (2 12 1)) (popup (0 5 3)) (flx-ido (0 6 1))) "imenu index popup" single ((:commit . "c5e2e69adbd3a630e4cb750965a1aee8c10c1f09") (:url . "https://github.com/ancane/popup-imenu") (:keywords "popup" "imenu"))]) (popup-edit-menu . [(20170404 725) ((emacs (24))) "a popup context edit menu package" single ((:commit . "925600a6e29183841199e866cf55e566a6a1b002") (:keywords "lisp" "pop-up" "context" "edit" "menu"))]) (popup-complete . [(20141108 1908) ((popup (0 5 0))) "completion with popup" single ((:commit . "caa655a6d8472e9a4bfa1311126d90d7d1b07fca") (:url . "https://github.com/syohex/emacs-popup-complete"))]) (popup . [(20160709 729) ((cl-lib (0 5))) "Visual Popup User Interface" single ((:commit . "80829dd46381754639fb764da11c67235fe63282") (:keywords "lisp"))]) (poporg . [(20170403 51) nil "Pop a comment or string to an empty buffer for text editing" single ((:commit . "2c58d68c81ecca4140bf179f19ed153ec804b65a") (:url . "https://github.com/QBobWatson/poporg") (:keywords "outlines" "tools"))]) (pophint . [(20170917 1948) ((log4e (0 2 0)) (yaxception (0 3))) "Provide navigation using pop-up tips, like Firefox's Vimperator Hint Mode" tar ((:commit . "909025c5a871ca4b9ec7aed7f1a27c819a94dba1") (:url . "https://github.com/aki2o/emacs-pophint") (:keywords "popup"))]) (ponylang-mode . [(20171028 1356) ((dash (2 10 0))) "Major mode for Pony code" single ((:commit . "5e23459dc395eb77fa4c6cfa3d6c08b1b185a6df") (:url . "https://github.com/seantallen/ponylang-mode") (:keywords "languages" "programming"))]) (pony-snippets . [(20160204 2011) ((yasnippet (0 8 0))) "Yasnippets for Pony" tar ((:commit . "a6615ab0693f17fc47ec45753202010238157810") (:url . "https://github.com/seantallen/pony-snippets") (:keywords "snippets" "pony"))]) (pony-mode . [(20170807 822) nil "Minor mode for working with Django Projects" tar ((:commit . "760684d30b6c234d1b88c9a4673a808f36f7f341"))]) (pomodoro . [(20150716 1046) nil "A timer for the Pomodoro Technique" single ((:commit . "4a299b8f5e6623010224dcb3e524ff288c6a082c"))]) (pomidor . [(20171214 727) ((emacs (24 3)) (alert (1 2))) "Simple and cool pomodoro timer" tar ((:commit . "f97a42cd261b5cf51ce07e1edaacb687472bd71f") (:url . "https://github.com/TatriX/pomidor") (:keywords "tools" "time" "applications" "pomodoro technique"))]) (polymode . [(20170307 322) ((emacs (24))) "Versatile multiple modes with extensive literate programming support" tar ((:commit . "0340f5e7e55235832e59673f027cc79a23cbdcd6") (:url . "https://github.com/vitoshka/polymode"))]) (poly-ruby . [(20170802 648) ((emacs (24 3)) (polymode (1 0))) "Provides poly-ruby-mode" single ((:commit . "e6f50a92d29a5ff567d70cafa6621c4f89056d11") (:url . "https://github.com/knu/poly-ruby.el") (:keywords "languages"))]) (pollen-mode . [(20160808 2000) ((emacs (24 3)) (cl-lib (0 5))) "major mode for editing pollen files" single ((:commit . "de762bd7f9760185dae8ef025ca9a9126ae78de0") (:url . "https://github.com/lijunsong/pollen-mode") (:keywords "languages" "pollen" "pollenpub"))]) (pointback . [(20100210 752) nil "Restore window points when returning to buffers" single ((:commit . "e3a02c1784d81b5a1d2477338d049af581ed19f8") (:keywords "convenience"))]) (point-undo . [(20100504 129) nil "undo/redo position" single nil]) (point-stack . [(20170808 958) nil "Back and forward navigation through buffer locations" single ((:commit . "76e17311e3a810314c7d31ac46dc55450ff30fa2"))]) (point-pos . [(20170421 932) nil "Save and restore point positions" single ((:commit . "442bccb40791832cbc2d6f5c8f53be745aea2b73") (:url . "https://github.com/alezost/point-pos.el") (:keywords "tools" "convenience"))]) (podcaster . [(20161020 835) ((cl-lib (0 5))) "Podcast client" single ((:commit . "9854517025deb5d556168a68955fb7b662239f5c") (:url . "https://github.com/lujun9972/podcaster"))]) (pocket-reader . [(20171127 335) ((emacs (25 1)) (dash (2 13 0)) (kv (0 0 19)) (pocket-lib (0 1)) (s (1 10)) (ov (1 0 6)) (rainbow-identifiers (0 2 2)) (org-web-tools (0 1)) (ht (2 2))) "Client for Pocket reading list" single ((:commit . "6a35d531f2425e2e187f5107047f3dc7625f3623") (:url . "https://github.com/alphapapa/pocket-reader.el") (:keywords "pocket"))]) (pocket-mode . [(20171201 515) ((emacs (24 4)) (pocket-api (0 1))) "Manage your pocket" single ((:commit . "229de7d35b7e5605797591c46aa8200d7efc363c") (:keywords "convenience" "pocket"))]) (pocket-lib . [(20171108 421) ((emacs (25 1)) (request (0 2)) (dash (2 13 0)) (kv (0 0 19)) (s (1 12 0))) "Library for accessing getpocket.com API" single ((:commit . "c860dc2f67398d837de2be17e85894a1303e7b49") (:url . "https://github.com/alphapapa/pocket-lib.el") (:keywords "pocket"))]) (pocket-api . [(20170818 533) ((emacs (24 4)) (request (0 2))) "another pocket api" single ((:commit . "26e4583311ebc472f7bba59a1189f04938f2c03e") (:url . "https://github.com/lujun9972/pocket-api.el") (:keywords "convenience" "pocket"))]) (po-mode . [(20170419 303) nil "major mode for GNU gettext PO files" single ((:commit . "d4e434046121b395e8e96ac3dcb4a8f6113f4fd3") (:keywords "i18n" "gettext"))]) (pmdm . [(20151109 1036) nil "poor man's desktop-mode alternative." single ((:url . "https://bitbucket.com/inigoserna/pmdm.el"))]) (plur . [(20160504 224) ((emacs (24 4))) "Easily search and replace multiple variants of a word" single ((:commit . "5bdd3b9a2f0624414bd596e798644713cd1545f0") (:url . "https://github.com/xuchunyang/plur"))]) (plsql . [(20121115 243) nil "Programming support for PL/SQL code" single ((:url . "http://www.emacswiki.org/elisp/plsql.el") (:keywords "languages"))]) (plsense-direx . [(20140520 1308) ((direx (0 1 -3)) (plsense (0 3 2)) (log4e (0 2 0)) (yaxception (0 3 2))) "Perl Package Explorer" single ((:commit . "8a2f465264c74e04524cc789cdad0190ace43f6c") (:url . "https://github.com/aki2o/plsense-direx") (:keywords "perl" "convenience"))]) (plsense . [(20151104 645) ((auto-complete (1 4 0)) (log4e (0 2 0)) (yaxception (0 2 0))) "provide interface for PlSense that is a development tool for Perl." single ((:commit . "d50f9dccc98f42bdb42f1d1c8142246e03879218") (:url . "https://github.com/aki2o/emacs-plsense") (:keywords "perl" "completion"))]) (plim-mode . [(20140812 1713) nil "Major mode for editing Plim files" single ((:commit . "92e39190286f172567ceb02c80e1df3b81abfa2d") (:url . "http://github.com/dongweiming/plim-mode") (:keywords "markup" "language"))]) (plenv . [(20130706 2316) nil "A plenv wrapper for Emacs" single ((:commit . "ee937d0f3a1a7ba2d035f45be896d3ed8fefaee2") (:keywords "emacs" "perl"))]) (playerctl . [(20170414 156) nil "Control your music player (e.g. Spotify) with playerctl" single ((:commit . "8354352813cd206efb60002f2af4427957bf8894") (:url . "https://github.com/thomasluquet/playerctl.el") (:keywords "multimedia" "playerctl" "music"))]) (play-routes-mode . [(20170426 33) nil "Play Framework Routes File Support" single ((:commit . "22d7b87e0eaf0330f2b2283872f8dc08a3258771") (:url . "https://github.com/brocode/play-routes-mode/") (:keywords "play" "scala"))]) (platformio-mode . [(20161210 539) ((projectile (0 13 0))) "PlatformIO integration" single ((:commit . "1466aed132a77f48fcb31938d64abb1a1e58ec42") (:url . "https://github.com/zachmassia/platformio-mode"))]) (plantuml-mode . [(20170819 1033) nil "Major mode for PlantUML" single ((:commit . "fce628885b54635b0287b3337626752b2725369d") (:keywords "uml" "plantuml" "ascii"))]) (planet-theme . [(20161030 1917) ((emacs (24))) "A dark theme inspired by Gmail's 'Planets' theme of yore" single ((:commit . "b0a310ff36565fe22224c407cf59569986698a32") (:url . "https://github.com/cmack/emacs-planet-theme") (:keywords "themes"))]) (plan9-theme . [(20180102 1852) nil "A color theme for Emacs based on Plan9" single ((:commit . "2a31fb9251922667692337c867612947d2139696") (:url . "https://github.com/john2x/plan9-theme.el"))]) (plain-theme . [(20171123 2010) ((emacs (24))) "Plain theme without syntax highlighting" single ((:commit . "2609a811335d58cfb73a65d6307c156fe09037d3"))]) (pkgbuild-mode . [(20151010 736) nil "Interface to the ArchLinux package manager" single ((:commit . "7369ab3c6b59cfdf2ecd2b32ad96ce006e766fa0"))]) (pkg-info . [(20150517 443) ((epl (0 8))) "Information about packages" single ((:commit . "76ba7415480687d05a4353b27fea2ae02b8d9d61") (:url . "https://github.com/lunaryorn/pkg-info.el") (:keywords "convenience"))]) (pixiv-novel-mode . [(20160220 621) nil "Major mode for pixiv novel" single ((:commit . "0d1ca524d92b91f20a7105402a773bc21779b434") (:keywords "novel" "pixiv"))]) (pixie-mode . [(20150121 2124) ((clojure-mode (3 0 1)) (inf-clojure (1 0 0))) "Major mode for Pixie-lang" single ((:commit . "f32d5d812c7b5b72d7ff7bad52b41035f9ef6e96") (:url . "https://github.com/johnwalker/pixie-mode"))]) (pivotal-tracker . [(20170720 816) nil "Interact with Pivotal Tracker through its API" single ((:commit . "0311d117037c74512149a4a78b269c2e46d7dfba") (:url . "http://github.com/jxa/pivotal-tracker"))]) (pippel . [(20170730 623) ((emacs (25 1)) (s (1 11 0)) (dash (2 12 0))) "Frontend to python package manager pip" tar ((:commit . "3737d5934665b5059c1e858feeb4270262b37e53") (:url . "https://github.com/brotzeitmacher/pippel"))]) (pip-requirements . [(20171109 1439) ((dash (2 8 0))) "A major mode for editing pip requirements files." single ((:commit . "d6d0437794e5de205a5fb03e0ff0a4a1b9e04eea"))]) (pinyinlib . [(20170827 1442) nil "Convert first letter of Pinyin to Simplified/Traditional Chinese characters" single ((:commit . "45f05d3dbb4fe957f7ab332ca6f94675848b6aa3") (:keywords "extensions"))]) (pinyin-search . [(20160514 2058) ((pinyinlib (0 1 0))) "Search Chinese by Pinyin" single ((:commit . "2e877a76851009d41bde66eb33182a03a7f04262") (:url . "https://github.com/xuchunyang/pinyin-search.el") (:keywords "chinese" "search"))]) (pinot . [(20140211 1226) nil "Emacs interface to pinot-search" tar ((:commit . "67fda555a155b22bb2ce44ba618b4bd6fc5f144a"))]) (pinboard-api . [(20140324 448) nil "Rudimentary http://pinboard.in integration" single ((:commit . "b7b5214d0c35178f8dca08cf22d6ef3c21f0fce4") (:url . "https://github.com/danieroux/pinboard-api-el") (:keywords "pinboard" "www"))]) (pillar . [(20141112 1011) ((makey (0 3))) "Major mode for editing Pillar files" tar ((:commit . "13a7f676544cc66005ccd8e6fc1c25e4ccd6f909") (:url . "http://github.com/DamienCassou/pillar-mode") (:keywords "markup" "major-mode"))]) (pig-snippets . [(20130912 2324) ((yasnippet (0 8 0))) "Snippets for pig-mode" tar ((:commit . "af4200c88a50264b63fa162a02860f3f54c8755b"))]) (pig-mode . [(20140617 1058) nil "Major mode for Pig files" single ((:commit . "af4200c88a50264b63fa162a02860f3f54c8755b"))]) (picpocket . [(20170905 1133) ((emacs (24 4))) "Image viewer" single ((:commit . "e0ca0f1fc03b4166ce2eab9d7532b9b29989e5bd") (:url . "https://github.com/johanclaesson/picpocket") (:keywords "multimedia"))]) (picolisp-mode . [(20150516 155) nil "Major mode for PicoLisp programming." single ((:commit . "1a537b14090813f46cbba54636d40365e1a8067e") (:url . "https://github.com/flexibeast/picolisp-mode") (:keywords "picolisp" "lisp" "programming"))]) (pianobar . [(20171117 1522) nil "thin wrapper for Pianobar, a Pandora Radio client" single ((:commit . "68fe0ed839f6775535081b3ae0a946ccaf11234a") (:url . "http://github.com/agrif/pianobar.el"))]) (phpunit . [(20171127 301) ((s (1 9 0)) (f (0 16 0)) (pkg-info (0 5)) (cl-lib (0 5)) (emacs (24 3))) "Launch PHP unit tests using phpunit" tar ((:commit . "a13706733f98be3639c47311fc820b3b50f4bc33") (:url . "https://github.com/nlamirault/phpunit.el") (:keywords "tools" "php" "tests" "phpunit"))]) (phpcbf . [(20150302 528) ((s (1 9 0))) "Format PHP code in Emacs using PHP_CodeSniffer's phpcbf" single ((:commit . "b556b548ceb061b002389d6165d2cc63d8bddb5d") (:url . "https://github.com/nishimaki10/emacs-phpcbf") (:keywords "tools" "php"))]) (php-scratch . [(20161103 1517) ((emacs (24 3)) (s (1 11 0)) (php-mode (1 17 0))) "A scratch buffer to interactively evaluate php code" single ((:commit . "3aa66d1d53b84b779374edff7a7e6b5f2cd7575d"))]) (php-runtime . [(20170901 1106) ((emacs (24)) (cl-lib (0 5))) "Language binding bridge to PHP" single ((:commit . "e1bca88ab5472e9b520b4ce915cd27d1e7803c2d") (:url . "https://github.com/emacs-php/php-runtime.el") (:keywords "processes" "php"))]) (php-refactor-mode . [(20171123 2235) nil "Minor mode to quickly and safely perform common refactorings" single ((:commit . "7a794b0618df2882b1bd586fdd698dba0bc5130d") (:url . "https://github.com/keelerm84/php-refactor-mode.el") (:keywords "php" "refactor"))]) (php-mode . [(20180105 541) ((emacs (24)) (cl-lib (0 5))) "Major mode for editing PHP code" tar ((:commit . "c5ac3f2ccb71697ee8d54099ea870a2a3d107ed8") (:url . "https://github.com/ejmr/php-mode") (:keywords "languages" "php"))]) (php-eldoc . [(20140202 1141) nil "eldoc backend for php" tar ((:commit . "df05064146b884d9081e10657e32dc480f070cfe") (:url . "https://github.com/sabof/php-eldoc"))]) (php-cs-fixer . [(20170506 1133) ((cl-lib (0 5))) "php-cs-fixer wrapper." single ((:commit . "ca2c075a22ad156c336d2aa093fb6394c9f6c112") (:url . "https://github.com/OVYA/php-cs-fixer") (:keywords "languages" "php"))]) (php-boris-minor-mode . [(20140209 1035) ((php-boris (0 0 1)) (highlight (0))) "a minor mode to evaluate PHP code in the Boris repl" single ((:commit . "c70e176dd6545f2d42ca3427e87b469635616d8a") (:url . "https://github.com/steckerhalter/php-boris-minor-mode") (:keywords "php" "repl" "eval"))]) (php-boris . [(20130527 121) nil "Run boris php REPL" single ((:commit . "f2faebf610c917f7091f7ec0cd97645629c4f819") (:keywords "php" "commint" "repl" "boris"))]) (php-auto-yasnippets . [(20170330 1814) ((php-mode (1 11)) (yasnippet (0 8 0))) "Creates snippets for PHP functions" tar ((:commit . "03e1f0899c081813901ac15c2f7a675a37cca9f5") (:url . "https://github.com/ejmr/php-auto-yasnippets"))]) (php+-mode . [(20171027 921) nil "A better PHP mode with Zend Framework 1 support." tar ((:commit . "523e7e50f9978ba74b8a324f9f896cd9b5dfd9de"))]) (phoenix-dark-pink-theme . [(20170729 703) nil "Originally a port of the Sublime Text 2 theme" single ((:commit . "4defbb76b00c1a29f060813898578152d6be623d") (:url . "http://github.com/j0ni/phoenix-dark-pink"))]) (phoenix-dark-mono-theme . [(20170729 706) nil "Monochromatic version of the Phoenix theme" single ((:commit . "a54f515d162148bcb38676980bc2316adb3d7b8b") (:url . "http://github.com/j0ni/phoenix-dark-mono"))]) (phi-search-migemo . [(20170618 221) ((phi-search (2 2 0)) (migemo (1 9 1))) "migemo extension for phi-search" single ((:commit . "308909ebfc8003d16673f97ca9eb26a667b72969") (:url . "http://hins11.yu-yake.com/"))]) (phi-search-mc . [(20160324 803) ((phi-search (2 0 0)) (multiple-cursors (1 2 1))) "multiple-cursors extension for phi-search" single ((:commit . "7aa671910f766437089aec26c3aa7814222d1356") (:url . "https://github.com/knu/phi-search-mc.el") (:keywords "search" "cursors"))]) (phi-search-dired . [(20150405 14) ((phi-search (2 2 0))) "interactive filtering for dired powered by phi-search" single ((:commit . "162a5e4507c72512affae22744bb606a906d4193") (:url . "http://hins11.yu-yake.com/"))]) (phi-search . [(20170310 237) nil "another incremental search & replace, compatible with \"multiple-cursors\"" tar ((:commit . "a81c4ea203fcb572f6cc37cc658d6b01453bef9d") (:url . "http://hins11.yu-yake.com/"))]) (phi-rectangle . [(20151207 2254) nil "another rectangle-mark command (rewrite of rect-mark)" single ((:commit . "0c12716afc71d803d1f39417469521dc465762d9") (:url . "http://hins11.yu-yake.com/"))]) (phi-grep . [(20170606 107) ((cl-lib (0 1))) "Interactively-editable recursive grep implementation in elisp" single ((:commit . "ab9bd8d25e751a9cbfa108b49839293230b6e8b5") (:url . "http://github.com/zk-phi/phi-grep"))]) (phi-autopair . [(20170216 1953) ((paredit (20))) "another simple-minded autopair implementation" single ((:commit . "3c7556779c3a53b045f5df33ae2a0c67469cbf60") (:url . "http://hins11.yu-yake.com/"))]) (phan . [(20171017 2045) ((emacs (24)) (composer (0 0 8)) (f (0 17))) "Utility functions for Phan (PHP static analizer)" single ((:commit . "17b44a62580272bcf5ee91fb58098292e9de6f83") (:url . "https://github.com/emacs-php/phan.el") (:keywords "tools" "php"))]) (phabricator . [(20160510 725) ((emacs (24 4)) (dash (1 0)) (projectile (0 13 0)) (s (1 10 0)) (f (0 17 2))) "Phabricator/Arcanist helpers for Emacs." single ((:commit . "d09d6f059aea92d3b11c68664a5e80c901182ab8") (:url . "https://github.com/ajtulloch/phabricator.el") (:keywords "phabricator" "arcanist" "diffusion"))]) (ph . [(20161029 822) ((emacs (24 3))) "A global minor mode for managing multiple projects." tar ((:commit . "ed80dad9211583ed0db633448b3624c99b7fac23"))]) (pgdevenv . [(20150105 1436) nil "Manage your PostgreSQL development envs" tar ((:commit . "7f1d5bc734750aca98cf67a9491cdbd5615fd132") (:keywords "emacs" "postgresql" "development" "environment" "shell" "debug" "gdb"))]) (pg . [(20130731 1442) nil "Emacs Lisp interface to the PostgreSQL RDBMS" single ((:commit . "4f6516ec3946d95dcef49abb6703cc89ecb5183d") (:keywords "data" "comm" "database" "postgresql"))]) (pfuture . [(20171116 812) ((emacs (24 4))) "a simple wrapper around asynchronous processes" single ((:commit . "d55a764b5beee803e489974be2408dbe236fc482") (:url . "https://github.com/Alexander-Miller/pfuture"))]) (perspeen . [(20171203 221) ((emacs (25 0)) (powerline (2 4))) "An package for multi-workspace" tar ((:commit . "edb70c530bda50ff3d1756e32a703d5fef5e5480") (:url . "https://github.com/seudut/perspeen") (:keywords "lisp"))]) (perspective . [(20160609 1444) ((cl-lib (0 5))) "switch between named \"perspectives\" of the editor" single ((:commit . "89a8ef5e8297b113e4f732bb94336608b76e13fd") (:url . "http://github.com/nex3/perspective-el") (:keywords "workspace" "convenience" "frames"))]) (persp-projectile . [(20160709 2317) ((perspective (1 9)) (projectile (0 11 0)) (cl-lib (0 3))) "Perspective integration with Projectile" single ((:commit . "7686633acf44402fa90429759cca6a155e4df2b9") (:keywords "project" "convenience"))]) (persp-mode-projectile-bridge . [(20170315 420) ((persp-mode (2 9)) (projectile (0 13 0)) (cl-lib (0 5))) "persp-mode + projectile integration." single ((:commit . "f6453cd7b8b4352c06e771706f2c5b7e2cdff1ce") (:url . "https://github.com/Bad-ptr/persp-mode-projectile-bridge.el") (:keywords "persp-mode" "projectile"))]) (persp-mode . [(20180104 843) nil "windows/buffers sets shared among frames + save/load." single ((:commit . "eef754ce06159e220a9f3c99db3809925f41b8f1") (:url . "https://github.com/Bad-ptr/persp-mode.el") (:keywords "perspectives" "session" "workspace" "persistence" "windows" "buffers" "convenience"))]) (persp-fr . [(20180103 642) ((emacs (25 0)) (persp-mode (2 9 6)) (dash (2 13 0))) "In persp-mode, show perspective list in the GUI window title" single ((:commit . "aeb3b5de6135269091bb9aa0396973766c27fc88") (:url . "http://github.com/rocher/persp-fr") (:keywords "perspectives" "workspace" "windows" "convenience"))]) (persistent-soft . [(20150223 1053) ((pcache (0 3 1)) (list-utils (0 4 2))) "Persistent storage, returning nil on failure" single ((:commit . "a1e0ddf2a12a6f18cab565dee250f070384cbe02") (:url . "http://github.com/rolandwalker/persistent-soft") (:keywords "data" "extensions"))]) (persistent-scratch . [(20170110 546) ((emacs (24))) "Preserve the scratch buffer across Emacs sessions" single ((:commit . "551c655fa349e6f48e4e29f427fff7594f76ac1d") (:url . "https://github.com/Fanael/persistent-scratch"))]) (persistent-overlays . [(20161127 2300) nil "Minor mode to store selected overlays to be loaded later" tar ((:commit . "f563c8b966edc78c9d806661c4eb80e4781c4eab") (:url . "https://github.com/mneilly/Emacs-Persistent-Overlays") (:keywords "overlays" "persistent"))]) (perlbrew . [(20161108 2309) nil "A perlbrew wrapper for Emacs" single ((:commit . "3a3406c3307c92aa30f9400d430925c434a3b6f0") (:keywords "emacs" "perl"))]) (perl6-mode . [(20161228 430) ((emacs (24 4)) (pkg-info (0 1))) "Major mode for editing Perl 6 code" tar ((:commit . "4867c6d268545f5356111d72c4ae77917d34cb21") (:url . "https://github.com/hinrik/perl6-mode") (:keywords "languages"))]) (per-buffer-theme . [(20160318 1501) ((cl-lib (0 5))) "Change theme according to buffer name or major mode." single ((:url . "https://bitbucket.com/inigoserna/per-buffer-theme.el") (:keywords "themes"))]) (pelican-mode . [(20171001 503) ((emacs (25))) "Minor mode for editing Pelican sites" single ((:commit . "64d41f0ee5970b2d875880994eb287b97cad24a1") (:url . "https://git.korewanetadesu.com/pelican-mode.git") (:keywords "convenience" "editing"))]) (peg . [(20150707 2341) nil "Parsing Expression Grammars in Emacs Lisp" single ((:commit . "081efeca91d790c7fbc90871ac22c40935f4833b"))]) (peep-dired . [(20160321 1537) nil "Peep at files in another window from dired buffers" single ((:commit . "c88a9a3050197840edfe145f11e0bb9488de32f4") (:keywords "files" "convenience"))]) (peek-mode . [(20130620 1246) ((elnode (0 9 8 1))) "Serve buffers live over HTTP with elnode backend" tar ((:commit . "55a7dd011375330c7d57322257a5167516702c71") (:url . "https://github.com/erikriverson/peek-mode"))]) (peacock-theme . [(20170808 620) ((emacs (24 0))) "an Emacs 24 theme based on Peacock (tmTheme)" single ((:commit . "9e46fbfb562b6e26c6e3d6d618b044b3694da4c8") (:url . "https://github.com/emacsfodder/tmtheme-to-deftheme"))]) (pdf-tools . [(20180109 1234) ((emacs (24 3)) (tablist (0 70)) (let-alist (1 0 4))) "Support library for PDF documents." tar ((:commit . "9241a79bbf159ba0b079ebdbfa8ad1b3e69cf8c0") (:keywords "files" "multimedia"))]) (pdb-mode . [(20150128 951) nil "Major mode for editing Protein Data Bank files" single ((:commit . "855fb18ebb73b5df30c8d7677c2bcd0f361b138a") (:url . "http://bondxray.org/software/pdb-mode/") (:keywords "data" "pdb"))]) (pcsv . [(20150220 331) nil "Parser of csv" single ((:commit . "798e0933f8d0818beb17aebf3b1056bbf74e03d0") (:url . "https://github.com/mhayashi1120/Emacs-pcsv/raw/master/pcsv.el") (:keywords "data"))]) (pcre2el . [(20161120 1303) ((emacs (24)) (cl-lib (0 3))) "regexp syntax converter" single ((:commit . "0b5b2a2c173aab3fd14aac6cf5e90ad3bf58fa7d") (:url . "https://github.com/joddie/pcre2el"))]) (pcomplete-extension . [(20140604 947) ((emacs (24)) (cl-lib (0 5))) "additional completion for pcomplete" single ((:commit . "839740c90de857e18db2f578d6660951522faab5") (:url . "https://github.com/thierryvolpiatto/pcomplete-extension"))]) (pcmpl-pip . [(20171201 33) ((s (1 12 0)) (f (0 19 0)) (seq (2 15))) "pcomplete for pip" single ((:commit . "8b001b579fc015f80ee0e4f3211058b830bf7c47") (:keywords "pcomplete" "pip" "python" "tools"))]) (pcmpl-homebrew . [(20170110 1609) nil "pcomplete for homebrew" single ((:commit . "d001520fec4715c9a4c73f02fd948bac371cc50a") (:keywords "pcomplete" "homebrew" "tools" "cask" "services"))]) (pcmpl-git . [(20170120 1659) nil "pcomplete for git" tar ((:commit . "9472ac70baeda025ef7becd1cf141d72aec93f32") (:keywords "tools"))]) (pcmpl-args . [(20120911 2224) nil "Enhanced shell command completion" single ((:commit . "2ba03b3125ada8037585e545b88bd85b79da5c37") (:url . "https://github.com/JonWaltman/pcmpl-args.el") (:keywords "abbrev" "completion" "convenience" "processes" "terminals" "unix"))]) (pcap-mode . [(20161025 748) ((emacs (24 3))) "Major mode for working with PCAP files" single ((:commit . "52780669af0ade136f84d73f21b4dbb7ab655416") (:keywords "pcap" "packets" "tcpdump" "wireshark" "tshark"))]) (pcache . [(20170105 1414) ((eieio (1 3))) "persistent caching for Emacs." single ((:commit . "1f8086077d770e524492e6fa59b07856e85a6fea"))]) (pc-bufsw . [(20180107 1040) nil "PC style quick buffer switcher" single ((:commit . "b99ba484e18ebf2b88654704146746490bb7625f") (:url . "https://github.com/ibukanov/pc-bufsw") (:keywords "buffer"))]) (pbcopy . [(20150224 2059) nil "Emacs Interface to pbcopy" single ((:commit . "338f7245746b5de1bb96c5cc2b32bfd9b5d83272") (:url . "https://github.com/jkp/pbcopy.el") (:keywords "mac" "osx" "pbcopy"))]) (paxedit . [(20160730 1027) ((cl-lib (0 5)) (paredit (23))) "Structured, Context Driven LISP Editing and Refactoring" single ((:commit . "09f3d5aeb108937a801e77ef413e29eaa4ecc4be") (:url . "https://github.com/promethial/paxedit") (:keywords "lisp" "refactoring" "context"))]) (pathify . [(20160423 146) nil "Symlink your scripts into a PATH directory" single ((:commit . "401b184c743694a60b3bc4273fc43de05cd5ac4b") (:url . "https://gitlab.com/alezost-emacs/pathify") (:keywords "convenience"))]) (path-headerline-mode . [(20140423 632) nil "Displaying file path on headerline." single ((:commit . "b5b2725c6a8b1cb592fc242b7dbbd54b4dff2e69") (:url . "https://github.com/7696122/path-headerline-mode") (:keywords "headerline"))]) (pastery . [(20171113 1949) ((emacs (24 4)) (request (0 2 0))) "paste snippets to pastery.net." tar ((:commit . "4493be98b743b4d062cb4e00760125e394a55022") (:url . "https://github.com/diasbruno/pastery.el") (:keywords "tools"))]) (pastelmac-theme . [(20151030 1936) ((emacs (24 1))) "a soothing theme with a pastel color palette" single ((:commit . "bead21741e3f46f6506e8aef4469d4240a819389") (:url . "https://github.com/bmastenbrook/pastelmac-theme-el") (:keywords "themes"))]) (pastehub . [(20140614 2320) nil "A client for the PasteHub cloud service" single ((:commit . "37b045c67659c078f1517d0fbd5282dab58dca23") (:url . "https://github.com/kiyoka/pastehub"))]) (pastebin . [(20101125 1202) nil "A simple interface to the www.pastebin.com webservice" single ((:commit . "8e9a829298ce0f747ab80758aa26caeb2af6cb30"))]) (paste-of-code . [(20170709 1655) ((emacs (24 3)) (request (0 2 0))) "paste code on https://paste.ofcode.org" single ((:commit . "92d258e8ec98598d847ecab82903f9224c7c2050") (:keywords "lisp"))]) (password-vault . [(20160126 1020) ((cl-lib (0 2)) (emacs (24))) "A Password manager for Emacs." single ((:commit . "dc56e6c2f5da66f1ab63736cecf08fb2c6c2b30f") (:url . "http://github.com/PuercoPop/password-vault") (:keywords "password" "productivity"))]) (password-store-otp . [(20170928 18) ((emacs (25)) (s (1 9 0)) (password-store (0 1))) "Password store (pass) OTP extension support" single ((:commit . "a39a64a91de36e87b852339635bd3c5fb0e32441") (:url . "https://github.com/volrath/password-store-otp.el") (:keywords "tools" "pass"))]) (password-store . [(20170829 1633) ((emacs (24)) (f (0 11 0)) (s (1 9 0)) (with-editor (2 5 11))) "Password store (pass) support" single ((:commit . "bd1cadd5620279b5ee781434b4f0731eb9ad730d") (:url . "https://www.passwordstore.org/") (:keywords "tools" "pass" "password" "password-store"))]) (password-mode . [(20170411 2329) nil "Hide password text using overlays" single ((:commit . "ed764a4ec1011526457c71b7c37fa9a659a866ab") (:keywords "docs" "password" "passphrase"))]) (password-generator . [(20150222 1240) nil "Password generator for humans. Good, Bad, Phonetic passwords included." single ((:commit . "c8193d5e963bda0a2f8e51fd4a94dcf37c76f282") (:url . "http://github.com/zargener/emacs-password-genarator"))]) (passthword . [(20141201 123) ((cl-lib (0 5))) "Simple password manager" single ((:commit . "30bace842eaaa6b48cb2251fb84868ebca0467d6"))]) (passmm . [(20170113 837) ((emacs (24 4))) "A minor mode for pass (Password Store)." single ((:commit . "076df7221f9450b96855c36684ae4a7481e0bb71") (:url . "https://github.com/pjones/passmm"))]) (pass . [(20180109 201) ((emacs (24 3)) (password-store (0 1)) (password-store-otp (0 1 5)) (f (0 17))) "Major mode for password-store.el" single ((:commit . "855e89446676f03065ed01e4a5c8dfba5eca3610") (:keywords "password-store" "password" "keychain"))]) (pasp-mode . [(20170803 1301) ((emacs (24 3))) "- A major mode for editing Answer Set Programs." single ((:commit . "6511193677d6113fec1171f476c0db3be242ee15") (:url . "https://github.com/santifa/pasp-mode") (:keywords "asp" "pasp" "answer set programs" "potassco answer set programs" "major mode" "languages"))]) (parsec . [(20171202 2031) ((emacs (24)) (cl-lib (0 5))) "Parser combinator library" single ((:commit . "212f848d95c2614a86f135c1bf3de15ef0e09805") (:url . "https://github.com/cute-jumper/parsec.el") (:keywords "extensions"))]) (parsebib . [(20170501 347) ((emacs (24 3))) "A library for parsing bib files" single ((:commit . "bc31b627c666df576aa37e21c27a2223b3cb91a3") (:keywords "text" "bibtex"))]) (parse-csv . [(20160512 1023) nil "Parse strings with CSV fields into s-expressions" single ((:commit . "96bef1ffbc89ea12d13311c9fa239c5c3e864890") (:url . "https://github.com/mrc/el-csv") (:keywords "csv"))]) (parinfer . [(20170710 821) ((dash (2 13 0)) (cl-lib (0 5))) "Simpler Lisp editing" tar ((:commit . "23ac701e2a1a1364ca96d267437c3413986a4497") (:url . "https://github.com/DogLooksGood/parinfer-mode") (:keywords "parinfer"))]) (parent-mode . [(20150824 1600) nil "get major mode's parent modes" single ((:commit . "db692cf08deff2f0e973e6e86e26662b44813d1b") (:url . "https://github.com/Fanael/parent-mode"))]) (paren-face . [(20161028 1127) nil "a face for parentheses in lisp modes" single ((:commit . "0a7cbd65bb578cc52a9dc495a4fcaf23a57507bf") (:url . "https://github.com/tarsius/paren-face"))]) (paren-completer . [(20160501 352) ((emacs (24 3))) "Automatically, language agnostically, fill in delimiters." single ((:commit . "74183a8e13fa1266271bdcbcb4bfb29a4f915f0a") (:url . "https://github.com/MatthewBregg/paren-completer") (:keywords "convenience"))]) (paredit-menu . [(20160128 933) ((paredit (25))) "Adds a menu to paredit.el as memory aid" single ((:commit . "cc0ae85bd819f9ebfa4f2a419ab3b2d70e39c9c8") (:keywords "paredit"))]) (paredit-everywhere . [(20150821 2144) ((paredit (22))) "Enable some paredit features in non-lisp buffers" single ((:commit . "94c92095c2096713fb3e2f7662ddd994f4b694c6") (:keywords "languages" "convenience"))]) (paredit . [(20171126 1805) nil "minor mode for editing parentheses" single ((:commit . "acbe10fdd85d2e91831adf70b6a828bc7e900da0") (:keywords "lisp"))]) (paradox . [(20161117 502) ((emacs (24 4)) (seq (1 7)) (let-alist (1 0 3)) (spinner (1 7 3)) (hydra (0 13 2))) "A modern Packages Menu. Colored, with package ratings, and customizable." tar ((:commit . "dfdfbec8b4a3b71966c134f00c3f5edfa87b6245") (:url . "https://github.com/Malabarba/paradox") (:keywords "package" "packages"))]) (paperless . [(20170213 503) ((emacs (24 4)) (f (0 19 0)) (s (1 10 0)) (cl-lib (0 6 1))) "A major mode for sorting and filing PDF documents." single ((:commit . "4e8c5d147db5c8ef0a3914e95b4030b28d29c6bb") (:url . "http://github.com/atgreen/paperless") (:keywords "pdf" "convenience"))]) (paper-theme . [(20180107 1613) ((emacs (24)) (hexrgb (0))) "A minimal Emacs colour theme." single ((:commit . "28d7339f2e70c617f2e8e3979b45d78883a27282") (:url . "http://gkayaalp.com/emacs.html#paper") (:keywords "theme" "paper"))]) (pangu-spacing . [(20170317 157) nil "Minor-mode to add space between Chinese and English characters." single ((:commit . "a4463dbb74abdeddb6c1c132a1f8fcf67ed87498") (:url . "http://github.com/coldnew/pangu-spacing"))]) (pandoc-mode . [(20171216 1545) ((hydra (0 10 0)) (dash (2 10 0))) "Minor mode for interacting with Pandoc" tar ((:commit . "242bc6fb154ed02d5829644778586234e31c0710") (:keywords "text" "pandoc"))]) (pandoc . [(20161128 357) ((emacs (24 4))) "Pandoc interface" single ((:commit . "198d262d09e30448f1672338b0b5a81cf75e1eaa") (:url . "https://github.com/zonuexe/pandoc.el") (:keywords "hypermedia" "documentation" "markup" "converter"))]) (pamparam . [(20171217 551) ((emacs (24 3)) (lispy (0 26 0)) (worf (0 1 0)) (hydra (0 13 4))) "Simple and fast flashcards." single ((:commit . "eaa53a1f582e0ec244200f4d324edf3aca640de7") (:url . "https://github.com/abo-abo/pamparam") (:keywords "outlines" "hypermedia" "flashcards" "memory"))]) (pallet . [(20150512 2) ((dash (2 10 0)) (s (1 9 0)) (f (0 17 1)) (cask (0 7))) "A package management tool for Emacs, using Cask." tar ((:commit . "b8d0df1883224a371ac0a3bc9b9c1c4dc61e6ac0"))]) (palimpsest . [(20170119 1232) nil "Various deletion strategies when editing" single ((:commit . "e6d5944393c260ceb724462c84046cc62c9ae916"))]) (palette . [(20170307 936) ((hexrgb (0))) "Color palette useful with RGB, HSV, and color names" single ((:url . "https://www.emacswiki.org/emacs/download/palette.el") (:keywords "color" "rgb" "hsv" "hexadecimal" "face" "frame"))]) (pager-default-keybindings . [(20130719 1357) ((pager (1 0))) "Add the default keybindings suggested for pager.el" single ((:commit . "dbbd49c2ac5906d1dabf9e9c832bfebc1ab405b3") (:url . "http://github.com/nflath/pager-default-keybindings"))]) (pager . [(20151201 1720) nil "windows-scroll commands" single ((:commit . "5c791ed23f1136e04040d6f4bc9b4ca5b6dc919f"))]) (page-break-lines . [(20171210 31) ((emacs (24 4))) "Display ^L page breaks as tidy horizontal lines" single ((:commit . "fd3b7e38ad8747cd009ead7ef1bb150849ccc693") (:url . "https://github.com/purcell/page-break-lines") (:keywords "convenience" "faces"))]) (paganini-theme . [(20160612 337) ((emacs (24 0))) "A colorful, dark and warm theme." single ((:commit . "44e3ae4c451f3b380956fea8aef8cca75279746b") (:url . "https://github.com/onurtemizkan/paganini"))]) (pacmacs . [(20160131 32) ((emacs (24 4)) (dash (2 11 0)) (dash-functional (1 2 0)) (cl-lib (0 5)) (f (0 18 0))) "Pacman for Emacs" tar ((:commit . "d813e9c62c2540fe619234824fc60e128c786442") (:url . "http://github.com/codingteam/pacmacs.el"))]) (packed . [(20170819 942) ((emacs (24 3))) "package manager agnostic Emacs Lisp package utilities" single ((:commit . "94ea12b9d44bfa42c28d0548199f2fcd19e4aa6a") (:url . "https://github.com/emacscollective/packed") (:keywords "compile" "convenience" "lisp" "package" "library"))]) (package-utils . [(20170222 2352) nil "Extensions for package.el" single ((:commit . "3cbbc2ff50ecb5e6fb20a309cb07d74ca10d4d42") (:url . "https://github.com/Silex/package-utils") (:keywords "package" "convenience"))]) (package-safe-delete . [(20150116 807) ((emacs (24)) (epl (0 7 -3))) "Safely delete package.el packages" single ((:commit . "138171e4fc03c0ef05a8260cbb5cd2e114c1c194") (:url . "https://github.com/Fanael/package-safe-delete"))]) (package-lint . [(20171201 1903) ((cl-lib (0 5)) (emacs (24))) "A linting library for elisp package authors" single ((:commit . "9abfb14d9ad903ef73895a27b9964b5e6023d752") (:url . "https://github.com/purcell/package-lint") (:keywords "lisp"))]) (package-filter . [(20161121 2319) nil "package archive whitelist and blacklist" single ((:commit . "bc73b41aea1d65ca44ef1593ca13126df9bbb39e") (:url . "https://github.com/milkypostman/package-filter"))]) (package-build . [(20171127 902) ((cl-lib (0 5))) "Tools for assembling a package archive" tar ((:commit . "fc706968dc0bb60e06c5d21025a6ea82d3279e96") (:keywords "tools"))]) (package+ . [(20170815 1956) nil "Extensions for the package library." single ((:commit . "9213f6134eabc2cff5826779ced437714324c066") (:url . "TBA") (:keywords "extensions" "tools"))]) (pabbrev . [(20160320 1401) nil "Predictive abbreviation expansion" single ((:commit . "56400d5d256b42ffe45c229ea9827f026b650cf5"))]) (p4 . [(20150721 1237) nil "Simple Perforce-Emacs Integration" single ((:commit . "eff047caa75dbe4965defca9d1212454cdb755d5") (:url . "https://github.com/gareth-rees/p4.el"))]) (ox-twiki . [(20170803 1339) ((org (8)) (cl-lib (0 5))) "org Twiki and Foswiki export" single ((:commit . "970bb8ed0e4c4426c37a929b1fe08f944c1cf74f") (:url . "https://github.com/dfeich/org8-wikiexporters") (:keywords "org"))]) (ox-twbs . [(20161103 1316) nil "Bootstrap compatible HTML Back-End for Org" single ((:commit . "2414e6b1de7deb6dd2ae79a7be633fdccb9c2f28") (:url . "https://github.com/marsmining/ox-twbs") (:keywords "org" "html" "publish" "twitter" "bootstrap"))]) (ox-tufte . [(20160926 907) ((org (8 2)) (emacs (24))) "Tufte HTML org-mode export backend" single ((:commit . "49d7ea78fde063b407ce6fa57739f90c83500682") (:url . "https://github.com/dakrone/ox-tufte") (:keywords "org" "tufte" "html"))]) (ox-trac . [(20171026 1123) ((org (9 0))) "Org Export Backend to Trac WikiFormat" single ((:commit . "03cc31efb1aa06991918f1071e250a9d58f96cfb") (:url . "https://github.com/JalapenoGremlin/ox-trac") (:keywords "org-mode" "trac"))]) (ox-tiddly . [(20151206 240) ((org (8)) (cl-lib (0 5))) "org TiddlyWiki exporter" single ((:commit . "970bb8ed0e4c4426c37a929b1fe08f944c1cf74f") (:url . "https://github.com/dfeich/org8-wikiexporters") (:keywords "org"))]) (ox-textile . [(20171120 1758) ((org (8 1))) "Textile Back-End for Org Export Engine" single ((:commit . "e40472b13aee3d7dbf7bd916825431547024303d") (:url . "https://github.com/yashi/org-textile") (:keywords "org" "textile"))]) (ox-rst . [(20171004 1553) ((emacs (24 4)) (org (8 2 4))) "Export reStructuredText using org-mode." single ((:commit . "6d1eab55ff7c8dc4bcf511c9483e69f2a840e928") (:url . "https://github.com/masayuko/ox-rst") (:keywords "org" "rst" "rest" "restructuredtext"))]) (ox-reveal . [(20161027 226) ((org (20150330))) "reveal.js Presentation Back-End for Org Export Engine" single ((:commit . "001567cc12d50ba07612edd1718b86a12e8c2547") (:keywords "outlines" "hypermedia" "slideshow" "presentation"))]) (ox-qmd . [(20170402 957) ((org (8 0))) "Qiita Markdown Back-End for Org Export Engine" single ((:commit . "3a24c7a0b3ec80e494b977e14a3dfb94c9f1d8ec") (:url . "https://github.com/0x60df/ox-qmd") (:keywords "org" "wp" "markdown" "qiita"))]) (ox-pukiwiki . [(20150124 916) ((org (8 1))) "Pukiwiki Back-End for Org Export Engine" single ((:commit . "bdbde2c294f5d3de11f08a3fe19f01175d2e011a") (:url . "https://github.com/yashi/org-pukiwiki") (:keywords "org" "pukiwiki"))]) (ox-pandoc . [(20171107 341) ((org (8 2)) (emacs (24)) (dash (2 8)) (ht (2 0)) (cl-lib (0 5))) "org exporter for pandoc." single ((:commit . "cd3c59f6c0ea49e0cac31d8392a5bbac02886d8f") (:url . "https://github.com/kawabata/ox-pandoc") (:keywords "tools"))]) (ox-nikola . [(20151114 316) ((emacs (24 4)) (org (8 2 4)) (ox-rst (0 2))) "Export Nikola articles using org-mode." single ((:commit . "5bcbc1a38f6619f62294194f13ca0cd4ca14dd48") (:url . "https://github.com/masayuko/ox-nikola") (:keywords "org" "nikola"))]) (ox-minutes . [(20170323 835) ((emacs (24 4))) "Plain text backend for Org for Meeting Minutes" single ((:commit . "ad9632f35524ac546c6d55dfa827e8597669e1e1") (:url . "https://github.com/kaushalmodi/ox-minutes") (:keywords "org" "exporter" "notes"))]) (ox-mediawiki . [(20180105 1354) ((cl-lib (0 5)) (s (1 9 0))) "Mediawiki Back-End for Org Export Engine" single ((:commit . "a9327150293e370e500ba55bddfe5fc435c6bf9b") (:url . "https://github.com/tomalexander/orgmode-mediawiki") (:keywords "org" "wp" "mediawiki"))]) (ox-jira . [(20171001 216) ((org (8 3))) "JIRA Backend for Org Export Engine" single ((:commit . "db2ec528f46c9e611624ba28611c440a99bff255") (:url . "https://github.com/stig/ox-jira.el") (:keywords "outlines" "hypermedia" "wp"))]) (ox-ioslide . [(20161015 638) ((emacs (24 1)) (org (8 0)) (cl-lib (0 5)) (f (0 17 2)) (makey (0 3))) "Export org-mode to Google I/O HTML5 slide." tar ((:commit . "6555680be5364c8ddd2bf446865cb1a82adb6b9e") (:url . "http://github.com/coldnew/org-ioslide") (:keywords "html" "presentation"))]) (ox-impress-js . [(20150412 1016) ((org (8))) "impress.js Back-End for Org Export Engine" tar ((:commit . "91c6d2af6af308ade352a03355c4fb551b238c6b") (:url . "https://github.com/kinjo/org-impress-js.el") (:keywords "outlines" "hypermedia" "calendar" "wp"))]) (ox-hugo . [(20180109 1414) ((emacs (24 4)) (org (9 0))) "Hugo Markdown Back-End for Org Export Engine" tar ((:commit . "a2e9396771c8a7ce13c19e20226b1768335aad6c") (:url . "https://ox-hugo.scripter.co") (:keywords "org" "markdown" "docs"))]) (ox-html5slide . [(20131227 2206) ((org (8 0))) "Export org-mode to HTML5 slide." single ((:commit . "4703dfbd9d79161509def673d2c1e118d722a58f") (:url . "http://github.com/coldnew/org-html5slide") (:keywords "html" "presentation"))]) (ox-gfm . [(20170628 1402) nil "Github Flavored Markdown Back-End for Org Export Engine" single ((:commit . "99f93011b069e02b37c9660b8fcb45dab086a07f") (:keywords "org" "wp" "markdown" "github"))]) (ox-epub . [(20171105 0) ((emacs (24 3)) (org (9))) "Export org mode projects to EPUB" single ((:commit . "93bd7b42ad4a70d7008470820266546d261222d6") (:url . "http://github.com/ofosos/org-epub") (:keywords "hypermedia"))]) (ox-clip . [(20170805 505) ((org (8 2)) (htmlize (0))) "Cross-platform formatted copying for org-mode" single ((:commit . "b596760aec2ab4e10b18807c01839047aa209d6e") (:url . "https://github.com/jkitchin/ox-clip/ox-clip.el") (:keywords "org-mode"))]) (ox-bibtex-chinese . [(20170722 2009) ((emacs (24 4))) "Let ox-bibtex work well for Chinese users" tar ((:commit . "2ad2364399229144110db7ef6365ad0461d6a38c"))]) (ox-asciidoc . [(20171111 354) ((org (8 1))) "AsciiDoc Back-End for Org Export Engine" single ((:commit . "e75d9565dd07dc59d11fa92d392ab47cecb3c902") (:url . "https://github.com/yashi/org-asciidoc") (:keywords "org" "asciidoc"))]) (owdriver . [(20170401 612) ((smartrep (0 0 3)) (log4e (0 2 0)) (yaxception (0 2 0))) "Quickly perform various actions on other windows" single ((:commit . "d934f182bafe29aa16c173440eff3fef08b0ec10") (:url . "https://github.com/aki2o/owdriver") (:keywords "convenience"))]) (overseer . [(20170207 2241) ((emacs (24)) (dash (2 10 0)) (pkg-info (0 4)) (f (0 18 1))) "Ert-runner Integration Into Emacs" single ((:commit . "6be1f2a4df1b7a20298865b85502ee89e327898d") (:url . "http://www.github.com/tonini/overseer.el"))]) (ov . [(20150311 2228) ((emacs (24 3))) "Overlay library for Emacs Lisp" single ((:commit . "fae7215b3dedba2a9ced145284332e4609bfdc38") (:url . "https://github.com/ShingoFukuyama/ov.el") (:keywords "overlay"))]) (outshine . [(20171108 441) ((outorg (2 0)) (cl-lib (0 5))) "outline with outshine outshines outline" tar ((:commit . "5f1a6b70231d2811c522e4e5e8c89ff461b311d6") (:url . "http://github.com/alphapapa/outshine"))]) (outrespace . [(20170904 511) ((emacs (24 4))) "c++ namespace utility functions" single ((:commit . "0a3b53d283fe8adb8de45766d284704ed4557e23") (:url . "https://github.com/articuluxe/outrespace.git") (:keywords "tools" "c++" "namespace"))]) (outorg . [(20170414 1215) ((emacs (24 4))) "Org-style comment editing" single ((:commit . "78b0695121fb974bc4e971eb4ef7f8afd6d89d64") (:url . "https://github.com/alphapapa/outorg"))]) (outlined-elisp-mode . [(20131108 327) nil "outline-minor-mode settings for emacs lisp" single ((:commit . "c16cb02b540448919ad148f2be6a41523ee5489c") (:url . "http://hins11.yu-yake.com/"))]) (outline-toc . [(20170730 430) nil "Sidebar showing a \"table of contents\"." single ((:commit . "31f04bea19cfcfb01a94d1fd2b72391cb02b7463") (:url . "https://github.com/abingham/outline-toc.el") (:keywords "convenience" "outlines"))]) (outline-magic . [(20150209 1426) nil "outline mode extensions for Emacs" single ((:commit . "5689436cd67edc86066e51be77fa4e1fe21de507") (:keywords "outlines"))]) (otama . [(20160404 332) nil "Org-table Manipulator" single ((:commit . "c114fd8006762f891bc120a7c0ea213872e7ab31") (:keywords "database" "org-mode"))]) (osx-trash . [(20160520 600) ((emacs (24 1))) "System trash for OS X" tar ((:commit . "0f1dc052d0a750b8c75f14530a4897f5d4324b4e") (:url . "https://github.com/lunaryorn/osx-trash.el") (:keywords "files" "convenience" "tools" "unix"))]) (osx-pseudo-daemon . [(20170722 837) nil "Daemon mode that plays nice with OSX." tar ((:commit . "4d10e327cd8ee5bb7f006d68744be21c7097c1fc") (:url . "https://github.com/DarwinAwardWinner/osx-pseudo-daemon") (:keywords "convenience" "osx"))]) (osx-plist . [(20101130 448) nil "Apple plist file parser" single ((:commit . "5e6de2622fdfe552d4902904f05ea03bc5a6ebd0") (:keywords "convenience"))]) (osx-org-clock-menubar . [(20150205 1311) nil "simple menubar integration for org-clock" tar ((:commit . "9964d2a97cc2fb6570dc4116da44f73bd8eb7cb3") (:url . "https://github.com/jordonbiondo/osx-org-clock-menubar") (:keywords "org" "osx"))]) (osx-location . [(20150613 217) nil "Watch and respond to changes in geographical location on OS X" tar ((:commit . "8bb3a94cc9f04b922d2d730fe08596cc6ee12bf2"))]) (osx-lib . [(20160919 1700) ((emacs (24 4))) "Basic function for Apple/OSX." single ((:commit . "fdbbb41e07ba64d6a09b54bd142a7c7b83bfd09f") (:keywords "apple" "applescript" "osx" "finder" "emacs" "elisp" "vpn" "speech"))]) (osx-dictionary . [(20171026 34) ((cl-lib (0 5))) "Interface for OSX Dictionary.app" tar ((:commit . "b16630ecf69f87ac873486d8b9c8c03e6c9ea7fa") (:url . "https://github.com/xuchunyang/osx-dictionary.el") (:keywords "mac" "dictionary"))]) (osx-clipboard . [(20141012 17) nil "Use the OS X clipboard from terminal Emacs" single ((:commit . "e46dd31327a3f92f77b013b4c9b1e5fdd0e5c73d") (:url . "https://github.com/joddie/osx-clipboard-mode"))]) (osx-browse . [(20140508 1341) ((string-utils (0 3 2)) (browse-url-dwim (0 6 6))) "Web browsing helpers for OS X" single ((:commit . "44ded7cc3a7ee426c1c3257fae534c121f7e752e") (:url . "http://github.com/rolandwalker/osx-browse") (:keywords "hypermedia" "external"))]) (origami . [(20180101 753) ((s (1 9 0)) (dash (2 5 0)) (emacs (24)) (cl-lib (0 5))) "Flexible text folding" tar ((:commit . "1f38085c8f9af7842765ed63f7d6dfe4dab59366") (:url . "https://github.com/gregsexton/origami.el") (:keywords "folding"))]) (orgtbl-show-header . [(20141023 137) nil "Show the header of the current column in the minibuffer" single ((:commit . "112d54a44682f065318ed0c9c89a8f5b8907342a"))]) (orgtbl-join . [(20150121 1446) ((cl-lib (0 5))) "join columns from another table" tar ((:commit . "ccf5e0d96e053dc289da39a048715fcf36835ff2") (:keywords "org" "table" "join" "filtering"))]) (orgtbl-ascii-plot . [(20151215 1351) nil "ascii-art bar plots in org-mode tables" single ((:commit . "cd91f6ae26a7402e192a1f4fd6248f5797edf19e") (:keywords "org" "table" "ascii" "plot"))]) (orgtbl-aggregate . [(20160421 726) nil "Create an aggregated Org table from another one" tar ((:commit . "a33a02ba70639cadaef5f6ea028c2fe73f76cf14") (:keywords "org" "table" "aggregation" "filtering"))]) (orgnav . [(20170608 1013) ((helm (2 7 0)) (s (1 11 0)) (dash (1 11 0)) (emacs (24))) "Org tree navigation using helm" tar ((:commit . "9e2cac9c1a67af5f0080e60022e821bf7b70312d") (:url . "http://github.com/facetframer/orgnav") (:keywords "convenience" "outlines"))]) (orglue . [(20171220 426) ((org (8 1)) (epic (0 2))) "more functionality to org-mode." tar ((:commit . "ae2a45c19b52e45db7891093a3ff17ba2e51c507") (:keywords "org"))]) (orglink . [(20161104 1800) ((emacs (24 3)) (dash (2 12 1)) (org (8 3))) "use Org Mode links in other modes" single ((:commit . "50debcf3508d2252bdce35c8822af1b3a81fd2dd") (:url . "https://github.com/tarsius/orglink") (:keywords "hypertext"))]) (orgit . [(20170731 1003) ((emacs (24 4)) (dash (2 13 0)) (magit (2 10 0)) (org (8 3 3))) "support for Org links to Magit buffers" single ((:commit . "022687eb02f0bf0d0151d0ad917b165bfef2d663") (:url . "https://github.com/magit/orgit"))]) (orgbox . [(20140528 1826) ((org (8 0)) (cl-lib (0 5))) "Mailbox-like task scheduling Org." single ((:commit . "72373b09768cc2200d143af38e25a0c082e8375d") (:url . "https://github.com/yasuhito/orgbox") (:keywords "org"))]) (organic-green-theme . [(20170720 1111) nil "Low-contrast green color theme." single ((:commit . "eea6b77b7ee26310fd6741b9affc3f2c43be2820"))]) (org2web . [(20171005 1617) ((cl-lib (1 0)) (ht (1 5)) (mustache (0 22)) (htmlize (1 47)) (org (8 0)) (dash (2 0 0)) (el2org (0 10)) (simple-httpd (0 1))) "A static site generator based on org mode." tar ((:commit . "5243b399927a4c474bb3b8d1c8a00799df1f27d7"))]) (org2jekyll . [(20170225 115) ((dash-functional (2 11 0)) (s (1 9 0)) (deferred (0 3 1)) (kv (0 0 19))) "Minor mode to publish org-mode post to jekyll without specific yaml" tar ((:commit . "52a19a5d372116262b9d613f4ec8490a3b49e329") (:url . "https://github.com/ardumont/org2jekyll") (:keywords "org-mode" "jekyll" "blog" "publish"))]) (org2issue . [(20160426 1818) ((org (8 0)) (emacs (24 4)) (ox-gfm (0 1)) (gh (0 1)) (s (20160405 920))) "export org to github issue" single ((:commit . "0f7f13463e389f2d8d7d830a928042d0cf1c71eb") (:url . "https://github.com/lujun9972/org2issue") (:keywords "convenience" "github" "org"))]) (org2elcomment . [(20170324 245) ((org (8 3 4))) "Convert Org file to Elisp comments" single ((:commit . "c88a75d9587c484ead18f7adf08592b09c1cceb0") (:keywords "extensions"))]) (org2ctex . [(20171016 2343) ((emacs (24 4))) "Export org to ctex (a latex macro for Chinese)" single ((:commit . "1b74aa9cf45de224ffd6aa9b93f0debddc2b48bc") (:url . "https://github.com/tumashu/org2ctex"))]) (org2blog . [(20171218 1911) ((org (8 3)) (xml-rpc (1 6 12)) (metaweblog (1 0 1)) (htmlize (1 51))) "Blog from Org mode to wordpress" tar ((:commit . "aa7a5730f4a58a53c41370dcde7bec43d5c1a2cd"))]) (org-wunderlist . [(20150817 1913) ((request-deferred (0 2 0)) (alert (1 1)) (emacs (24)) (cl-lib (0 5)) (org (8 2 4)) (s (1 9 0))) "Org sync with Wunderlist" single ((:commit . "f7f1ca73661356b9fa072efd73431592ff1182e1") (:url . "https://github.com/myuhe/org-wunderlist.el") (:keywords "convenience"))]) (org-web-tools . [(20171014 804) ((emacs (25 1)) (org (9 0)) (dash (2 12)) (s (1 10 0))) "Display and capture web content with Org-mode" single ((:commit . "e9583248e838806271643770102e786671fabaf5") (:url . "http://github.com/alphapapa/org-web-tools") (:keywords "hypermedia" "outlines" "org" "web"))]) (org-wc . [(20170727 1911) nil "Count words in org mode trees." single ((:commit . "d294ad7117c150445e6166fc0d88c14a8386f34e"))]) (org-vcard . [(20170929 410) nil "org-mode support for vCard export and import." tar ((:commit . "dbe266b79df4fb31f1766010322bf4e383ce1c03") (:url . "https://github.com/flexibeast/org-vcard") (:keywords "outlines" "org" "vcard"))]) (org-trello . [(20170225 1247) ((request-deferred (0 2 0)) (deferred (0 4 0)) (s (1 11 0)) (dash-functional (2 12 1)) (dash (2 12 1))) "Minor mode to synchronize org-mode buffer and trello board" tar ((:commit . "d7885038d7e160a64f561f8abc942206d582faa6"))]) (org-tree-slide . [(20171129 2238) nil "A presentation tool for org-mode" single ((:commit . "dff8f1a4a64c8dd0a1fde0b0131e2fe186747134") (:keywords "org-mode" "presentation" "narrowing"))]) (org-transform-tree-table . [(20150110 633) ((dash (2 10 0)) (s (1 3 0))) "Transform org-mode tree with properties to a table, and the other way around" single ((:commit . "0a9bf07f01bc5fc3b349aff64e83999a8de83b52") (:url . "https://github.com/jplindstrom/emacs-org-transform-tree-table") (:keywords "org-mode" "table" "org-table" "tree" "csv" "convert"))]) (org-tracktable . [(20161118 529) ((emacs (24)) (cl-lib (0 5))) "Track your writing progress in an org-table" single ((:commit . "8e0e60a582a034bd66d5efb72d513140b7d4d90a") (:url . "https://github.com/tty-tourist/org-tracktable") (:keywords "org" "writing"))]) (org-toodledo . [(20150301 313) ((request-deferred (0 2 0)) (emacs (24)) (cl-lib (0 5))) "Toodledo integration for Emacs Org mode" tar ((:commit . "2c91a92bd07ae4a546771b018a6faa0e06399968") (:keywords "outlines" "data"))]) (org-time-budgets . [(20151111 2) ((alert (0 5 10)) (cl-lib (0 5))) "Define time budgets and display clocked time." single ((:commit . "f2a8fe3d9d6104f3dd61fabbb385a596363b360b"))]) (org-themis . [(20160121 2004) ((cl-lib (0 4))) "Experimental project management mode for org-mode" single ((:commit . "78aadbbe22b1993be5c4accd0d3f91a4e85c9a3c") (:url . "http://github.com/zellio/org-themis") (:keywords "org-mode" "elisp" "project"))]) (org-tfl . [(20170923 518) ((org (0 16 2)) (cl-lib (0 5)) (emacs (24 1))) "Transport for London meets Orgmode" tar ((:commit . "f0d7d39106a1de5457f5160cddd98ab892b61066") (:url . "https://github.com/storax/org-tfl") (:keywords "org" "tfl"))]) (org-table-sticky-header . [(20170408 1814) ((org (8 2 10)) (emacs (24 4))) "Sticky header for org-mode tables" single ((:commit . "93dc69efc00ac9fd3cc2ece5100f51df33ec7d8b") (:keywords "extensions"))]) (org-table-comment . [(20120209 1051) nil "Org table comment modes." single ((:commit . "33b9966c33ecbc3e27cca67c2f2cdea04364d74e") (:url . "http://github.com/mlf176f2/org-table-comment.el") (:keywords "org-mode" "orgtbl"))]) (org-sync-snippets . [(20170824 1128) ((org (8 3 5)) (emacs (24 3)) (f (0 17 3))) "Export snippets to org-mode and vice versa" single ((:commit . "0f264a032d371d7dbb4a7cbaf0ea2f91b5a629ca") (:url . "https://github.com/abrochard/org-sync-snippets") (:keywords "snippet" "org-mode" "yasnippet" "tools"))]) (org-sync . [(20150817 754) ((cl-lib (0 5)) (org (8 2)) (emacs (24))) "Synchronize Org documents with External Issue Trackers" tar ((:commit . "7f02167ef805cd76def274be4d3bd0c6e41d9af8") (:url . "https://github.com/arbox/org-sync") (:keywords "org" "synchronization" "issue tracking" "github" "redmine"))]) (org-super-agenda . [(20170904 1516) ((emacs (25 1)) (s (1 10 0)) (dash (2 13)) (org (9 0)) (ht (2 2))) "Supercharge your agenda" single ((:commit . "d06bfb021bee575ce750b36ee9bfc2d8fc8fd635") (:url . "http://github.com/alphapapa/org-super-agenda") (:keywords "hypermedia" "outlines" "org" "agenda"))]) (org-sticky-header . [(20170422 2135) ((emacs (24 4)) (org (8 3 5))) "Show off-screen Org heading at top of window" single ((:commit . "aae8dbc7f3b33c4dd35dc38d83791d7c23757060") (:url . "http://github.com/alphapapa/org-sticky-header") (:keywords "hypermedia" "outlines" "org"))]) (org-static-blog . [(20170706 646) ((emacs (24 3))) "a simple org-mode based static blog generator" single ((:commit . "9dea733006ae53902e6ec91fb11ff058229afe84") (:url . "https://github.com/bastibe/org-static-blog"))]) (org-send-ebook . [(20171231 2313) ((emacs (24 4)) (cl-lib (0 5)) (seq (2 20))) "Send org link file to ebook reader." single ((:commit . "a22d565413b82c415c4f12daab5bfcc489053ec5") (:url . "https://github.com/stardiviner/org-send-ebook") (:keywords "org" "link" "ebook" "kindle" "epub" "mobi"))]) (org-seek . [(20161216 2102) ((emacs (24 3)) (ag (0 48))) "Searching Org-mode files with search tools." single ((:commit . "1f51e6634e3b9a6a29d335d0d14370a6ffef2265") (:url . "https://github.com/stardiviner/org-seek.el") (:keywords "org" "search" "ag" "pt"))]) (org-rtm . [(20160214 436) ((rtm (0 1))) "Simple import/export from rememberthemilk to org-mode" single ((:commit . "adc42ad1fbe92ab447ccc9553780f4456f2508d2") (:url . "https://github.com/pmiddend/org-rtm") (:keywords "outlines" "data"))]) (org-review . [(20160906 2237) nil "schedule reviews for Org entries" single ((:commit . "058e75b7f28d2ad2390290fe17a63d98ef5ab763") (:url . "https://github.com/brabalan/org-review") (:keywords "org" "review"))]) (org-repo-todo . [(20171227 1719) nil "Simple repository todo management with org-mode" single ((:commit . "f73ebd91399c5760ad52c6ad9033de1066042003") (:url . "https://github.com/waymondo/org-repo-todo") (:keywords "convenience"))]) (org-ref . [(20180109 1919) ((dash (2 11 0)) (helm (1 5 5)) (helm-bibtex (2 0 0)) (ivy (0 8 0)) (hydra (0 13 2)) (key-chord (0)) (s (1 10 0)) (f (0 18 0)) (emacs (24 4)) (pdf-tools (0 7))) "citations, cross-references and bibliographies in org-mode" tar ((:commit . "4e32cc616df85b3e23874697abb2d1a0ac538679") (:url . "https://github.com/jkitchin/org-ref") (:keywords "org-mode" "cite" "ref" "label"))]) (org-redmine . [(20160711 414) nil "Redmine tools using Emacs OrgMode" single ((:commit . "e77d013bc3784947c46a5c53f03cd7d3c68552fc") (:url . "https://github.com/gongo/org-redmine") (:keywords "redmine" "org"))]) (org-recent-headings . [(20170907 2129) ((emacs (25 1)) (org (9 0 5)) (dash (2 13 0)) (frecency (0 1))) "Jump to recently used Org headings" single ((:commit . "a09c2670c400c7a4fbbf0ac05d2d9226aa10e8f4") (:url . "http://github.com/alphapapa/org-recent-headings") (:keywords "hypermedia" "outlines" "org"))]) (org-readme . [(20151204 417) ((http-post-simple (1 0)) (yaoddmuse (0 1 1)) (header2 (21 0)) (lib-requires (21 0)) (cl-lib (0 5))) "Integrates Readme.org and Commentary/Change-logs." tar ((:commit . "4cb9f768d282a2835b4510b6504ff9ede487007d") (:url . "https://github.com/mlf176f2/org-readme") (:keywords "header2" "readme.org" "emacswiki" "git"))]) (org-randomnote . [(20171210 557) ((f (0 19 0)) (dash (2 12 0))) "Find a random note in your Org-Mode files" single ((:commit . "c544202d6cba1c1618ed39b2a45fa0ffc5f83e60") (:url . "http://github.com/mwfogleman/org-randomnote"))]) (org-random-todo . [(20171219 58) ((emacs (24 3)) (alert (1 2))) "show a random TODO (with alert) every so often" single ((:commit . "24500edf303a854f09a88b07e1a16a21e164eb87") (:keywords "org" "todo" "notification" "calendar"))]) (org-protocol-jekyll . [(20170328 939) ((cl-lib (0 5))) "Jekyll's handler for org-protocol" single ((:commit . "dec064a42d6dfe81dfde7ba59ece5ca103ac6334"))]) (org-projectile-helm . [(20170819 826) ((org-projectile (1 0 0)) (helm (2 3 1)) (emacs (25))) "helm functions for org-projectile" single ((:commit . "8cec702f602b18da90b3d6207888a887b8e07750") (:url . "https://github.com/IvanMalison/org-projectile") (:keywords "org" "projectile" "todo" "helm" "outlines"))]) (org-projectile . [(20171022 950) ((projectile (0 11 0)) (dash (2 10 0)) (emacs (24)) (s (1 9 0)) (org-category-capture (0 0 0))) "Repository todo management for org-mode" single ((:commit . "8cec702f602b18da90b3d6207888a887b8e07750") (:url . "https://github.com/IvanMalison/org-projectile") (:keywords "org-mode" "projectile" "todo" "tools" "outlines"))]) (org-preview-html . [(20160913 526) ((org (8 0)) (emacs (24 4))) "automatically use eww to preview the current org file on save" single ((:commit . "2b6afbaf1fcf781bcd53074ee62895f15f5282e5") (:url . "https://github.com/lujun9972/org-preview-html") (:keywords "convenience" "eww" "org"))]) (org-present . [(20141109 1756) ((org (7))) "Minimalist presentation minor-mode for Emacs org-mode." single ((:commit . "1b519cfd5abf44bed307cac576dc9fd61eb2c35f") (:url . "https://github.com/rlister/org-present"))]) (org-pomodoro . [(20171108 1314) ((alert (0 5 10)) (cl-lib (0 5))) "Pomodoro implementation for org-mode." tar ((:commit . "3deed1c26dcbda4d5231b9085ddf68e302b0f9dc") (:url . "https://github.com/lolownia/org-pomodoro"))]) (org-pdfview . [(20180102 2349) ((org (6 1)) (pdf-tools (0 80))) "Support for links to documents in pdfview mode" single ((:commit . "645f451df82fb5ebdf42b2c208711d307781062d") (:keywords "org" "pdf-view" "pdf-tools"))]) (org-password-manager . [(20170701 919) ((org (8 2 10)) (s (1 9 0)) (dash (2 13 0))) "Password manager for Org Mode." single ((:commit . "3e7058586b2ab96b12e9b1195b1db1e66e704f20") (:url . "https://git.leafac.com/org-password-manager") (:keywords "password"))]) (org-parser . [(20171002 2136) ((emacs (25 1)) (dash (2 12 0)) (ht (2 1))) "parse org files into structured datatypes." single ((:url . "https://bitbucket.org/zck/org-parser.el") (:keywords "files" "outlines" "tools"))]) (org-page . [(20170806 1924) ((ht (1 5)) (simple-httpd (1 4 6)) (mustache (0 22)) (htmlize (1 47)) (org (8 0)) (dash (2 0 0)) (cl-lib (0 5)) (git (0 1 1))) "a static site generator based on org mode" tar ((:commit . "50430ababf73a2d090881a952e9770badaf7478b"))]) (org-outlook . [(20160705 638) nil "Outlook org" tar ((:commit . "ec32d8d9d8ffd17e6de4de0b52fc3f5ad9b4cc0d") (:url . "https://github.com/mlf176f2/org-outlook.el") (:keywords "org-outlook"))]) (org-onenote . [(20171007 2200) ((oauth2 (0 11)) (request (0 2 0)) (org (8 2 10))) "export org-mode document to onenote." single ((:commit . "5ce5cf4edb143180e0b185ac26826d39ae5bc929") (:url . "https://github.com/ifree/org-onenote") (:keywords "tools" "docs" "org-mode" "onenote"))]) (org-octopress . [(20170820 2115) ((org (9 0)) (orglue (0 1)) (ctable (0 1 1))) "Compose octopress articles using org-mode." tar ((:commit . "38598ef98d04076a8eb78d549907ddfde8d3a652") (:keywords "org" "jekyll" "octopress" "blog"))]) (org-noter . [(20180109 1823) ((emacs (24 4)) (cl-lib (0 6)) (org (9 0))) "A synchronized, Org-mode, document annotator" single ((:commit . "3f1f1c7856e3e3b1482acba990bf440c13274752") (:url . "https://github.com/weirdNox/org-noter") (:keywords "lisp" "pdf" "interleave" "annotate" "external" "sync" "notes" "documents" "org-mode"))]) (org-notebook . [(20170321 2152) ((emacs (24)) (org (8)) (cl-lib (0 5))) "Ease the use of org-mode as a notebook" single ((:commit . "86042d866bf441e2c9bb51f995e5994141b78517") (:keywords "convenience" "tools"))]) (org-multiple-keymap . [(20150328 1806) ((org (8 2 4)) (emacs (24)) (cl-lib (0 5))) "Set keymap to elements, such as timestamp and priority." single ((:commit . "8ebc532df7f0dd6e6c3aa7c380a51d4166c668e8") (:url . "https://github.com/myuhe/org-multiple-keymap.el") (:keywords "convenience" "org-mode"))]) (org-mru-clock . [(20171219 314) ((emacs (24 3))) "load most recently used clocks into history" single ((:commit . "ccf477735d76c078b44bba7bff12e7e30e66bdb3") (:keywords "convenience" "calendar"))]) (org-mobile-sync . [(20160629 1307) ((emacs (24 3 50)) (org (8 0))) "automatically sync org-mobile on changes" single ((:commit . "442bcfe93f4f2cab02e2dd2c3634fbffcda9a17d") (:url . "https://github.com/steckerhalter/org-mobile-sync") (:keywords "org-mode" "org" "mobile" "sync" "todo"))]) (org-mind-map . [(20171206 645) ((emacs (24)) (dash (1 8 0)) (org (8 2 10))) "Creates a directed graph from org-mode files" single ((:commit . "d7854dbd30d565d3087d2810d6a77cc882988eae") (:url . "https://github.com/theodorewiles/org-mind-map/org-mind-map.el") (:keywords "orgmode" "extensions" "graphviz" "dot"))]) (org-mime . [(20171105 1440) ((emacs (24 3)) (cl-lib (0 5))) "org html export for text/html MIME emails" single ((:commit . "64a3f56651369b2a8b0a601abea1cf1216db2ded") (:url . "http://github.com/org-mime/org-mime") (:keywords "mime" "mail" "email" "html"))]) (org-linkany . [(20160206 2011) ((log4e (0 2 0)) (yaxception (0 1))) "Insert link using anything.el/helm.el on org-mode" single ((:commit . "8cfe2f1a46e6654a79f56505349d1396263cecb3") (:url . "https://github.com/aki2o/org-linkany") (:keywords "org" "completion"))]) (org-link-travis . [(20140405 1627) ((org (7))) "Insert/Export the link of Travis CI on org-mode" single ((:commit . "596615ad8373d9090bd4138da683524f0ad0bda5") (:url . "https://github.com/aki2o/org-link-travis") (:keywords "org"))]) (org-link-minor-mode . [(20170805 1152) ((org (8))) "Enable org-mode links in non-org modes" single ((:commit . "7b92df60f3fee7f609d649d80ef243b45771ebea") (:url . "https://github.com/seanohalpin/org-link-minor-mode"))]) (org-journal . [(20171113 53) nil "a simple org-mode based journaling mode" single ((:commit . "44a52a20a154d5c1a78684ef720972c4fe36b64a") (:url . "http://github.com/bastibe/org-journal"))]) (org-jira . [(20180103 1813) ((emacs (24 5)) (cl-lib (0 5)) (request (0 2 0)) (s (0 0 0))) "Syncing between Jira and Org-mode." tar ((:commit . "51a1b2248ec421aecdd38aaf5c2876a036b08bb7") (:url . "https://github.com/ahungry/org-jira") (:keywords "ahungry" "jira" "org" "bug" "tracker"))]) (org-iv . [(20171001 322) ((impatient-mode (1 0 0)) (org (8 0)) (cl-lib (0 5))) "a tool used to view html (in browser) generated by org-file once the org-file changes" tar ((:commit . "7f2bb1b32647655fd9d6684f6f09dcc66b61b0cd"))]) (org-if . [(20150920 813) nil "Interactive Fiction Authoring System for Org-Mode." tar ((:commit . "fab602cc1bbee7a4e99c0083e129219d3f9ed2e8"))]) (org-grep . [(20151202 429) ((cl-lib (0 5))) "Kind of M-x rgrep adapted for Org mode." single ((:commit . "5bdd04c0f53b8a3d656f36ea17bba3df7f0cb684") (:url . "https://github.com/pinard/org-grep"))]) (org-gnome . [(20150614 757) ((alert (1 2)) (telepathy (0 1)) (gnome-calendar (0 1))) "Orgmode integration with the GNOME desktop" single ((:commit . "122e14cf6f8104150a65246a9a7c10e1d7939862") (:keywords "org" "gnome"))]) (org-gcal . [(20170420 1401) ((request-deferred (0 2 0)) (alert (1 1)) (emacs (24)) (cl-lib (0 5)) (org (8 2 4))) "Org sync with Google Calendar" single ((:commit . "bdc704842da000a1cffb8f155ef3887c5e1d0446") (:url . "https://github.com/myuhe/org-gcal.el") (:keywords "convenience"))]) (org-fstree . [(20090723 819) nil "include a filesystem subtree into an org file" single ((:commit . "24e305c6443be9f45198185772eecfddc390a9ce") (:url . "http://www.burtzlaff.de/org-fstree/org-fstree.el") (:keywords "org-mode" "filesystem" "tree"))]) (org-evil . [(20171102 556) ((dash (2 13 0)) (evil (0)) (monitor (0)) (org (0))) "Evil extensions for Org." tar ((:commit . "90a82ec72fb688ef98d1343c02dc3c6da9e4bbee") (:url . "https://github.com/guiltydolphin/org-evil") (:keywords "convenience" "evil" "org"))]) (org-elisp-help . [(20161121 1655) ((cl-lib (0 5)) (org (9 0))) "org links to emacs-lisp documentation" single ((:commit . "3e33ab1a2933dd7f2782ef91d667a37f12d633ab") (:url . "https://github.com/tarsius/org-elisp-help") (:keywords "org" "remember" "lisp"))]) (org-ehtml . [(20150506 1658) ((web-server (20140109 2200)) (emacs (24 3))) "Export Org-mode files as editable web pages" tar ((:commit . "9df85de1a0fe1e7b2d6c000777c1a0c0217f92d0"))]) (org-edit-latex . [(20170908 822) ((emacs (24 4)) (auctex (11 90))) "Edit embedded LaTeX in a dedicated buffer" single ((:commit . "1f228310ef2f3f2959a527f6d99e42ce977384c8") (:url . "https://github.com/et2010/org-edit-latex") (:keywords "org" "latex"))]) (org-easy-img-insert . [(20160915 1308) ((emacs (24 4))) "An easier way to add images from the web in org mode" single ((:commit . "9f8aaa7f68ff1f0d8d7b1e9b618abb15002f971e") (:url . "https://github.com/tashrifsanil/org-easy-img-insert") (:keywords "convenience" "hypermedia" "files"))]) (org-dropbox . [(20150113 2109) ((dash (2 2)) (names (20150000)) (emacs (24))) "move Dropbox notes from phone into org-mode datetree" single ((:commit . "75dab6d6f0438a7a8a18ccf3a5d55f50bf531f6e") (:url . "https://github.com/heikkil/org-dropbox") (:keywords "dropbox" "android" "notes" "org-mode"))]) (org-drill-table . [(20170408 1205) ((s (1 7 0)) (dash (2 2 0)) (cl-lib (0 3)) (org-plus-contrib (8 2)) (emacs (24 1))) "Generate drill cards from org tables" single ((:commit . "5662511e98697e086149a223a64f9f01fabf7330"))]) (org-dp . [(20160326 603) ((cl-lib (0 5))) "Declarative Local Programming with Org Elements" tar ((:commit . "d9a18e8fb04c94d5d35236b37ee7db0afcb7d580") (:url . "https://github.com/tj64/org-dp"))]) (org-download . [(20171116 1045) ((async (1 2))) "Image drag-and-drop for Emacs org-mode" single ((:commit . "d0e6793497d57a90543d711310ad26fae7c9bcba") (:url . "https://github.com/abo-abo/org-download") (:keywords "images" "screenshots" "download"))]) (org-dotemacs . [(20151119 1022) ((org (7 9 3)) (cl-lib (1 0))) "Store your emacs config as an org file, and choose which bits to load." single ((:commit . "99a066508fedf8c80a3bfef08e015e612499d417") (:url . "https://github.com/vapniks/org-dotemacs") (:keywords "local"))]) (org-doing . [(20161017 920) nil "Keep track of what you're doing" tar ((:commit . "07ddbfc238cba31e4990c9b52e9a2757b39111da") (:url . "https://github.com/omouse/org-doing") (:keywords "tools" "org"))]) (org-dashboard . [(20171223 1124) ((cl-lib (0 5))) "Visually summarize progress in org files" single ((:commit . "02c0699771d199075a286e4502340ca6e7c9e831") (:url . "http://github.com/bard/org-dashboard") (:keywords "outlines" "calendar"))]) (org-cua-dwim . [(20120202 2134) nil "Org-mode and Cua mode compatibility layer" single ((:commit . "a55d6c7009fc0b22f1110c07de629acc955c85e4") (:keywords "org-mode" "cua-mode"))]) (org-context . [(20170107 537) nil "Contextual capture and agenda commands for Org-mode" single ((:commit . "a3b4a4ce6d15e3c2d45eb5dcb78bea81913f3e21") (:url . "https://github.com/thisirs/org-context") (:keywords "org" "capture" "agenda" "convenience"))]) (org-commentary . [(20160801 2337) ((dash (2 0)) (emacs (24 4)) (org (8 0))) "generate or update conventional library headers using Org mode files" tar ((:commit . "821ccb994811359c42f4e3d459e0e88849d42b75") (:url . "https://github.com/smaximov/org-commentary") (:keywords "convenience" "docs" "tools"))]) (org-clock-today . [(20161014 220) ((emacs (25))) "Show the total clocked time of the current day in the mode line" single ((:commit . "02b8fd541a01040405a9a1400c46dcb68b7c2a3a"))]) (org-clock-csv . [(20170904 1745) ((org (8 3)) (s (1 0))) "Export `org-mode' clock entries to CSV format." single ((:commit . "20ab6ee4395bedc0a7b8dfaf7b51f2c63dc8d2c6") (:url . "https://github.com/atheriel/org-clock-csv") (:keywords "calendar" "data" "org"))]) (org-clock-convenience . [(20160830 1156) ((cl-lib (0 5)) (org (8)) (emacs (24 3))) "convenience functions for org time tracking" single ((:commit . "2d3fab0991ef7fa8d94c46a63a66abd289c79d9e") (:url . "https://github.com/dfeich/org-clock-convenience") (:keywords "org"))]) (org-cliplink . [(20170724 413) ((emacs (24 4))) "insert org-mode links from the clipboard" tar ((:commit . "16c2cad9c3bafb71fea70f70c1e584307a6dee01") (:url . "http://github.com/rexim/org-cliplink"))]) (org-category-capture . [(20170819 1047) ((org (9 0 0)) (emacs (24))) "Contextualy capture of org-mode TODOs." single ((:commit . "8cec702f602b18da90b3d6207888a887b8e07750") (:url . "https://github.com/IvanMalison/org-projectile") (:keywords "org-mode" "todo" "tools" "outlines"))]) (org-capture-pop-frame . [(20160518 308) ((emacs (24 4))) "Run org-capture in a new pop frame" single ((:commit . "b16fd712de62cf0d1f9befd03be6ab5983cb3301") (:url . "https://github.com/tumashu/org-capture-pop-frame.git"))]) (org-caldav . [(20170615 724) ((org (7))) "Sync org files with external calendar through CalDAV" single ((:commit . "07e6ccda6756754a115d567f2ad3a760514b731d") (:keywords "calendar" "caldav"))]) (org-bullets . [(20171127 526) nil "Show bullets in org-mode as UTF-8 characters" single ((:commit . "5b096148bc37306f73b27da838dca751d5b1936f") (:url . "https://github.com/emacsorphanage/org-bullets"))]) (org-brain . [(20180107 1655) ((emacs (25)) (org (9))) "Org-mode concept mapping" single ((:commit . "42596a3c29e9b6b64c05b04db04d23ea282560e4") (:url . "http://github.com/Kungsgeten/org-brain") (:keywords "outlines" "hypermedia"))]) (org-bookmark-heading . [(20170510 1008) ((emacs (24 4))) "Emacs bookmark support for org-mode" single ((:commit . "c535fd9b430d2cc50b54a1ab550d64e20ebd5bd6") (:url . "http://github.com/alphapapa/org-bookmark-heading") (:keywords "hypermedia" "outlines"))]) (org-board . [(20170507 858) nil "bookmarking and web archival system for Org mode." single ((:commit . "2978aee8981a2ff5c09104b2d8b055957b277078") (:url . "https://github.com/scallywag/org-board") (:keywords "org" "bookmarks" "archives"))]) (org-beautify-theme . [(20170908 1518) nil "A sub-theme to make org-mode more beautiful." single ((:commit . "df6a1114fda313e1689363e196c8284fbe2a2738") (:keywords "org" "theme"))]) (org-babel-eval-in-repl . [(20170511 514) ((eval-in-repl (0 9 2)) (matlab-mode (3 3 6)) (ess (16 10)) (emacs (24))) "Eval org-mode babel code blocks in various REPLs." tar ((:commit . "bfa72c582ac1531ad42aba23e2b1267ab68e31f6") (:url . "https://github.com/diadochos/org-babel-eval-in-repl") (:keywords "literate programming" "reproducible research" "async execution"))]) (org-autolist . [(20170924 1201) nil "Improved list management in org-mode" single ((:commit . "c82d1e83e982b5f0c106b8800e5b0cfd5f73fdc1") (:url . "https://github.com/calvinwyoung/org-autolist") (:keywords "lists" "checklists" "org-mode"))]) (org-attach-screenshot . [(20160928 258) nil "screenshots integrated with org attachment dirs" single ((:commit . "1aabac1a2885d31a3d862cbeb31a635c3d68b9ab") (:url . "https://github.com/dfeich/org-screenshot") (:keywords "org"))]) (org-alert . [(20170724 2116) ((s (1 10 0)) (dash (2 12 0)) (alert (1 2))) "Notify org deadlines via notify-send" single ((:commit . "3b7417ac12f2710e88f8dff538670621064ef8bc") (:url . "https://github.com/groksteve/org-alert") (:keywords "org" "org-mode" "notify" "notifications"))]) (org-agenda-property . [(20140626 1416) ((emacs (24 2))) "Display org properties in the agenda buffer." single ((:commit . "3b469f3e93de0036547f3631cd0366d53f7584c8") (:url . "http://github.com/Bruce-Connor/org-agenda-property") (:keywords "calendar"))]) (org-ac . [(20170401 607) ((auto-complete-pcmp (0 0 1)) (log4e (0 2 0)) (yaxception (0 1))) "Some auto-complete sources for org-mode" single ((:commit . "41e3ef8e4039619d0370c23c66730b3b2e9e32ed") (:url . "https://github.com/aki2o/org-ac") (:keywords "org" "completion"))]) (orca . [(20171030 1216) ((emacs (24 3))) "Org Capture" single ((:commit . "5e1744afb793dda744ddc6fe342144b5e90bea08") (:url . "https://github.com/abo-abo/orca") (:keywords "org" "convenience"))]) (operate-on-number . [(20150706 2323) nil "Operate on number at point with arithmetic functions" single ((:commit . "ceb3be565a29326c1098244fac0c50606723a56e") (:url . "https://github.com/knu/operate-on-number.el") (:keywords "editing"))]) (openwith . [(20120531 1436) nil "Open files with external programs" single ((:url . "https://bitbucket.org/jpkotta/openwith") (:keywords "files" "processes"))]) (openstack-cgit-browse-file . [(20130819 227) nil "Browse the current file in OpenStack cgit" single ((:commit . "244219288b9aef41155044697bb114b7af83ab8f") (:url . "https://github.com/chmouel/openstack-cgit-browse-file") (:keywords "convenience" "vc" "git" "cgit" "gerrit" "openstack"))]) (opensource . [(20160926 916) ((s (1 11 0)) (dash (2 12 1)) (pkg-info (0 6 0)) (request (0 2 0))) "Client for Opensource API" tar ((:commit . "13499b7ae602c735e40c1c494bda6252a2f1c98f") (:url . "https://github.com/OpenSourceOrg/el-opensourceorg") (:keywords "opensource"))]) (opener . [(20161207 1010) ((request (0 2 0)) (emacs (24)) (cl-lib (0 5))) "opening urls as buffers" tar ((:commit . "c384f67278046fdcd220275fdd212ab85672cbeb") (:url . "https://github.com/0robustus1/opener.el") (:keywords "url" "http" "files"))]) (opencl-mode . [(20170816 549) nil "Syntax coloring for opencl kernels" single ((:commit . "6e69434d0fa6e11a542acad370611bba18d3bc5c") (:url . "https://github.com/salmanebah/opencl-mode") (:keywords "c" "opencl"))]) (opencc . [(20170722 116) ((emacs (24 4))) "中文简ç¹è½¬æ¢ <-> 中文簡ç¹è½‰æ› (Convert Chinese with OpenCC)" single ((:commit . "8c539f72669ba9a99d8b5198db5ea930897ad1b9") (:url . "https://github.com/xuchunyang/emacs-opencc") (:keywords "chinese"))]) (open-junk-file . [(20161210 314) nil "Open a junk (memo) file to try-and-error" single ((:commit . "558bec7372b0fed4c4cb6074ab906535fae615bd") (:url . "http://www.emacswiki.org/cgi-bin/wiki/download/open-junk-file.el") (:keywords "convenience" "tools"))]) (open-in-msvs . [(20170123 1428) nil "Open current file:line:column in Microsoft Visual Studio" tar ((:commit . "e0d071c83188ad5db8f3297d6ce784b4ed554a04") (:url . "https://github.com/evgeny-panasyuk/open-in-msvs") (:keywords "convenience" "usability" "integration" "visual studio" "msvs" "ide"))]) (opam . [(20150719 520) ((emacs (24 1))) "OPAM tools" single ((:commit . "4d589de5765728f56af7078fae328b6792de8600") (:url . "https://github.com/lunaryorn/opam.el") (:keywords "convenience"))]) (oneonone . [(20170416 858) ((hexrgb (0))) "Frame configuration that uses one frame per window." single ((:url . "https://www.emacswiki.org/emacs/download/oneonone.el") (:keywords "local" "frames"))]) (one-time-pad-encrypt . [(20160329 813) nil "One time pad encryption within file" single ((:commit . "87cc1f124024ce3d277299ca0ac703f182937d9f") (:url . "https://github.com/garvinguan/emacs-one-time-pad/") (:keywords "convenience"))]) (on-screen . [(20160302 150) ((cl-lib (0))) "guide your eyes while scrolling" single ((:commit . "206468aa4de299ad26c2db12b757f5ad7290912f") (:url . "https://github.com/michael-heerdegen/on-screen.el") (:keywords "convenience"))]) (on-parens . [(20150702 1506) ((dash (2 10 0)) (emacs (24)) (evil (1 1 6)) (smartparens (1 6 3))) "smartparens wrapper to fit with evil-mode/vim normal-state" single ((:commit . "16a145bf73550d5000ffbc2725c541a8458d0d3c") (:keywords "evil" "smartparens"))]) (omtose-phellack-theme . [(20161111 1320) nil "A dark theme, with cold bluish touch." tar ((:commit . "66f99633e199e65bd28641626435e8e59246529a"))]) (omnisharp . [(20171226 1147) ((emacs (24 4)) (flycheck (30)) (dash (2 12 0)) (auto-complete (1 4)) (popup (0 5 1)) (csharp-mode (0 8 7)) (cl-lib (0 5)) (s (1 10 0)) (shut-up (0 3 2)) (f (0 19 0))) "Omnicompletion (intellisense) and more for C#" tar ((:commit . "95f56022edf9fcaba8402db05a6927af050b12a8") (:url . "https://github.com/Omnisharp/omnisharp-emacs") (:keywords "languages" "csharp" "c#" "ide" "auto-complete" "intellisense"))]) (omni-tags . [(20170426 1409) ((pcre2el (1 7)) (cl-lib (0 5))) "Highlight and Actions for 'Tags'" tar ((:commit . "8f0f6c302fab900b7681e5c039f90850cbbabd33") (:url . "http://github.com/AdrieanKhisbe/omni-tags.el") (:keywords "convenience"))]) (omni-scratch . [(20171009 1451) nil "Easy and mode-specific draft buffers" single ((:commit . "9eee3161e5cb6df58618548a2173f4da7d194814") (:url . "https://github.com/AdrieanKhisbe/omni-scratch.el") (:keywords "convenience" "languages" "tools"))]) (omni-quotes . [(20170425 1132) ((dash (2 8)) (omni-log (0 3 3)) (f (0 19 0)) (s (1 11 0)) (ht (2 1))) "Random quotes displayer" tar ((:commit . "454116c1dd6581baaeefd6b9310b1b6b7a5c36d0") (:url . "https://github.com/AdrieanKhisbe/omni-quotes.el") (:keywords "convenience"))]) (omni-log . [(20170930 535) ((emacs (24)) (ht (2 0)) (s (1 6 1)) (dash (2 13 0))) "Logging utilities" tar ((:commit . "11e959473c1bd9415d0cda785940c36ba6ad44ab") (:url . "https://github.com/AdrieanKhisbe/omni-log.el") (:keywords "convenience" "languages" "tools"))]) (omni-kill . [(20171016 1440) nil "Kill all the things" single ((:commit . "904549c8fd6ac3cf22b5d7111ca8944e179cffea") (:keywords "convenience" "editing" "tools"))]) (om-mode . [(20140915 1410) nil "Insert Om component template with life cycle." single ((:commit . "cdc0c2912321f8438b0f3449ba8aca50ec150bba") (:keywords "clojurescript"))]) (olivetti . [(20171209 644) ((emacs (24 4))) "Minor mode for a nice writing environment" single ((:commit . "e824a21f5e284bc7e111b6f325258bba8396d9ec") (:url . "https://github.com/rnkn/olivetti") (:keywords "wp"))]) (oldlace-theme . [(20150705 600) ((emacs (24))) "Emacs 24 theme with an 'oldlace' background." single ((:commit . "5c6f437203b0783b36a7aff4a578de4a0c8c4ee6"))]) (old-norse-input . [(20170816 1142) ((emacs (24))) "An input method for Old Norse" single ((:commit . "c2e21ee72c3768e9152aff6baf12a19cde1d0c53") (:url . "https://github.com/david-christiansen/emacs-old-norse-input") (:keywords "languages"))]) (offlineimap . [(20150916 458) nil "Run OfflineIMAP from Emacs" single ((:commit . "cc3e067e6237a1eb7b21c575a41683b1febb47f1") (:url . "http://julien.danjou.info/offlineimap-el.html"))]) (octopress . [(20170813 615) nil "A lightweight wrapper for Jekyll and Octopress." tar ((:commit . "b4c25df9e3ccf49ac27c0a152daa4e27d1247d56") (:url . "https://github.com/aaronbieber/octopress.el") (:keywords "octopress" "blog"))]) (octo-mode . [(20161008 529) ((emacs (24))) "Major mode for Octo assembly language" single ((:commit . "bd4db7e5e3275b24c74e6a23c11d04f54e9feca5") (:url . "https://github.com/cryon/octo-mode") (:keywords "languages"))]) (octicons . [(20151031 2040) ((cl-lib (0 5))) "octicons utility" tar ((:commit . "a61e561966ffd8faa3b48ce5b3a4eec10c59708b") (:url . "https://github.com/syohex/emacs-octicons"))]) (ocp-indent . [(20170803 222) nil "automatic indentation with ocp-indent" single ((:commit . "20517e96299e147ef349b9e8913f036a6c35399d") (:url . "http://www.typerex.org/ocp-indent.html") (:keywords "ocaml" "languages"))]) (ocodo-svg-modelines . [(20150516 719) ((svg-mode-line-themes (0))) "A collection of beautiful SVG modelines" tar ((:commit . "c7b0789a177219f117c4de5659ecfa8622958c40"))]) (oceanic-theme . [(20161015 119) nil "Oceanic theme." single ((:commit . "a92ee9b470843c923e6cdcafdd65106ff994d04d") (:url . "https://github.com/terry3/oceanic-theme") (:keywords "oceanic" "color" "theme"))]) (occur-x . [(20130610 643) nil "Extra functionality for occur" single ((:commit . "352f5fab207d8a1d3dd048073ff127a83e97c82b") (:keywords "occur" "search" "convenience"))]) (occur-context-resize . [(20170904 1609) nil "dynamically resize context around matches in occur-mode" single ((:commit . "cdee5a631ceed9337579d4090e0acf8140747f80") (:url . "https://github.com/dgtized/occur-context-resize.el") (:keywords "matching"))]) (occidental-theme . [(20130312 1258) nil "Custom theme for faces based on Adwaita" single ((:commit . "fd2db7256d4f78c43d99c3cddb1c39106d479816") (:url . "http://github.com/olcai/occidental-theme"))]) (obsidian-theme . [(20170719 248) nil "port of the eclipse obsidian theme" single ((:commit . "f45efb2ebe9942466c1db6abbe2d0e6847b785ea") (:url . "http://github.com/mswift42/obsidian-theme"))]) (objc-font-lock . [(20141021 1122) nil "Highlight Objective-C method calls." single ((:commit . "34b457d577f97ca94b8792d025f9a909c7610612") (:url . "https://github.com/Lindydancer/objc-font-lock") (:keywords "languages" "faces"))]) (obfusurl . [(20170809 824) ((cl-lib (0 5))) "Obfuscate URLs so they aren't spoilers" single ((:commit . "7a5a41905000ce2ec1fd72509a5567e5fd9f47e5") (:url . "https://github.com/davep/obfusurl.el") (:keywords "convenience" "web" "text"))]) (oberon . [(20120715 209) nil "Major mode for editing Oberon/Oberon-2 program texts" single ((:commit . "fb57d18ce13835a8a69b6bafecdd9193ca9a59a3") (:keywords "oberon" "oberon-2" "languages" "oop"))]) (ob-uart . [(20170521 158) nil "org-babel support for UART communication" single ((:commit . "90daeac90a9e75c20cdcf71234c67b812110c50e") (:url . "https://www.0x7.ch") (:keywords "tools" "comm" "org-mode" "uart" "literate programming" "reproducible development"))]) (ob-typescript . [(20150804 530) ((emacs (24)) (org (8 0))) "org-babel functions for typescript evaluation" single ((:commit . "9dcbd226cbfb75e790dd9de91d9401dde85a889a") (:url . "https://github.com/lurdan/ob-typescript") (:keywords "literate programming" "reproducible research" "typescript"))]) (ob-translate . [(20170720 1219) ((google-translate (0 11)) (org (8))) "Translation of text blocks in org-mode." single ((:commit . "9d9054a51bafd5a29a8135964069b4fa3a80b169") (:url . "https://github.com/krisajenkins/ob-translate") (:keywords "org" "babel" "translate" "translation"))]) (ob-swift . [(20170921 625) ((org (8))) "org-babel functions for swift evaluation" single ((:commit . "ed478ddbbe41ce5373efde06b4dd0c3663c9055f") (:url . "http://github.com/zweifisch/ob-swift") (:keywords "org" "babel" "swift"))]) (ob-sql-mode . [(20170213 1056) ((emacs (24 3))) "SQL code blocks evaluated by sql-mode" single ((:commit . "778232af7c87b6a32ecb3668a9e5a2763d6a4830") (:url . "http://github.com/nikclayton/ob-sql-mode") (:keywords "languages" "org" "org-babel" "sql"))]) (ob-spice . [(20170801 2222) ((spice-mode (0 0 1)) (org (8))) "org-babel functions for spice evaluation" single ((:commit . "b296232e28f61366265084fafb2f47876d987069") (:url . "http://tiagoweber.github.io"))]) (ob-sml . [(20130829 1143) ((sml-mode (6 4))) "org-babel functions for template evaluation" single ((:commit . "958165c92b6cff6cada5c85c8ae5887806b8451b") (:url . "http://orgmode.org") (:keywords "literate programming" "reproducible research"))]) (ob-smiles . [(20160717 421) ((smiles-mode (0 0 1)) (org (8))) "Org-mode Babel support for SMILES." single ((:commit . "c23c318bf8bbe2e266967388221893fbecdd2fd5") (:keywords "org" "babel" "smiles"))]) (ob-sagemath . [(20170130 1833) ((sage-shell-mode (0 0 8)) (s (1 8 0)) (emacs (24))) "org-babel functions for SageMath evaluation" tar ((:commit . "68d3e516c712bc7aa5042f305f3eb5bbb6d656c2") (:url . "https://github.com/stakemori/ob-sagemath") (:keywords "sagemath" "org-babel"))]) (ob-rust . [(20170730 759) nil "Org-babel functions for Rust" tar ((:commit . "f23d93725c21ab95a44cb4d2c0c4ab0489bd55d9") (:url . "https://github.com/micanzhang/ob-rust") (:keywords "rust" "languages" "org" "babel"))]) (ob-restclient . [(20160323 2305) ((restclient (0))) "org-babel functions for restclient-mode" single ((:commit . "08b82b9ea668631968ae4fb531fd74494630f840") (:url . "http://orgmode.org") (:keywords "literate programming" "reproducible research"))]) (ob-redis . [(20160411 2013) ((org (8))) "Execute Redis queries within org-mode blocks." single ((:commit . "244a21569499a3d8cb39f651fbf00ce26accf983") (:url . "https://github.com/stardiviner/ob-redis") (:keywords "org" "babel" "redis"))]) (ob-prolog . [(20170126 921) nil "org-babel functions for prolog evaluation." single ((:commit . "e70a9f9b96fd0fedcc30de7768c870f4b0ee1ae9") (:url . "https://github.com/ljos/ob-prolog") (:keywords "literate programming" "reproducible research"))]) (ob-php . [(20180103 441) ((org (8))) "Execute PHP within org-mode blocks." single ((:commit . "08b41282fba31abca030a387062c3f1eb25a723f") (:url . "https://github.com/stardiviner/ob-php") (:keywords "org" "babel" "php"))]) (ob-nim . [(20170809 1130) ((cl-lib (0 5))) "Babel Functions for nim" single ((:commit . "bf1642cb93f0a898804dc13fd9408d2964403bd2") (:keywords "literate programming" "reproducible research"))]) (ob-mongo . [(20170720 1219) ((org (8))) "Execute mongodb queries within org-mode blocks." single ((:commit . "371bf19c7c10eab2f86424f8db8ab685997eb5aa") (:url . "https://github.com/krisajenkins/ob-mongo") (:keywords "org" "babel" "mongo" "mongodb"))]) (ob-ml-marklogic . [(20170622 1133) nil "org-babel functions for MarkLogic evaluation" tar ((:commit . "f678af0f440b3030e311ed6fbc444200be04da91") (:url . "http://github.com/ndw/ob-ml-marklogic") (:keywords "marklogic" "xquery" "javascript" "sparql"))]) (ob-lfe . [(20170725 720) ((org (8))) "org-babel functions for lfe evaluation" single ((:commit . "f7780f58e650b4d29dfd834c662b1d354b620a8e") (:url . "http://github.com/zweifisch/ob-lfe") (:keywords "org" "babel" "lfe" "lisp" "erlang"))]) (ob-kotlin . [(20170725 718) ((org (8))) "org-babel functions for kotlin evaluation" single ((:commit . "3b2f57e9944cfc36f2714dc550db42159904929a") (:url . "http://github.com/zweifisch/ob-kotlin") (:keywords "org" "babel" "kotlin"))]) (ob-ipython . [(20171209 634) ((s (1 9 0)) (dash (2 10 0)) (dash-functional (1 2 0)) (f (0 17 2)) (emacs (24))) "org-babel functions for IPython evaluation" tar ((:commit . "a3bf46dd6c9a76f4cd5058f3ab5426d90f0c073a") (:url . "http://www.gregsexton.org") (:keywords "literate programming" "reproducible research"))]) (ob-hy . [(20171101 344) ((emacs (24 4))) "org-babel functions for Hy-lang evaluation" tar ((:commit . "a3512f274709dc4ab6c18d7955d361f8715505f0") (:url . "https://github.com/brantou/ob-hy") (:keywords "hy" "literate programming" "reproducible research"))]) (ob-http . [(20170920 2251) ((s (1 9 0)) (cl-lib (0 5))) "http request in org-mode babel" tar ((:commit . "c4da6d47b3f96c31c00f9eaaf712b59afe00daef") (:url . "http://github.com/zweifisch/ob-http"))]) (ob-go . [(20170731 1057) nil "org-babel functions for go evaluation" tar ((:commit . "28a0250cd969974936e44dfdccb0265632d25f84") (:url . "http://orgmode.org") (:keywords "golang" "go" "literate programming" "reproducible research"))]) (ob-fsharp . [(20170618 729) ((fsharp-mode (1 9 8)) (emacs (25))) "Org-Babel F#" tar ((:commit . "65ec2b626ac55313d8a04e746940370f615fed1e"))]) (ob-elixir . [(20170725 719) ((org (8))) "org-babel functions for elixir evaluation" single ((:commit . "8990a8178b2f7bd93504a9ab136622aab6e82e32") (:url . "http://github.com/zweifisch/ob-elixir") (:keywords "org" "babel" "elixir"))]) (ob-diagrams . [(20160407 537) nil "org-babel functions for diagrams evaluation" single ((:commit . "ed6649616325ca5b2d2109f74aded8bcb8aa5186") (:url . "http://orgmode.org") (:keywords "literate programming" "reproducible research"))]) (ob-dart . [(20170106 824) nil "org-babel functions for Dart evaluation" single ((:commit . "04d63b922a5469506560ca0c00678e57131e0269") (:url . "http://github.org/mzimmerm/ob-dart") (:keywords "literate programming" "reproducible research" "emacs" "org" "babel" "dart"))]) (ob-dao . [(20170816 858) ((org (8))) "Org Babel Functions for Dao" single ((:commit . "fa92f62a63c684d689f57e790e5dd614c5bba270") (:url . "https://github.com/xuchunyang/ob-dao") (:keywords "literate programming" "reproducible research" "org" "babel" "dao"))]) (ob-cypher . [(20170725 720) ((s (1 9 0)) (cypher-mode (0 0 6)) (dash (2 10 0)) (dash-functional (1 2 0))) "query neo4j using cypher in org-mode blocks" single ((:commit . "114bdf6db20ee0ade060bb5df379ddee48ff4f26") (:url . "http://github.com/zweifisch/ob-cypher") (:keywords "org" "babel" "cypher" "neo4j"))]) (ob-crystal . [(20171101 347) ((emacs (24 3))) "org-babel functions for Crystal evaluation" tar ((:commit . "9d58b880b74e0ad83b37596bb44635e5d7ae5c3f") (:url . "https://github.com/brantou/ob-crystal") (:keywords "crystal" "literate programming" "reproducible research"))]) (ob-coffeescript . [(20170719 121) nil "org-babel functions for coffee-script evaluation, and fully implementation!" single ((:commit . "d68a8335d29c947f388b4fa556de4f3ee75a19c6") (:url . "https://github.com/brantou/ob-coffeescript") (:keywords "coffee-script" "literate programming" "reproducible research"))]) (ob-coffee . [(20170725 724) ((org (8))) "org-babel functions for coffee-script evaluation" tar ((:commit . "7f0b330273e8af7777de87a75fe52a89798e4548") (:url . "http://github.com/zweifisch/ob-coffee") (:keywords "org" "babel" "coffee-script"))]) (ob-clojure-literate . [(20180106 2121) ((emacs (24 4)) (org (9)) (cider (0 16 0)) (dash (2 12 0))) "Clojure's Org-mode Literate Programming." single ((:commit . "e2b264f0f42467436f71aac81ca848fe9ab517d5") (:url . "https://github.com/stardiviner/ob-clojure-literate") (:keywords "tools"))]) (ob-cfengine3 . [(20180102 1012) nil "Org Babel functions for CFEngine 3" single ((:commit . "63e39221322bdb72111bb42dc0853055c0c4a2bc") (:url . "https://github.com/nickanderson/ob-cfengine3") (:keywords "tools" "convenience"))]) (ob-browser . [(20170720 1218) ((org (8))) "Render HTML in org-mode blocks." tar ((:commit . "a347d9df1c87b7eb660be8723982c7ad2563631a") (:url . "https://github.com/krisajenkins/ob-browser") (:keywords "org" "babel" "browser" "phantomjs"))]) (ob-blockdiag . [(20170727 1801) nil "org-babel functions for blockdiag evaluation" single ((:commit . "634fcf64a4ae735afe7001d865b03f5d71e23046") (:url . "https://github.com/corpix/ob-blockdiag.el") (:keywords "tools" "convenience"))]) (ob-axiom . [(20171103 1548) ((emacs (24 2)) (axiom-environment (20171021))) "An org-babel backend for the axiom-environment system" single ((:commit . "b4f0fa9cd013e107d2af8e2ebedff8a7f40be7b5") (:keywords "axiom" "openaxiom" "fricas"))]) (ob-async . [(20171114 1936) ((async (1 9)) (org (9 0 1)) (emacs (24 4))) "Asynchronous org-babel src block execution" single ((:commit . "99a6f24191cacb343d6090ecc8c1c67f768b2e22") (:url . "https://github.com/astahlman/ob-async") (:keywords "tools"))]) (ob-applescript . [(20160914 1327) nil "org-babel functions for template evaluation" single ((:commit . "bc708af6cf45707d4e8d8f00ea59a7e413bfaca7") (:url . "http://github.com/stig/ob-applescript.el") (:keywords "literate programming" "reproducible research" "mac"))]) (oauth . [(20130127 1751) nil "Oauth library." tar ((:commit . "ee4744ad76a1560281b0c4944575a3bd598c6458") (:keywords "comm"))]) (o-blog . [(20151202 1539) nil "Standalone orgmode blog exporter" tar ((:commit . "e466c59478feddc8126c43c1b98550474af484c0") (:keywords "emacs"))]) (nyx-theme . [(20170910 607) ((emacs (24))) "Dark theme" single ((:commit . "afe2b8c3b5421b4c292d182dcf77079b278e93d8") (:url . "https://github.com/GuidoSchmidt/emacs-nyx-theme") (:keywords "themes" "dark-theme"))]) (nyan-mode . [(20170423 40) nil "Nyan Cat shows position in current buffer in mode-line." tar ((:commit . "3447aa114575230cb230862ac0ac9b065f789ecd") (:url . "https://github.com/TeMPOraL/nyan-mode/") (:keywords "nyan" "cat" "lulz" "scrolling" "pop tart cat" "build something amazing"))]) (nvm . [(20171217 836) ((s (1 8 0)) (dash (2 4 0)) (f (0 14 0)) (dash-functional (2 4 0))) "Manage Node versions within Emacs" single ((:commit . "bc0a33257ec16e9f575bb6914b5949199897ada9") (:url . "http://github.com/rejeep/nvm.el") (:keywords "node" "nvm"))]) (nv-delete-back . [(20170224 449) ((emacs (24))) "backward delete like modern text editors" single ((:commit . "44d506105989873dc1725e0cfc675925b35c9c98") (:keywords "lisp"))]) (nummm-mode . [(20131117 214) nil "Display the number of minor modes instead of their names" single ((:commit . "81951e12032274543c5f7a585b29bd93961e94e4") (:url . "http://github.com/agpchil/nummm-mode"))]) (numbers . [(20170802 434) ((emacs (24))) "Display information and trivia about numbers" single ((:commit . "dd02508b788a13b7d4dbcc4923fa23134b783ab3") (:url . "https://github.com/davep/numbers.el") (:keywords "games" "trivia" "maths" "numbers"))]) (number-lock . [(20160829 1900) nil "Enter symbols on your number keys without pressing shift" single ((:commit . "74417b1238953bf485961a0dd7d20f5c36ae25ea") (:url . "https://github.com/Liu233w/number-lock.el") (:keywords "convenience"))]) (number . [(20170901 612) nil "Working with numbers at point." single ((:commit . "bbc278d34dbcca83e70e3be855ec98b23debfb99"))]) (nubox . [(20170619 210) nil "Nubox color theme (dark, light and tty versions)" tar ((:commit . "1ccb8035ae42727ba6bdd5c1106fbceddeeed370") (:keywords "faces"))]) (nu-mode . [(20180104 1243) ((undo-tree (0 6 5)) (ace-window (0)) (avy (0)) (which-key (0)) (transpose-frame (0))) "Modern Emacs Prompts Based Keybinding." tar ((:commit . "d5b414eb684eddd636ef4c1806f9c19665db8468"))]) (nsis-mode . [(20150914 546) nil "NSIS-mode" tar ((:commit . "5ea767c326bbe180e42be723605c0b03b16fdb06") (:url . "http://github.com/mlf176f2/nsis-mode") (:keywords "nsis"))]) (nrepl-sync . [(20140807 854) ((cider (0 6))) "connect to nrepl port and eval .sync.clj." single ((:commit . "bab53a2361526d63a24cda176d07a1247bf5b399") (:url . "https://github.com/phillord/lein-sync"))]) (nrepl-eval-sexp-fu . [(20140311 341) ((highlight (0 0 0)) (smartparens (0 0 0)) (thingatpt (0 0 0))) "Tiny functionality enhancements for evaluating sexps." single ((:commit . "3a24b7d4bca13e87c987a4ddd212da914ff59191") (:keywords "lisp" "highlight" "convenience"))]) (npm-mode . [(20171103 1135) ((emacs (24 1))) "minor mode for working with npm projects" single ((:commit . "91b8a5ad9301a368e1ce051e625450d7fe3884a4") (:url . "https://github.com/mojochao/npm-mode") (:keywords "convenience" "project" "javascript" "node" "npm"))]) (noxml-fold . [(20170823 657) nil "Fold away XML things." single ((:commit . "46c7f6a008672213238a9f8d7a416ce80916aa62") (:url . "https://github.com/paddymcall/noxml-fold") (:keywords "xml" "folding"))]) (novice+ . [(20170307 925) nil "Extensions to `novice.el'." single ((:url . "https://www.emacswiki.org/emacs/download/novice%2b.el") (:keywords "internal" "help"))]) (nov . [(20171104 1641) ((dash (2 12 0)) (esxml (0 3 3)) (emacs (24 4))) "Featureful EPUB reader mode" single ((:commit . "7d14b6a2aa649e2213348883893a24a6a6083cb9") (:url . "https://github.com/wasamasa/nov.el") (:keywords "hypermedia" "multimedia" "epub"))]) (notmuch-labeler . [(20131230 919) ((notmuch (0))) "Improve notmuch way of displaying labels" tar ((:commit . "d65d1129555d368243df4770ecc1e7ccb88efc58") (:url . "https://github.com/DamienCassou/notmuch-labeler") (:keywords "emacs" "package" "elisp" "notmuch" "emails"))]) (notmuch . [(20180104 1635) nil "run notmuch within emacs" tar ((:commit . "54982e520c3bee74e947e311ee5b1219396fa1a8") (:url . "https://notmuchmail.org/"))]) (nose . [(20140520 948) nil "Easy Python test running in Emacs" single ((:keywords "nose" "python" "testing"))]) (nord-theme . [(20180102 1001) ((emacs (24))) "An arctic, north-bluish clean and elegant theme" single ((:commit . "b5c1dc762fe3acaa88a0ce9640085d45d0109c43") (:url . "https://github.com/arcticicestudio/nord-emacs"))]) (noflet . [(20141102 654) nil "locally override functions" single ((:commit . "7ae84dc3257637af7334101456dafe1759c6b68a") (:url . "https://github.com/nicferrier/emacs-noflet") (:keywords "lisp"))]) (nodejs-repl . [(20170722 443) nil "Run Node.js REPL" single ((:commit . "4a4104dbf2cd314e90f35d200f28bd93c34708d0"))]) (node-resolver . [(20140930 1023) ((cl-lib (0 5))) "hook to install node modules in background" single ((:commit . "ef9d0486907a746a80b02ffc6208a09c168a9f7c") (:url . "https://github.com/meandavejustice/node-resolver.el") (:keywords "convenience" "nodejs" "javascript" "npm"))]) (noctilux-theme . [(20161113 642) ((emacs (24))) "Dark theme inspired by LightTable" single ((:commit . "a3265a1be7f4d73f44acce6d968ca6f7add1f2ca") (:url . "https://github.com/sjrmanning/noctilux-theme"))]) (nocomments-mode . [(20170213 1237) nil "Minor mode that makes comments invisible." single ((:commit . "5a41a20cc44dfe4a9ea584354ed6dbc15dd92f46") (:url . "https://github.com/Lindydancer/nocomments-mode"))]) (noccur . [(20150514 1420) nil "Run multi-occur on project/dired files" single ((:commit . "6cc02ce07178a61ae38a849f80472c01969272bc") (:keywords "convenience"))]) (noaa . [(20170719 1136) ((request (0 2 0)) (cl-lib (0 5)) (emacs (24))) "Get NOAA weather data" single ((:commit . "a4ec583275450d718334238d2813579420229f65") (:url . "https://github.com/thomp/noaa"))]) (no-littering . [(20180108 305) ((cl-lib (0 5))) "help keeping ~/.emacs.d clean" single ((:commit . "e585ca177a55808a17a53e8a9020198a18175543") (:url . "https://github.com/emacscollective/no-littering"))]) (no-emoji . [(20171214 2310) ((emacs (24))) "Show :emoji-name: instead of emoji characters" single ((:commit . "329b4093bf38f3f4b0e4760c70270d3b45ee554e") (:url . "https://github.com/ecraven/no-emoji") (:keywords "extensions"))]) (nnir-est . [(20170818 746) nil "Gnus nnir interface for HyperEstraier" single ((:commit . "dc1fee4757725b8171b755313d7bafbf1364f49a") (:url . "https://github.com/kawabata/nnir-est") (:keywords "mail"))]) (nm . [(20151110 1110) ((notmuch (0 21)) (peg (0 6)) (company (0)) (emacs (24 3))) "NEVERMORE: an email interface for Notmuch" tar ((:commit . "5a3f29174b3a4b2b2e7a700a862f3b16a942687e") (:url . "https://github.com/tjim/nevermore"))]) (nlinum-relative . [(20160526 8) ((emacs (24 4)) (nlinum (1 5))) "Relative line number with nlinum" single ((:commit . "5b9950c97ba79a6f0683e38b13da23f39e01031c") (:keywords "convenience"))]) (nlinum-hl . [(20170613 1748) ((emacs (24 4)) (nlinum (1 7)) (cl-lib (0 5))) "heal nlinum's line numbers" single ((:commit . "d5ca1490e0cde0605e34a6a17de8cc236c9810da") (:url . "https://github.com/hlissner/emacs-nlinum-hl") (:keywords "nlinum" "highlight" "current" "line" "faces"))]) (nixos-options . [(20160209 1041) ((emacs (24))) "Interface for browsing and completing NixOS options." single ((:commit . "7007363e773a419203a69798fb0e0731b2eb0f73") (:url . "http://www.github.com/travisbhartwell/nix-emacs/") (:keywords "unix"))]) (nix-sandbox . [(20171004 1006) ((dash (2 12 1)) (s (1 10 0))) "Utility functions to work with nix-shell sandboxes" single ((:commit . "7007363e773a419203a69798fb0e0731b2eb0f73") (:url . "https://github.com/travisbhartwell/nix-emacs"))]) (nix-mode . [(20170831 1721) ((emacs (24 3))) "Major mode for editing .nix files" tar ((:commit . "3294f8a2f83ace2d71f16c274a262ff76be412dc") (:url . "https://github.com/matthewbauer/nix-mode") (:keywords "nix" "languages" "tools" "unix"))]) (nix-buffer . [(20170809 1128) ((f (0 17 3)) (emacs (24 4))) "Set up buffer environments with nix" single ((:commit . "b922497ea0af39fdf1a7e856d0cd2ce81d98d76f") (:url . "https://github.com/shlevy/nix-buffer/tree/master/"))]) (ninja-mode . [(20141203 2159) ((emacs (24))) "Major mode for editing .ninja files" single ((:commit . "e234a7bdb6c42f4539c0ab09b624f191287c2c10"))]) (nimbus-theme . [(20180106 437) nil "An awesome dark theme" single ((:commit . "3cb301760d3ff8bb26cad325dc29001893672a46") (:url . "https://github.com/m-cat/nimbus-theme") (:keywords "faces"))]) (nim-mode . [(20171119 1027) ((emacs (24 4)) (epc (0 1 1)) (let-alist (1 0 1)) (commenter (0 5 1)) (flycheck-nimsuggest (0 8 1))) "A major mode for the Nim programming language" tar ((:commit . "91450d3117a4dec975d913b58f1ece6808e5c2ba") (:keywords "nim" "languages"))]) (nikola . [(20170703 1321) ((async (1 5)) (emacs (24 3))) "Simple wrapper for nikola" single ((:commit . "964715ac30943c9d6976999cad208dc60d09def0") (:url . ": https://git.daemons.it/drymer/nikola.el") (:keywords ":" "nikola"))]) (niconama . [(20170910 801) ((emacs (24)) (request (20170131 1747)) (cl-lib (0 5))) "Tools for Niconico Live Broadcast" single ((:commit . "96e7553e50e6bf7b58aac50f52c9b0b8edb41c56") (:url . "https://github.com/NOBUTOKA/niconama.el") (:keywords "comm"))]) (niceify-info . [(20160416 544) nil "improve usability of Info pages" single ((:commit . "38df5062bc3b99d1074cab3e788b5ed66732111c"))]) (nginx-mode . [(20170611 2137) nil "major mode for editing nginx config files" single ((:commit . "a2bab83c2eb233d57d76b236e7c141c2ccc97005") (:keywords "languages" "nginx"))]) (ng2-mode . [(20170504 2007) ((typescript-mode (0 1))) "Major modes for editing Angular 2" tar ((:commit . "adbfe16a47cf26edeb1b508cbedae5307b4efbf6") (:url . "http://github.com/AdamNiederer/ng2-mode") (:keywords "typescript" "angular" "angular2" "template"))]) (nexus . [(20140114 505) nil "REST Client for Nexus Maven Repository servers" tar ((:commit . "c46f499951b90839aa8683779fe43d8f01672a60") (:keywords "comm"))]) (newlisp-mode . [(20160226 745) nil "newLISP editing mode for Emacs" single ((:commit . "ac23be40c81a360988ab803d365f1510733f6db4") (:url . "https://github.com/kosh04/newlisp-mode") (:keywords "language" "lisp" "newlisp"))]) (never-comment . [(20140104 1407) nil "Never blocks are comment" single ((:commit . "74ded8f1e7f23240f5f6032d0451fb0a51733bc4") (:url . "http://stackoverflow.com/a/4554658/89376"))]) (network-watch . [(20171123 346) ((emacs (24 3))) "Support for intermittent network connectivity" single ((:commit . "958dd0d419e4f9402648a86b754091ba346e01b8") (:url . "https://github.com/jamiguet/network-watch") (:keywords "unix" "tools" "hardware" "lisp"))]) (netrunner . [(20160910 1632) ((popup (0 5 3)) (company (0 9 0)) (helm (1 9 5))) "Create Android: Netrunner decklists using Company, Helm and org-mode" single ((:commit . "c64672992175c8c1073c0f56c2e471839db71a0f") (:url . "http://github.com/Kungsgeten/netrunner") (:keywords "games"))]) (netherlands-holidays . [(20150202 817) nil "Netherlands holidays for Emacs calendar." single ((:commit . "26236178cdd650df9958bf5a086e184096559f00") (:url . "https://github.com/abo-abo/netherlands-holidays") (:keywords "calendar"))]) (neotree . [(20170522 758) ((cl-lib (0 5))) "A tree plugin like NerdTree for Vim" tar ((:commit . "bc98dfb44c106375efa4f26848f3790ee264da97") (:url . "https://github.com/jaypei/emacs-neotree"))]) (neon-mode . [(20170711 501) nil "Simple major mode for editing neon files" single ((:commit . "9c23289c0c8ed17d1596cfb95a5ade57df7db5f7") (:keywords "conf"))]) (nemerle . [(20161029 1323) nil "major mode for editing nemerle programs" single ((:commit . "59b28607968a9bee060b42eac55c69c37d1c0e69") (:keywords "nemerle" "mode" "languages"))]) (neato-graph-bar . [(20171230 1753) ((emacs (24 3))) "Neat-o graph bars CPU/memory etc." single ((:commit . "c59f15ed9a40aecc174aa22c4bbfa7978e182705") (:url . "https://gitlab.com/RobertCochran/neato-graph-bar"))]) (nclip . [(20130617 1315) nil "Network (HTTP) Clipboard" tar ((:commit . "af88e38b1f04be02bf2e57affc662dbd0f828e67") (:url . "http://www.github.com/maio/nclip.el") (:keywords "nclip" "clipboard" "network"))]) (ncl-mode . [(20170903 2355) ((emacs (24))) "Major Mode for editing NCL scripts and other goodies" tar ((:commit . "84599a730169b9b19f9dcc532e20dcdc9648bbaa"))]) (navorski . [(20141203 1024) ((s (1 9 0)) (dash (1 5 0)) (multi-term (0 8 14))) "Helping you live in the terminal, like Viktor did." single ((:commit . "698c1c62da70164aebe9a7a5d034778fbc30ea5b") (:keywords "terminal"))]) (navi2ch . [(20150329 1916) nil "Navigator for 2ch for Emacsen" tar ((:commit . "f39d93c32acd5b9c3a7fb1a9fe14c5e1c4b5288e") (:keywords "network" "2ch"))]) (navi-mode . [(20170414 1228) ((outshine (2 0)) (outorg (2 0))) "major-mode for easy buffer-navigation" single ((:commit . "c1d38e8237f4e14af020a0b7d4f118ea198ab674") (:url . "https://github.com/alphapapa/navi"))]) (nav-flash . [(20140508 1341) nil "Briefly highlight the current line" single ((:commit . "53f5bc59e3f32c1192d15637d3979732dacb2c35") (:url . "http://github.com/rolandwalker/nav-flash") (:keywords "extensions" "navigation" "interface"))]) (nav . [(20120507 7) nil "Emacs mode for filesystem navigation" tar ((:commit . "c5eb234c063f435dbdcd1f8bdc46cfc68c973ebe"))]) (nasm-mode . [(20161216 736) ((emacs (24 3))) "NASM x86 assembly major mode" single ((:commit . "d990ed94d902b74a5c834fb567e03307607cee45") (:url . "https://github.com/skeeto/nasm-mode"))]) (nash-mode . [(20160830 512) nil "Nash major mode" single ((:commit . "2cd96535eb7d669a94306183e95ee37333872c1a") (:url . "https://github.com/tiago4orion/nash-mode.el") (:keywords "nash" "languages"))]) (narrowed-page-navigation . [(20150108 2119) ((emacs (24)) (cl-lib (0 5))) "A minor mode for showing one page at a time" single ((:commit . "b215adbac4873f56fbab65772062f0f5be8058a1") (:keywords "outlines"))]) (narrow-reindent . [(20150722 1206) ((emacs (24 4))) "Defines a minor mode to left-align narrowed regions." single ((:commit . "87466aac4dbeb79597124dd077bf5c704872fd3d") (:url . "https://github.com/emallson/narrow-reindent.el"))]) (narrow-indirect . [(20170820 1748) nil "Narrow using an indirect buffer that is a clone" single ((:url . "https://www.emacswiki.org/emacs/download/narrow-indirect.el") (:keywords "narrow" "indirect" "buffer" "clone" "view" "multiple-modes"))]) (naquadah-theme . [(20160819 121) nil "A theme based on Tango color set" single ((:commit . "37e822ccea0ff4a6eb79ea6615a1fd6dc6c72d51"))]) (nanowrimo . [(20151104 1828) nil "Track progress for nanowrimo" single ((:url . "https://bitbucket.org/gvol/nanowrimo-mode"))]) (nand2tetris-assembler . [(20171201 1013) ((nand2tetris (1 1 0))) "Assembler For the Nand2tetris Course" single ((:commit . "33acee34d24b1c6a87db833b7d23449cf858f64f") (:url . "http://www.github.com/CestDiego/nand2tetris-assembler.el/") (:keywords "nand2tetris-assembler" "hdl"))]) (nand2tetris . [(20171201 1013) ((emacs (24))) "Major mode for HDL files in the nand2tetris course" tar ((:commit . "33acee34d24b1c6a87db833b7d23449cf858f64f") (:url . "http://www.github.com/CestDiego/nand2tetris.el/") (:keywords "nand2tetris" "hdl"))]) (namespaces . [(20130326 1550) nil "An implementation of namespaces for Elisp, with an emphasis on immutabilty." single ((:commit . "3d02525d9b9a5ae6e7be3adefd880121436e6270") (:url . "https://github.com/chrisbarrett/elisp-namespaces"))]) (names . [(20171012 1214) ((emacs (24 1)) (cl-lib (0 5))) "Namespaces for emacs-lisp. Avoid name clobbering without hiding symbols." tar ((:commit . "1d45ec50568eb2f5b55973f7ed0b48c68f9f13aa") (:url . "https://github.com/Malabarba/names") (:keywords "extensions" "lisp"))]) (nameless . [(20161012 1214) ((emacs (24 4))) "Hide package namespace in your emacs-lisp code" single ((:commit . "108f16e743aecd35401c0e914c896572cf1d5082") (:url . "https://github.com/Malabarba/nameless") (:keywords "convenience" "lisp"))]) (nameframe-projectile . [(20160927 2103) ((nameframe (0 4 1 -2)) (projectile (0 13 0))) "Nameframe integration with Projectile" single ((:commit . "aafb8c5c5fbe0510e2f5d5b6b6b5dd0b73abe5d8") (:url . "https://github.com/john2x/nameframe"))]) (nameframe-perspective . [(20170405 1819) ((nameframe (0 4 1 -2)) (perspective (1 12))) "Nameframe integration with perspective.el" single ((:commit . "aafb8c5c5fbe0510e2f5d5b6b6b5dd0b73abe5d8") (:url . "https://github.com/john2x/nameframe"))]) (nameframe . [(20171106 1656) nil "Manage frames by name." single ((:commit . "aafb8c5c5fbe0510e2f5d5b6b6b5dd0b73abe5d8") (:url . "https://github.com/john2x/nameframe"))]) (name-this-color . [(20151014 1330) ((emacs (24)) (cl-lib (0 5)) (dash (2 11 0))) "Match RGB codes to names easily and precisely" single ((:commit . "e37cd1291d5d68d4c8d6386eab9cb9d94fd3bcfa") (:url . "https://github.com/knl/name-this-color.el") (:keywords "lisp" "color" "hex" "rgb" "shade" "name"))]) (naked . [(20170418 1822) nil "Provide for naked key descriptions: no angle brackets." single ((:url . "https://www.emacswiki.org/emacs/download/naked.el") (:keywords "lisp" "key" "print" "format" "help"))]) (n4js . [(20150713 1931) ((emacs (24)) (cypher-mode (0))) "Neo4j Shell" single ((:commit . "3991ed8975151d5e8d568e952362df810f7ffab7") (:url . "https://github.com/tmtxt/n4js.el") (:keywords "neo4j" "shell" "comint"))]) (myterminal-controls . [(20170425 1936) ((emacs (24)) (cl-lib (0 5))) "Quick toggle controls at a key-stroke" single ((:commit . "3edcef051f882342ca769b84527bf92dfb755e14") (:url . "http://ismail.teamfluxion.com") (:keywords "convenience" "shortcuts"))]) (mysql2sqlite . [(20170725 1516) nil "Convert mysql databases into sqlite databases." single ((:commit . "8e6e74451c942e2e92f90dc13222b95a7dbb285e"))]) (mysql-to-org . [(20170205 1306) ((emacs (24 3)) (s (1 11 0))) "Minor mode to output the results of mysql queries to org tables" single ((:commit . "d87e9b6117fc0db4b156e8a12550cf9ee4bd692a"))]) (mynt-mode . [(20150512 1349) ((virtualenvwrapper (20131514))) "Minor mode to work with the mynt static site generator" single ((:commit . "23d4489167bfa899634548cb41ed32fdeb3600c9") (:url . "https://github.com/crshd/mynt-mode") (:keywords "convenience"))]) (mykie . [(20150808 1505) ((emacs (24 3)) (cl-lib (0 5))) "Command multiplexer: Register multiple functions to a keybind" tar ((:commit . "7676f0e883af1d1054e404e97691f3c13aba196f") (:url . "https://github.com/yuutayamada/mykie-el") (:keywords "emacs" "configuration" "keybind"))]) (myanmar-input-methods . [(20160106 737) nil "Emacs Input Method for Myanmar" single ((:commit . "9d4e0d6358c61bde7a2274e430ef71683faea32e") (:url . "http://github.com/yelinkyaw/emacs-myanmar-input-methods") (:keywords "myanmar" "unicode" "keyboard"))]) (mwim . [(20161004 647) nil "Switch between the beginning/end of line or code" single ((:commit . "e53da113b88a7e0693fd8f91862ce5948ad80a5b") (:url . "https://github.com/alezost/mwim.el") (:keywords "convenience"))]) (mwe-log-commands . [(20100703 541) nil "log keyboard commands to buffer" single ((:commit . "8253f2a311f35b03f72a035744f0cbdd776ea17e") (:keywords "help"))]) (mvn . [(20160211 743) nil "helpers for compiling with maven" single ((:commit . "8a65b4eb88c9801aa3bff1921b600c72dfb8791a") (:url . "https://github.com/apgwoz/mvn-el") (:keywords "compilation" "maven" "java"))]) (muttrc-mode . [(20090804 1552) nil "Major mode to edit muttrc under Emacs" single nil]) (mutant . [(20160124 553) ((emacs (24 4)) (dash (2 1 0))) "An interface for the Mutant testing tool" single ((:commit . "de9cdefe48c880128a8f62c6699d7416e9c8ced1") (:url . "http://github.com/p-lambert/mutant.el") (:keywords "mutant" "testing"))]) (mustard-theme . [(20170808 619) ((emacs (24 0))) "an Emacs 24 theme based on Mustard (tmTheme)" single ((:commit . "3b15d992c79590d7ea2503004e2a863b57e274b5") (:url . "https://github.com/emacsfodder/tmtheme-to-deftheme"))]) (mustang-theme . [(20170719 246) nil "port of vim's mustang theme" single ((:commit . "dda6d04803f1c9b196b620ef564e7768fee15de2") (:url . "http://github.com/mswift42/mustang-theme"))]) (mustache-mode . [(20141024 732) nil "A major mode for editing Mustache files." single ((:commit . "bf9897eb287ca47ced65d7d4e07ea61ea0aec39f"))]) (mustache . [(20170923 533) ((ht (0 9)) (s (1 3 0)) (dash (1 2 0))) "a mustache templating library in emacs lisp" tar ((:commit . "5e39654b933a18131146a0f3b3e3dc55c5058124"))]) (multitran . [(20161122 1323) ((emacs (24)) (cl-lib (0 5))) "Interface to multitran" single ((:commit . "c0ce2e1b3706263946f9240a47c3f65ed4fc0afa") (:keywords "dictionary" "hypermedia"))]) (multiple-cursors . [(20170908 1452) ((cl-lib (0 5))) "Multiple cursors for Emacs." tar ((:commit . "10752700084595bb24712c27ba70a2326302e45b"))]) (multifiles . [(20130615 1433) nil "View and edit parts of multiple files in one buffer" single ((:commit . "dddfe64b8e1c1cd1f9ccc1f03405477fc0d53897") (:keywords "multiple" "files"))]) (multicolumn . [(20150202 1451) nil "Creating and managing multiple side-by-side windows." single ((:commit . "c7a3afecd470859b2e60aa7c554d6e4d436df7fa") (:url . "https://github.com/Lindydancer/multicolumn"))]) (multi-web-mode . [(20130823 2054) nil "multiple major mode support for web editing" tar ((:commit . "ad1c8d1c870334052d244c7ae3636cb7b9357b7c") (:url . "https://github.com/fgallina/multi-web-mode") (:keywords "convenience" "languages" "wp"))]) (multi-term . [(20160619 233) nil "Managing multiple terminal buffers in Emacs." single ((:commit . "f954e4e18b0a035151d34852387e724d87a3316f") (:url . "http://www.emacswiki.org/emacs/download/multi-term.el") (:keywords "term" "terminal" "multiple buffer"))]) (multi-project . [(20171217 1211) ((emacs (25))) "Find files, compile, search, and switch between" single ((:url . "https://bitbucket.org/ellisvelo/multi-project/overview") (:keywords "convenience" "project" "management"))]) (multi-line . [(20170821 1926) ((emacs (24 3)) (s (1 9 0)) (cl-lib (0 5)) (dash (2 12 0)) (shut-up (0 3 2))) "multi-line statements" tar ((:commit . "d3ce76b6aec62f96ef2c0409d8262fd39e67dccc") (:url . "https://github.com/IvanMalison/multi-line") (:keywords "multi" "line" "length" "whitespace" "programming" "tools" "convenience" "files"))]) (multi-eshell . [(20120608 1135) nil "Create and manage multiple shells within Emacs" single ((:url . "http://cims.nyu.edu/~stucchio"))]) (multi-compile . [(20160306 1423) ((emacs (24)) (dash (2 12 1))) "Multi target interface to compile." single ((:commit . "bd0331854774e7a269ce8a7dd49580cd397c0ec2") (:url . "https://github.com/ReanGD/emacs-multi-compile") (:keywords "tools" "compile" "build"))]) (multi . [(20131013 844) ((emacs (24))) "Clojure-style multi-methods for emacs lisp" single ((:commit . "0987ab71692717ed457cb3984de184db9185806d") (:url . "http://github.com/kurisuwhyte/emacs-multi") (:keywords "multimethod" "generic" "predicate" "dispatch"))]) (mu4e-query-fragments . [(20170923 622) ((emacs (24 4))) "mu4e query fragments extension" single ((:commit . "34ddad4e6785f575333efcc66153d892daa1c884") (:url . "https://github.com/wavexx/mu4e-query-fragments.el") (:keywords "mu4e" "mail" "convenience"))]) (mu4e-maildirs-extension . [(20171119 1125) ((dash (0 0 0))) "Show mu4e maildirs summary in mu4e-main-view" single ((:commit . "c3ebeedd5c12e190949aed53c3040d51d21de58f") (:url . "http://github.com/agpchil/mu4e-maildirs-extension"))]) (mu4e-jump-to-list . [(20171104 1248) ((emacs (24 4)) (cl-lib (0 5))) "mu4e jump-to-list extension" single ((:commit . "2aa995ddedc7634292b459a3ea2718eea39695cf") (:url . "https://github.com/wavexx/mu4e-jump-to-list.el") (:keywords "mu4e" "mail" "convenience"))]) (mu4e-alert . [(20171222 2315) ((alert (1 2)) (s (1 10 0)) (ht (2 0)) (emacs (24 1))) "Desktop notification for mu4e" single ((:commit . "3095de457ec88e752f83ce086eff4aeb22399980") (:url . "https://github.com/iqbalansari/mu4e-alert") (:keywords "mail" "convenience"))]) (mu-cite . [(20160130 300) ((flim (1 14 9))) "A library to provide MIME features." tar ((:commit . "aea3c2d01eb3284d5e0124059d368e8c6b6ffddc"))]) (mtg-deck-mode . [(20170925 1338) ((emacs (25 1))) "Major mode to edit MTG decks" tar ((:commit . "546a62ada70aa89d325cc3941c8c9379a4c21553") (:url . "https://github.com/mattiasb/mtg-deck-mode") (:keywords "data" "mtg" "magic"))]) (msvc . [(20171225 738) ((emacs (24)) (cl-lib (0 5)) (cedet (1 0)) (ac-clang (2 0 0))) "Microsoft Visual C/C++ mode" tar ((:commit . "dfc529aa6da8b46b0a0c7db9a0e5e9bc33ab1fb3") (:url . "https://github.com/yaruopooner/msvc") (:keywords "languages" "completion" "syntax check" "mode" "intellisense"))]) (mpv . [(20150218 118) ((cl-lib (0 5)) (emacs (24)) (json (1 3)) (names (0 5 4)) (org (8 0))) "control mpv for easy note-taking" single ((:commit . "3021c55fa5723a806dde5fb2a630b115e2c53d06") (:url . "https://github.com/kljohann/mpv.el") (:keywords "tools" "multimedia"))]) (mpages . [(20150710 704) nil "An Emacs buffer for quickly writing your Morning Pages" single ((:commit . "39a72a0931ab1cdbfdf0ab9f412dc12d43a3829f") (:url . "https://github.com/slevin/mpages"))]) (mozc-temp . [(20160228 40) ((emacs (24)) (dash (2 10 0)) (mozc (0))) "Use mozc temporarily" single ((:commit . "9d6b645eff901ea79dbc43a55d5a97ead3f4bad7") (:url . "https://github.com/HKey/mozc-temp"))]) (mozc-popup . [(20150223 1634) ((popup (0 5 2)) (mozc (0))) "Mozc with popup" single ((:commit . "f0684b875a7427ec08f8df13939a486e5d5cf420") (:keywords "i18n" "extentions"))]) (mozc-im . [(20160411 1722) ((mozc (0))) "Mozc with input-method-function interface." single ((:commit . "df614a1076c28a11551fb3e822868bae47e855a5") (:keywords "i18n" "extentions"))]) (mozc . [(20180101 0) nil "minor mode to input Japanese with Mozc" single ((:commit . "f5ddd0e06f5d94ecc626b38797c982e8598d18e0") (:keywords "mule" "multilingual" "input method"))]) (moz-controller . [(20151208 1806) ((moz (0))) "Control Firefox from Emacs" single ((:commit . "46f665c03574fa922de767fc29795e0db4a7c5c6") (:url . "https://github.com/RenWenshan/emacs-moz-controller"))]) (moz . [(20150805 1006) nil "Lets current buffer interact with inferior mozilla." single ((:commit . "ab3e79914445039ceb62f7f2dc342358fec3492e") (:url . "http://github.com/bard/mozrepl/raw/master/chrome/content/moz.el"))]) (mowedline . [(20161121 1835) nil "elisp utilities for using mowedline" single ((:commit . "6121b7d4aacd18f7b24da226e61dbae054e50a7c"))]) (move-text . [(20170908 2030) nil "Move current line or region with M-up or M-down." single ((:commit . "7cbc941a9150468609010a93c429117da2523903") (:url . "https://github.com/emacsfodder/move-text") (:keywords "edit"))]) (move-dup . [(20170513 1911) nil "Eclipse-like moving and duplicating lines or rectangles." single ((:commit . "dae61de7aa5e2bf56a7bab1fa36fa3a39520a3c0") (:url . "https://github.com/wyuenho/move-dup") (:keywords "convenience" "wp" "edit"))]) (mouse3 . [(20170324 1050) nil "Customizable behavior for `mouse-3'." single ((:url . "https://www.emacswiki.org/emacs/download/mouse3.el") (:keywords "mouse" "menu" "keymap" "kill" "rectangle" "region"))]) (mouse-slider-mode . [(20161021 1214) ((emacs (24 3)) (cl-lib (0 3))) "scale numbers dragged under the mouse" single ((:commit . "b3c19cd231edecce76787c5a9bbe5e4046d91f88") (:url . "https://github.com/skeeto/mouse-slider-mode"))]) (mouse+ . [(20170307 859) nil "Extensions to `mouse.el'." single ((:url . "https://www.emacswiki.org/emacs/download/mouse%2b.el") (:keywords "mouse"))]) (motion-mode . [(20140919 1856) ((flymake-easy (0 7)) (flymake-cursor (1 0 2))) "major mode for RubyMotion enviroment" tar ((:commit . "4c94180e3ecea611a61240a0c0cd48f1032c4a55") (:url . "https://github.com/ainame/motion-mode"))]) (mote-mode . [(20160122 1629) ((ruby-mode (1 1))) "Mote minor mode" single ((:commit . "666c6641addbd3b337a7aa01fd2742ded2f41b83") (:url . "http://inkel.github.com/mote-mode/"))]) (mosey . [(20161015 319) ((emacs (24 4))) "Mosey around your buffers" single ((:commit . "eb0ae6ec10f1d9828a2665476f6d6811df9b0bfa") (:url . "http://github.com/alphapapa/mosey.el") (:keywords "convenience"))]) (morlock . [(20161008 1358) nil "more font-lock keywords for elisp" single ((:commit . "5845b60c705e8db88ce790b0b12cd8b917e1e5a5") (:url . "https://github.com/tarsius/morlock") (:keywords "convenience"))]) (morganey-mode . [(20170118 134) ((emacs (24 4))) "Major mode for editing Morganey files" single ((:commit . "5cf3870432a2aeb69d373abe63b3be1f325f6d21") (:url . "https://github.com/morganey-lang/morganey-mode"))]) (moonscript . [(20170831 1526) ((cl-lib (0 5)) (emacs (24))) "Major mode for editing MoonScript code" tar ((:commit . "56f90471e2ced2b0a177aed4d8c2f854797e9cc7"))]) (monroe . [(20180108 224) nil "Yet another client for nREPL" single ((:commit . "c1dd7fe6e14a0ec2dae3135e74dffa797c9df28a") (:url . "http://www.github.com/sanel/monroe") (:keywords "languages" "clojure" "nrepl" "lisp"))]) (monokai-theme . [(20180104 429) nil "A fruity color theme for Emacs." single ((:commit . "bb5cbbd5895b8b3fbc6af572b1fd0aacd4988a8a") (:url . "http://github.com/oneKelvinSmith/monokai-emacs"))]) (monokai-alt-theme . [(20170630 1348) ((emacs (24))) "Theme with a dark background. Based on sublime monokai theme." single ((:commit . "f342b6afc31f929be0626eca2d696ee9fab78011") (:url . "https://github.com/dawidof/emacs-monokai-theme"))]) (monochrome-theme . [(20140326 350) nil "A dark Emacs 24 theme for your focused hacking sessions" tar ((:commit . "bfca67fe7365310bc47ae9ca96c417caada54896"))]) (monky . [(20170224 921) nil "Control Hg from Emacs." tar ((:commit . "62fc907cb541aef1c253d6bcd60447156e6f064c"))]) (monitor . [(20161018 444) ((dash (2 13 0))) "Utilities for monitoring expressions." tar ((:commit . "63f4643a0ee81616dbb692b8b03bae21df2283e2") (:url . "https://github.com/guiltydolphin/monitor") (:keywords "lisp" "monitor" "utility"))]) (mongo . [(20150315 519) nil "MongoDB driver for Emacs Lisp" tar ((:commit . "595529ddd70ecb9fab8b11daad2c3929941099d6") (:keywords "convenience"))]) (molokai-theme . [(20151016 845) nil "molokai theme with Emacs theme engine" single ((:commit . "04a44f21184b6a26caae4f2c92db9019d883309c") (:url . "https://github.com/alloy-d/color-theme-molokai"))]) (moe-theme . [(20170914 2111) nil "A colorful eye-candy theme. Moe, moe, kyun!" tar ((:commit . "b8f0206614ab40ffb75e50ce6c38675fb9c7cf2e") (:url . "https://github.com/kuanyui/moe-theme.el"))]) (modtime-skip-mode . [(20140128 1401) nil "Minor mode for disabling modtime and supersession checks on files." single ((:commit . "c0e49523aa26b2263a8693691ac775988015f592") (:url . "http://www.github.com/jordonbiondo/modtime-skip-mode"))]) (modern-cpp-font-lock . [(20170625 1306) nil "Font-locking for \"Modern C++\"" single ((:commit . "b0a45dc1d7c49854988103c2570c783f46f44566") (:url . "https://github.com/ludwigpacifici/modern-cpp-font-lock") (:keywords "languages" "c++" "cpp" "font-lock"))]) (modeline-posn . [(20170307 856) nil "Set up `mode-line-position'." single ((:url . "https://www.emacswiki.org/emacs/download/modeline-posn.el") (:keywords "mode-line" "region" "column"))]) (modeline-char . [(20170307 854) nil "In the mode-line, show the value of the character after point." single ((:url . "https://www.emacswiki.org/emacs/download/modeline-char.el") (:keywords "mode-line" "character"))]) (mode-line-debug . [(20150307 512) nil "show status of `debug-on-error' in the mode-line" single ((:commit . "da44422eeb6a1f055b4ec2f822962c5162fce001") (:url . "https://github.com/tarsius/mode-line-debug") (:keywords "convenience" "lisp"))]) (mode-line-bell . [(20171231 1939) nil "Flash the mode line instead of ringing the bell" single ((:commit . "dcfad0929a606af0e836d93e78be989a8ac16f87") (:keywords "convenience"))]) (mode-icons . [(20170216 620) ((emacs (24)) (cl-lib (0 5))) "Show icons for modes" tar ((:commit . "2d47c03ee33c53d069fd64409f7212a2e1ed3f18") (:url . "http://ryuslash.org/projects/mode-icons.html") (:keywords "multimedia"))]) (modalka . [(20171231 2213) ((emacs (24 4))) "Easily introduce native modal editing of your own design" single ((:commit . "e69ec8fa01e86cb789f7f2b27b6d5a47e1ca3069") (:url . "https://github.com/mrkkrp/modalka") (:keywords "modal" "editing"))]) (mocker . [(20150916 1854) ((eieio (1 3)) (el-x (0 2 4))) "mocking framework for emacs" single ((:commit . "6a1d7c9189bd721debd1a60707526e43a733f537") (:keywords "lisp" "testing"))]) (mocha-snippets . [(20170103 2127) ((yasnippet (0 8 0))) "Yasnippets for the Mocha JS Testing Framework" tar ((:commit . "e054137bd78f0d236e983874da1f345d30a71816") (:keywords "test" "javascript"))]) (mocha . [(20171217 835) ((js2-mode (20150909)) (f (0 18))) "Run Mocha or Jasmine tests" single ((:commit . "29376477b63e319875ad0969a8103f3864efb2a0") (:url . "http://github.com/scottaj/mocha.el") (:keywords "javascript" "mocha" "jasmine"))]) (mobdebug-mode . [(20140109 1946) ((lua-mode (20130419)) (emacs (24))) "Major mode for MobDebug" single ((:commit . "e1d483bc4e341c762bc5c0a8c52306a8d01ea0da") (:url . "https://github.com/deftsp/mobdebug-mode"))]) (mo-vi-ment-mode . [(20131028 2333) nil "Provide vi-like cursor movement that's easy on the fingers" single ((:commit . "f45b014261f8fab19254920bd1d92f3a83263411") (:keywords "convenience"))]) (mo-git-blame . [(20160129 959) nil "An interactive, iterative 'git blame' mode for Emacs" single ((:commit . "254a675eb794cdbbdef9fa2b4b7bb510b70089c0") (:keywords "tools"))]) (mmt . [(20171231 2219) ((emacs (24 1)) (cl-lib (0 3))) "Missing macro tools for Emacs Lisp" single ((:commit . "b8cc8d29e185c15a1e43ecc2a78e36a6d2f86b8f") (:url . "https://github.com/mrkkrp/mmt") (:keywords "macro" "emacs-lisp"))]) (mmm-mode . [(20171212 1428) nil "Allow Multiple Major Modes in a buffer" tar ((:commit . "3fb2964c1923fa4ae71741afbd87c76dc16af93a") (:url . "https://github.com/purcell/mmm-mode") (:keywords "convenience" "faces" "languages" "tools"))]) (mmm-mako . [(20121019 2351) ((mmm-mode (0 4 8))) "MMM submode class for Mako Templates" single ((:url . "https://bitbucket.org/pjenvey/mmm-mako"))]) (mmm-jinja2 . [(20170313 720) ((mmm-mode (0 5 4))) "MMM submode class for Jinja2 Templates" single ((:commit . "c8cb763174fa2fb61b9a0e5e0ff8cb0210f8492f") (:url . "https://github.com/glynnforrest/mmm-jinja2"))]) (mkdown . [(20140517 718) ((markdown-mode (2 0))) "Pretty Markdown previews based on mkdown.com" tar ((:commit . "8e23de82719af6c5b53b52b3308a02b3a1fb872e") (:url . "https://github.com/ajtulloch/mkdown.el") (:keywords "markdown"))]) (mixed-pitch . [(20180103 1839) ((emacs (24 3))) "Use a variable pitch, keeping fixed pitch where it's sensible" single ((:commit . "e6f063bdc968f8ff21418e9f3b1d501cd0e5d4bd") (:url . "https://github.com/jabranham/mixed-pitch"))]) (misc-fns . [(20170307 848) nil "Miscellaneous non-interactive functions." single ((:url . "https://www.emacswiki.org/emacs/download/misc-fns.el") (:keywords "internal" "unix" "lisp" "extensions" "local"))]) (misc-cmds . [(20170823 842) nil "Miscellaneous commands (interactive functions)." single ((:url . "https://www.emacswiki.org/emacs/download/misc-cmds.el") (:keywords "internal" "unix" "extensions" "maint" "local"))]) (mips-mode . [(20170310 2149) nil "Major-mode for MIPS assembly" single ((:commit . "a13d1fc5b583a29f059f7794f2d83e59da439fa1") (:url . "https://github.com/hlissner/emacs-mips-mode") (:keywords "mips" "assembly"))]) (mip-mode . [(20151126 2217) nil "virtual projects for emacs." single ((:commit . "7c88c383b4c7ed0a4c1dc397735f365c1fcb461c") (:keywords "workspaces" "workspace" "project" "projects" "mip-mode"))]) (minor-mode-hack . [(20141226 1220) nil "Change priority of minor-mode keymaps" single ((:url . "http://www.emacswiki.org/cgi-bin/wiki/download/minor-mode-hack.el") (:keywords "lisp"))]) (minizinc-mode . [(20171208 958) ((emacs (24 1))) "Major mode for MiniZinc code" single ((:commit . "8bb428b52e974ecea35f3f2b20ad161735085a30") (:url . "http://github.com/m00nlight/minizinc-mode") (:keywords "languages" "minizinc"))]) (minitest . [(20160628 1120) ((dash (1 0 0))) "An Emacs mode for ruby minitest files" tar ((:commit . "1aadb7865c1dc69c201cecee275751ecec33a182") (:url . "https://github.com/arthurnn/minitest-emacs"))]) (minimal-theme . [(20160608 322) nil "A light/dark minimalistic Emacs 24 theme." tar ((:commit . "430e0d3fc2044c16aa9f10961841febbd60df285") (:url . "http://github.com/ikame/minimal-theme") (:keywords "color" "theme" "minimal"))]) (minimal-session-saver . [(20140508 1341) nil "Very lean session saver" single ((:commit . "cf654ac549850746dc21091746e4bcc1aef7668e") (:url . "http://github.com/rolandwalker/minimal-session-saver") (:keywords "tools" "frames" "project"))]) (miniedit . [(20100419 1045) nil "Enhanced editing for minibuffer fields." single ((:commit . "e12bf659c3eb92dd8a4cb77642dc0865c54667a3"))]) (minibuffer-cua . [(20130906 434) nil "Make CUA mode's S-up/S-down work in minibuffer" single ((:commit . "adc4979a64f8b36e05960e9afa0746dfa9e2e4c7") (:url . "https://github.com/knu/minibuffer-cua.el") (:keywords "completion" "editing"))]) (minibuffer-complete-cycle . [(20130813 945) nil "Cycle through the *Completions* buffer" single ((:commit . "3df80135887d0169e02294a948711f6dfeca4a6f") (:url . "https://github.com/knu/minibuffer-complete-cycle") (:keywords "completion"))]) (minibuf-isearch . [(20151226 1143) nil "incremental search on minibuffer history" single ((:commit . "2846c6ac369ee623dad4cd3c8a7a6d9078965516") (:keywords "minibuffer" "history" "incremental search"))]) (mini-header-line . [(20170621 521) ((emacs (24 4))) "a minimal header-line" single ((:commit . "73b6724e0a26c4528d93768191c8aa59e6bce2e5") (:url . "https://github.com/ksjogo/mini-header-line") (:keywords "header-line" "mode-line"))]) (mingus . [(20171124 238) ((libmpdee (2 1))) "MPD Interface" tar ((:commit . "93827f564145a598838d3c3232202a60d681bd49") (:url . "https://github.com/pft/mingus") (:keywords "multimedia" "elisp" "music" "mpd"))]) (minesweeper . [(20150413 2222) nil "play minesweeper in Emacs" single ((:url . "https://bitbucket.org/zck/minesweeper.el") (:keywords "game" "fun" "minesweeper" "inane" "diversion"))]) (milkode . [(20140926 2229) nil "Command line search and direct jump with Milkode" single ((:commit . "ba97e2aeefa1d9d0b3835bf08edd0de248b0c513") (:keywords "milkode" "search" "grep" "jump" "keyword"))]) (migemo . [(20160924 741) ((cl-lib (0 5))) "Japanese incremental search through dynamic pattern expansion" single ((:commit . "e4744efae1b2fdea2bbd2ceaff0f6ea0bb739f5a") (:url . "https://github.com/emacs-jp/migemo"))]) (midje-mode . [(20170808 2103) ((cider (0 1 4)) (clojure-mode (1 0))) "Minor mode for running Midje tests in emacs" tar ((:commit . "10ad5b6084cd03d5cd268b486a7c3c246d85535f"))]) (micgoline . [(20160414 2026) ((emacs (24 3)) (powerline (2 3))) "powerline mode, color schemes from microsoft and google's logo." single ((:commit . "837504263bb1711203b0f7efecd6b7b5f272fae0") (:url . "https://github.com/yzprofile/micgoline") (:keywords "mode-line" "powerline" "theme"))]) (mic-paren . [(20170731 1207) nil "advanced highlighting of matching parentheses" single ((:commit . "d0410c7d805c9aaf51a1bcefaaef092bed5824c4") (:keywords "languages" "faces" "parenthesis" "matching"))]) (mhc . [(20171016 335) ((calfw (20150703))) "Message Harmonized Calendaring system." tar ((:commit . "03a50a7dd5f90fb981b72e4b9e9385e4d1fe3be3") (:url . "http://www.quickhack.net/mhc") (:keywords "calendar"))]) (mexican-holidays . [(20160109 1342) nil "Mexico holidays for Emacs calendar." single ((:commit . "43ced1f9e40a04be6927d1a1be64060f9be4f5c5") (:url . "https://github.com/shopClerk/mexican-holidays") (:keywords "calendar"))]) (mew . [(20170508 22) nil "Messaging in the Emacs World" tar ((:commit . "36b36a154dab22e112cc19675cfd73478f2a5956"))]) (metaweblog . [(20171216 1840) ((xml-rpc (1 6 8))) "An emacs library to access metaweblog based weblogs" tar ((:commit . "aa14380eb7e7b879a0c16c96866b20a987cd3f2a"))]) (metascript-mode . [(20150708 1757) ((emacs (24 3))) "Major mode for the Metascript programming language" single ((:commit . "edb361c7b0e5de231e5334a17b90652fb1df78f9") (:url . "http://github.com/metascript/metascript-mode") (:keywords "languages" "metascript" "mjs"))]) (metalheart-theme . [(20160709 2341) ((emacs (24))) "Low-contrast theme with a dark blue-green background." single ((:commit . "ec98ea2c11dc1213dae8cbe1fe0cee73ca138bb2"))]) (meta-presenter . [(20170425 1934) nil "A simple multi-file presentation tool for Emacs" single ((:commit . "e882ac7f7658dd9507aca0ff88c88fcf74618252") (:url . "http://ismail.teamfluxion.com") (:keywords "productivity" "presentation"))]) (messages-are-flowing . [(20170218 1720) nil "visible indication when composing \"flowed\" emails" single ((:commit . "ef879726957c850c3a5afd7f1118604991e37e32") (:keywords "mail"))]) (message-x . [(20151029 718) nil "customizable completion in message headers" single ((:keywords "news" "mail" "compose" "completion"))]) (meson-mode . [(20170901 1135) ((emacs (24 3))) "Major mode for the Meson build system files" single ((:commit . "212d9f38a08074f1cb6e914e12b60bc52dcb8bee") (:url . "https://github.com/wentasah/meson-mode") (:keywords "languages" "tools"))]) (merlin . [(20170917 430) nil "Mode for Merlin, an assistant for OCaml." tar ((:commit . "a5dbf8e321ff162476555e62264468dd6f55c279") (:url . "https://github.com/ocaml/merlin") (:keywords "ocaml" "languages"))]) (menu-bar+ . [(20170720 710) nil "Extensions to `menu-bar.el'." single ((:url . "https://www.emacswiki.org/emacs/download/menu-bar%2b.el") (:keywords "internal" "local" "convenience"))]) (mentor . [(20170105 221) ((xml-rpc (1 6 9)) (seq (1 11)) (cl-lib (0 5))) "Frontend for the rTorrent bittorrent client" tar ((:commit . "9a160d718b02a95b1bb24072cca87b4348e1e261") (:keywords "comm" "processes" "bittorrent"))]) (memolist . [(20150804 1021) ((markdown-mode (22 0)) (ag (0 45))) "memolist.el is Emacs port of memolist.vim." single ((:commit . "60c296e202a71e9dcf1c3936d47b5c4b95c5839f") (:url . "http://github.com/mikanfactory/emacs-memolist") (:keywords "markdown" "memo"))]) (memoize . [(20170720 1802) nil "Memoization functions" single ((:commit . "636defefa9168f90bce6fc27431352ac7d01a890") (:url . "https://github.com/skeeto/emacs-memoize"))]) (melpa-upstream-visit . [(20130720 333) ((s (1 6 0))) "A set of kludges to visit a melpa-hosted package's homepage" single ((:commit . "7310c74fdead3c0f86ad6eff76cf989e63f70f66") (:keywords "convenience"))]) (mellow-theme . [(20170808 617) ((emacs (24 0))) "an Emacs 24 theme based on Mellow (tmTheme)" single ((:commit . "2bdf18f05f5212b6f269d9a94afe2cf201766891") (:url . "https://github.com/emacsfodder/tmtheme-to-deftheme"))]) (melancholy-theme . [(20170220 1248) nil "A dark theme for dark minds" single ((:commit . "a9e13ca7051731b3a2c2aece9f3e3033b9a5e41d") (:url . "http://github.com/techquila/melancholy-theme"))]) (meghanada . [(20171230 802) ((emacs (24 3)) (yasnippet (0 6 1)) (company (0 9 0)) (flycheck (0 23))) "A better java development mode" tar ((:commit . "98ad6a5361c725319a355522d2d1ba0e0fbb7cde") (:url . "https://github.com/mopemope/meghanada-emacs") (:keywords "languages" "java"))]) (mediawiki . [(20170812 2255) nil "mediawiki frontend" single ((:commit . "8473e12d1839f5287a4227586bf117dad820f867") (:url . "https://github.com/hexmode/mediawiki-el") (:keywords "mediawiki" "wikipedia" "network" "wiki"))]) (md-readme . [(20160811 946) nil "Markdown-formatted READMEs for your ELisp" tar ((:commit . "bf818dd847c8b06b3b5100c5d3cf24cf96662528") (:url . "http://github.com/thomas11/md-readme/tree/master") (:keywords "lisp" "help" "readme" "markdown" "header" "documentation" "github"))]) (mc-extras . [(20170824 2239) ((multiple-cursors (1 2 1))) "Extra functions for multiple-cursors mode." tar ((:commit . "f0ba639e9b18cc56e80ae45bbb2b694dbad9171a") (:url . "https://github.com/knu/mc-extras.el") (:keywords "editing" "cursors"))]) (mbsync . [(20171130 335) nil "run mbsync to fetch mails" single ((:commit . "911d9ac255e8f7fb4bd21c0e816e44abfeb59128") (:url . "https://github.com/dimitri/mbsync-el"))]) (mbo70s-theme . [(20170808 615) ((emacs (24 0))) "70s style palette, with similarities to mbo theme" single ((:commit . "bed3db8965708ed4e9482b224a9b084765c052f2") (:url . "https://github.com/emacsfodder/tmtheme-to-deftheme"))]) (mbe . [(20151126 334) ((emacs (24)) (cl-lib (0 5))) "Macros by Example" single ((:commit . "bb10aa8f26bb7e9b1d5746934c94edb00402940c") (:url . "https://github.com/ijp/mbe.el") (:keywords "tools" "macros"))]) (mb-url . [(20161224 1806) ((cl-lib (0))) "Multiple Backends for Emacs URL package." tar ((:commit . "129a0bb6a684be76fb9f09010e710065d0e5baaa") (:url . "https://github.com/dochang/mb-url") (:keywords "url"))]) (mb-depth+ . [(20170307 844) nil "Indicate minibuffer-depth in prompt" single ((:url . "https://www.emacswiki.org/emacs/download/mb-depth%2b.el") (:keywords "convenience"))]) (maxframe . [(20170120 905) nil "maximize the emacs frame based on display size" single ((:commit . "13bda6dd9f1d96aa4b9dd9957a26cefd399a7772") (:keywords "display" "frame" "window" "maximize"))]) (maven-test-mode . [(20141219 2157) ((s (1 9)) (emacs (24))) "Utilities for navigating test files and running maven test tasks." single ((:commit . "a19151861df2ad8ae4880a2e7c86ddf848cb569a") (:url . "http://github.com/rranelli/maven-test-mode") (:keywords "java" "maven" "test"))]) (maude-mode . [(20160222 807) nil "Emacs mode for the programming language Maude" single ((:commit . "c9543bb8a172fa77af592388e7f520a4a6d38987") (:keywords "maude"))]) (matlab-mode . [(20160902 459) nil "Major mode for MATLAB(R) dot-m files" tar ((:commit . "3b3c48ac0c27039e0bef89c643f0ee4c0b53d3d0") (:url . "http://sourceforge.net/projects/matlab-emacs/") (:keywords "matlab" "programming" "language" "(X)emacs"))]) (math-symbols . [(20170818 759) ((helm (1 0))) "Math Symbol Input methods and conversion tools" tar ((:commit . "3f8b466f002e1b28ddbe9a6f236c9a1352adb17d") (:url . "https://github.com/kawabata/math-symbols") (:keywords "i18n" "languages" "tex"))]) (math-symbol-lists . [(20170221 553) nil "Lists of Unicode math symbols and latex commands" tar ((:commit . "1af8fdcab7941a62287c2d04b8876e1538f39c60") (:url . "https://github.com/vspinu/math-symbol-lists") (:keywords "unicode" "symbols" "mathematics"))]) (material-theme . [(20171123 1040) ((emacs (24 1))) "A Theme based on the colors of the Google Material Design" tar ((:commit . "b66838d220ad380a16da1d8878936974b26f815d") (:url . "http://github.com/cpaulik/emacs-material-theme") (:keywords "themes"))]) (mastodon . [(20170619 1050) ((emacs (24 4))) "Client for Mastodon" tar ((:commit . "e08bb5794762d22f90e85fd65cef7c143e6b9318") (:url . "https://github.com/jdenen/mastodon.el"))]) (maruo-macro-mode . [(20160616 649) ((emacs (24 3))) "Major mode for editing Hidemaru/Maruo macro script" single ((:commit . "8fc9a38ad051eafa8eb94038711acc52c5d1d8d5") (:keywords "programming" "editor" "macro"))]) (marshal . [(20180102 201) ((eieio (1 4)) (json (1 3)) (ht (2 1))) "eieio extension for automatic (un)marshalling" single ((:commit . "e25b170779ca8d0cdef0bfeb6f35c264a23a44e8") (:url . "https://github.com/sigma/marshal.el") (:keywords "eieio"))]) (marmalade-client . [(20141231 1207) ((web (0 5 2)) (kv (0 0 19)) (gh (0 8 0))) "client for marmalade API from emacs" tar ((:commit . "f315dea57e4fbebd9ee0668c0bafd4c45c7b754a") (:url . "https://github.com/nicferrier/emacs-marmalade-upload") (:keywords "lisp"))]) (markup-faces . [(20141110 17) nil "collection of faces for markup language modes" single ((:commit . "98a807ed82473eb41c6a201ed7ef816d6bcd67b0") (:url . "https://github.com/sensorflo/markup-faces") (:keywords "wp" "faces"))]) (markup . [(20170420 429) ((cl-lib (0 5))) "Simple markup generation helpers." single ((:commit . "876da2d3f23473475bb0fd0a1480ae11d2671291") (:url . "http://github.com/leoc/markup.el") (:keywords "convenience" "markup" "html"))]) (markdownfmt . [(20160609 541) ((emacs (24))) "Format markdown using markdownfmt" single ((:commit . "187a74eb4fd9e8520ce08da42d1d292b9af7f2b7") (:url . "https://github.com/nlamirault/emacs-markdownfmt") (:keywords "markdown"))]) (markdown-toc . [(20170711 1249) ((s (1 9 0)) (dash (2 11 0)) (markdown-mode (2 1))) "A simple TOC generator for markdown file" tar ((:commit . "7038f4f6d5c2bc7e4aea89699a607ac2b7dd16a8"))]) (markdown-preview-mode . [(20171121 2323) ((emacs (24 3)) (websocket (1 6)) (markdown-mode (2 0)) (cl-lib (0 5)) (web-server (0 1 1)) (uuidgen (0 3))) "markdown realtime preview minor mode." tar ((:commit . "4ec15183fc9fadb9368902c9b77a2d0e1196d1c6") (:url . "https://github.com/ancane/markdown-preview-mode") (:keywords "markdown" "gfm" "convenience"))]) (markdown-preview-eww . [(20160111 702) ((emacs (24 4))) "Realtime preview by eww" single ((:commit . "5853f836425c877c8a956501f0adda137ef1d3b7") (:url . "https://github.com/niku/markdown-preview-eww"))]) (markdown-mode . [(20180101 503) ((emacs (24 4)) (cl-lib (0 5))) "Major mode for Markdown-formatted text" single ((:commit . "fc4e143831f8590dc9b25da76961536eade02411") (:url . "https://jblevins.org/projects/markdown-mode/") (:keywords "markdown" "github flavored markdown" "itex"))]) (markdown-mode+ . [(20170320 1404) ((markdown-mode (20111229))) "extra functions for markdown-mode" tar ((:commit . "411d079f4430a33c34ec0bbcb1535fe1145a2509") (:url . "http://github.com/milkypostman/markdown-mode-plus") (:keywords "markdown" "latex" "osx" "rtf"))]) (mark-tools . [(20130614 325) nil "Some simple tools to access the mark-ring in Emacs" single ((:commit . "a11b61effa90bd0abc876d12573674d36fc17f0c") (:url . "https://github.com/stsquad/emacs-mark-tools"))]) (mark-multiple . [(20121118 754) nil "Sorta lets you mark several regions at once." tar ((:commit . "f6a53c7c5283d640ae718f4548b0fda78877a375"))]) (marcopolo . [(20160421 304) ((s (1 9 0)) (dash (2 9 0)) (pkg-info (0 5 0)) (request (0 1 0))) "Emacs client to the Docker HUB/Registry API" tar ((:commit . "9193aabdf12223087b5ed58f1507d5d8a24a4381") (:url . "https://github.com/nlamirault/marcopolo") (:keywords "docker"))]) (map-regexp . [(20130522 1403) ((cl-lib (0 2))) "map over matches of a regular expression" single ((:commit . "b8e06284ec1c593d7d2bda5f35597a63de46333f") (:url . "https://github.com/tarsius/map-regexp") (:keywords "convenience"))]) (map-progress . [(20140310 1432) nil "mapping macros that report progress" single ((:commit . "3167eb218510953fb97e7d50948a625eaa3f0005") (:url . "https://github.com/tarsius/map-progress/") (:keywords "convenience"))]) (mandoku-tls . [(20171117 1840) ((emacs (24 4)) (mandoku (20170301)) (github-clone (0 2)) (hydra (0 13 6)) (helm (1 7 0)) (org (9 0)) (helm-charinfo (20170601))) "A tool to access the TLS database" single ((:commit . "ffeebf5bd451ac1806ddfe1744fbbd036a56f902") (:url . "https://github.com/mandoku/mandoku-tls") (:keywords "convenience"))]) (mandoku . [(20171220 419) ((org (8 0)) (magit (20151028)) (github-clone (20150705)) (git (20140128))) "A tool to access repositories of premodern Chinese texts" tar ((:commit . "398956a21e60bc121eb337b8a88b59b586d30cef"))]) (mandm-theme . [(20170925 321) nil "An M&M color theme." single ((:commit . "078d6d6f11bd48193c5de590cfb0e3d0d687ffc9") (:url . "https://github.com/choppsv1/emacs-mandm-theme.git"))]) (manage-minor-mode . [(20140310 900) ((emacs (24 3))) "Manage your minor-modes easily" single ((:commit . "1bed33b0752380b548b822fe72e6858c5fe70c8e") (:url . "https://github.com/ShingoFukuyama/manage-minor-mode") (:keywords "minor-mode" "manage" "emacs"))]) (man-commands . [(20151221 1421) ((cl-lib (0 5))) "Add interactive commands for every manpages installed in your computer." single ((:commit . "f4ba0c3790855d7544dff92d470d212f24de1d9d") (:url . "http://github.com/nflath/man-commands"))]) (malyon . [(20161208 1325) ((cl-lib (0 5))) "mode to execute Z-code files version 3, 5, 8" single ((:commit . "0d9882650720b4a791556f5e2d917388965d6fc0") (:url . "https://github.com/speedenator/malyon") (:keywords "games" "emulations"))]) (mallard-snippets . [(20131023 1151) ((yasnippet (0 8 0)) (mallard-mode (0 1 1))) "Yasnippets for Mallard" tar ((:commit . "70c5293f10722f2ace73bdf74d9a18f95b040edc") (:url . "https://github.com/jhradilek/emacs-mallard-snippets") (:keywords "snippets" "mallard"))]) (mallard-mode . [(20131203 2025) nil "Major mode for editing Mallard files" tar ((:commit . "c48170c1ace4959abcc5fb1df0d4cb149cff44c1") (:url . "https://github.com/jhradilek/emacs-mallard-mode") (:keywords "xml" "mallard"))]) (malinka . [(20171202 221) ((s (1 9 0)) (dash (2 4 0)) (f (0 11 0)) (cl-lib (0 3)) (rtags (0 0)) (projectile (0 11 0))) "A C/C++ project configuration package for Emacs" single ((:commit . "d4aa517c7a9022eae16c758c7efdb3a0403542d7") (:url . "https://github.com/LefterisJP/malinka") (:keywords "c" "c++" "project-management"))]) (makey . [(20131231 630) ((cl-lib (0 2))) "interactive commandline mode" single ((:commit . "a61781e69d3b451551e269446e1c5f624ab81137"))]) (makefile-executor . [(20171017 438) ((emacs (24 3)) (dash (2 11 0)) (f (0 11 0)) (s (1 10 0))) "Commands for conveniently running makefile targets" single ((:commit . "a950438c93dc2fdcb867ac25174c773deda95aff") (:url . "https://github.com/thiderman/makefile-executor.el") (:keywords "processes"))]) (make-it-so . [(20171129 655) ((swiper (0 8 0)) (emacs (24))) "Transform files with Makefile recipes." tar ((:commit . "4f8b61011700036c98993e287d7aa36a52f2e206") (:url . "https://github.com/abo-abo/make-it-so") (:keywords "make" "dired"))]) (make-color . [(20140625 450) nil "Alternative to picking color - update fg/bg color by pressing r/g/b/... keys" single ((:commit . "5ca1383ca9228bca82120b238bdc119f302b75c0") (:url . "https://github.com/alezost/make-color.el") (:keywords "color"))]) (major-mode-icons . [(20170228 2314) ((emacs (24 3)) (powerline (2 4)) (all-the-icons (2 3 0))) "display icon for major-mode on mode-line." tar ((:commit . "e6117a236b2ad52e948576550b183053321dfc91") (:url . "http://github.com/stardiviner/major-mode-icons") (:keywords "frames" "multimedia"))]) (majapahit-theme . [(20160817 1148) nil "Color theme with a dark and light versions" tar ((:commit . "77c96df7619666b2102d90d452eeadf04adc89a6") (:keywords "color" "theme") (:url . "https://gitlab.com/franksn/majapahit-theme"))]) (main-line . [(20151120 1806) ((cl-lib (0 5))) "modeline replacement forked from an early version of powerline.el" single ((:commit . "2ef3175854f5b6c85f2e1bed26507cdca2f6ad16") (:url . "https://github.com/jasonm23/emacs-mainline") (:keywords "statusline" "/" "modeline"))]) (magnatune . [(20151030 1235) ((dash (2 9 0)) (s (1 9 0))) "browse magnatune's music catalog" tar ((:commit . "605b01505ba30589c77ebb4c96834b5072ccbdd4"))]) (magma-mode . [(20160304 408) ((cl-lib (0 3)) (dash (2 6 0)) (f (0 17 1))) "Magma mode for Emacs" tar ((:commit . "528c96a269980dcc6b65e2e973510ff07e6b9fc4") (:url . "https://github.com/ThibautVerron/magma-mode"))]) (magithub . [(20171224 845) ((emacs (25)) (magit (2 8)) (s (1 12 0)) (ghub+ (0 2)) (git-commit (2 8)) (markdown-mode (2 3))) "Magit interfaces for Github" tar ((:commit . "08a1c1341d0982248ec86e1697fa1b6418cd80f5") (:url . "https://github.com/vermiculus/magithub") (:keywords "git" "tools" "vc"))]) (magit-topgit . [(20160313 1254) ((emacs (24 4)) (magit (2 1 0))) "TopGit extension for Magit" single ((:commit . "11489ea798bc88d0ea5244bbf725285eedfefbef") (:keywords "vc" "tools"))]) (magit-tbdiff . [(20170725 1850) ((emacs (24 4)) (magit (2 10 0))) "Magit extension for git-tbdiff" single ((:commit . "1d1333af9d76b9e832212e9da152397df65f7205") (:url . "https://github.com/magit/magit-tbdiff") (:keywords "vc" "tools"))]) (magit-svn . [(20170213 433) ((emacs (24 4)) (magit (2 1 0))) "Git-Svn extension for Magit" single ((:commit . "c833903732a14478f5c4cfc561bae7c50671b36c") (:keywords "vc" "tools"))]) (magit-stgit . [(20171115 754) ((emacs (24 4)) (magit (2 1 0))) "StGit extension for Magit" single ((:commit . "0e44df69d7c0c793808a5278bed35b2c6ec39f7f") (:keywords "vc" "tools"))]) (magit-rockstar . [(20171213 737) ((dash (2 13 0)) (magit (2 12 0))) "commit like a rockstar" single ((:commit . "44e3bf03b0c5db914ce391c0c645267f0a5759bd") (:url . "https://github.com/tarsius/magit-rockstar") (:keywords "convenience"))]) (magit-popup . [(20171217 1235) ((emacs (24 4)) (async (1 9 2)) (dash (2 13 0))) "Define prefix-infix-suffix command combos" tar ((:commit . "3f23e81eb0267d6578d8f1733c5e42699b0229a1") (:url . "https://github.com/magit/magit-popup") (:keywords "bindings"))]) (magit-p4 . [(20170414 546) ((magit (2 1)) (magit-popup (2 1)) (p4 (12 0)) (cl-lib (0 5))) "git-p4 plug-in for Magit" single ((:commit . "c87de6d3f10fd35415a0c56e63747eb14ed5a113") (:url . "https://github.com/qoocku/magit-p4") (:keywords "vc" "tools"))]) (magit-lfs . [(20170312 1524) ((emacs (24 4)) (magit (2 10 3)) (dash (2 13 0))) "Magit plugin for Git LFS" single ((:commit . "799282fce73b668d2cf6e4fa87f889fec8e25333") (:url . "https://github.com/ailrun/magit-lfs") (:keywords "magit" "git" "lfs" "tools" "vc"))]) (magit-imerge . [(20170805 819) ((emacs (24 4)) (magit (2 10 0))) "Magit extension for git-imerge" single ((:commit . "1cd0fa843095f4ce8aa4eae89476c116414d060c") (:url . "https://github.com/magit/magit-imerge") (:keywords "vc" "tools"))]) (magit-gitflow . [(20170929 124) ((magit (2 1 0)) (magit-popup (2 2 0))) "gitflow extension for magit" single ((:commit . "cc41b561ec6eea947fe9a176349fb4f771ed865b") (:url . "https://github.com/jtatarik/magit-gitflow") (:keywords "vc" "tools"))]) (magit-gh-pulls . [(20171117 226) ((emacs (24 4)) (gh (0 9 1)) (magit (2 1 0)) (pcache (0 2 3)) (s (1 6 1))) "GitHub pull requests extension for Magit" single ((:commit . "d526f4c9ee1709c79f8a4630699ce1f25ae054e7") (:url . "https://github.com/sigma/magit-gh-pulls") (:keywords "git" "tools"))]) (magit-gerrit . [(20160226 130) ((magit (2 3 1))) "Magit plugin for Gerrit Code Review" single ((:commit . "ece6f369694aca17f3ac166ed2801b432acfe20d") (:url . "https://github.com/terranpro/magit-gerrit"))]) (magit-find-file . [(20150702 130) ((magit (2 1 0)) (dash (2 8 0))) "completing-read over all files in Git" single ((:commit . "c3ea91bab37d10a814a829728ec972811f728d60") (:url . "https://github.com/bradleywright/magit-find-file.el") (:keywords "git"))]) (magit-filenotify . [(20151116 1540) ((magit (1 3 0)) (emacs (24 4))) "Refresh status buffer when git tree changes" single ((:commit . "c0865b3c41af20b6cd89de23d3b0beb54c8401a4") (:keywords "tools"))]) (magit-annex . [(20170913 659) ((cl-lib (0 3)) (magit (2 11 0))) "Control git-annex from Magit" single ((:commit . "895c229c2b0d822a4debb302d8638105ecb4ee20") (:url . "https://github.com/magit/magit-annex") (:keywords "vc" "tools"))]) (magit . [(20180109 1019) ((emacs (24 4)) (async (20170823)) (dash (20170810)) (ghub (20171207)) (git-commit (20170823)) (let-alist (1 0 5)) (magit-popup (20171121)) (with-editor (20170817))) "A Git porcelain inside Emacs." tar ((:commit . "1c3529a54b9a152c8524fb82e57f610312ac412c"))]) (magic-latex-buffer . [(20170530 1705) ((cl-lib (0 5)) (emacs (24 3))) "Magically enhance LaTeX-mode font-locking for semi-WYSIWYG editing" single ((:commit . "c03277d5619d9adcd871f3e6480a1a27985810cb") (:url . "http://hins11.yu-yake.com/"))]) (magic-filetype . [(20161214 1017) ((emacs (24)) (s (1 9 0))) "Enhance filetype major mode" single ((:commit . "9a20137474697063898902b43a40423daa4eb64d") (:url . "https://github.com/zonuexe/magic-filetype.el") (:keywords "emulations" "vim" "ft" "file" "magic-mode"))]) (mag-menu . [(20150505 1150) ((splitter (0 1 0))) "Intuitive keyboard-centric menu system" single ((:commit . "9b9277021cd09fb1dba64b1d2a00705d20914bd6") (:url . "https://github.com/chumpage/mag-menu") (:keywords "convenience"))]) (madhat2r-theme . [(20170202 1630) ((emacs (24))) "dark color theme that is easy on the eyes" single ((:commit . "6b387f09de055cfcc15d74981cd4f32f8f9a7323") (:url . "https://github.com/madhat2r/madhat2r-theme") (:keywords "color" "theme"))]) (macrostep . [(20161120 1306) ((cl-lib (0 5))) "interactive macro expander" tar ((:commit . "424e3734a1ee526a1bd7b5c3cd1d3ef19d184267") (:url . "https://github.com/joddie/macrostep") (:keywords "lisp" "languages" "macro" "debugging"))]) (macros+ . [(20170307 842) nil "Extensions to `macros.el'." single ((:url . "http://www.emacswiki.org/emacs/download/macros%2b.el") (:keywords "abbrev" "local"))]) (macro-math . [(20130328 904) nil "in-buffer mathematical operations" single ((:commit . "216e59371e9ee39c34117ba79b9acd78bb415750") (:url . "http://nschum.de/src/emacs/macro-math/") (:keywords "convenience"))]) (maces-game . [(20170903 851) ((dash (2 12 0)) (cl-lib (0 5)) (emacs (24))) "another anagram game." tar ((:commit . "c0fb795f5642467ea528d2f04d904547e8a77ecd") (:url . "https://github.com/pawelbx/anagram-game") (:keywords "games" "word games" "anagram"))]) (mac-pseudo-daemon . [(20170728 1240) ((cl-lib (0 1))) "Daemon mode that plays nice with Mac OS." single ((:commit . "d235680a72677f11925b912428ad1a57b664e3e8") (:url . "https://github.com/DarwinAwardWinner/osx-pseudo-daemon") (:keywords "convenience" "osx" "mac"))]) (m-buffer . [(20170407 1441) ((seq (2 14))) "List-Oriented, Functional Buffer Manipulation" tar ((:commit . "8681342aaffa187e5c54945ab91b812965a96d19"))]) (lyrics . [(20160920 1945) ((emacs (25 1)) (seq (2 15))) "Show lyrics" single ((:commit . "1378d534614793a51ebbed661c59eb8818299182") (:url . "https://github.com/emacs-pe/lyrics.el") (:keywords "convenience"))]) (lxc . [(20140410 1322) nil "lxc integration with Emacs" single ((:commit . "88bed56c954d1edd9ff5ce0ced2c02dcf9f71835") (:url . "https://github.com/nicferrier/emacs-lxc") (:keywords "processes"))]) (lusty-explorer . [(20171126 1221) nil "Dynamic filesystem explorer and buffer switcher" single ((:commit . "303618cafa01da3c8f99da4849d3ddbdc146a5d1") (:keywords "convenience" "files" "matching"))]) (lush-theme . [(20141107 806) ((emacs (24))) "A dark theme with strong colors" single ((:commit . "3b80004f33cdce9f4db69e9ccf2041561e98985d") (:url . "https://github.com/andre-richter/emacs-lush-theme") (:keywords "theme" "dark" "strong colors"))]) (luarocks . [(20170430 1605) ((emacs (24)) (cl-lib (0 5))) "luarocks tools" single ((:commit . "cee27ba0716edf338077387969883226dd2b7484") (:url . "https://github.com/emacs-pe/luarocks.el") (:keywords "convenience"))]) (lua-mode . [(20180104 626) nil "a major-mode for editing Lua scripts" tar ((:commit . "6c691839b7e784884ae5c390bf1927953cd2bde7") (:url . "http://immerrr.github.com/lua-mode") (:keywords "languages" "processes" "tools"))]) (lsp-vue . [(20171202 917) ((emacs (25 1)) (lsp-mode (3 0))) "Vue support for lsp-mode" single ((:commit . "9085d6c7646d80728d14bf5e4ec9037dfb91e3d1") (:url . "https://github.com/emacs-lsp/lsp-vue"))]) (lsp-ui . [(20180109 1209) ((emacs (25 1)) (flycheck (30)) (lsp-mode (3 4)) (markdown-mode (2 0))) "UI modules for lsp-mode" tar ((:commit . "f9284487de8119fa2a6eff612b45c67b82a02394") (:url . "https://github.com/emacs-lsp/lsp-ui") (:keywords "lsp"))]) (lsp-rust . [(20171128 331) ((lsp-mode (3 0)) (rust-mode (0 3 0))) "Rust support for lsp-mode" single ((:commit . "e560b81f21f770648a1a8621add9a2fe3dbe83af") (:url . "https://github.com/emacs-lsp/lsp-rust") (:keywords "rust"))]) (lsp-python . [(20171021 254) ((lsp-mode (3 0))) "Python support for lsp-mode" single ((:commit . "035fed681ef18a774dcb82e361bd6b5b8778623f") (:url . "https://github.com/emacs-lsp/lsp-python") (:keywords "python"))]) (lsp-ocaml . [(20171111 1352) ((emacs (25 1)) (lsp-mode (3 0))) "OCaml support for lsp-mode" single ((:commit . "1aef50ceb2794a2f2234fb0f13410b7f1e3b5c16") (:url . "https://github.com/anmonteiro/lsp-ocaml") (:keywords "languages" "ocaml" "reason" "lsp"))]) (lsp-mode . [(20180109 1026) ((emacs (25 1)) (flycheck (30))) "Minor mode for interacting with Language Servers" tar ((:commit . "0d044cc81cd5acec2ac7d72889d5364332dd0f02") (:url . "https://github.com/emacs-lsp/lsp-mode"))]) (lsp-javascript-typescript . [(20171125 147) ((lsp-mode (3 0))) "Javascript/Typescript support for lsp-mode" single ((:commit . "456854bdee8729c21331f93ee9054f2d980fe2ab") (:url . "https://github.com/emacs-lsp/lsp-javascript") (:keywords "javascript" "typescript" "lsp"))]) (lsp-javacomp . [(20171024 1547) ((emacs (25 1)) (lsp-mode (3 0)) (s (1 2 0))) "Provide Java IDE features powered by JavaComp." single ((:commit . "ed23aaeee27e6253bed5752fb8fbb7a5fa61967c") (:url . "https://github.com/tigersoldier/lsp-javacomp") (:keywords "java"))]) (lsp-java . [(20171023 650) ((emacs (25 1)) (lsp-mode (3 0))) "Java support for lsp-mode" single ((:commit . "5176f63e80e8f971563c0b98658db7dc72404369") (:url . "https://github.com/emacs-lsp/lsp-java") (:keywords "java"))]) (lsp-haskell . [(20171021 330) ((lsp-mode (3 0)) (haskell-mode (1 0))) "Haskell support for lsp-mode" single ((:commit . "16ca9fa975e64e840e062485ed30e4b297d72424") (:url . "https://github.com/emacs-lsp/lsp-haskell") (:keywords "haskell"))]) (lsp-hack . [(20171128 1238) ((lsp-mode (3 1))) "lsp-mode client for hacklang" single ((:commit . "f299555ad5206f13d7cfe75a3c76607b1f0d6da5") (:url . "https://github.com/jra3/lsp-hack"))]) (lsp-go . [(20171021 336) ((lsp-mode (3 0))) "Go support for lsp-mode" single ((:commit . "d270b7c0bd893fdc73a97763e07706830756cad2") (:url . "https://github.com/emacs-lsp/lsp-go") (:keywords "go" "golang"))]) (love-minor-mode . [(20170726 2236) ((lua-mode (20130419))) "Minor mode for working on LÖVE projects" single ((:commit . "3ca8f3405338f2d6f4fbcdd5e89342a46378543a") (:url . "https://github.com/ejmr/love-minor-mode"))]) (lorem-ipsum . [(20140911 1408) nil "Insert dummy pseudo Latin text." single ((:commit . "4b39f6fed455d67f635b3837cf5668bf74d0f6cd") (:keywords "tools" "language" "convenience"))]) (loop . [(20160813 707) nil "friendly imperative loop structures" single ((:commit . "e22807f83a0890dc8a904c51ee0742c34efccc6c") (:keywords "loop" "while" "for each" "break" "continue"))]) (look-mode . [(20151211 1026) nil "quick file viewer for image and text file browsing" single ((:commit . "d65f75e8ea24eff2ac31c53b4835b45127eedd56"))]) (look-dired . [(20160729 1623) ((look-mode (1 0))) "Extensions to look-mode for dired buffers" single ((:commit . "9bfa4e5e6f3810705b6426c88493ea0bf6b15640") (:url . "https://github.com/vapniks/look-dired") (:keywords "convenience"))]) (lolcode-mode . [(20111002 147) nil "Major mode for editing LOLCODE" single ((:commit . "1914f1ba87587ecf5f175eeb2144c28e9f039317") (:url . "http://github.com/bodil/lolcode-mode") (:keywords "lolcode" "major" "mode"))]) (logview . [(20170928 820) ((emacs (24 1)) (datetime (0 3))) "Major mode for viewing log files" single ((:commit . "72b6c5349206172a146b2c730b8ac040a92ebc3f") (:url . "https://github.com/doublep/logview") (:keywords "files" "tools"))]) (logstash-conf . [(20170524 1229) nil "basic mode for editing logstash configuration" single ((:commit . "4e127f9aec190786613445aa88efa307ff7c6748"))]) (logito . [(20120225 1255) ((eieio (1 3))) "logging library for Emacs" single ((:commit . "824acb89d2cc18cb47281a4fbddd81ad244a2052") (:keywords "lisp" "tool"))]) (logalimacs . [(20131021 1129) ((popwin (0 6 2)) (popup (0 5 0)) (stem (20130120))) "Front-end to logaling-command for Ruby gems" single ((:commit . "8286e39502250fc6c3c6656a7f46a8eee8e9a713") (:url . "https://github.com/logaling/logalimacs") (:keywords "translation" "logaling-command"))]) (log4j-mode . [(20160108 1118) nil "major mode for viewing log files" single ((:commit . "26171b1e723502055e085393b0ecdcb6db406010") (:url . "http://log4j-mode.sourceforge.net") (:keywords "tools"))]) (log4e . [(20170401 604) nil "provide logging framework for elisp" single ((:commit . "34309972ad02abcebbcff6b1682731978aef030c") (:url . "https://github.com/aki2o/log4e") (:keywords "log"))]) (lodgeit . [(20150312 649) nil "Paste to a lodgeit powered pastebin" single ((:commit . "ec9b8e5cbb17bcf8ac4bdddd1d361cb60e59384c") (:url . "https://github.com/ionrock/lodgeit-el") (:keywords "pastebin" "lodgeit"))]) (lockfile-mode . [(20170624 2207) nil "Major mode for .lock files" single ((:commit . "fcfef88460cb3cd67c4d83a1801d0326d282feac") (:url . "https://github.com/preetpalS/emacs-lockfile-mode"))]) (loccur . [(20161227 251) ((emacs (24 3))) "Perform an occur-like folding in current buffer" single ((:commit . "650d91dda0d313c8f445a0803c07809d857dee0f") (:url . "https://github.com/fourier/loccur") (:keywords "matching"))]) (loc-changes . [(20160801 1008) nil "keep track of positions even after buffer changes" single ((:commit . "4d1dcdf7631c23b1259ad4f72bf9686cf95fb46c") (:url . "http://github.com/rocky/emacs-loc-changes"))]) (load-theme-buffer-local . [(20120702 1336) nil "Install emacs24 color themes by buffer." single ((:commit . "e606dec66f16a06140b9aad625a4fd52bca4f936") (:url . "http://github.com/vic/color-theme-buffer-local") (:keywords "faces"))]) (load-relative . [(20170526 310) nil "relative file load (within a multi-file Emacs package)" tar ((:commit . "738896e3da491b35399178ed2c6bc92cc728d119") (:url . "http://github.com/rocky/emacs-load-relative") (:keywords "internal"))]) (lms . [(20170804 922) ((emacs (25 1))) "Squeezebox / Logitech Media Server frontend" single ((:url . "https://bitbucket.com/inigoserna/lms.el") (:keywords "multimedia"))]) (llvm-mode . [(20160617 2215) nil "Major mode for the LLVM assembler language." tar ((:commit . "8582763b6572004bcd65b569e7e462c56fc32e96"))]) (livid-mode . [(20131116 544) ((skewer-mode (1 5 3)) (s (1 8 0))) "Live browser eval of JavaScript every time a buffer changes" single ((:commit . "dfe5212fa64738bc4138bfebf349fbc8bc237c26") (:url . "https://github.com/pandeiro/livid-mode"))]) (livescript-mode . [(20140612 2121) nil "Major mode for editing LiveScript files" single ((:commit . "90a918d9686e256e6d4d439cc20f24dad8d3b804") (:url . "https://github.com/yhisamatsu/livescript-mode") (:keywords "languages" "livescript"))]) (livereload . [(20170628 2350) ((emacs (25)) (websocket (1 8))) "Livereload server" tar ((:commit . "1e501d7e46dbd476c2c7cc9d20b5ac9d41fb1955") (:keywords "convenience"))]) (lively . [(20171005 54) nil "interactively updating text" single ((:commit . "348675828c6a81bfa1ac311ca465aad813542c1b"))]) (live-py-mode . [(20180108 2138) ((emacs (24 3))) "Live Coding in Python" tar ((:commit . "913c97c03d149e0febbc62fd7983c08fbf7b2a04") (:url . "http://donkirkby.github.io/live-py-plugin/") (:keywords "live" "coding"))]) (live-code-talks . [(20150115 1423) ((emacs (24)) (cl-lib (0 5)) (narrowed-page-navigation (0 1))) "Support for slides with live code in them" single ((:commit . "fece58108939a53104f88d348298c9e122f25b75") (:keywords "docs" "multimedia"))]) (literate-starter-kit . [(20150730 1154) ((emacs (24 3))) "A literate starter kit to configure Emacs using Org-mode files." tar ((:commit . "6dce1d01781966c14558aa553cfc85008c06e115"))]) (literate-coffee-mode . [(20170211 715) ((coffee-mode (0 5 0))) "major-mode for Literate CoffeeScript" single ((:commit . "55ce0305495f4a38c8063c4bd63deb1e1252373d") (:url . "https://github.com/syohex/emacs-literate-coffee-mode"))]) (literal-string . [(20170301 730) ((markdown-mode (2 0)) (emacs (25))) "edit string literals in a dedicated buffer" single ((:commit . "2ca4fc08b8e19e6183b1f1db747bb0a4aa4f98eb") (:url . "https://github.com/joodie/literal-string-mode/") (:keywords "lisp" "tools" "docs"))]) (litecoin-ticker . [(20160611 1711) ((json (1 2))) "litecoin price in modeline" single ((:commit . "3d8047c736e4ee0b8638953f8cc63eaefad34106"))]) (litable . [(20160922 859) ((dash (2 6 0))) "dynamic evaluation replacement with emacs" single ((:commit . "90a2dca14a6da9b24fe332a65cff899ab4a90810") (:keywords "lisp"))]) (lit-mode . [(20141123 936) nil "Major mode for lit" single ((:commit . "c61c403afc8333a5649c5421ab1a6341dc1c7d92") (:keywords "languages" "tools"))]) (list-utils . [(20160414 702) nil "List-manipulation utility functions" single ((:commit . "acf18aca1131a90f8d673974673e3c5d8fdc6a86") (:url . "http://github.com/rolandwalker/list-utils") (:keywords "extensions"))]) (list-unicode-display . [(20150219 101) ((cl-lib (0 5))) "Search for and list unicode characters by name" single ((:commit . "222c21c68ccc930b2843ea919c960de9be3b55c2") (:keywords "convenience"))]) (list-register . [(20091203 1015) nil "List register" single ((:commit . "f8bec5dc3765174de1089549947d9ca9a1cdbe5f"))]) (list-processes+ . [(20131117 1135) nil "Add process management to `list-processes'" single ((:url . "not distributed yet"))]) (list-packages-ext . [(20151115 916) ((s (1 6 0)) (ht (1 5 0)) (persistent-soft (0 8 6))) "Extras for list-packages" single ((:commit . "b4dd644e4369c9aa66f5bb8895ea49ebbfd0a27a") (:keywords "convenience" "tools"))]) (list-environment . [(20151226 1856) nil "A tabulated process environment editor" single ((:commit . "b7ca30b05905047be2e55199a6475f8d98ce318b") (:keywords "processes" "unix"))]) (lispyville . [(20170907 926) ((lispy (0)) (evil (1 2 12)) (cl-lib (0 5)) (emacs (24 4))) "A minor mode for integrating evil with lispy." single ((:commit . "522fd8dcce23b2719c758e64f99b64591406f2f5") (:url . "https://github.com/noctuid/lispyville") (:keywords "vim" "evil" "lispy" "lisp" "parentheses"))]) (lispyscript-mode . [(20170720 1217) nil "Major mode for LispyScript code." single ((:commit . "def632e3335b0c481fbcf5a17f18b0a8c58dd12f") (:url . "https://github.com/krisajenkins/lispyscript-mode") (:keywords "lisp" "languages"))]) (lispy . [(20180105 1040) ((emacs (24 1)) (ace-window (0 9 0)) (iedit (0 9 9)) (swiper (0 7 0)) (hydra (0 13 4)) (zoutline (0 1 0))) "vi-like Paredit" tar ((:commit . "ee96631f416c410dd30077311f593bf1c58eb50e"))]) (lispxmp . [(20170110 1508) nil "Automagic emacs lisp code annotation" single ((:url . "http://www.emacswiki.org/cgi-bin/wiki/download/lispxmp.el") (:keywords "lisp" "convenience"))]) (lisp-extra-font-lock . [(20160930 1227) nil "Highlight bound variables and quoted exprs." single ((:commit . "092f5a6e75ddfc8051b252f10e182723a17980e4") (:url . "https://github.com/Lindydancer/lisp-extra-font-lock") (:keywords "languages" "faces"))]) (liso-theme . [(20160410 1329) nil "Eclectic Dark Theme for GNU Emacs" single ((:commit . "844688245eb860d23043455e165ee24503454c81") (:url . "https://github.com/caisah/liso-theme") (:keywords "theme" "themes"))]) (liquid-types . [(20151201 2335) ((flycheck (0 13)) (dash (1 2)) (emacs (24 1)) (popup (0 5 2)) (pos-tip (0 5 0)) (flycheck-liquidhs (0 0 1)) (button-lock (1 0 2))) "show inferred liquid-types" single ((:commit . "cc4bacbbf204ef9cf0756f78dfebee2c6ae14d7b"))]) (linum-relative . [(20160510 118) nil "display relative line number in emacs." single ((:commit . "b8a99dcfe38a491172a8193053fb7849634b43c0") (:url . "http://github.com/coldnew/linum-relative") (:keywords "converience"))]) (linum-off . [(20160217 1337) nil "Provides an interface for turning line-numbering off" single ((:commit . "116e66ac259b183e0763b85616888316ab196822") (:url . "http://www.emacswiki.org/emacs/auto-indent-mode.el ") (:keywords "line" "numbering"))]) (linphone . [(20130524 409) nil "Emacs interface to Linphone" tar ((:commit . "99af3db941b7f4e5272bb48bff96c1ce4ceac302") (:url . "https://github.com/zabbal/emacs-linphone") (:keywords "comm"))]) (link-hint . [(20170923 855) ((avy (0 3 0)) (emacs (24 1)) (cl-lib (0 5))) "Use avy to open or copy visible urls." single ((:commit . "0294df85aee10b47fcf6c2c9bfe7e1038660fa21") (:url . "https://github.com/noctuid/link-hint.el") (:keywords "url"))]) (link . [(20140717 2029) nil "Hypertext links in text buffers" single ((:commit . "a23b8f4a422d0de69a006ed010eff5795319db98") (:keywords "interface" "hypermedia"))]) (lingr . [(20100807 1031) nil "Lingr Client for GNU Emacs" single ((:commit . "4215a8704492d3c860097cbe2649936c22c196df") (:url . "http://github.com/lugecy/lingr-el") (:keywords "chat" "client" "internet"))]) (light-soap-theme . [(20150607 745) ((emacs (24))) "Emacs 24 theme with a light background." single ((:commit . "76a787bd40c6b567ae68ced7f5d9f9f10725e00d"))]) (lice . [(20170220 143) nil "License And Header Template" tar ((:commit . "4339929927c62bd636f89bb39ea999d18d269250") (:url . "https://github.com/buzztaiki/lice-el") (:keywords "template" "license" "tools"))]) (libmpdee . [(20160117 1501) nil "Client end library for mpd, a music playing daemon" single ((:commit . "a6ca3b7d6687f3ba60996b9b5044ad1d3b228290") (:keywords "music" "mpd"))]) (lib-requires . [(20170307 855) nil "Commands to list Emacs Lisp library dependencies." single ((:url . "https://www.emacswiki.org/emacs/download/lib-requires.el") (:keywords "libraries" "files"))]) (lfe-mode . [(20170121 454) nil "Lisp Flavoured Erlang mode" tar ((:commit . "2880c8a2a7fe998238b6490fe3e3c484b5c5985e"))]) (lexbind-mode . [(20141027 729) nil "Puts the value of lexical-binding in the mode line" single ((:commit . "fa0a6848c1cfd3fbf45db43dc2deef16377d887d") (:url . "https://github.com/spacebat/lexbind-mode") (:keywords "convenience" "lisp"))]) (levenshtein . [(20090830 340) nil "Edit distance between two strings." single ((:commit . "070925197ebf6b704e6e00c4f2d2ec783f3df38c") (:keywords "lisp"))]) (leuven-theme . [(20170919 252) nil "Awesome Emacs color theme on white background" tar ((:commit . "9d31a9d4ed763d6309e9d44985cd8b4a5a2fb500") (:url . "https://github.com/fniessen/emacs-leuven-theme") (:keywords "color" "theme"))]) (letterbox-mode . [(20170701 1825) ((emacs (24 3))) "hide sensitive text on a buffer" single ((:commit . "88c67a51d67216d569a28e8423200883fde096dd") (:url . "http://github.com/pacha64/letterbox-mode") (:keywords "password" "convenience"))]) (letcheck . [(20160202 1148) nil "Check the erroneous assignments in let forms" single ((:commit . "edf188ca2f85349e971b83f164c6484264e79426") (:url . "https://github.com/Fuco1/letcheck") (:keywords "convenience"))]) (less-css-mode . [(20160930 2153) nil "Major mode for editing LESS CSS files (lesscss.org)" single ((:commit . "2c3f69640c3c98457255f601db98f520dee2e7b6") (:url . "https://github.com/purcell/less-css-mode") (:keywords "less" "css" "mode"))]) (lentic-server . [(20160717 1352) ((lentic (0 8)) (web-server (0 1 1))) "Web Server for Emacs Literate Source" single ((:commit . "8e809fafbb27a98f815b544d9d9ee15843eb6a36"))]) (lentic . [(20161202 1352) ((emacs (24 4)) (m-buffer (0 13)) (dash (2 5 0)) (f (0 17 2)) (s (1 9 0))) "One buffer as a view of another" tar ((:commit . "678db9327209a1e6200c9272f4080595dc68f8a5"))]) (lenlen-theme . [(20170328 1945) ((color-theme-solarized (20150110))) "a solarized-based kawaii light theme" single ((:commit . "b8a6412c81633b10fb98ba0930f55b25071c084a") (:url . "http://hins11.yu-yake.com/"))]) (lemon-mode . [(20130216 504) nil "A major mode for editing lemon grammar files" single ((:commit . "155bfced6c9afc8072a0133d3d1baa54c6d67430") (:keywords "lemon"))]) (legalese . [(20150820 1024) nil "Add legalese to your program files" single ((:commit . "ec23e69d18329456beed9546a1d6c72f96db91cf") (:url . "https://github.com/jorgenschaefer/legalese") (:keywords "convenience"))]) (leerzeichen . [(20170422 613) nil "Minor mode to display whitespace characters." single ((:commit . "5acf9855ecb2b2cd5da4402bb48df149e7525cc5") (:url . "http://github.com/fgeller/leerzeichen.el") (:keywords "whitespace" "characters"))]) (ledger-mode . [(20171227 1709) ((emacs (24 3))) "Helper code for use with the \"ledger\" command-line tool" tar ((:commit . "cf0c9d84a4f24c1af8059b73cf4ff40343f2b8b2"))]) (leanote . [(20161222 1739) ((emacs (24 4)) (cl-lib (0 5)) (request (0 2)) (let-alist (1 0 3)) (pcache (0 4 0)) (s (1 10 0)) (async (1 9))) "A minor mode writing markdown leanote" single ((:commit . "d499e7b59bb1f1a2fabc0e4c26fb101ed62ebc7b") (:url . "https://github.com/aborn/leanote-emacs") (:keywords "leanote" "note" "markdown"))]) (lean-mode . [(20180105 1619) ((emacs (24 3)) (dash (2 12 0)) (dash-functional (1 2 0)) (s (1 10 0)) (f (0 19 0)) (flycheck (30))) "A major mode for the Lean language" tar ((:commit . "3403179a38693a221bfa86def0c99f6342c5eb73") (:url . "https://github.com/leanprover/lean-mode") (:keywords "languages"))]) (ldap-mode . [(20091203 1015) nil "major modes for editing LDAP schema and LDIF files" single ((:commit . "8761a835e90b990fb5fe70173ecdcd6f4b776cb0") (:url . "http://www.loveshack.ukfsn.org/emacs") (:keywords "data"))]) (lcb-mode . [(20160815 2240) ((emacs (24))) "LiveCode Builder major mode" single ((:commit . "be0768e9aa6f9b8e76f2230f4f7f4d152a766b9a") (:url . "https://github.com/peter-b/lcb-mode") (:keywords "languages"))]) (lavender-theme . [(20170808 613) ((emacs (24 0))) "an Emacs 24 theme based on Lavender (tmTheme)" single ((:commit . "ef5e959b95d7fb8152137bc186c4c24e986c1e3c") (:url . "https://github.com/emacsfodder/tmtheme-to-deftheme"))]) (launchctl . [(20150518 609) ((emacs (24 1))) "Interface to launchctl on Mac OS X." single ((:commit . "73f8f52a5aa9a0be9bdcf68c29ad0fa2b4a115a4") (:url . "http://github.com/pekingduck/launchctl-el") (:keywords "tools" "convenience"))]) (launch-mode . [(20170105 2112) ((emacs (24 4))) "Major mode for launch-formatted text" tar ((:commit . "25ebd4ba77afcbe729901eb74923dbe9ae81c313") (:url . "https://github.com/iory/launch-mode"))]) (launch . [(20130619 1504) nil "launch files with OS-standard associated applications." single ((:commit . "e7c3b573fc05fe4d3d322389079909311542e799") (:url . "https://github.com/sfllaw/emacs-launch") (:keywords "convenience" "processes"))]) (latexdiff . [(20171225 1623) ((emacs (24 4))) "Latexdiff integration in Emacs" single ((:commit . "665aa65707d0e8c5778de70f38a42be4ba1def5d") (:url . "http://github.com/galaunay/latexdiff.el") (:keywords "tex" "vc" "tools" "git" "helm"))]) (latex-unicode-math-mode . [(20170123 1016) nil "Input method for Unicode math symbols" tar ((:commit . "e8931e68214ca94e6a04080ebc629693d5881884") (:url . "https://github.com/Christoph-D/latex-unicode-math-mode"))]) (latex-preview-pane . [(20151023 1303) nil "Makes LaTeX editing less painful by providing a updatable preview pane" tar ((:commit . "1a0539ab70eaf5dd31c2c94773dddd6f437fed41"))]) (latex-pretty-symbols . [(20151112 244) nil "Display many latex symbols as their unicode counterparts" single ((:url . "https://bitbucket.org/mortiferus/latex-pretty-symbols.el") (:keywords "convenience" "display"))]) (latex-math-preview . [(20170522 1455) nil "preview LaTeX mathematical expressions." single ((:commit . "775887a89447dd19541b121161cc02e9799d0d3a") (:url . "https://gitlab.com/latex-math-preview/latex-math-preview") (:keywords "latex" "tex"))]) (latex-extra . [(20170816 1847) ((auctex (11 86 1)) (cl-lib (0 5))) "Adds several useful functionalities to LaTeX-mode." single ((:commit . "82d99b8b0c2db20e5270749582e03bcc2443ffb5") (:url . "http://github.com/Malabarba/latex-extra") (:keywords "tex"))]) (lastpass . [(20171208 216) ((emacs (24 4)) (seq (1 9)) (cl-lib (0 5))) "LastPass command wrapper" single ((:commit . "a4529ce70b8187ed9ac4972997df152af58ef2eb") (:url . "https://github.com/storvik/emacs-lastpass") (:keywords "extensions" "processes" "lpass" "lastpass"))]) (language-detection . [(20161123 1013) ((emacs (24)) (cl-lib (0 5))) "Automatic language detection from code snippets" single ((:commit . "54a6ecf55304fba7d215ef38a4ec96daff2f35a4") (:url . "https://github.com/andreasjansson/language-detection.el"))]) (langtool . [(20170917 2154) ((cl-lib (0 3))) "Grammar check utility using LanguageTool" single ((:commit . "bae4bdd240583b2253b4ff03af5295146e285103") (:url . "https://github.com/mhayashi1120/Emacs-langtool") (:keywords "docs"))]) (langdoc . [(20150217 2245) ((cl-lib (0 2))) "Help to define help document mode for various languages" single ((:commit . "2c7223bacb116992d700ecb19a60df5c09c63424") (:url . "https://github.com/tom-tan/langdoc/") (:keywords "convenience" "eldoc"))]) (lang-refactor-perl . [(20131122 1327) nil "Simple refactorings, primarily for Perl" single ((:commit . "691bd69639de6b7af357e3b7143563ececd9c497") (:url . "https://github.com/jplindstrom/emacs-lang-refactor-perl") (:keywords "languages" "refactoring" "perl"))]) (lacarte . [(20170307 837) nil "Execute menu items as commands, with completion." single ((:url . "https://www.emacswiki.org/emacs/download/lacarte.el") (:keywords "menu-bar" "menu" "command" "help" "abbrev" "minibuffer" "keys" "completion" "matching" "local" "internal" "extensions"))]) (labburn-theme . [(20170502 207) nil "A lab color space zenburn theme." single ((:commit . "e95334acd8a73fbe8e156f70e047014a87e92e66") (:url . "https://github.com/ksjogo/labburn-theme") (:keywords "theme" "zenburn"))]) (kwin . [(20150308 1112) nil "communicatewith the KWin window manager" single ((:commit . "d4f8f3593598b71ee596e0a87b2c1d6a912a9566") (:url . "http://github.com/reactormonk/kwin-minor-mode"))]) (kv . [(20140108 734) nil "key/value data structure functions" single ((:commit . "721148475bce38a70e0b678ba8aa923652e8900e") (:keywords "lisp"))]) (kurecolor . [(20170808 602) ((emacs (24 1)) (s (1 0))) "color editing goodies for Emacs" single ((:commit . "3e8b63e89e294179e42a14a4a357c29a72669a22"))]) (kubernetes-tramp . [(20171026 922) ((emacs (24)) (cl-lib (0 5))) "TRAMP integration for kubernetes containers" single ((:commit . "9fa84df71f6e88bc23a756cdf2df393a35aec945") (:url . "https://github.com/gruggiero/kubernetes-tramp") (:keywords "kubernetes" "convenience"))]) (kubernetes-evil . [(20171122 1819) ((kubernetes (0 12 0)) (evil (1 2 12))) "Kubernetes keybindings for evil-mode." single ((:commit . "d4ce5eb5da1ea0879b7d3266d97aecc8aee2807c"))]) (kubernetes . [(20171122 1819) ((emacs (25 1)) (dash (2 12 0)) (magit (2 8 0))) "Magit-like porcelain for Kubernetes." tar ((:commit . "d4ce5eb5da1ea0879b7d3266d97aecc8aee2807c"))]) (ksp-cfg-mode . [(20170724 1127) ((cl-lib (0 5))) "major mode for editing KSP CFG files" single ((:commit . "713a22ee28688e581ec3ad60228c853b516a14b6") (:url . "http://github.com/lashtear/ksp-cfg-mode") (:keywords "data"))]) (kroman . [(20150827 1640) nil "Korean hangul romanization" single ((:commit . "90402b6ae40383e75d8ba97d66eee93eebf40f70") (:keywords "korean" "roman"))]) (kpm-list . [(20170924 652) nil "An emacs buffer list that tries to intelligently group together buffers." single ((:commit . "e0f5112e5ce8ec1b603f4428fa51681c68bb28f5") (:url . "https://github.com/KMahoney/kpm-list/"))]) (kotlin-mode . [(20171009 1301) ((emacs (24 3))) "Major mode for kotlin" single ((:commit . "ebcf6f3730f455894ebb7ed8e42950f66e8e1c1d") (:keywords "languages"))]) (kosmos-theme . [(20170502 1150) ((emacs (24))) "Black and lightgray theme with not so much syntax highlighting." single ((:commit . "616456d2376a75dc31190ad65137d179fbad4336") (:url . "https://github.com/habamax/kosmos-theme"))]) (korean-holidays . [(20170228 2045) nil "Korean holidays for calendar." single ((:commit . "6e94c2e071069aee9ed12ebbfd9b0ad863b8c78e") (:url . "https://github.com/tttuuu888/korean-holidays") (:keywords "calendar"))]) (kooten-theme . [(20161023 205) ((emacs (24 1))) "Dark color theme" single ((:commit . "d10197b4dd7af02cd14aeab2573c273a294798c3") (:url . "http://github.com/kootenpv/emacs-kooten-theme") (:keywords "themes"))]) (kolon-mode . [(20140122 334) nil "Syntax highlighting for Text::Xslate's Kolon syntax" single ((:commit . "5af0955e280ae991862189ebecd3937c5fc8fb9f") (:url . "https://github.com/samvtran/kolon-mode") (:keywords "xslate" "perl"))]) (kodi-remote . [(20171008 2226) ((request (0 2 0)) (let-alist (1 0 4)) (json (1 4)) (elnode (20140203 1506))) "Remote Control for Kodi" single ((:commit . "479075d96857696cf029cd1f482b9f2f31d82452") (:url . "http://github.com/spiderbit/kodi-remote.el") (:keywords "kodi" "tools" "convinience"))]) (know-your-http-well . [(20160208 1504) nil "Look up the meaning of HTTP headers, methods, relations, status codes" tar ((:commit . "3cc5ab6d2764ab7aacb1b6e026abaccbeb6c37f2"))]) (kixtart-mode . [(20150611 904) ((emacs (24))) "major mode for Kixtart scripting files" single ((:commit . "1c2356797e7b766bbaaa2b341176a8b10499cd79") (:url . "https://github.com/ryrun/kixtart-mode") (:keywords "languages"))]) (kiwix . [(20170927 120) ((emacs (24 4)) (cl-lib (0 5))) "Kiwix interface and support." single ((:commit . "86dbead6c0017beefd92a0b64a0bb5f5d12c5b16") (:url . "https://github.com/stardiviner/kiwix.el") (:keywords "kiwix" "wikipedia"))]) (kivy-mode . [(20160902 1041) nil "Emacs major mode for editing Kivy files" single ((:commit . "00c161d076fc754357a133e483699146cdd81518"))]) (kite-mini . [(20160508 406) ((dash (2 11 0)) (websocket (1 5))) "Remotely evaluate JavaScript in the WebKit debugger" tar ((:commit . "a68619dbc109c7989f3448426d8c1ee9e797c11f") (:url . "https://github.com/tungd/kite-mini.el") (:keywords "webkit"))]) (kite . [(20130201 1138) ((json (1 2)) (websocket (0 93 1))) "WebKit inspector front-end" tar ((:commit . "7ed74d1147a6ddd152d3da65dc30df3517d53144") (:keywords "tools"))]) (killer . [(20120808 422) nil "kill and delete text" single ((:commit . "7bbb223f875402a7b2abee4baa5a54f10bd97212") (:url . "http://github.com/tarsius/killer") (:keywords "convenience"))]) (kill-ring-search . [(20140422 855) nil "incremental search for the kill ring" single ((:commit . "23535b4a01a1cb1574604e36c49614e84e85c883") (:url . "http://nschum.de/src/emacs/kill-ring-search/") (:keywords "convenience" "matching"))]) (kill-or-bury-alive . [(20171231 2218) ((emacs (24 4)) (cl-lib (0 5))) "Precise control over buffer killing in Emacs" single ((:commit . "d21aa7a12f1a76d47249db36eb9825242df9d512") (:url . "https://github.com/mrkkrp/kill-or-bury-alive") (:keywords "buffer" "killing" "convenience"))]) (kibit-helper . [(20150508 833) ((s (0 8)) (emacs (24))) "Conveniently use the Kibit Leiningen plugin from Emacs" single ((:commit . "16bdfff785ee05d8e74a5780f6808506d990cef7") (:url . "http://www.github.com/brunchboy/kibit-helper") (:keywords "languages" "clojure" "kibit"))]) (kfg . [(20140908 2238) ((f (0 17 1))) "an emacs configuration system" single ((:commit . "d2c9dd26618fb2f7bf1e7b6eae193b1cceba3c97") (:url . "https://github.com/abingham/kfg"))]) (keyword-search . [(20170309 2247) nil "browser keyword search from Emacs" tar ((:commit . "33682e93429027805ee7c51c5f6f608872b6f5dc") (:url . "https://github.com/juhp/keyword-search") (:keywords "web" "search" "keyword"))]) (keyswap . [(20160813 257) ((emacs (24 3))) "swap bindings between key pairs" single ((:commit . "cd682a7c4a8d64d6bae6a005db5045232e5e7b95") (:url . "http://github.com/hardenedapple/keyswap.el") (:keywords "convenience"))]) (keyset . [(20150219 2130) ((dash (2 8 0)) (cl-lib (0 5))) "A small library for structuring key bindings." single ((:commit . "41bbfc4dbed5de6ecf3ec1dba634c7c26241ca84") (:url . "https://github.com/HKey/keyset"))]) (keymap-utils . [(20170614 1134) ((cl-lib (0 3))) "keymap utilities" single ((:commit . "0130f32e5ade649dd2738206a80570e450906ef6") (:url . "https://github.com/tarsius/keymap-utils") (:keywords "convenience" "extensions"))]) (keyfreq . [(20160516 716) ((cl-lib (0 5))) "track command frequencies" single ((:commit . "9c665c8c219d18866403897936427bb408e3d6b9"))]) (keydef . [(20090428 1231) nil "a simpler way to define keys, with kbd syntax" single ((:commit . "dff2be9f58d12d8c6a490ad0c1b2b10b55528dc0") (:keywords "convenience" "lisp" "customization" "keyboard" "keys"))]) (keychain-environment . [(20170118 626) nil "load keychain environment variables" single ((:commit . "7c08e8c4c3ea4d6eaee12d710a56793771f837c5") (:url . "https://github.com/tarsius/keychain-environment") (:keywords "gnupg" "pgp" "ssh"))]) (key-seq . [(20150907 56) ((key-chord (0 6))) "map pairs of sequentially pressed keys to commands" single ((:commit . "e29b083a6427d061638749194fc249ef69ad2cc0") (:url . "http://github.com/vlevit/key-seq.el") (:keywords "convenience" "keyboard" "keybindings"))]) (key-leap . [(20160831 747) ((emacs (24 3))) "Leap between lines by typing keywords" single ((:commit . "b3f6ef15c8a13870475d5af159fa24b30f97dea0") (:url . "https://github.com/MartinRykfors/key-leap") (:keywords "point" "convenience"))]) (key-intercept . [(20140210 2349) nil "Intercept prefix keys" single ((:commit . "d9a60edb4ce893f2d3d94f242164fdcc62d43cf2") (:url . "http://github.com/tarao/key-intercept-el") (:keywords "keyboard"))]) (key-combo . [(20150324 739) nil "map key sequence to commands" single ((:commit . "2fb5c65bc82d5bd2964e2b163822429ab45d90a1") (:url . "https://github.com/uk-ar/key-combo") (:keywords "keyboard" "input"))]) (key-chord . [(20160227 438) nil "map pairs of simultaneously pressed keys to commands" single ((:commit . "72443e9ff3c4f1c3ccaced3130236801efde3d83") (:keywords "keyboard" "chord" "input"))]) (kerl . [(20150424 1305) nil "Emacs integration for kerl" single ((:commit . "1732ee26213f021bf040919c45ad276aafcaae14") (:url . "http://github.com/correl/kerl.el/") (:keywords "tools"))]) (kdeconnect . [(20161022 700) nil "An interface for KDE Connect" single ((:commit . "a91a045cd4aabd671b689361efa10f2e01ad8e8e") (:keywords "kdeconnect" "android"))]) (karma . [(20160220 445) ((pkg-info (0 4)) (emacs (24))) "Karma Test Runner Emacs Integration" single ((:commit . "31d3e7708246183d7ed0686be92bf23140af348c") (:url . "http://github.com/tonini/karma.el") (:keywords "language" "javascript" "js" "karma" "testing"))]) (kaomoji . [(20171226 2040) ((emacs (24 3)) (helm-core (1 9 1))) "Input kaomoji superb easily" tar ((:commit . "90a1490743b2a30762f5454c9d9309018eff83dd") (:url . "https://github.com/kuanyui/kaomoji.el") (:keywords "tools" "fun"))]) (kaolin-themes . [(20180103 1058) ((emacs (25 1)) (autothemer (0 2 2)) (cl-lib (0 6))) "A set of eye pleasing themes" tar ((:commit . "dc7d63e48da13736d2d79402d385d79ebe797509") (:url . "https://github.com/ogdenwebb/emacs-kaolin-themes"))]) (kanji-mode . [(20160826 439) nil "View stroke order for kanji characters at cursor" tar ((:commit . "eda4f8666486689d36317db7dbda54fb73d3e3d2") (:url . "http://github.com/wsgac/kanji-mode "))]) (kanban . [(20170418 110) nil "Parse org-todo headlines to use org-tables as Kanban tables" single ((:keywords "outlines" "convenience"))]) (kaleidoscope-evil-state-flash . [(20170728 320) ((evil (1 2 12)) (kaleidoscope (0 1 0)) (s (1 11 0))) "Flash keyboard LEDs when changing Evil state" single ((:commit . "e932103e043bd1503bf5d98dd117ff6737b852bc") (:url . "https://github.com/algernon/kaleidoscope.el"))]) (kaleidoscope . [(20170808 117) ((s (1 11 0))) "Controlling Kaleidoscope-powered devices." single ((:commit . "e932103e043bd1503bf5d98dd117ff6737b852bc") (:url . "https://github.com/algernon/kaleidoscope.el"))]) (kakapo-mode . [(20171003 2151) ((cl-lib (0 5))) "TABS (hard or soft) for indentation (leading whitespace), and SPACES for alignment." single ((:commit . "67d516138172fd60782df94454b3d0bd247e84f3") (:url . "https://github.com/listx/kakapo-mode") (:keywords "indentation"))]) (kaesar-mode . [(20160128 208) ((kaesar (0 1 4)) (cl-lib (0 3))) "Encrypt/Decrypt buffer by AES with password." single ((:commit . "d087075cb1a46c2c85cd075220e09b2eaef9b86e") (:url . "https://github.com/mhayashi1120/Emacs-kaesar") (:keywords "data" "convenience"))]) (kaesar-file . [(20160128 208) ((kaesar (0 1 1))) "Encrypt/Decrypt file by AES with password." single ((:commit . "d087075cb1a46c2c85cd075220e09b2eaef9b86e") (:url . "https://github.com/mhayashi1120/Emacs-kaesar") (:keywords "data" "files"))]) (kaesar . [(20160128 208) ((cl-lib (0 3))) "Another AES algorithm encrypt/decrypt string with password." single ((:commit . "d087075cb1a46c2c85cd075220e09b2eaef9b86e") (:url . "https://github.com/mhayashi1120/Emacs-kaesar") (:keywords "data"))]) (jvm-mode . [(20150422 8) ((dash (2 6 0)) (emacs (24))) "Monitor and manage your JVMs" single ((:commit . "3355dbaf5b0185aadfbad24160399abb32c5bea0") (:url . "https://github.com/martintrojer/jvm-mode.el") (:keywords "convenience"))]) (jumplist . [(20151119 1945) ((cl-lib (0 5))) "Jump like vim jumplist or ex jumplist" single ((:commit . "c482d137d95bc5e1bcd790cdbde25b7f729b2502") (:url . "https://github.com/ganmacs/jumplist") (:keywords "jumplist" "vim"))]) (jump-tree . [(20171014 851) nil "Treat position history as a tree" tar ((:commit . "282267dc6305889e31d46b405b7ad4dfe5923b66") (:url . "https://github.com/yangwen0228/jump-tree") (:keywords "convenience" "position" "jump" "tree"))]) (jump-to-line . [(20130122 853) nil "Jump to line number at point." single ((:commit . "01ef8c3529d85e6c59cc20840acbc4a8e8325bc8") (:keywords "jump" "line" "back" "file" "ruby" "csharp" "python" "perl"))]) (jump-char . [(20160505 851) nil "navigation by char" single ((:commit . "9c1c3618662e7b43d5937342816fd63b5a31e861") (:url . "https://github.com/lewang/jump-char"))]) (jump . [(20161126 1728) ((findr (0 7)) (inflections (2 4)) (cl-lib (0 5))) "build functions which contextually jump between files" single ((:commit . "e4f1372cf22e811faca52fc86bdd5d817498a4d8") (:url . "http://github.com/eschulte/jump.el") (:keywords "project" "convenience" "navigation"))]) (jumblr . [(20170727 1343) ((s (1 8 0)) (dash (2 2 0))) "an anagram game for emacs" tar ((:commit . "34533dfb9db8538c005f4eaffafeff7ed193729f") (:url . "https://github.com/mkmcc/jumblr") (:keywords "anagram" "word game" "games"))]) (julia-shell . [(20161125 1110) ((julia-mode (0 3))) "Major mode for an inferior Julia shell" tar ((:commit . "583a0b2ca20461ab4356929fd0f2212c22341b69"))]) (julia-repl . [(20171116 46) ((emacs (25))) "A minor mode for a Julia REPL" single ((:commit . "f808a12e7ebe403f82036899c2dace640be73154") (:keywords "languages"))]) (julia-mode . [(20171116 642) nil "Major mode for editing Julia source code" single ((:commit . "2ef6992125a85674532a1e37dacd5c60bee4feeb") (:url . "https://github.com/JuliaLang/julia") (:keywords "languages"))]) (judge-indent . [(20160609 622) nil "detect indent style (indent and tab widths) and change behavior of Emacs" single ((:keywords "indent" "tab"))]) (jtags . [(20160211 1229) nil "enhanced tags functionality for Java development" tar ((:commit . "b50daa48510f71e74ce0ec2eb85030896a79cf96") (:url . "http://jtags.sourceforge.net") (:keywords "languages" "tools"))]) (jsx-mode . [(20130908 1024) nil "major mode for JSX" single ((:commit . "47213429c09259126cddb5742482cfc444c70d50") (:url . "https://github.com/jsx/jsx-mode.el"))]) (jst . [(20150604 438) ((s (1 9)) (f (0 17)) (dash (2 10)) (pcache (0 3)) (emacs (24 4))) "JS test mode" single ((:commit . "2a3fd16c992f7790dc67134ef06a814c3d20579c") (:url . "https://github.com/cheunghy/jst-mode") (:keywords "js" "javascript" "jasmine" "coffee" "coffeescript"))]) (jss . [(20130508 723) ((emacs (24 1)) (websocket (0)) (js2-mode (0))) "An emacs interface to webkit and mozilla debuggers" tar ((:commit . "41749257aecf13c7bd6ed489b5ab3304d06e40bc") (:keywords "languages"))]) (jsonnet-mode . [(20171005 24) ((emacs (24))) "Major mode for editing jsonnet files" single ((:commit . "efe768fdcff25d746674fbbf229b9e1a7efea4f1") (:url . "https://github.com/mgyucht/jsonnet-mode") (:keywords "languages"))]) (json-snatcher . [(20150511 2047) ((emacs (24))) "Grabs the path to JSON values in a JSON file" single ((:commit . "c4cecc0a5051bd364373aa499c47a1bb7a5ac51c") (:url . "http://github.com/sterlingg/json-snatcher"))]) (json-rpc . [(20180104 728) ((emacs (24 1)) (cl-lib (0 5))) "JSON-RPC library" single ((:commit . "0992ae71964055230aa5d4d934a1b93b5dfd7eb4") (:url . "https://github.com/skeeto/elisp-json-rpc"))]) (json-reformat . [(20160212 53) nil "Reformatting tool for JSON" single ((:commit . "8eb6668ed447988aea06467ba8f42e1f2178246f") (:url . "https://github.com/gongo/json-reformat") (:keywords "json"))]) (json-navigator . [(20171220 19) ((emacs (24 3)) (hierarchy (0 6 0))) "View and navigate JSON structures" single ((:commit . "7a1fec93500c46ccba4086d10115d8188607d0d0") (:url . "https://github.com/DamienCassou/json-navigator"))]) (json-mode . [(20170719 2205) ((json-reformat (0 0 5)) (json-snatcher (1 0 0))) "Major mode for editing JSON files." single ((:commit . "32d5a9b3319e6797c4d52e7d61a65e5638102ef4") (:url . "https://github.com/joshwnj/json-mode"))]) (jsfmt . [(20150727 1525) nil "Interface to jsfmt command for javascript files" single ((:commit . "68109120f553fbc651fafb6fc35ed83c3e79f8a6") (:url . "https://github.com/brettlangdon/jsfmt.el"))]) (jscs . [(20151015 1049) ((emacs (24 1)) (cl-lib (0 5))) "Consistent JavaScript editing using JSCS" single ((:commit . "9d39d0f2355e69a020bf76242504f3a33e013ccf") (:url . "https://github.com/papaeye/emacs-jscs") (:keywords "languages" "convenience"))]) (js3-mode . [(20160515 850) nil "An improved JavaScript editing mode" tar ((:commit . "229aeb374f1b1f3ee5c59b8ba3eebb6385c232cb") (:keywords "javascript" "languages"))]) (js2-refactor . [(20171207 202) ((js2-mode (20101228)) (s (1 9 0)) (multiple-cursors (1 0 0)) (dash (1 0 0)) (s (1 0 0)) (yasnippet (0 9 0 1))) "A JavaScript refactoring library for emacs." tar ((:commit . "a86cb31b1c9f9719b4c4199a721fe2b8b58a015c"))]) (js2-mode . [(20171224 1833) ((emacs (24 1)) (cl-lib (0 5))) "Improved JavaScript editing mode" tar ((:commit . "d72ed2060337e9f4400bcec85f8daaf18cb05413") (:url . "https://github.com/mooz/js2-mode/") (:keywords "languages" "javascript"))]) (js2-highlight-vars . [(20170418 1129) ((emacs (24 4)) (js2-mode (20150908))) "highlight occurrences of the variable under cursor" single ((:commit . "e3bb177e50f76b272e8073a94d4f46be6512a163") (:url . "http://mihai.bazon.net/projects/editing-javascript-with-emacs-js2-mode/js2-highlight-vars-mode"))]) (js2-closure . [(20170816 1218) ((js2-mode (20150909))) "Google Closure dependency manager" single ((:commit . "f59db386d7d0693935d0bf52babcd2c203c06d04") (:url . "http://github.com/jart/js2-closure") (:keywords "javascript" "closure"))]) (js-import . [(20170115 853) ((emacs (24 4)) (f (0 19 0)) (projectile (0 14 0)) (dash (2 13 0))) "Import Javascript files from your current project or dependencies" single ((:commit . "7b1b7c963e3df9c76ed6cfb66c908c80775c6cfb") (:url . "https://github.com/jakoblind/js-import") (:keywords "tools"))]) (js-format . [(20170118 1702) ((emacs (24 1)) (js2-mode (20101228))) "Format or transform code style using NodeJS server with different javascript formatter" tar ((:commit . "544bda9be72b74ec2d442543ba60cff727d96669") (:url . "http://github.com/futurist/js-format.el") (:keywords "js" "javascript" "format" "standard" "jsbeautify" "esformatter" "airbnb"))]) (js-doc . [(20160714 2134) nil "Insert JsDoc style comment easily" single ((:commit . "f0606e89d5aa89146f96edb38cf69af0068a9d1e") (:url . "https://github.com/mooz/js-doc") (:keywords "document" "comment"))]) (js-comint . [(20171129 2056) ((emacs (24 3))) "JavaScript interpreter in window." single ((:commit . "83e932e4a83d1a69098ee87e0ab911d299368e60") (:url . "https://github.com/redguardtoo/js-comint") (:keywords "javascript" "node" "inferior-mode" "convenience"))]) (js-codemod . [(20171104 454) ((emacs (24 4))) "Run js-codemod on current line or selected region" tar ((:commit . "014e56c846487d1eeaf8a91dd503b9d96eb1510a") (:keywords "js" "codemod" "region"))]) (js-auto-format-mode . [(20180103 718) ((emacs (24))) "Minor mode for auto-formatting JavaScript code" single ((:commit . "37e83641fd5eab45e813e4bc74a835fe7229c160") (:url . "https://github.com/ybiquitous/js-auto-format-mode") (:keywords "languages"))]) (js-auto-beautify . [(20161030 2209) ((web-beautify (0 3 1)) (web-mode (14 0 27))) "auto format you js/jsx file" single ((:commit . "180d15af7b5dfaab4ee1954cca2fdc797932f9de"))]) (jquery-doc . [(20150812 58) nil "jQuery api documentation interface for emacs" tar ((:commit . "24032284919b942ec27707d929bdd8bf48420062") (:keywords "docs" "jquery"))]) (jq-mode . [(20171116 815) ((emacs (25 1))) "Edit jq scripts." tar ((:commit . "8384a1926cc22000e5e42f86f28d807fd6149f8e") (:url . "https://github.com/ljos/jq-mode"))]) (jpop . [(20170410 550) ((emacs (24)) (dash (2 11 0)) (cl-lib (0 5))) "Lightweight project caching and navigation framework" tar ((:commit . "7628b03260be96576b34459d45959ee77d8b2110") (:url . "https://github.com/domtronn/jpop.el") (:keywords "project" "convenience"))]) (jonprl-mode . [(20160818 1759) ((emacs (24 3)) (cl-lib (0 5)) (yasnippet (0 8 0))) "A major mode for editing JonPRL files" tar ((:commit . "6059bb64891fae45827174e044d6a87ac07172d8") (:keywords "languages"))]) (jknav . [(20121006 1325) nil "Automatically enable j/k keys for line-based navigation" single ((:commit . "861245715c728503dad6573278fdd75c271dbf8b") (:keywords "keyboard" "navigation"))]) (jist . [(20161229 921) ((emacs (24 4)) (dash (2 12 0)) (seq (1 11)) (let-alist (1 0 4)) (magit (2 1 0)) (request (0 2 0))) "Gist integration" single ((:commit . "da0692452e312a99bb27d8708504b521798aca48") (:url . "https://github.com/emacs-pe/jist.el") (:keywords "convenience"))]) (jira-markup-mode . [(20150601 1409) nil "Emacs Major mode for JIRA-markup-formatted text files" single ((:commit . "4fc534c47df26a2f402bf835ebe2ed89474a4062") (:url . "https://github.com/mnuessler/jira-markup-mode") (:keywords "jira" "markup"))]) (jira . [(20131210 1022) nil "Connect to JIRA issue tracking software" single nil]) (jinja2-mode . [(20141128 207) nil "A major mode for jinja2" single ((:commit . "cfaa7bbe7bb290cc500440124ce89686f3e26f86"))]) (jg-quicknav . [(20170808 1830) ((s (1 9 0)) (cl-lib (0 5))) "Quickly navigate the file system to find a file." single ((:commit . "c8d53e774d63e68a944092c08a026b57da741038") (:url . "https://github.com/jeffgran/jg-quicknav") (:keywords "navigation"))]) (jetbrains . [(20171107 847) ((emacs (24 3)) (cl-lib (0 5)) (f (0 17))) "JetBrains IDE bridge" single ((:commit . "8d0851793d0658cc39bca455dc14c89f78ab8335") (:url . "https://github.com/emacs-php/jetbrains.el") (:keywords "tools" "php"))]) (jenkins-watch . [(20121004 1626) nil "Watch continuous integration build status" single ((:commit . "37b84dfbd98240a57ff798e1ff8bc7dba2913577") (:url . "https://github.com/ataylor284/jenkins-watch"))]) (jenkins . [(20170721 236) ((dash (2 12)) (emacs (24 3)) (json (1 4))) "Minimalistic Jenkins client for Emacs" single ((:commit . "1ec967973db685c9d84133ec6a5e06489ce06b62") (:keywords "jenkins" "convenience"))]) (jemdoc-mode . [(20170704 1327) ((emacs (24 3))) "Major mode for editing jemdoc files" single ((:commit . "529b4d4681e1198b9892f340fdd6c3f1592a047a") (:url . "https://github.com/drdv/jemdoc-mode") (:keywords "convenience" "usability"))]) (jekyll-modes . [(20141117 514) ((polymode (0 2))) "Major modes (markdown and HTML) for authoring Jekyll content" single ((:commit . "7cb10b50fd2883e3f7b10fdfd98f19f2f0b2381c") (:url . "https://github.com/fred-o/jekyll-modes") (:keywords "docs"))]) (jedi-direx . [(20140310 236) ((jedi (0 1 2)) (direx (0 1 -3))) "Tree style source code viewer for Python buffer" single ((:commit . "7a2e677400717ed12b959cb5988e7b3fb1c12117"))]) (jedi-core . [(20170121 610) ((emacs (24)) (epc (0 1 0)) (python-environment (0 0 2)) (cl-lib (0 5))) "Common code of jedi.el and company-jedi.el" tar ((:commit . "b0764f425766786dfb1bff910ed1d1670f11eb9c"))]) (jedi . [(20160425 2156) ((emacs (24)) (jedi-core (0 2 2)) (auto-complete (1 4))) "a Python auto-completion for Emacs" single ((:commit . "b0764f425766786dfb1bff910ed1d1670f11eb9c"))]) (jdee . [(20180109 1233) ((emacs (24 3)) (flycheck (30)) (memoize (1 0 1)) (dash (2 13 0)) (s (1 12 0))) "Java Development Environment for Emacs" tar ((:commit . "bffcac3e7a8c57da359185e01ae5a6bdce0ba8e0") (:url . "http://github.com/jdee-emacs/jdee") (:keywords "java" "tools"))]) (jdecomp . [(20170224 1400) ((emacs (24 5))) "Interface to Java decompilers" single ((:commit . "692866abc83deedce62be8d6040cf24dda7fb7a8") (:url . "https://github.com/xiongtx/jdecomp") (:keywords "decompile" "java" "languages" "tools"))]) (jbeans-theme . [(20171212 1053) ((emacs (24))) "Jbeans theme for GNU Emacs 24 (deftheme)" single ((:commit . "08dbcc9d8d33ed17cfe2de279f6979692c6fcaab") (:url . "https://github.com/synic/jbeans-emacs"))]) (jazz-theme . [(20170411 711) nil "A warm color theme for Emacs 24+." single ((:commit . "b1cb78a97cc4050f19d88a89e455c3e52d98240e") (:url . "https://github.com/donderom/jazz-theme"))]) (jaword . [(20170425 2327) ((tinysegmenter (0 1))) "Minor-mode for handling Japanese words better" single ((:commit . "ac062b0e5ab4bd3270497e80aa0f3ac033a0493f") (:url . "http://hins11.yu-yake.com/"))]) (javap-mode . [(20120223 1408) nil "Javap major mode" single ((:commit . "864c1130e204b2072e1d19cd027b6fce8ebe6629") (:url . "http://github.com/hiredman/javap-mode"))]) (javadoc-lookup . [(20160213 1631) ((cl-lib (0 3))) "Javadoc Emacs integration with Maven" tar ((:commit . "507a2dd443d60b537b8f779c1847e2cd0ccd1382") (:url . "https://github.com/skeeto/javadoc-lookup"))]) (java-snippets . [(20160626 1952) ((yasnippet (0 8 0))) "Yasnippets for Java" tar ((:commit . "738523debb1018439bda0ce70e00248154a600ac") (:url . "https://github.com/nekop/yasnippet-java-mode"))]) (java-imports . [(20170913 710) ((emacs (24 4)) (s (1 10 0)) (pcache (0 3 2))) "Code for dealing with Java imports" single ((:commit . "e96ff44ed48b362ab6227b8b802b84d84f78bcaa") (:url . "http://www.github.com/dakrone/emacs-java-imports") (:keywords "java"))]) (jastadd-ast-mode . [(20161219 126) ((emacs (24))) "Major mode for editing JastAdd AST files" single ((:commit . "a29fdb470cbf0a398164950a3b0d2217de48e0c0") (:url . "https://github.com/rudi/jastadd-ast-mode") (:keywords "languages"))]) (jasminejs-mode . [(20150526 1705) nil "A minor mode for manipulating jasmine test files" tar ((:commit . "9f8044bf81ab5b4841a30b0bd099916e1b7ff54a") (:url . "https://github.com/stoltene2/jasminejs-mode") (:keywords "javascript" "jasmine"))]) (jar-manifest-mode . [(20160430 1726) nil "Major mode to edit JAR manifest files" single ((:commit . "270dae14c481300f75ed96dad3a5ae42ca928a1d") (:url . "http://github.com/omajid/jar-manifest-mode") (:keywords "convenience" "languages"))]) (jape-mode . [(20140903 806) nil "An Emacs editing mode mode for GATE's JAPE files" single ((:commit . "85b9182850707b5d107391f6caee5bd401507a7d") (:url . "http://github.com/tanzoniteblack/jape-mode") (:keywords "languages" "jape" "gate"))]) (japanlaw . [(20160129 20) ((cl-lib (0 5))) "Japan law from law.e-gov.go.jp" single ((:commit . "c160e195cda0e02a709a2d39c62bc2a1ed39a09a") (:keywords "docs" "help"))]) (japanese-holidays . [(20160927 2318) ((cl-lib (0 3))) "calendar functions for the Japanese calendar" single ((:commit . "0bccfac342d6ebda1c1a35c3babca0c800ff0c9b") (:url . "https://github.com/emacs-jp/japanese-holidays") (:keywords "calendar"))]) (jammer . [(20160310 59) nil "Punish yourself for using Emacs inefficiently" single ((:commit . "48aa795df6df7ae6484518bcd0398293ca49d7c6") (:url . "https://github.com/wasamasa/jammer") (:keywords "games"))]) (jade-mode . [(20160525 741) nil "Major mode for editing .jade files" single ((:commit . "4dbde92542fc7ad61df38776980905a4721d642e") (:url . "https://github.com/brianc/jade-mode"))]) (jack-connect . [(20141207 407) nil "Manage jack connections within Emacs" single ((:commit . "b00658dfe3d5d67431c18ffa693d5a3705067ba0"))]) (jabber-otr . [(20150918 444) ((emacs (24)) (jabber (0 8 92))) "Off-The-Record messaging for jabber.el" tar ((:commit . "2692b1530234e0ba9a0d6c1eaa1cbe8679f193c0") (:url . "https://github.com/legoscia/emacs-jabber-otr/") (:keywords "comm"))]) (jabber . [(20170106 1603) ((fsm (0 2))) "A Jabber client for Emacs." tar ((:commit . "2ef76cff4a5a932cf17dc6107a0c5adee806081e"))]) (j-mode . [(20171224 1056) nil "Major mode for editing J programs" tar ((:commit . "e8725ac8af95498faabb2ca3ab3bd809a8f148e6") (:url . "http://github.com/zellio/j-mode") (:keywords "j" "languages"))]) (iy-go-to-char . [(20141029 846) nil "Go to next CHAR which is similar to \"f\" and \"t\" in vim" single ((:commit . "04ab4f5f3a241cbbc9b8c178a22b412a62f632f9") (:url . "https://github.com/doitian/iy-go-to-char") (:keywords "navigation" "search"))]) (ix . [(20131027 929) ((grapnel (0 5 3))) "Emacs client for http://ix.io pastebin" single ((:commit . "aea4c54a5cc5a6f26637353c16a3a0e70fc76963") (:url . "http://www.github.com/theanalyst/ix.el"))]) (ivy-youtube . [(20171112 732) ((request (0 2 0)) (ivy (0 8 0)) (cl-lib (0 5))) "Query YouTube and play videos in your browser" single ((:commit . "8168dc1f26521830dfd99466d35ab93159afd004") (:url . "https://github.com/squiter/ivy-youtube") (:keywords "youtube" "multimedia" "mpv" "vlc"))]) (ivy-xref . [(20171229 252) ((emacs (25 1)) (ivy (0 10 0))) "Ivy interface for xref results" single ((:commit . "aa97103ea8ce6ab8891e34deff7d43aa83fe36dd") (:url . "https://github.com/alexmurray/ivy-xref"))]) (ivy-xcdoc . [(20160917 355) ((ivy (0 8 0)) (emacs (24 4))) "Search Xcode documents with ivy interface." single ((:commit . "5ea22af36c4c2737fb0bec53432c233482d8b314") (:url . "https://github.com/hex2010/emacs-ivy-xcdoc") (:keywords "ivy" "xcode" "xcdoc"))]) (ivy-todo . [(20171208 809) ((ivy (0 8 0)) (emacs (24 3))) "Manage org-mode TODOs with ivy" single ((:commit . "964e347cea1a6097854d7113f5b07f6c5ef81df0") (:url . "http://github.com/Kungsgeten/ivy-todo") (:keywords "convenience"))]) (ivy-rtags . [(20170522 2154) ((ivy (0 7 0)) (rtags (2 10))) "RTags completion back-end for ivy" single ((:commit . "db5ad3a48c579b3522411bd2411c09dbb27af578") (:url . "http://rtags.net"))]) (ivy-rich . [(20180109 1933) ((emacs (24 4)) (ivy (0 8 0))) "More friendly display transformer for ivy." single ((:commit . "efe35d2f579202ca14a90cfd46ecac624109558c") (:keywords "ivy"))]) (ivy-purpose . [(20160724 303) ((emacs (24)) (ivy (0 8)) (window-purpose (1 5))) "Ivy Interface for Purpose" single ((:commit . "0495f2f3aed64d7e0028125e76a9a68f8fc4107e") (:url . "https://github.com/bmag/ivy-purpose"))]) (ivy-pass . [(20170812 1255) ((emacs (24)) (ivy (0 8 0)) (password-store (1 6 5))) "ivy interface for pass" single ((:commit . "5b523de1151f2109fdd6a8114d0af12eef83d3c5") (:url . "https://github.com/ecraven/ivy-pass/") (:keywords "pass" "password" "convenience" "data"))]) (ivy-pages . [(20160728 1220) ((emacs (24 1)) (ivy (0 8 0))) "Complete current buffer's pages with Ivy" single ((:commit . "47b03a1f9384502cf22369ff31a2898c863d3aff") (:url . "https://github.com/igorepst/ivy-pages") (:keywords "convenience" "matching"))]) (ivy-lobsters . [(20171202 1241) ((ivy (0 8 0)) (cl-lib (0 5))) "Browse lobste.rs stories with ivy." single ((:commit . "4364df4b3685fd1b50865ac9360fb948c0288dd1") (:url . "https://github.com/julienXX/ivy-lobsters"))]) (ivy-hydra . [(20171130 1143) ((emacs (24 1)) (ivy (0 9 0)) (hydra (0 13 4))) "Additional key bindings for Ivy" single ((:commit . "b960aa4fa52b19dba4d5994fb29f445164209f46") (:url . "https://github.com/abo-abo/swiper") (:keywords "completion" "matching" "bindings"))]) (ivy-historian . [(20170715 2120) ((emacs (24 4)) (historian (20170111)) (ivy (0 8 0)) (flx (0 6 1))) "Persistently store selected minibuffer candidates" single ((:commit . "ba560443a216befd4460fcf16dc6c7f23cb73d8d") (:url . "https://github.com/PythonNut/historian.el") (:keywords "convenience" "ivy"))]) (ivy-gitlab . [(20160519 312) ((s (1 9 0)) (dash (2 9 0)) (ivy (0 8 0)) (gitlab (0 8))) "Ivy interface to Gitlab" single ((:commit . "67567a354a1888419331b79862f151817d9747c5") (:url . "https://github.com/nlamirault/emacs-gitlab") (:keywords "gitlab" "ivy"))]) (ivy-feedwrangler . [(20171121 1306) ((ivy (9 0))) "An Ivy interface to the Feedwrangler RSS service" single ((:commit . "ad4f94f8cc4557876ea0b0fb9b519f16ce23e96a") (:url . "https://github.com/asimpson/ivy-feedwrangler") (:keywords "rss" "url" "ivy"))]) (ivy-erlang-complete . [(20170709 2151) ((async (1 9)) (counsel (0 8 0)) (ivy (0 8 0)) (erlang (19 2)) (emacs (24 4))) "Erlang context sensitive completion at point using ivy. It also support xref and eldoc." tar ((:commit . "acd6322571cb0820868a6febdc5326782a29b729"))]) (ivy-dired-history . [(20170625 2256) ((ivy (0 9 0)) (counsel (0 9 0)) (cl-lib (0 5))) "use ivy to open recent directories" single ((:commit . "c9c67ea1ee5e68443f0e6006ba162d6c8d868b69") (:url . "https://github.com/jixiuf/ivy-dired-history"))]) (ivy-bibtex . [(20171213 317) ((swiper (0 7 0)) (parsebib (1 0)) (s (1 9 0)) (dash (2 6 0)) (f (0 16 2)) (cl-lib (0 5)) (biblio (0 2))) "A bibliography manager based on Ivy" tar ((:commit . "84863a37695b786c6c6980a589f8ea282c385ab2"))]) (ivy . [(20180104 1212) ((emacs (24 1))) "Incremental Vertical completYon" tar ((:commit . "7042d7096e440ef392fe39aeb8e0c7be957151b5") (:url . "https://github.com/abo-abo/swiper") (:keywords "matching"))]) (ivs-edit . [(20170818 741) ((emacs (24 3)) (dash (2 6 0)) (cl-lib (1 0))) "IVS (Ideographic Variation Sequence) editing tool" tar ((:commit . "5db39c234aa7393b591168a4fd0a9a4cbbca347d") (:url . "http://github.com/kawabata/ivs-edit") (:keywords "text"))]) (ivariants . [(20170822 1924) ((emacs (24 3)) (ivs-edit (1 0))) "Ideographic variants editor and browser" tar ((:commit . "ca0b74d32b5d2d77a45cc6ad6edc00be0ee85284") (:url . "http://github.com/kawabata/ivariants") (:keywords "i18n" "languages"))]) (iterator . [(20170207 38) ((emacs (24)) (cl-lib (0 5))) "A library to create and use elisp iterators objects." single ((:commit . "9da54f9aed945b46866782cdf962c9e530419297") (:url . "https://github.com/thierryvolpiatto/iterator"))]) (iter2 . [(20171128 1211) ((emacs (25 1))) "Reimplementation of Elisp generators" single ((:commit . "b0e8ecebe2d6807403a5eb1c75d68a4706259d4e") (:url . "https://github.com/doublep/iter2") (:keywords "elisp" "extensions"))]) (itasca . [(20170601 922) ((emacs (24 3))) "Major modes for Itasca software data files." tar ((:commit . "3d15dd1b70d6db69b0f4758a3e28b8b506cc84ca") (:url . "http://github.com/jkfurtney/itasca-emacs/") (:keywords "itasca" "flac" "3dec" "udec" "flac3d" "pfc" "pfc2d" "pfc3d" "fish"))]) (itail . [(20171112 4) nil "An interactive tail mode" single ((:commit . "6e43c20da03be3b9c6ece93b7dc3495975ec1888") (:url . "https://github.com/re5et/itail") (:keywords "tail"))]) (iss-mode . [(20141001 1213) nil "Mode for InnoSetup install scripts" single ((:commit . "3b517aff31529bab33f8d7b562bd17aff0107fd1"))]) (isortify . [(20171223 1812) nil "(automatically) format python buffers using isort." single ((:commit . "2db50c1f585db8a8ec5fa28a90a8179516c16cd0") (:url . "https://github.com/proofit404/isortify"))]) (isgd . [(20150414 236) nil "Shorten URLs using the isgd.com shortener service" single ((:commit . "764306dadd5a9213799081a48aba22f7c75cca9a") (:url . "https://github.com/chmouel/isgd.el"))]) (isend-mode . [(20171118 745) nil "Interactively send parts of an Emacs buffer to an interpreter" single ((:commit . "88d4576e70e5874115c305ab2767d181dfda5985") (:url . "https://github.com/ffevotte/isend-mode.el"))]) (isearch-symbol-at-point . [(20130728 1521) nil "Use isearch to search for the symbol at point" single ((:commit . "51a1029bec1ec414885f9edb7e5947603dffdab2") (:url . "https://github.com/re5et/isearch-symbol-at-point") (:keywords "isearch"))]) (isearch-prop . [(20170303 1504) nil "Search text-property or overlay-property contexts." single ((:url . "https://www.emacswiki.org/emacs/download/isearch-prop.el") (:keywords "search" "matching" "invisible" "thing" "help"))]) (isearch-dabbrev . [(20141223 2222) ((cl-lib (0 5))) "Use dabbrev in isearch" single ((:commit . "1efe7abba4923015cbc2462395deaec5446a9cc8") (:url . "https://github.com/Dewdrops/isearch-dabbrev") (:keywords "dabbrev" "isearch"))]) (isearch+ . [(20170723 1826) nil "Extensions to `isearch.el' (incremental search)." single ((:url . "https://www.emacswiki.org/emacs/download/isearch%2b.el") (:keywords "help" "matching" "internal" "local"))]) (irony-eldoc . [(20170502 1208) ((emacs (24)) (cl-lib (0 5)) (irony (0 1))) "irony-mode support for eldoc-mode" single ((:commit . "0df5831eaae264a25422b061eb2792aadde8b3f2") (:url . "https://github.com/ikirill/irony-eldoc") (:keywords "c" "c++" "objc" "convenience" "tools"))]) (irony . [(20180104 1109) ((cl-lib (0 5)) (json (1 2))) "C/C++ minor mode powered by libclang" tar ((:commit . "82ba45ec15c9011bbdf1d69cf25c8193d33c0028") (:url . "https://github.com/Sarcasm/irony-mode") (:keywords "c" "convenience" "tools"))]) (irfc . [(20130824 507) nil "Interface for IETF RFC document." single ((:url . "http://www.emacswiki.org/emacs/download/irfc.el") (:keywords "rfc" "ietf"))]) (iregister . [(20150515 1407) nil "Interactive register commands for Emacs." tar ((:commit . "6a48c66187289de5f300492be11c83e98410c018") (:url . "https://github.com/atykhonov/iregister.el") (:keywords "convenience"))]) (ir-black-theme . [(20130302 2355) nil "Port of ir-black theme" single ((:commit . "36e930d107604b5763c80294a6f92aaa02e6c272") (:keywords "faces"))]) (iqa . [(20170722 834) ((emacs (24 3))) "Init file(and directory) Quick Access." single ((:commit . "08e3f70d0a3ed95a0c5675ae88e7966474ecc45a") (:url . "https://github.com/a13/iqa.el"))]) (ipython-shell-send . [(20171212 318) ((emacs (24))) "Send code (including magics) to ipython shell" single ((:commit . "36523a387c15ee1652a5b0e291d4d4838da5e912") (:url . "https://github.com/jackkamm/ipython-shell-send-el") (:keywords "tools" "processes"))]) (ipretty . [(20140406 2220) nil "Interactive Emacs Lisp pretty-printing" single ((:commit . "6f6da8907abea53d6d246d61e1a0f4ebeb0b9f38") (:url . "https://github.com/steckerhalter/ipretty") (:keywords "pretty-print" "elisp" "buffer"))]) (iplayer . [(20161120 1320) nil "Browse and download BBC TV/radio shows" single ((:commit . "b788fffa4b36bbd558047ffa6be51b1f0f462f23") (:url . "https://github.com/csrhodes/iplayer-el") (:keywords "multimedia" "bbc"))]) (ipcalc . [(20170926 105) ((cl-lib (0 5))) "IP subnet calculator" single ((:commit . "2720f7e3e662e04e195f8338b81a499cf321296a") (:url . "http://github.com/dotemacs/ipcalc.el") (:keywords "networking" "tools"))]) (iodine-theme . [(20151031 939) ((emacs (24))) "A light emacs color theme" single ((:commit . "02fb780e1d8d8a6b9c709bfac399abe1665c6999") (:url . "https://github.com/srdja/iodine-theme") (:keywords "themes"))]) (ioccur . [(20130821 2248) nil "Incremental occur" single ((:commit . "4c0ef992a6fcd2aed62e3866d56650463108ab5a") (:url . "https://github.com/thierryvolpiatto/ioccur"))]) (io-mode-inf . [(20140128 1134) nil "Interaction with an Io interpreter." single ((:commit . "6dd2bac3fd87484bb7d97e135b06c29d70b444b6") (:url . "https://github.com/slackorama/io-emacs") (:keywords "io" "languages"))]) (io-mode . [(20161004 56) nil "Major mode to edit Io language files in Emacs" single ((:commit . "fd65ae769093defcf554d6d637eba6e6dfc29f56") (:url . "https://github.com/superbobry/io-mode") (:keywords "languages" "io"))]) (inverse-acme-theme . [(20170822 1954) ((autothemer (0 2)) (cl-lib (0 5))) "A theme that looks like an inverse of Acme's color scheme." single ((:commit . "74d6f3e2f6534371509dd2d77006435156c276d6") (:url . "http://github.com/djohnson/inverse-acme-theme"))]) (interval-tree . [(20130325 707) ((dash (1 1 0))) "Interval tree data structure for 1D range queries" single ((:commit . "301302f480617091cf3ab6989caac385d52543dc") (:url . "https://github.com/Fuco1/interval-tree") (:keywords "extensions" "data structure"))]) (interval-list . [(20150327 1018) ((dash (2 4 0)) (cl-lib (0 5)) (emacs (24 4))) "Interval list data structure for 1D selections" single ((:commit . "38af7ecf0a493ad8f487074938a2a115f3531177") (:url . "https://github.com/Fuco1/interval-list") (:keywords "extensions" "data structure"))]) (intero . [(20180102 1220) ((flycheck (0 25)) (company (0 8)) (emacs (24 4)) (haskell-mode (13 0))) "Complete development mode for Haskell" single ((:commit . "322b3c017153a536ffa3559b64fc1ac16af19a69") (:url . "https://github.com/commercialhaskell/intero") (:keywords "haskell" "tools"))]) (interleave . [(20171003 2324) nil "Interleaving text books since 2015" single ((:commit . "87549df30cbc681baf86b238bd14c7cf7ec11fc4") (:url . "https://github.com/rudolfochrist/interleave"))]) (interaction-log . [(20160305 501) ((cl-lib (0))) "exhaustive log of interactions with Emacs" single ((:commit . "a49a06746d4df6bcfceec3c48dece065d635f9f9") (:url . "https://github.com/michael-heerdegen/interaction-log.el") (:keywords "convenience"))]) (intellij-theme . [(20171017 715) nil "Inspired by IntelliJ's default theme" single ((:commit . "1bbfff8e6742d18e9b77ed796f44da3b7bd10606") (:keywords "faces"))]) (instapaper . [(20130104 621) nil "add URLs to instapaper from emacs" single ((:url . "htts://bitbucket.org/jfm/emacs-instapaper"))]) (insfactor . [(20141116 1602) nil "Client for a Clojure project with insfactor in it" single ((:commit . "7ef5446cebb08a17d4106d2e6f3c053e49e1e829") (:url . "http://github.com/duelinmarkers/insfactor.el") (:keywords "clojure"))]) (insert-shebang . [(20170825 438) nil "Insert shebang line automatically." single ((:commit . "adfa473f07443b231914d277c20a3419b30399b6") (:url . "http://github.com/psachin/insert-shebang") (:keywords "shebang" "tool" "convenience"))]) (inlineR . [(20120520 732) nil "insert Tag for inline image of R graphics" single ((:commit . "29357186beca825e3d0451b700ec09b9ed65e37b") (:url . "https://github.com/myuhe/inlineR.el") (:keywords "convenience" "iimage.el" "cacoo.el"))]) (inline-docs . [(20170522 2150) ((emacs (24 3))) "Show inline contextual docs." single ((:commit . "b57f1681be6147f999cdc12abff414a0442e8897") (:url . "https://github.com/stardiviner/inline-docs.el") (:keywords "inline" "docs" "overlay"))]) (inline-crypt . [(20170824 200) nil "Simple inline encryption via openssl" tar ((:commit . "281385b383f850fd2e895926b1cef804dd052633"))]) (inkpot-theme . [(20171217 144) nil "port of vim's inkpot theme" single ((:commit . "8d59548ff5171bf6be6acc58d111674579646124") (:url . "https://github.com/ideasman42/emacs-inkpot-theme") (:keywords "color" "theme"))]) (ink-mode . [(20160814 416) ((emacs (24 3))) "Major mode for writing interactive fiction in Ink" single ((:commit . "e35f26abbaf8ea23c5aa0a0c7ef15334cdfb7b48") (:url . "http://github.com/Kungsgeten/ink-mode") (:keywords "languages"))]) (initsplit . [(20160919 1118) nil "code to split customizations into different files" single ((:commit . "c941d436eb2b10b01c76a582c5a2b23fb30751aa") (:url . "http://www.gci-net.com/users/j/johnw/emacs.html") (:keywords "lisp"))]) (init-open-recentf . [(20161206 645) ((emacs (24 4))) "Open recentf immediately after Emacs is started" single ((:commit . "7d8fb124806291f7f6ef2ec3a664ea25899b6d68") (:url . "https://github.com/zonuexe/init-open-recentf.el") (:keywords "files" "recentf" "after-init-hook"))]) (init-loader . [(20160528 615) nil "Loader for configuration files" single ((:commit . "5d3cea1004c11ff96b33020e337b03b925c67c42") (:url . "https://github.com/emacs-jp/init-loader/"))]) (ini-mode . [(20170424 209) nil "Major mode for Windows-style ini files." single ((:commit . "2194cfa2fd13196a37350ec20b3f00dcf6162b7c") (:url . "https://github.com/Lindydancer/ini-mode") (:keywords "languages" "faces"))]) (inherit-local . [(20170409 949) ((emacs (24 3))) "Inherited buffer-local variables" single ((:commit . "b1f4ff9c41f9d64e4adaf5adcc280b82f084cdc7") (:url . "https://github.com/shlevy/inherit-local/tree-master/"))]) (info-buffer . [(20170112 622) nil "Display info topics in separate buffers" single ((:commit . "d35dad6e766c6e2ddb8dc6acb4ce5b6e10fbcaa7") (:url . "http://www.github.com/llvilanova/info-buffer") (:keywords "docs" "info"))]) (info+ . [(20170923 1929) nil "Extensions to `info.el'." single ((:url . "https://www.emacswiki.org/emacs/download/info%2b.el") (:keywords "help" "docs" "internal"))]) (inflections . [(20170913 216) ((cl-lib (0 5)) (emacs (24))) "convert english words between singular and plural" single ((:commit . "e4f1372cf22e811faca52fc86bdd5d817498a4d8") (:url . "https://github.com/eschulte/jump.el") (:keywords "languages" "tools" "wp"))]) (inferior-spim . [(20160826 646) nil "inferior mode for spim." single ((:commit . "fb9aa091f6058bf320793f1a608c1ed7322c1f47") (:keywords "spim" "inferior" "mips"))]) (inf-ruby . [(20171211 225) nil "Run a Ruby process in a buffer" single ((:commit . "5ae6149a15068d3e2f83a5bd08e9cd7605f75fa9") (:url . "http://github.com/nonsequitur/inf-ruby") (:keywords "languages" "ruby"))]) (inf-mongo . [(20160815 216) nil "Run a MongoDB shell process in a buffer" single ((:commit . "649dc6ea8e468f1d8109568548eb222c71486dbf") (:url . "http://github.com/endofunky/inf-mongo") (:keywords "databases" "mongodb"))]) (inf-clojure . [(20180102 1324) ((emacs (24 4)) (clojure-mode (5 6))) "Run an external Clojure process in an Emacs buffer" single ((:commit . "247ca70f8ba5104be292aea20fbde6adb37e359f") (:url . "http://github.com/clojure-emacs/inf-clojure") (:keywords "processes" "clojure"))]) (indy . [(20150610 1006) nil "A minor mode and EDSL to manage your mode's indentation rules." single ((:commit . "4604867d8111f0e186a5351e68e054a77cb14abf") (:keywords "convenience" "matching" "tools"))]) (indium . [(20180108 728) ((emacs (25)) (seq (2 16)) (js2-mode (20140114)) (company (0 9 0)) (websocket (1 6))) "JavaScript Awesome Development Environment" tar ((:commit . "2b1ff2742c9b443529524d293c327817733b8d92") (:url . "https://github.com/NicolasPetton/indium") (:keywords "tools" "javascript"))]) (indicators . [(20161211 326) ((dash (2 13 0)) (cl-lib (0 5 0))) "Display the buffer relative location of line in the fringe." single ((:commit . "f62a1201f21453e3aca93f48483e65ae8251432e") (:url . "https://github.com/Fuco1/indicators.el") (:keywords "fringe" "frames"))]) (indent-tools . [(20171215 327) ((s (0)) (hydra (0)) (yafolding (0))) "Indent, navigate (and more) by blocks of indentation: yaml, python etc." tar ((:commit . "7d7ff66e699f28478c0d63f39ff6b1477cf0bee7") (:url . "https://gitlab.com/emacs-stuff/indent-tools/") (:keywords "indentation" "movements" "navigation" "kill" "fold" "yaml" "python"))]) (indent-info . [(20171216 1509) nil "show indentation information in status bar" single ((:commit . "e63a918b16d6d1986dd9123670a762e49102ce2b") (:url . "https://github.com/terlar/indent-info.el") (:keywords "convenience" "tools"))]) (indent-guide . [(20170221 327) nil "show vertical lines to guide indentation" single ((:commit . "d64f43011c72068e008621e620009ec592b35913") (:url . "http://hins11.yu-yake.com/"))]) (importmagic . [(20170702 1844) ((f (0 11 0)) (epc (0 1 0)) (emacs (24 3))) "Fix Python imports using importmagic." tar ((:commit . "c0360a8146ca65565a7fa66c6d72986edd916dd5") (:url . "https://github.com/anachronic/importmagic.el") (:keywords "languages" "convenience"))]) (import-popwin . [(20170218 607) ((emacs (24 3)) (popwin (0 6))) "popwin buffer near by import statements with popwin" single ((:commit . "bb05a9e226f8c63fe7b18a3e92010357049ab5ba") (:url . "https://github.com/syohex/emacs-import-popwin"))]) (import-js . [(20171026 1628) ((grizzl (0 1 0)) (emacs (24))) "Import Javascript dependencies" single ((:commit . "0a1032894445062b87dbe4e2c8cdba35ac25c250") (:url . "http://github.com/Galooshi/emacs-import-js/") (:keywords "javascript"))]) (impatient-mode . [(20170505 1921) ((cl-lib (0 3)) (simple-httpd (1 4 0)) (htmlize (1 40))) "Serve buffers live over HTTP" tar ((:commit . "48e6c4842b1fc2657a3c6c23029f89e35fafc859") (:url . "https://github.com/netguy204/imp.el"))]) (immutant-server . [(20140311 1508) nil "Run your Immutant server in Emacs" single ((:commit . "2a21e65588acb6a976f2998e30b21fdabdba4dbb") (:url . "http://www.github.com/leathekd/immutant-server.el"))]) (immortal-scratch . [(20160517 1418) nil "respawn the scratch buffer when it's killed" single nil]) (imgur . [(20120307 225) ((anything (1 287))) "imgur client for Emacs" single ((:commit . "ed952eb8f556c6fc0d982e2a689083504558cffb") (:keywords "multimedia" "convenience"))]) (imenus . [(20170217 47) ((cl-lib (0 5))) "Imenu for multiple buffers and without subgroups" single ((:commit . "7eea33f0aeca0737b3d7d87aeb67073ef4b5d978") (:url . "https://github.com/alezost/imenus.el") (:keywords "tools" "convenience"))]) (imenu-list . [(20171120 1255) ((cl-lib (0 5))) "Show imenu entries in a separate buffer" single ((:commit . "0d3d445ce60a77a6c7bcbdbf1ae62cc20d2b5575") (:url . "https://github.com/bmag/imenu-list"))]) (imenu-anywhere . [(20170805 1155) ((cl-lib (0 5))) "ido/ivy/helm imenu across same mode/project/etc buffers" single ((:commit . "fc7f0fd2f19e5ebee70156a99bf87393123893e3") (:url . "https://github.com/vitoshka/imenu-anywhere") (:keywords "ido" "imenu" "tags"))]) (imenu+ . [(20170303 1457) nil "Extensions to `imenu.el'." single ((:url . "https://www.emacswiki.org/emacs/download/imenu%2b.el") (:keywords "tools" "menus"))]) (imapfilter . [(20161008 1357) nil "run the imapfilter executable" single ((:commit . "a879ddc36fedc30311693f308f414c520fdfc370") (:url . "https://github.com/tarsius/imapfilter") (:keywords "mail"))]) (imake . [(20171006 450) ((emacs (24 3))) "Simple, opinionated make target runner" single ((:commit . "edd2e59f7996c35450987cf8f137ecb54777e9ca") (:url . "https://github.com/tarsius/imake"))]) (imakado . [(20141024 223) nil "imakado's usefull macros and functions" single ((:commit . "00a1e7eea2cb9e9066343a23927d6c747707902f") (:url . "https://github.com/imakado/emacs-imakado") (:keywords "convenience"))]) (image-dired+ . [(20150429 2244) ((cl-lib (0 3))) "Image-dired extensions" single ((:commit . "b68094625d963056ad64e0e44af0e2266b2eadc7") (:url . "https://github.com/mhayashi1120/Emacs-image-diredx") (:keywords "extensions" "multimedia"))]) (image-archive . [(20150620 1832) ((emacs (24)) (cl-lib (0 5))) "Image thumbnails in archive file with non-blocking" single ((:commit . "8d29535bd832329ffeeac780aae7aa8919af1175") (:url . "https://github.com/mhayashi1120/Emacs-image-archive") (:keywords "multimedia"))]) (image+ . [(20150707 916) ((cl-lib (0 3))) "Image manipulate extensions for Emacs" single ((:commit . "6834d0c09bb4df9ecc0d7a559bd7827fed48fffc") (:url . "https://github.com/mhayashi1120/Emacs-imagex") (:keywords "multimedia" "extensions"))]) (igv . [(20141210 427) nil "Control Integrative Genomic Viewer within Emacs" single ((:commit . "47ac6ceede252f451348a2c696398c0cb5279555"))]) (igrep . [(20130824 507) nil "An improved interface to `grep` and `find`" single ((:keywords "tools" "processes" "search"))]) (ignoramus . [(20160414 709) nil "Ignore backups, build files, et al." single ((:commit . "b37dc7c07edd9d152436f9019c14df158b599be3") (:url . "http://github.com/rolandwalker/ignoramus") (:keywords "convenience" "tools"))]) (iflipb . [(20171113 1244) nil "interactively flip between recently visited buffers" single ((:commit . "a5ad1fbd1173cff5228dab265515c92c0778f86a") (:url . "https://github.com/jrosdahl/iflipb"))]) (ietf-docs . [(20150928 257) nil "Fetch, Cache and Load IETF documents" single ((:commit . "ede30d6d26044069e1731fd20c0ab2324552c0b4") (:url . "https://github.com/choppsv1/ietf-docs") (:keywords "ietf" "rfc"))]) (iedit . [(20170916 1024) nil "Edit multiple regions in the same way simultaneously." tar ((:commit . "5b14cc9fcaef509c50f25cff872fba5d70b2c799") (:url . "http://www.emacswiki.org/emacs/Iedit") (:keywords "occurrence" "region" "simultaneous" "refactoring"))]) (ids-edit . [(20170818 802) ((emacs (24 3))) "IDS (Ideographic Description Sequence) editing tool" tar ((:commit . "8562a6cbfb3f2d44bc6f62ab15081a80f8fee502") (:url . "http://github.com/kawabata/ids-edit") (:keywords "i18n" "wp"))]) (idris-mode . [(20171212 759) ((emacs (24)) (prop-menu (0 1)) (cl-lib (0 5))) "Major mode for editing Idris code" tar ((:commit . "0a5a165a0dd7be7bbc4f5c9533dc21acfc811a4e") (:url . "https://github.com/idris-hackers/idris-mode") (:keywords "languages"))]) (idomenu . [(20141123 1320) nil "imenu tag selection a la ido" single ((:commit . "4b0152d606360c70204fb4c27f68de79ca885386"))]) (ido-yes-or-no . [(20161108 1551) ((ido-completing-read+ (0))) "Use Ido to answer yes-or-no questions" single ((:commit . "c55383b1fce5879e87e7ca6809fc60534508e182") (:url . "https://github.com/DarwinAwardWinner/ido-yes-or-no") (:keywords "convenience" "completion" "ido"))]) (ido-vertical-mode . [(20160429 1037) nil "Makes ido-mode display vertically." single ((:commit . "b42e4227ed5d37b5d840a9d9d1cdaabf50e189b1") (:url . "https://github.com/creichert/ido-vertical-mode.el") (:keywords "convenience"))]) (ido-ubiquitous . [(20170923 842) ((ido-completing-read+ (4 6)) (cl-lib (0 5))) "Use ido (nearly) everywhere." single ((:commit . "e2ea358725f03ae623ae03ed90715efb92a61030") (:url . "https://github.com/DarwinAwardWinner/ido-ubiquitous") (:keywords "convenience" "completion" "ido"))]) (ido-springboard . [(20170105 2355) nil "Temporarily change default-directory for one command" single ((:commit . "263a8cd4582c81bfc29d7db37d5267e2488b148c") (:url . "https://github.com/jwiegley/springboard") (:keywords "ido"))]) (ido-sort-mtime . [(20171121 59) nil "Sort Ido's file list by modification time" single ((:commit . "f638ff0c922af862f5211779f2311a27fde428eb") (:keywords "convenience" "files"))]) (ido-skk . [(20151111 150) ((emacs (24 4)) (ddskk (20150912 1820))) "ido interface for skk henkan" single ((:commit . "89a2e62799bff2841ff634517c86084c4ce69246") (:url . "https://github.com/tsukimizake/ido-skk") (:keywords "languages"))]) (ido-select-window . [(20131220 1247) ((emacs (24 1))) "Select a window using ido and buffer names" single ((:commit . "a64707d8d154664d50d12e26417d586e4c3dd78b") (:url . "https://github.com/pjones/ido-select-window"))]) (ido-occur . [(20160820 740) ((dash (2 13 0))) "Yet another `occur' with `ido'." single ((:commit . "522af5d55b3d4cd6885f3b4100913566c202cec4") (:url . "https://github.com/danil/ido-occur") (:keywords "inner" "buffer" "search"))]) (ido-occasional . [(20150214 448) ((emacs (24 1))) "Use ido where you choose." single ((:commit . "d405f1795e1e0c63be411ee2825184738d29c33a") (:url . "https://github.com/abo-abo/ido-occasional") (:keywords "completion"))]) (ido-migemo . [(20150921 1544) ((migemo (1 9 1))) "Migemo plug-in for Ido" single ((:commit . "e71114a92dd69cb46abf3fb71a09ce27506fcf77") (:url . "https://github.com/myuhe/ido-migemo.el") (:keywords "files"))]) (ido-load-library . [(20140611 900) ((persistent-soft (0 8 8)) (pcache (0 2 3))) "Load-library alternative using ido-completing-read" single ((:commit . "e03b55957c93aa1a7dd190e173e16ec59dbb2ba7") (:url . "http://github.com/rolandwalker/ido-load-library") (:keywords "maint" "completion"))]) (ido-hacks . [(20150331 1209) nil "Put more IDO in your IDO" single ((:commit . "b7e7514a0e011e4d767d1f5755c5eae9d85f83dc") (:keywords "convenience"))]) (ido-grid-mode . [(20160122 339) ((emacs (24 4))) "Display ido-prospects in the minibuffer in a grid." single ((:commit . "7cfca3988a6dc3ad18e28abe114218095ff2366f") (:url . "https://github.com/larkery/ido-grid-mode.el") (:keywords "convenience"))]) (ido-gnus . [(20140216 846) ((gnus (5 13))) "Access gnus groups or servers using ido" single ((:commit . "f5fe3f6aa8086f675ba216abace9e3d5f2e3a089") (:url . "https://github.com/vapniks/ido-gnus") (:keywords "comm"))]) (ido-flex-with-migemo . [(20170319 431) ((flx-ido (0 6 1)) (migemo (1 9 1)) (emacs (24 4))) "use ido with flex and migemo" single ((:commit . "c620934f50b9713693eba8e23f88c2aaa8510708") (:url . "https://github.com/ROCKTAKEY/ido-flex-with-migemo") (:keywords "matching"))]) (ido-exit-target . [(20170717 1151) ((emacs (24 4))) "Commands and keys for selecting other window and frame targets within ido" single ((:commit . "e56fc6928649c87ccf39d56d84ab53ebaced1f73") (:url . "https://github.com/waymondo/ido-exit-target") (:keywords "convenience" "tools" "extensions"))]) (ido-describe-bindings . [(20161023 402) ((dash (2 13 0))) "Yet another `describe-bindings' with `ido'." single ((:commit . "a142ff1c33df23ed9665497d0dcae2943b3c706a") (:url . "https://github.com/danil/ido-describe-bindings") (:keywords "help"))]) (ido-completing-read+ . [(20170820 3) ((emacs (24 4)) (cl-lib (0 5)) (s (0 1)) (memoize (1 1))) "A completing-read-function using ido" single ((:commit . "e2ea358725f03ae623ae03ed90715efb92a61030") (:url . "https://github.com/DarwinAwardWinner/ido-completing-read-plus") (:keywords "ido" "completion" "convenience"))]) (ido-complete-space-or-hyphen . [(20130228 208) nil "Complete SPACE or HYPHEN when type SPACE in ido" single ((:commit . "3fe1fe1e1a743f8deb8f4025977647afecd58f14") (:url . "https://github.com/doitian/ido-complete-space-or-hyphen") (:keywords "ido" "completion"))]) (ido-clever-match . [(20151011 1026) ((emacs (24 4)) (cl-lib (0 5))) "Alternative matcher for ido." single ((:commit . "f173473e99c8b0756f12e4cc8f67e68fa59eadd3") (:url . "https://github.com/Bogdanp/ido-clever-match") (:keywords "ido" "flex"))]) (ido-at-point . [(20151021 57) ((emacs (24))) "ido-style completion-at-point" single ((:commit . "e5907bbe8a3d148d07698b76bd994dc3076e16ee") (:url . "https://github.com/katspaugh/ido-at-point") (:keywords "convenience" "abbrev"))]) (idle-require . [(20090715 1503) nil "load elisp libraries while Emacs is idle" single ((:commit . "33592bb098223b4432d7a35a1d65ab83f47c1ec1") (:url . "http://nschum.de/src/emacs/idle-require/") (:keywords "internal"))]) (idle-highlight-mode . [(20120920 948) nil "highlight the word the point is on" single ((:commit . "c466f2a9e291f9da1167dc879577b2e1a7880482") (:url . "http://www.emacswiki.org/cgi-bin/wiki/IdleHighlight") (:keywords "convenience"))]) (identica-mode . [(20130204 1453) nil "Major mode API client for status.net open microblogging" tar ((:commit . "cf9183ee11ac922e85c7c908f04e2d00b03111b3") (:url . "http://blog.gabrielsaldana.org/identica-mode-for-emacs/") (:keywords "identica" "web"))]) (idea-darkula-theme . [(20160416 1603) ((emacs (24 1))) "Color theme based on IntelliJ IDEA Darkula color theme" single ((:commit . "52602d9b91883e1f297d000951aeed48bf60176e") (:url . "http://github.com/fourier/idea-darkula-theme") (:keywords "themes"))]) (id-manager . [(20170320 546) nil "id-password management" single ((:commit . "14ebc35db298aac4dedc8aa188bc46bacab81f3b") (:keywords "password" "convenience"))]) (icomplete+ . [(20170303 1456) nil "Extensions to `icomplete.el'." single ((:url . "https://www.emacswiki.org/emacs/download/icomplete%2b.el") (:keywords "help" "abbrev" "internal" "extensions" "local" "completion" "matching"))]) (icicles . [(20170917 942) nil "Minibuffer input completion and cycling." tar ((:url . "https://www.emacswiki.org/emacs/download/icicles.el") (:keywords "extensions" "help" "abbrev" "local" "minibuffer" "projects" "keys" "apropos" "completion" "matching" "regexp" "command"))]) (ibuffer-vc . [(20171106 2341) ((cl-lib (0 2))) "Group ibuffer's list by VC project, or show VC status" single ((:commit . "83d60aefd21e2aa20c7217d224f38a40bb75e63b") (:url . "http://github.com/purcell/ibuffer-vc") (:keywords "themes"))]) (ibuffer-tramp . [(20151118 939) nil "Group ibuffer's list by TRAMP connection" single ((:commit . "41fab2ad174f53a4cf5ef7d2ebef518dede82ab4") (:url . "http://github.com/svend/ibuffer-tramp") (:keywords "convenience"))]) (ibuffer-rcirc . [(20150215 1318) ((cl-lib (0 2))) "Ibuffer integration for rcirc" single ((:commit . "8a4409b1c679d65c819dee4085faf929840e79f8") (:url . "https://github.com/fgallina/ibuffer-rcirc") (:keywords "buffer" "convenience" "comm"))]) (ibuffer-projectile . [(20171222 2000) ((projectile (0 11 0))) "Group ibuffer's list by projectile root" single ((:commit . "bfa02c76dabdc02557b67fa556969bc74e255023") (:url . "http://github.com/purcell/ibuffer-projectile") (:keywords "themes"))]) (ibuffer-git . [(20110508 31) nil "show git status in ibuffer column" single ((:commit . "d326319c05ddb8280885b31f9094040c1b365876") (:keywords "convenience"))]) (iasm-mode . [(20171023 722) nil "interactive assembly major mode." single ((:commit . "abbec7f308f9ce97beeb57e459fff35f559b4c18") (:url . "https://github.com/RAttab/iasm-mode") (:keywords ":" "tools"))]) (ialign . [(20180107 305) ((emacs (24 4))) "visual align-regexp" single ((:commit . "df591e452f9a56c69fb69de961baa75751bae3d8") (:url . "https://github.com/mkcms/interactive-align") (:keywords "tools" "editing" "align" "interactive"))]) (i3wm . [(20170822 738) nil "i3wm integration library" single ((:commit . "71391dc61063fee77ad174f3b2ca25c60b41009e") (:url . "https://git.flintfam.org/swf-projects/emacs-i3") (:keywords "convenience" "extensions"))]) (i2b2-mode . [(20140709 1804) nil "Highlights corresponding PHI data in the text portion of an i2b2 XML Document." single ((:commit . "db10efcfc8bed369a516bbf7526ede41f98cb95a") (:keywords "xml" "phi" "i2b2" "deidi2b2"))]) (hydra . [(20171120 1042) ((cl-lib (0 5))) "Make bindings that stick around." tar ((:commit . "e228432bb64385f67f20aa525bce56ae4e8419eb") (:url . "https://github.com/abo-abo/hydra") (:keywords "bindings"))]) (hyde . [(20160507 2008) nil "Major mode to help create and manage Jekyll blogs" tar ((:commit . "a8cd6ed00ecd8d7de0ded2f4867015b412b15b76"))]) (hydandata-light-theme . [(20160815 2118) nil "A light color theme that is easy on your eyes" single ((:commit . "0fbc91678ef65e1f65d7ec6792ff0b2f104d16a9") (:keywords "color-theme" "theme"))]) (hyai . [(20170301 647) ((cl-lib (0 5)) (emacs (24))) "Haskell Yet Another Indentation" single ((:commit . "e9a7e945fed12d8e664e898cf8b434b0376d5d80") (:url . "https://github.com/iquiw/hyai"))]) (hy-mode . [(20171202 1141) ((dash (2 13 0)) (dash-functional (1 2 0)) (s (1 11 0)) (emacs (24))) "Major mode for Hylang" tar ((:commit . "3220f00a9bdb24667a1c3876b4a2f889dcb77501") (:url . "http://github.com/hylang/hy-mode") (:keywords "languages" "lisp" "python"))]) (hungry-delete . [(20170411 1802) nil "hungry delete minor mode" single ((:commit . "0434458d3f6b2b585f332271feaa054bf4ec96d7") (:url . "http://github.com/nflath/hungry-delete"))]) (hungarian-holidays . [(20161020 438) nil "Adds a list of Hungarian public holidays to Emacs calendar" single ((:commit . "653108769279499d84a79267c90e640d98823872") (:keywords "calendar"))]) (hugsql-ghosts . [(20170612 1223) ((s (1 9 0)) (dash (2 10 0)) (cider (0 14 0))) "Display ghostly hugsql defqueries inline" single ((:commit . "2f3f98b644b4da35f4fb80b7c3b63f986417b415") (:url . "https://github.com/rkaercher/hugsql-ghosts"))]) (httprepl . [(20141101 1034) ((s (1 9 0)) (dash (2 5 0)) (emacs (24))) "An HTTP REPL" single ((:commit . "cfa3693267a8ed1c96a86a126823f37dbfe077d8") (:url . "https://github.com/gregsexton/httprepl.el") (:keywords "http" "repl"))]) (httpcode . [(20121001 2045) nil "explains the meaning of an HTTP status code" single ((:commit . "a45e735082b09477cd704a99294d336cdbeb12ba") (:url . "http://github.com/rspivak/httpcode.el"))]) (http-twiddle . [(20160801 1211) nil "send & twiddle & resend HTTP requests" single ((:commit . "4d0c73b7dcbde8b483d4f3a75c49c74d2fe3ca45") (:url . "https://github.com/hassy/http-twiddle/blob/master/http-twiddle.el") (:keywords "http" "rest" "soap"))]) (http-post-simple . [(20170715 240) nil "HTTP POST requests using the url library" single ((:commit . "f53697fca278c741051aeb668b00466b5e0fd3fe") (:keywords "comm" "data" "processes" "hypermedia"))]) (http . [(20170906 1111) ((emacs (24 4)) (request (0 2 0)) (edit-indirect (0 1 4))) "Yet another HTTP client" single ((:commit . "193a7bf843dd6b6805c7b18dab31f50c8325d710") (:url . "https://github.com/emacs-pe/http.el") (:keywords "convenience"))]) (htmlize . [(20171017 141) nil "Convert buffer text and decorations to HTML." single ((:commit . "a0b55cba65a225df8d9e17a3ac448ce9e8ec962d") (:keywords "hypermedia" "extensions"))]) (html2org . [(20170417 2201) ((emacs (24 4))) "Convert html to org format text" single ((:commit . "6904aed40259ad8afccff079ebd8a07bff319ebc") (:url . "http://github.com/lujun9972/html2org.el") (:keywords "convenience" "html" "org"))]) (html-to-markdown . [(20151105 40) ((cl-lib (0 5))) "HTML to Markdown converter written in Emacs-lisp." single ((:commit . "60c5498c801be186478cf7c05be05b4430c4a144") (:url . "http://github.com/Bruce-Connor/html-to-markdown") (:keywords "tools" "wp" "languages"))]) (html-to-hiccup . [(20161028 701) ((emacs (25 1)) (dash (2 13 0)) (s (1 10 0))) "Convert HTML to Hiccup syntax" single ((:commit . "99217a5058626d253ed8ada51a7642071fe54ba5") (:url . "https://github.com/plexus/html-to-hiccup") (:keywords "html" "hiccup" "clojure"))]) (html-script-src . [(20120403 1115) nil "Insert