From adac67a0d6c5edeb2467f739d6a19c0181520cf0 Mon Sep 17 00:00:00 2001 From: Nathan Date: Fri, 10 Jun 2016 08:15:18 -0500 Subject: [PATCH] new version --- .gitmodules | 18 - README.md | 9 - after_package.el | 131 + coffee-mode | 1 - color-theme | 1 - elpa/ac-js2-20140906.442/ac-js2-autoloads.el | 50 + elpa/ac-js2-20140906.442/ac-js2-pkg.el | 7 + elpa/ac-js2-20140906.442/ac-js2-tests.el | 76 + elpa/ac-js2-20140906.442/ac-js2-tests.elc | Bin 0 -> 5430 bytes elpa/ac-js2-20140906.442/ac-js2.el | 605 + elpa/ac-js2-20140906.442/ac-js2.elc | Bin 0 -> 22584 bytes elpa/ac-js2-20140906.442/skewer-addon.js | 116 + elpa/archives/elpy/archive-contents | 23 + elpa/archives/gnu/archive-contents | 921 ++ elpa/archives/gnu/archive-contents.signed | 1 + elpa/archives/melpa/archive-contents | 2 + elpa/async-20160108.1249/async-autoloads.el | 129 + elpa/async-20160108.1249/async-bytecomp.el | 177 + elpa/async-20160108.1249/async-bytecomp.elc | Bin 0 -> 6547 bytes elpa/async-20160108.1249/async-pkg.el | 6 + elpa/async-20160108.1249/async.el | 303 + elpa/async-20160108.1249/async.elc | Bin 0 -> 8990 bytes elpa/async-20160108.1249/dired-async.el | 290 + elpa/async-20160108.1249/dired-async.elc | Bin 0 -> 9872 bytes elpa/async-20160108.1249/smtpmail-async.el | 73 + elpa/async-20160108.1249/smtpmail-async.elc | Bin 0 -> 1510 bytes .../auto-complete-autoloads.el | 64 + .../auto-complete-config.el | 543 + .../auto-complete-config.elc | Bin 0 -> 16542 bytes .../auto-complete-pkg.el | 6 + .../auto-complete-20160107.8/auto-complete.el | 2163 +++ .../auto-complete.elc | Bin 0 -> 65578 bytes elpa/auto-complete-20160107.8/dict/ada-mode | 72 + elpa/auto-complete-20160107.8/dict/c++-mode | 99 + elpa/auto-complete-20160107.8/dict/c-mode | 55 + elpa/auto-complete-20160107.8/dict/caml-mode | 231 + .../dict/clojure-mode | 580 + .../dict/clojurescript-mode | 475 + elpa/auto-complete-20160107.8/dict/coq-mode | 278 + elpa/auto-complete-20160107.8/dict/css-mode | 874 ++ .../auto-complete-20160107.8/dict/erlang-mode | 216 + elpa/auto-complete-20160107.8/dict/go-mode | 25 + .../dict/haskell-mode | 679 + elpa/auto-complete-20160107.8/dict/java-mode | 53 + elpa/auto-complete-20160107.8/dict/js-mode | 148 + elpa/auto-complete-20160107.8/dict/lua-mode | 21 + .../auto-complete-20160107.8/dict/octave-mode | 46 + elpa/auto-complete-20160107.8/dict/php-mode | 6144 ++++++++ .../auto-complete-20160107.8/dict/python-mode | 379 + elpa/auto-complete-20160107.8/dict/qml-mode | 183 + elpa/auto-complete-20160107.8/dict/ruby-mode | 181 + elpa/auto-complete-20160107.8/dict/scala-mode | 1347 ++ .../auto-complete-20160107.8/dict/scheme-mode | 216 + .../auto-complete-20160107.8/dict/sclang-mode | 1481 ++ elpa/auto-complete-20160107.8/dict/sh-mode | 182 + elpa/auto-complete-20160107.8/dict/tcl-mode | 172 + elpa/auto-complete-20160107.8/dict/ts-mode | 797 + .../auto-complete-20160107.8/dict/tuareg-mode | 231 + .../dict/verilog-mode | 313 + elpa/company-20160211.520/company-abbrev.el | 50 + elpa/company-20160211.520/company-abbrev.elc | Bin 0 -> 1175 bytes .../company-20160211.520/company-autoloads.el | 284 + elpa/company-20160211.520/company-bbdb.el | 61 + elpa/company-20160211.520/company-bbdb.elc | Bin 0 -> 1723 bytes elpa/company-20160211.520/company-capf.el | 167 + elpa/company-20160211.520/company-capf.elc | Bin 0 -> 3406 bytes elpa/company-20160211.520/company-clang.el | 331 + elpa/company-20160211.520/company-clang.elc | Bin 0 -> 12970 bytes elpa/company-20160211.520/company-cmake.el | 198 + elpa/company-20160211.520/company-cmake.elc | Bin 0 -> 5809 bytes elpa/company-20160211.520/company-css.el | 442 + elpa/company-20160211.520/company-css.elc | Bin 0 -> 16907 bytes .../company-dabbrev-code.el | 104 + .../company-dabbrev-code.elc | Bin 0 -> 3588 bytes elpa/company-20160211.520/company-dabbrev.el | 188 + elpa/company-20160211.520/company-dabbrev.elc | Bin 0 -> 6312 bytes elpa/company-20160211.520/company-eclim.el | 185 + elpa/company-20160211.520/company-eclim.elc | Bin 0 -> 5463 bytes elpa/company-20160211.520/company-elisp.el | 225 + elpa/company-20160211.520/company-elisp.elc | Bin 0 -> 6593 bytes elpa/company-20160211.520/company-etags.el | 107 + elpa/company-20160211.520/company-etags.elc | Bin 0 -> 3112 bytes elpa/company-20160211.520/company-files.el | 122 + elpa/company-20160211.520/company-files.elc | Bin 0 -> 3472 bytes elpa/company-20160211.520/company-gtags.el | 116 + elpa/company-20160211.520/company-gtags.elc | Bin 0 -> 3669 bytes elpa/company-20160211.520/company-ispell.el | 82 + elpa/company-20160211.520/company-ispell.elc | Bin 0 -> 1968 bytes elpa/company-20160211.520/company-keywords.el | 242 + .../company-20160211.520/company-keywords.elc | Bin 0 -> 15041 bytes elpa/company-20160211.520/company-nxml.el | 142 + elpa/company-20160211.520/company-nxml.elc | Bin 0 -> 4224 bytes elpa/company-20160211.520/company-oddmuse.el | 57 + elpa/company-20160211.520/company-oddmuse.elc | Bin 0 -> 1428 bytes elpa/company-20160211.520/company-pkg.el | 8 + elpa/company-20160211.520/company-semantic.el | 167 + .../company-20160211.520/company-semantic.elc | Bin 0 -> 5229 bytes elpa/company-20160211.520/company-template.el | 214 + .../company-20160211.520/company-template.elc | Bin 0 -> 6343 bytes elpa/company-20160211.520/company-tempo.el | 71 + elpa/company-20160211.520/company-tempo.elc | Bin 0 -> 2238 bytes elpa/company-20160211.520/company-xcode.el | 123 + elpa/company-20160211.520/company-xcode.elc | Bin 0 -> 3746 bytes .../company-20160211.520/company-yasnippet.el | 147 + .../company-yasnippet.elc | Bin 0 -> 3497 bytes elpa/company-20160211.520/company.el | 3007 ++++ elpa/company-20160211.520/company.elc | Bin 0 -> 97693 bytes .../darktooth-theme-autoloads.el | 19 + .../darktooth-theme-pkg.el | 2 + .../darktooth-theme.el | 618 + .../darktooth-theme.elc | Bin 0 -> 26757 bytes elpa/dash-20151216.1315/dash-autoloads.el | 15 + elpa/dash-20151216.1315/dash-pkg.el | 2 + elpa/dash-20151216.1315/dash.el | 2437 +++ elpa/dash-20151216.1315/dash.elc | Bin 0 -> 78214 bytes elpa/elpy-20160131.118/NEWS.rst | 453 + elpa/elpy-20160131.118/elpy-autoloads.el | 51 + elpa/elpy-20160131.118/elpy-pkg.el | 9 + elpa/elpy-20160131.118/elpy-refactor.el | 297 + elpa/elpy-20160131.118/elpy-refactor.elc | Bin 0 -> 10494 bytes elpa/elpy-20160131.118/elpy.el | 3683 +++++ elpa/elpy-20160131.118/elpy.elc | Bin 0 -> 103409 bytes elpa/elpy-20160131.118/elpy/__init__.py | 41 + elpa/elpy-20160131.118/elpy/__init__.pyc | Bin 0 -> 778 bytes elpa/elpy-20160131.118/elpy/__main__.py | 25 + elpa/elpy-20160131.118/elpy/auto_pep8.py | 21 + elpa/elpy-20160131.118/elpy/auto_pep8.pyc | Bin 0 -> 734 bytes elpa/elpy-20160131.118/elpy/compat.py | 33 + elpa/elpy-20160131.118/elpy/compat.pyc | Bin 0 -> 1080 bytes elpa/elpy-20160131.118/elpy/impmagic.py | 107 + elpa/elpy-20160131.118/elpy/impmagic.pyc | Bin 0 -> 4585 bytes elpa/elpy-20160131.118/elpy/jedibackend.py | 361 + elpa/elpy-20160131.118/elpy/jedibackend.pyc | Bin 0 -> 9927 bytes elpa/elpy-20160131.118/elpy/pydocutils.py | 91 + elpa/elpy-20160131.118/elpy/pydocutils.pyc | Bin 0 -> 3317 bytes elpa/elpy-20160131.118/elpy/refactor.py | 381 + elpa/elpy-20160131.118/elpy/ropebackend.py | 291 + elpa/elpy-20160131.118/elpy/ropebackend.pyc | Bin 0 -> 9965 bytes elpa/elpy-20160131.118/elpy/rpc.py | 151 + elpa/elpy-20160131.118/elpy/rpc.pyc | Bin 0 -> 5455 bytes elpa/elpy-20160131.118/elpy/server.py | 304 + elpa/elpy-20160131.118/elpy/server.pyc | Bin 0 -> 12017 bytes elpa/elpy-20160131.118/elpy/tests/__init__.py | 8 + elpa/elpy-20160131.118/elpy/tests/compat.py | 18 + elpa/elpy-20160131.118/elpy/tests/support.py | 806 + .../elpy/tests/test_auto_pep8.py | 20 + .../elpy/tests/test_impmagic.py | 74 + .../elpy/tests/test_jedibackend.py | 287 + .../elpy/tests/test_pydocutils.py | 88 + .../elpy/tests/test_refactor.py | 545 + .../elpy/tests/test_ropebackend.py | 205 + elpa/elpy-20160131.118/elpy/tests/test_rpc.py | 209 + .../elpy/tests/test_server.py | 421 + .../elpy/tests/test_support.py | 19 + .../elpy-20160131.118/elpy/tests/test_yapf.py | 28 + elpa/elpy-20160131.118/elpy/yapfutil.py | 33 + elpa/elpy-20160131.118/elpy/yapfutil.pyc | Bin 0 -> 1181 bytes .../snippets/python-mode/.yas-setup.el | 68 + .../snippets/python-mode/.yas-setup.elc | Bin 0 -> 2508 bytes .../snippets/python-mode/__abs__ | 7 + .../snippets/python-mode/__add__ | 7 + .../snippets/python-mode/__and__ | 7 + .../snippets/python-mode/__bool__ | 7 + .../snippets/python-mode/__call__ | 7 + .../snippets/python-mode/__cmp__ | 7 + .../snippets/python-mode/__coerce__ | 7 + .../snippets/python-mode/__complex__ | 7 + .../snippets/python-mode/__contains__ | 7 + .../snippets/python-mode/__del__ | 7 + .../snippets/python-mode/__delattr__ | 7 + .../snippets/python-mode/__delete__ | 7 + .../snippets/python-mode/__delitem__ | 7 + .../snippets/python-mode/__div__ | 7 + .../snippets/python-mode/__divmod__ | 7 + .../snippets/python-mode/__enter__ | 9 + .../snippets/python-mode/__eq__ | 7 + .../snippets/python-mode/__exit__ | 7 + .../snippets/python-mode/__float__ | 7 + .../snippets/python-mode/__floordiv__ | 7 + .../snippets/python-mode/__ge__ | 7 + .../snippets/python-mode/__get__ | 7 + .../snippets/python-mode/__getattr__ | 7 + .../snippets/python-mode/__getattribute__ | 7 + .../snippets/python-mode/__getitem__ | 7 + .../snippets/python-mode/__gt__ | 7 + .../snippets/python-mode/__hash__ | 7 + .../snippets/python-mode/__hex__ | 7 + .../snippets/python-mode/__iadd__ | 7 + .../snippets/python-mode/__iand__ | 7 + .../snippets/python-mode/__idiv__ | 7 + .../snippets/python-mode/__ifloordiv__ | 7 + .../snippets/python-mode/__ilshift__ | 7 + .../snippets/python-mode/__imod__ | 7 + .../snippets/python-mode/__imul__ | 7 + .../snippets/python-mode/__index__ | 7 + .../snippets/python-mode/__init__ | 10 + .../snippets/python-mode/__instancecheck__ | 7 + .../snippets/python-mode/__int__ | 7 + .../snippets/python-mode/__invert__ | 7 + .../snippets/python-mode/__ior__ | 7 + .../snippets/python-mode/__ipow__ | 7 + .../snippets/python-mode/__irshift__ | 7 + .../snippets/python-mode/__isub__ | 7 + .../snippets/python-mode/__iter__ | 7 + .../snippets/python-mode/__itruediv__ | 7 + .../snippets/python-mode/__ixor__ | 7 + .../snippets/python-mode/__le__ | 7 + .../snippets/python-mode/__len__ | 7 + .../snippets/python-mode/__long__ | 7 + .../snippets/python-mode/__lshift__ | 7 + .../snippets/python-mode/__lt__ | 7 + .../snippets/python-mode/__mod__ | 7 + .../snippets/python-mode/__mul__ | 7 + .../snippets/python-mode/__ne__ | 7 + .../snippets/python-mode/__neg__ | 7 + .../snippets/python-mode/__new__ | 10 + .../snippets/python-mode/__nonzero__ | 7 + .../snippets/python-mode/__oct__ | 7 + .../snippets/python-mode/__or__ | 7 + .../snippets/python-mode/__pos__ | 7 + .../snippets/python-mode/__pow__ | 7 + .../snippets/python-mode/__radd__ | 7 + .../snippets/python-mode/__rand__ | 7 + .../snippets/python-mode/__rdivmod__ | 7 + .../snippets/python-mode/__repr__ | 7 + .../snippets/python-mode/__reversed__ | 7 + .../snippets/python-mode/__rfloordiv__ | 7 + .../snippets/python-mode/__rlshift__ | 7 + .../snippets/python-mode/__rmod__ | 7 + .../snippets/python-mode/__rmul__ | 7 + .../snippets/python-mode/__ror__ | 7 + .../snippets/python-mode/__rpow__ | 7 + .../snippets/python-mode/__rrshift__ | 7 + .../snippets/python-mode/__rshift__ | 7 + .../snippets/python-mode/__rsub__ | 7 + .../snippets/python-mode/__rtruediv__ | 7 + .../snippets/python-mode/__rxor__ | 7 + .../snippets/python-mode/__set__ | 7 + .../snippets/python-mode/__setattr__ | 7 + .../snippets/python-mode/__setitem__ | 7 + .../snippets/python-mode/__slots__ | 7 + .../snippets/python-mode/__str__ | 7 + .../snippets/python-mode/__sub__ | 7 + .../snippets/python-mode/__subclasscheck__ | 7 + .../snippets/python-mode/__truediv__ | 7 + .../snippets/python-mode/__unicode__ | 7 + .../snippets/python-mode/__xor__ | 7 + .../snippets/python-mode/ase | 6 + .../snippets/python-mode/asne | 6 + .../snippets/python-mode/asr | 7 + .../snippets/python-mode/class | 13 + .../snippets/python-mode/defs | 7 + .../snippets/python-mode/enc | 6 + .../snippets/python-mode/env | 6 + .../snippets/python-mode/from | 7 + .../snippets/python-mode/pdb | 6 + .../snippets/python-mode/py3 | 7 + .../snippets/python-mode/super | 7 + .../find-file-in-project-autoloads.el | 100 + .../find-file-in-project-pkg.el | 2 + .../find-file-in-project.el | 512 + .../find-file-in-project.elc | Bin 0 -> 12392 bytes .../flymake-easy-autoloads.el | 15 + .../flymake-easy-pkg.el | 2 + elpa/flymake-easy-20140818.55/flymake-easy.el | 151 + .../flymake-easy-20140818.55/flymake-easy.elc | Bin 0 -> 4905 bytes .../flymake-python-pyflakes-autoloads.el | 22 + .../flymake-python-pyflakes-pkg.el | 2 + .../flymake-python-pyflakes.el | 90 + .../flymake-python-pyflakes.elc | Bin 0 -> 2509 bytes elpa/gnupg/pubring.gpg | Bin 0 -> 999 bytes elpa/gnupg/pubring.gpg~ | 0 elpa/gnupg/secring.gpg | 0 elpa/gnupg/trustdb.gpg | Bin 0 -> 1200 bytes elpa/helm-20160217.958/emacs-helm.sh | 106 + elpa/helm-20160217.958/helm-adaptive.el | 244 + elpa/helm-20160217.958/helm-adaptive.elc | Bin 0 -> 7178 bytes elpa/helm-20160217.958/helm-apt.el | 300 + elpa/helm-20160217.958/helm-apt.elc | Bin 0 -> 11715 bytes elpa/helm-20160217.958/helm-autoloads.el | 923 ++ elpa/helm-20160217.958/helm-bookmark.el | 739 + elpa/helm-20160217.958/helm-bookmark.elc | Bin 0 -> 26486 bytes elpa/helm-20160217.958/helm-buffers.el | 895 ++ elpa/helm-20160217.958/helm-buffers.elc | Bin 0 -> 30299 bytes elpa/helm-20160217.958/helm-color.el | 164 + elpa/helm-20160217.958/helm-color.elc | Bin 0 -> 5505 bytes elpa/helm-20160217.958/helm-command.el | 256 + elpa/helm-20160217.958/helm-command.elc | Bin 0 -> 8287 bytes elpa/helm-20160217.958/helm-config.el | 169 + elpa/helm-20160217.958/helm-config.elc | Bin 0 -> 4915 bytes elpa/helm-20160217.958/helm-dabbrev.el | 356 + elpa/helm-20160217.958/helm-dabbrev.elc | Bin 0 -> 14341 bytes elpa/helm-20160217.958/helm-easymenu.el | 90 + elpa/helm-20160217.958/helm-easymenu.elc | Bin 0 -> 2399 bytes elpa/helm-20160217.958/helm-elisp-package.el | 390 + elpa/helm-20160217.958/helm-elisp-package.elc | Bin 0 -> 15034 bytes elpa/helm-20160217.958/helm-elisp.el | 903 ++ elpa/helm-20160217.958/helm-elisp.elc | Bin 0 -> 32851 bytes elpa/helm-20160217.958/helm-elscreen.el | 102 + elpa/helm-20160217.958/helm-elscreen.elc | Bin 0 -> 4528 bytes elpa/helm-20160217.958/helm-eshell.el | 268 + elpa/helm-20160217.958/helm-eshell.elc | Bin 0 -> 9371 bytes elpa/helm-20160217.958/helm-eval.el | 204 + elpa/helm-20160217.958/helm-eval.elc | Bin 0 -> 6315 bytes elpa/helm-20160217.958/helm-external.el | 217 + elpa/helm-20160217.958/helm-external.elc | Bin 0 -> 6812 bytes elpa/helm-20160217.958/helm-files.el | 3516 +++++ elpa/helm-20160217.958/helm-files.elc | Bin 0 -> 128513 bytes elpa/helm-20160217.958/helm-font.el | 198 + elpa/helm-20160217.958/helm-font.elc | Bin 0 -> 6206 bytes elpa/helm-20160217.958/helm-grep.el | 1326 ++ elpa/helm-20160217.958/helm-grep.elc | Bin 0 -> 43602 bytes elpa/helm-20160217.958/helm-help.el | 1433 ++ elpa/helm-20160217.958/helm-help.elc | Bin 0 -> 51650 bytes elpa/helm-20160217.958/helm-id-utils.el | 126 + elpa/helm-20160217.958/helm-id-utils.elc | Bin 0 -> 5046 bytes elpa/helm-20160217.958/helm-imenu.el | 276 + elpa/helm-20160217.958/helm-imenu.elc | Bin 0 -> 8653 bytes elpa/helm-20160217.958/helm-info.el | 238 + elpa/helm-20160217.958/helm-info.elc | Bin 0 -> 8363 bytes elpa/helm-20160217.958/helm-locate.el | 410 + elpa/helm-20160217.958/helm-locate.elc | Bin 0 -> 14799 bytes elpa/helm-20160217.958/helm-man.el | 115 + elpa/helm-20160217.958/helm-man.elc | Bin 0 -> 2897 bytes elpa/helm-20160217.958/helm-misc.el | 334 + elpa/helm-20160217.958/helm-misc.elc | Bin 0 -> 10746 bytes elpa/helm-20160217.958/helm-mode.el | 1212 ++ elpa/helm-20160217.958/helm-mode.elc | Bin 0 -> 35886 bytes elpa/helm-20160217.958/helm-multi-match.el | 373 + elpa/helm-20160217.958/helm-multi-match.elc | Bin 0 -> 13513 bytes elpa/helm-20160217.958/helm-net.el | 526 + elpa/helm-20160217.958/helm-net.elc | Bin 0 -> 16335 bytes elpa/helm-20160217.958/helm-org.el | 276 + elpa/helm-20160217.958/helm-org.elc | Bin 0 -> 9690 bytes elpa/helm-20160217.958/helm-pkg.el | 9 + elpa/helm-20160217.958/helm-plugin.el | 137 + elpa/helm-20160217.958/helm-plugin.elc | Bin 0 -> 3533 bytes elpa/helm-20160217.958/helm-regexp.el | 643 + elpa/helm-20160217.958/helm-regexp.elc | Bin 0 -> 23523 bytes elpa/helm-20160217.958/helm-ring.el | 470 + elpa/helm-20160217.958/helm-ring.elc | Bin 0 -> 14813 bytes elpa/helm-20160217.958/helm-semantic.el | 223 + elpa/helm-20160217.958/helm-semantic.elc | Bin 0 -> 7454 bytes elpa/helm-20160217.958/helm-sys.el | 300 + elpa/helm-20160217.958/helm-sys.elc | Bin 0 -> 8808 bytes elpa/helm-20160217.958/helm-tags.el | 345 + elpa/helm-20160217.958/helm-tags.elc | Bin 0 -> 11420 bytes elpa/helm-20160217.958/helm-types.el | 277 + elpa/helm-20160217.958/helm-types.elc | Bin 0 -> 16805 bytes elpa/helm-20160217.958/helm-utils.el | 664 + elpa/helm-20160217.958/helm-utils.elc | Bin 0 -> 24352 bytes elpa/helm-cmd-t-20150823.1157/helm-C-x-b.el | 116 + elpa/helm-cmd-t-20150823.1157/helm-C-x-b.elc | Bin 0 -> 2004 bytes .../helm-cmd-t-autoloads.el | 41 + .../helm-cmd-t-find.el | 156 + .../helm-cmd-t-find.elc | Bin 0 -> 2402 bytes .../helm-cmd-t-pkg.el | 5 + elpa/helm-cmd-t-20150823.1157/helm-cmd-t.el | 547 + elpa/helm-cmd-t-20150823.1157/helm-cmd-t.elc | Bin 0 -> 14684 bytes .../helm-core-autoloads.el | 202 + elpa/helm-core-20160217.958/helm-core-pkg.el | 7 + elpa/helm-core-20160217.958/helm-lib.el | 714 + elpa/helm-core-20160217.958/helm-lib.elc | Bin 0 -> 24396 bytes .../helm-multi-match.el | 373 + .../helm-multi-match.elc | Bin 0 -> 13513 bytes elpa/helm-core-20160217.958/helm-source.el | 1016 ++ elpa/helm-core-20160217.958/helm-source.elc | Bin 0 -> 37767 bytes elpa/helm-core-20160217.958/helm.el | 5641 +++++++ elpa/helm-core-20160217.958/helm.elc | Bin 0 -> 195392 bytes .../helm-fuzzy-find-autoloads.el | 23 + .../helm-fuzzy-find-pkg.el | 2 + .../helm-fuzzy-find.el | 183 + .../helm-fuzzy-find.elc | Bin 0 -> 4910 bytes .../helm-git-files-autoloads.el | 38 + .../helm-git-files-pkg.el | 2 + .../helm-git-files.el | 311 + .../helm-git-files.elc | Bin 0 -> 10934 bytes .../helm-ls-git-autoloads.el | 26 + .../helm-ls-git-pkg.el | 2 + elpa/helm-ls-git-20151031.2256/helm-ls-git.el | 511 + .../helm-ls-git-20151031.2256/helm-ls-git.elc | Bin 0 -> 18426 bytes .../highlight-indentation-autoloads.el | 35 + .../highlight-indentation-pkg.el | 2 + .../highlight-indentation.el | 244 + .../highlight-indentation.elc | Bin 0 -> 10482 bytes .../js2-highlight-vars-autoloads.el | 23 + .../js2-highlight-vars-pkg.el | 2 + .../js2-highlight-vars.el | 208 + .../js2-highlight-vars.elc | Bin 0 -> 7200 bytes .../js2-imenu-extras.el | 349 + .../js2-imenu-extras.elc | Bin 0 -> 15215 bytes .../js2-mode-autoloads.el | 67 + elpa/js2-mode-20160124.1132/js2-mode-pkg.el | 8 + elpa/js2-mode-20160124.1132/js2-mode.el | 12697 ++++++++++++++++ elpa/js2-mode-20160124.1132/js2-mode.elc | Bin 0 -> 1116326 bytes elpa/js2-mode-20160124.1132/js2-old-indent.el | 709 + .../js2-mode-20160124.1132/js2-old-indent.elc | Bin 0 -> 15979 bytes .../js2-refactor-autoloads.el | 49 + .../js2-refactor-pkg.el | 10 + .../js2-refactor-20151029.507/js2-refactor.el | 193 + .../js2-refactor.elc | Bin 0 -> 4210 bytes .../js2r-conditionals.el | 54 + .../js2r-conditionals.elc | Bin 0 -> 1405 bytes .../js2r-conveniences.el | 223 + .../js2r-conveniences.elc | Bin 0 -> 6623 bytes .../js2r-formatting.el | 163 + .../js2r-formatting.elc | Bin 0 -> 6053 bytes .../js2r-functions.el | 435 + .../js2r-functions.elc | Bin 0 -> 18725 bytes .../js2-refactor-20151029.507/js2r-helpers.el | 208 + .../js2r-helpers.elc | Bin 0 -> 9028 bytes elpa/js2-refactor-20151029.507/js2r-iife.el | 89 + elpa/js2-refactor-20151029.507/js2r-iife.elc | Bin 0 -> 2336 bytes .../js2-refactor-20151029.507/js2r-paredit.el | 205 + .../js2r-paredit.elc | Bin 0 -> 6316 bytes elpa/js2-refactor-20151029.507/js2r-vars.el | 319 + elpa/js2-refactor-20151029.507/js2r-vars.elc | Bin 0 -> 9413 bytes .../js2r-wrapping.el | 47 + .../js2r-wrapping.elc | Bin 0 -> 1517 bytes .../markdown-mode-autoloads.el | 31 + .../markdown-mode-pkg.el | 2 + .../markdown-mode.el | 6835 +++++++++ .../markdown-mode.elc | Bin 0 -> 199532 bytes elpa/mmm-mode-20150828.1716/dir | 18 + elpa/mmm-mode-20150828.1716/mmm-auto.el | 177 + elpa/mmm-mode-20150828.1716/mmm-auto.elc | Bin 0 -> 4753 bytes elpa/mmm-mode-20150828.1716/mmm-class.el | 327 + elpa/mmm-mode-20150828.1716/mmm-class.elc | Bin 0 -> 12028 bytes elpa/mmm-mode-20150828.1716/mmm-cmds.el | 444 + elpa/mmm-mode-20150828.1716/mmm-cmds.elc | Bin 0 -> 12316 bytes elpa/mmm-mode-20150828.1716/mmm-compat.el | 122 + elpa/mmm-mode-20150828.1716/mmm-compat.elc | Bin 0 -> 1604 bytes elpa/mmm-mode-20150828.1716/mmm-cweb.el | 100 + elpa/mmm-mode-20150828.1716/mmm-cweb.elc | Bin 0 -> 1982 bytes elpa/mmm-mode-20150828.1716/mmm-defaults.el | 62 + elpa/mmm-mode-20150828.1716/mmm-defaults.elc | Bin 0 -> 1077 bytes elpa/mmm-mode-20150828.1716/mmm-erb.el | 244 + elpa/mmm-mode-20150828.1716/mmm-erb.elc | Bin 0 -> 10862 bytes elpa/mmm-mode-20150828.1716/mmm-mason.el | 175 + elpa/mmm-mode-20150828.1716/mmm-mason.elc | Bin 0 -> 4311 bytes .../mmm-mode-autoloads.el | 44 + elpa/mmm-mode-20150828.1716/mmm-mode-pkg.el | 5 + elpa/mmm-mode-20150828.1716/mmm-mode.el | 300 + elpa/mmm-mode-20150828.1716/mmm-mode.elc | Bin 0 -> 6374 bytes elpa/mmm-mode-20150828.1716/mmm-myghty.el | 188 + elpa/mmm-mode-20150828.1716/mmm-myghty.elc | Bin 0 -> 4733 bytes elpa/mmm-mode-20150828.1716/mmm-noweb.el | 415 + elpa/mmm-mode-20150828.1716/mmm-noweb.elc | Bin 0 -> 10324 bytes elpa/mmm-mode-20150828.1716/mmm-region.el | 886 ++ elpa/mmm-mode-20150828.1716/mmm-region.elc | Bin 0 -> 26661 bytes elpa/mmm-mode-20150828.1716/mmm-rpm.el | 80 + elpa/mmm-mode-20150828.1716/mmm-rpm.elc | Bin 0 -> 1568 bytes elpa/mmm-mode-20150828.1716/mmm-sample.el | 384 + elpa/mmm-mode-20150828.1716/mmm-sample.elc | Bin 0 -> 6571 bytes elpa/mmm-mode-20150828.1716/mmm-univ.el | 64 + elpa/mmm-mode-20150828.1716/mmm-univ.elc | Bin 0 -> 1031 bytes elpa/mmm-mode-20150828.1716/mmm-utils.el | 159 + elpa/mmm-mode-20150828.1716/mmm-utils.elc | Bin 0 -> 4343 bytes elpa/mmm-mode-20150828.1716/mmm-vars.el | 1126 ++ elpa/mmm-mode-20150828.1716/mmm-vars.elc | Bin 0 -> 37756 bytes elpa/mmm-mode-20150828.1716/mmm.info | 2073 +++ .../multi-term-autoloads.el | 51 + .../multi-term-20150220.520/multi-term-pkg.el | 2 + elpa/multi-term-20150220.520/multi-term.el | 855 ++ elpa/multi-term-20150220.520/multi-term.elc | Bin 0 -> 19378 bytes .../mc-cycle-cursors.el | 122 + .../mc-cycle-cursors.elc | Bin 0 -> 3257 bytes .../mc-edit-lines.el | 110 + .../mc-edit-lines.elc | Bin 0 -> 2751 bytes .../mc-hide-unmatched-lines-mode.el | 107 + .../mc-hide-unmatched-lines-mode.elc | Bin 0 -> 4284 bytes .../mc-mark-more.el | 624 + .../mc-mark-more.elc | Bin 0 -> 19304 bytes .../mc-mark-pop.el | 22 + .../mc-mark-pop.elc | Bin 0 -> 778 bytes .../mc-separate-operations.el | 146 + .../mc-separate-operations.elc | Bin 0 -> 4585 bytes .../multiple-cursors-autoloads.el | 312 + .../multiple-cursors-core.el | 776 + .../multiple-cursors-core.elc | Bin 0 -> 27601 bytes .../multiple-cursors-pkg.el | 4 + .../multiple-cursors.el | 199 + .../multiple-cursors.elc | Bin 0 -> 696 bytes .../rectangular-region-mode.el | 125 + .../rectangular-region-mode.elc | Bin 0 -> 4801 bytes elpa/popup-20151222.1339/popup-autoloads.el | 15 + elpa/popup-20151222.1339/popup-pkg.el | 2 + elpa/popup-20151222.1339/popup.el | 1428 ++ elpa/popup-20151222.1339/popup.elc | Bin 0 -> 71221 bytes elpa/pyvenv-20160108.28/pyvenv-autoloads.el | 71 + elpa/pyvenv-20160108.28/pyvenv-pkg.el | 2 + elpa/pyvenv-20160108.28/pyvenv.el | 462 + elpa/pyvenv-20160108.28/pyvenv.elc | Bin 0 -> 16260 bytes elpa/s-20160115.58/s-autoloads.el | 15 + elpa/s-20160115.58/s-pkg.el | 2 + elpa/s-20160115.58/s.el | 618 + elpa/s-20160115.58/s.elc | Bin 0 -> 18694 bytes .../simple-httpd-autoloads.el | 34 + .../simple-httpd-pkg.el | 2 + .../simple-httpd.el | 768 + .../simple-httpd.elc | Bin 0 -> 22029 bytes elpa/skewer-mode-20150914.1304/cache-table.el | 66 + .../skewer-mode-20150914.1304/cache-table.elc | Bin 0 -> 6468 bytes elpa/skewer-mode-20150914.1304/example.html | 9 + .../skewer-mode-20150914.1304/skewer-bower.el | 217 + .../skewer-bower.elc | Bin 0 -> 7538 bytes elpa/skewer-mode-20150914.1304/skewer-css.el | 134 + elpa/skewer-mode-20150914.1304/skewer-css.elc | Bin 0 -> 4907 bytes .../skewer-everything.user.js | 48 + elpa/skewer-mode-20150914.1304/skewer-html.el | 126 + .../skewer-mode-20150914.1304/skewer-html.elc | Bin 0 -> 4812 bytes .../skewer-mode-autoloads.el | 110 + .../skewer-mode-pkg.el | 7 + elpa/skewer-mode-20150914.1304/skewer-mode.el | 599 + .../skewer-mode-20150914.1304/skewer-mode.elc | Bin 0 -> 29201 bytes elpa/skewer-mode-20150914.1304/skewer-repl.el | 156 + .../skewer-mode-20150914.1304/skewer-repl.elc | Bin 0 -> 7076 bytes .../skewer-mode-20150914.1304/skewer-setup.el | 21 + .../skewer-setup.elc | Bin 0 -> 708 bytes elpa/skewer-mode-20150914.1304/skewer.js | 413 + elpa/swiper-20160219.536/colir.el | 102 + elpa/swiper-20160219.536/colir.elc | Bin 0 -> 2513 bytes elpa/swiper-20160219.536/dir | 18 + elpa/swiper-20160219.536/ivy-help.org | 138 + elpa/swiper-20160219.536/ivy-hydra.el | 93 + elpa/swiper-20160219.536/ivy-hydra.elc | Bin 0 -> 1143 bytes elpa/swiper-20160219.536/ivy.el | 2789 ++++ elpa/swiper-20160219.536/ivy.elc | Bin 0 -> 103314 bytes elpa/swiper-20160219.536/ivy.info | 1834 +++ elpa/swiper-20160219.536/swiper-autoloads.el | 102 + elpa/swiper-20160219.536/swiper-pkg.el | 7 + elpa/swiper-20160219.536/swiper.el | 696 + elpa/swiper-20160219.536/swiper.elc | Bin 0 -> 19022 bytes .../typescript-mode-autoloads.el | 30 + .../typescript-mode-pkg.el | 2 + .../typescript-mode.el | 2082 +++ .../typescript-mode.elc | Bin 0 -> 60519 bytes .../snippets/.gitignore | 1 + .../yasnippet-20160131.948/snippets/.nosearch | 1 + .../snippets/CONTRIBUTORS.txt | 4 + elpa/yasnippet-20160131.948/snippets/LICENSE | 18 + .../yasnippet-20160131.948/snippets/README.md | 40 + .../snippets/antlr-mode/project | 8 + .../snippets/antlr-mode/property | 6 + .../snippets/antlr-mode/target | 7 + .../snippets/applescript-mode/.yas-parents | 1 + .../snippets/c++-mode/.yas-parents | 1 + .../snippets/c++-mode/assert | 5 + .../snippets/c++-mode/beginend | 5 + .../snippets/c++-mode/boost_require | 7 + .../snippets/c++-mode/cerr | 5 + .../snippets/c++-mode/cin | 5 + .../snippets/c++-mode/class | 11 + .../snippets/c++-mode/const_[] | 8 + .../snippets/c++-mode/constructor | 8 + .../snippets/c++-mode/cout | 8 + .../snippets/c++-mode/cpp | 5 + .../snippets/c++-mode/cstd | 5 + .../snippets/c++-mode/d+= | 5 + .../snippets/c++-mode/d_operator | 5 + .../snippets/c++-mode/d_operator[] | 5 + .../snippets/c++-mode/d_operator[]_const | 5 + .../snippets/c++-mode/d_operator_istream | 5 + .../snippets/c++-mode/d_operator_ostream | 5 + .../snippets/c++-mode/delete | 5 + .../snippets/c++-mode/delete[] | 5 + .../snippets/c++-mode/doc | 7 + .../snippets/c++-mode/dynamic_casting | 5 + .../snippets/c++-mode/enum | 7 + .../snippets/c++-mode/fixture | 9 + .../snippets/c++-mode/fori | 7 + .../snippets/c++-mode/friend | 5 + .../snippets/c++-mode/fun_declaration | 5 + .../snippets/c++-mode/function | 8 + .../snippets/c++-mode/gtest | 6 + .../snippets/c++-mode/ignore | 5 + .../snippets/c++-mode/inline | 5 + .../snippets/c++-mode/io | 5 + .../snippets/c++-mode/iterator | 5 + .../snippets/c++-mode/map | 5 + .../snippets/c++-mode/module | 8 + .../snippets/c++-mode/namespace | 9 + .../snippets/c++-mode/ns | 4 + .../snippets/c++-mode/operator!= | 9 + .../snippets/c++-mode/operator+ | 11 + .../snippets/c++-mode/operator+= | 10 + .../snippets/c++-mode/operator= | 14 + .../snippets/c++-mode/operator== | 9 + .../snippets/c++-mode/operator[] | 9 + .../snippets/c++-mode/operator_istream | 10 + .../snippets/c++-mode/operator_ostream | 10 + .../snippets/c++-mode/ostream | 5 + .../snippets/c++-mode/pack | 10 + .../snippets/c++-mode/private | 6 + .../snippets/c++-mode/protected | 6 + .../snippets/c++-mode/public | 6 + .../snippets/c++-mode/sstream | 5 + .../snippets/c++-mode/std | 5 + .../snippets/c++-mode/std_colon | 5 + .../snippets/c++-mode/str | 5 + .../snippets/c++-mode/template | 6 + .../snippets/c++-mode/test case | 9 + .../snippets/c++-mode/test_main | 10 + .../snippets/c++-mode/test_suite | 10 + .../snippets/c++-mode/this | 5 + .../snippets/c++-mode/throw | 5 + .../snippets/c++-mode/try | 10 + .../snippets/c++-mode/tryw | 9 + .../snippets/c++-mode/using | 5 + .../snippets/c++-mode/vector | 5 + .../snippets/c-mode/.yas-parents | 1 + .../snippets/c-mode/assert | 6 + .../snippets/c-mode/compile | 5 + .../snippets/c-mode/define | 5 + .../snippets/c-mode/malloc | 6 + .../snippets/c-mode/packed | 5 + .../snippets/c-mode/printf | 5 + .../snippets/c-mode/stdio | 5 + .../snippets/c-mode/stdlib | 5 + .../snippets/c-mode/string | 5 + .../snippets/c-mode/union | 7 + .../snippets/c-mode/unistd | 5 + .../snippets/cc-mode/case | 8 + .../snippets/cc-mode/do | 7 + .../snippets/cc-mode/else | 7 + .../snippets/cc-mode/file_description | 13 + .../snippets/cc-mode/fopen | 5 + .../snippets/cc-mode/for | 7 + .../snippets/cc-mode/for_n | 8 + .../snippets/cc-mode/function_description | 14 + .../snippets/cc-mode/if | 7 + .../snippets/cc-mode/ifdef | 9 + .../snippets/cc-mode/inc | 5 + .../snippets/cc-mode/inc.1 | 5 + .../snippets/cc-mode/main | 9 + .../snippets/cc-mode/math | 6 + .../snippets/cc-mode/member_description | 7 + .../snippets/cc-mode/once | 9 + .../snippets/cc-mode/printf | 6 + .../snippets/cc-mode/struct | 7 + .../snippets/cc-mode/switch | 11 + .../snippets/cc-mode/ternary | 5 + .../snippets/cc-mode/typedef | 5 + .../snippets/cc-mode/while | 7 + .../snippets/chef-mode/action | 5 + .../snippets/chef-mode/bash | 14 + .../snippets/chef-mode/cookbook_file | 10 + .../snippets/chef-mode/cron | 10 + .../snippets/chef-mode/cronf | 16 + .../snippets/chef-mode/deploy | 18 + .../snippets/chef-mode/directory | 11 + .../snippets/chef-mode/directoryf | 13 + .../snippets/chef-mode/env | 7 + .../snippets/chef-mode/execute | 10 + .../snippets/chef-mode/executef | 18 + .../snippets/chef-mode/file | 11 + .../snippets/chef-mode/filef | 14 + .../snippets/chef-mode/git | 11 + .../snippets/chef-mode/group | 10 + .../snippets/chef-mode/http_request | 7 + .../snippets/chef-mode/http_requestp | 10 + .../snippets/chef-mode/ignore_failure | 5 + .../snippets/chef-mode/inc | 5 + .../snippets/chef-mode/link | 7 + .../snippets/chef-mode/linkf | 10 + .../snippets/chef-mode/log | 5 + .../snippets/chef-mode/machine | 10 + .../snippets/chef-mode/meta | 10 + .../snippets/chef-mode/not_if | 5 + .../snippets/chef-mode/notifies | 5 + .../snippets/chef-mode/only_if | 5 + .../snippets/chef-mode/pac | 8 + .../snippets/chef-mode/pak | 8 + .../snippets/chef-mode/provider | 5 + .../snippets/chef-mode/python | 11 + .../snippets/chef-mode/remote_file | 11 + .../snippets/chef-mode/retries | 6 + .../snippets/chef-mode/role | 12 + .../snippets/chef-mode/ruby | 9 + .../snippets/chef-mode/script | 15 + .../snippets/chef-mode/service | 8 + .../snippets/chef-mode/servicep | 9 + .../snippets/chef-mode/subscribes | 5 + .../snippets/chef-mode/supports | 5 + .../snippets/chef-mode/template | 10 + .../snippets/chef-mode/templatev | 11 + .../snippets/chef-mode/user | 14 + .../snippets/cider-repl-mode | 0 .../snippets/clojure-mode/.yas-parents | 1 + .../snippets/clojure-mode/bench | 7 + .../snippets/clojure-mode/bp | 4 + .../snippets/clojure-mode/def | 4 + .../snippets/clojure-mode/defm | 7 + .../snippets/clojure-mode/defn | 7 + .../snippets/clojure-mode/defr | 8 + .../snippets/clojure-mode/deft | 8 + .../snippets/clojure-mode/doseq | 6 + .../snippets/clojure-mode/fn | 5 + .../snippets/clojure-mode/for | 5 + .../snippets/clojure-mode/if | 8 + .../snippets/clojure-mode/ifl | 7 + .../snippets/clojure-mode/import | 4 + .../snippets/clojure-mode/is | 5 + .../snippets/clojure-mode/let | 7 + .../snippets/clojure-mode/map | 5 + .../snippets/clojure-mode/map.lambda | 5 + .../snippets/clojure-mode/mdoc | 5 + .../snippets/clojure-mode/ns | 22 + .../snippets/clojure-mode/opts | 6 + .../snippets/clojure-mode/pr | 6 + .../snippets/clojure-mode/print | 6 + .../snippets/clojure-mode/reduce | 5 + .../snippets/clojure-mode/require | 4 + .../snippets/clojure-mode/test | 6 + .../snippets/clojure-mode/try | 7 + .../snippets/clojure-mode/use | 4 + .../snippets/clojure-mode/when | 7 + .../snippets/clojure-mode/whenl | 7 + .../snippets/cmake-mode/add_executable | 6 + .../snippets/cmake-mode/add_library | 6 + .../cmake-mode/cmake_minimum_required | 5 + .../snippets/cmake-mode/foreach | 7 + .../snippets/cmake-mode/function | 7 + .../snippets/cmake-mode/if | 7 + .../snippets/cmake-mode/ifelse | 9 + .../snippets/cmake-mode/include | 5 + .../snippets/cmake-mode/macro | 7 + .../snippets/cmake-mode/message | 5 + .../snippets/cmake-mode/option | 5 + .../snippets/cmake-mode/project | 5 + .../snippets/cmake-mode/set | 5 + .../snippets/conf-unix-mode/.yas-parents | 1 + .../snippets/conf-unix-mode/section | 8 + .../snippets/cperl-mode/.yas-parents | 1 + .../snippets/cpp-omnet-mode/EV | 5 + .../snippets/cpp-omnet-mode/emit_signal | 5 + .../snippets/cpp-omnet-mode/intuniform | 5 + .../snippets/cpp-omnet-mode/math | 5 + .../snippets/cpp-omnet-mode/nan | 5 + .../snippets/cpp-omnet-mode/omnet | 5 + .../snippets/cpp-omnet-mode/parameter_omnetpp | 5 + .../snippets/cpp-omnet-mode/scheduleAt | 5 + .../snippets/cpp-omnet-mode/uniform | 6 + .../snippets/csharp-mode/.yas-parents | 1 + .../snippets/csharp-mode/attrib | 8 + .../snippets/csharp-mode/attrib.1 | 22 + .../snippets/csharp-mode/attrib.2 | 22 + .../snippets/csharp-mode/class | 22 + .../snippets/csharp-mode/comment | 7 + .../snippets/csharp-mode/comment.1 | 5 + .../snippets/csharp-mode/comment.2 | 5 + .../snippets/csharp-mode/comment.3 | 5 + .../snippets/csharp-mode/method | 11 + .../snippets/csharp-mode/namespace | 8 + .../snippets/csharp-mode/prop | 17 + .../snippets/csharp-mode/region | 7 + .../snippets/csharp-mode/using | 5 + .../snippets/csharp-mode/using.1 | 5 + .../snippets/csharp-mode/using.2 | 5 + .../snippets/css-mode/bg | 3 + .../snippets/css-mode/bg.1 | 3 + .../snippets/css-mode/bor | 3 + .../snippets/css-mode/cl | 4 + .../snippets/css-mode/disp.block | 4 + .../snippets/css-mode/disp.inline | 4 + .../snippets/css-mode/disp.none | 4 + .../snippets/css-mode/ff | 4 + .../snippets/css-mode/fs | 4 + .../snippets/css-mode/mar.bottom | 4 + .../snippets/css-mode/mar.left | 4 + .../snippets/css-mode/mar.mar | 4 + .../snippets/css-mode/mar.margin | 4 + .../snippets/css-mode/mar.right | 4 + .../snippets/css-mode/mar.top | 4 + .../snippets/css-mode/pad.bottom | 4 + .../snippets/css-mode/pad.left | 4 + .../snippets/css-mode/pad.pad | 4 + .../snippets/css-mode/pad.padding | 4 + .../snippets/css-mode/pad.right | 4 + .../snippets/css-mode/pad.top | 4 + .../snippets/css-mode/v | 10 + .../snippets/elixir-mode/.yas-parents | 1 + .../snippets/elixir-mode/case | 7 + .../snippets/elixir-mode/cond | 7 + .../snippets/elixir-mode/def | 7 + .../snippets/elixir-mode/defmacro | 7 + .../snippets/elixir-mode/defmacrop | 7 + .../snippets/elixir-mode/defmodule | 7 + .../snippets/elixir-mode/defp | 7 + .../snippets/elixir-mode/doc | 7 + .../snippets/elixir-mode/mdoc | 7 + .../snippets/emacs-lisp-mode/.read_me | 7 + .../snippets/emacs-lisp-mode/add-hook | 6 + .../snippets/emacs-lisp-mode/and | 6 + .../snippets/emacs-lisp-mode/append | 5 + .../snippets/emacs-lisp-mode/apply | 5 + .../snippets/emacs-lisp-mode/aref | 5 + .../snippets/emacs-lisp-mode/aset | 5 + .../snippets/emacs-lisp-mode/assq | 5 + .../snippets/emacs-lisp-mode/autoload | 5 + .../snippets/emacs-lisp-mode/backward-char | 6 + .../emacs-lisp-mode/beginning-of-line | 6 + .../emacs-lisp-mode/bounds-of-thing-at-point | 6 + .../snippets/emacs-lisp-mode/buffer-file-name | 6 + .../emacs-lisp-mode/buffer-modified-p | 6 + .../snippets/emacs-lisp-mode/buffer-substring | 6 + .../buffer-substring-no-properties | 6 + .../snippets/emacs-lisp-mode/car | 5 + .../snippets/emacs-lisp-mode/cdr | 5 + .../snippets/emacs-lisp-mode/concat | 5 + .../snippets/emacs-lisp-mode/cond | 8 + .../snippets/emacs-lisp-mode/condition-case | 6 + .../snippets/emacs-lisp-mode/cons | 5 + .../snippets/emacs-lisp-mode/consp | 5 + .../snippets/emacs-lisp-mode/copy-directory | 6 + .../snippets/emacs-lisp-mode/copy-file | 6 + .../snippets/emacs-lisp-mode/current-buffer | 6 + .../snippets/emacs-lisp-mode/custom-autoload | 6 + .../snippets/emacs-lisp-mode/defalias | 5 + .../snippets/emacs-lisp-mode/defcustom | 5 + .../snippets/emacs-lisp-mode/define-key | 6 + .../snippets/emacs-lisp-mode/defsubst | 5 + .../snippets/emacs-lisp-mode/defun | 7 + .../snippets/emacs-lisp-mode/defvar | 4 + .../snippets/emacs-lisp-mode/delete-char | 6 + .../snippets/emacs-lisp-mode/delete-directory | 6 + .../snippets/emacs-lisp-mode/delete-file | 6 + .../snippets/emacs-lisp-mode/delete-region | 6 + .../snippets/emacs-lisp-mode/directory-files | 6 + .../emacs-lisp-mode/dired.process_marked | 16 + .../snippets/emacs-lisp-mode/dolist | 5 + .../snippets/emacs-lisp-mode/end-of-line | 6 + .../snippets/emacs-lisp-mode/eq | 5 + .../snippets/emacs-lisp-mode/equal | 5 + .../snippets/emacs-lisp-mode/error | 5 + .../snippets/emacs-lisp-mode/ert-deftest | 7 + .../snippets/emacs-lisp-mode/expand-file-name | 6 + .../snippets/emacs-lisp-mode/f | 5 + .../snippets/emacs-lisp-mode/fboundp | 5 + .../emacs-lisp-mode/file-name-directory | 6 + .../emacs-lisp-mode/file-name-extension | 6 + .../emacs-lisp-mode/file-name-nondirectory | 6 + .../emacs-lisp-mode/file-name-sans-extension | 6 + .../emacs-lisp-mode/file-relative-name | 6 + .../snippets/emacs-lisp-mode/file.process | 17 + .../snippets/emacs-lisp-mode/file.read-lines | 17 + .../snippets/emacs-lisp-mode/find-file | 6 + .../snippets/emacs-lisp-mode/find-replace | 17 + .../snippets/emacs-lisp-mode/format | 5 + .../snippets/emacs-lisp-mode/forward-char | 6 + .../snippets/emacs-lisp-mode/forward-line | 6 + .../snippets/emacs-lisp-mode/funcall | 5 + .../snippets/emacs-lisp-mode/function | 5 + .../snippets/emacs-lisp-mode/get | 5 + .../snippets/emacs-lisp-mode/global-set-key | 6 + .../snippets/emacs-lisp-mode/goto-char | 6 + .../snippets/emacs-lisp-mode/grabstring | 4 + .../snippets/emacs-lisp-mode/grabthing | 4 + .../snippets/emacs-lisp-mode/hash | 5 + .../snippets/emacs-lisp-mode/if | 5 + .../snippets/emacs-lisp-mode/insert | 6 + .../emacs-lisp-mode/insert-file-contents | 6 + .../snippets/emacs-lisp-mode/interactive | 5 + .../snippets/emacs-lisp-mode/kbd | 5 + .../snippets/emacs-lisp-mode/kill-buffer | 6 + .../snippets/emacs-lisp-mode/lambda | 5 + .../snippets/emacs-lisp-mode/length | 5 + .../snippets/emacs-lisp-mode/let | 8 + .../emacs-lisp-mode/line-beginning-position | 6 + .../emacs-lisp-mode/line-end-position | 6 + .../snippets/emacs-lisp-mode/list | 5 + .../snippets/emacs-lisp-mode/looking-at | 6 + .../snippets/emacs-lisp-mode/make-directory | 6 + .../emacs-lisp-mode/make-local-variable | 6 + .../snippets/emacs-lisp-mode/mapc | 5 + .../snippets/emacs-lisp-mode/mapcar | 5 + .../snippets/emacs-lisp-mode/match-beginning | 6 + .../snippets/emacs-lisp-mode/match-end | 6 + .../snippets/emacs-lisp-mode/match-string | 6 + .../snippets/emacs-lisp-mode/memq | 5 + .../snippets/emacs-lisp-mode/message | 6 + .../snippets/emacs-lisp-mode/minor_mode | 20 + .../snippets/emacs-lisp-mode/not | 6 + .../snippets/emacs-lisp-mode/nth | 5 + .../snippets/emacs-lisp-mode/null | 5 + .../snippets/emacs-lisp-mode/number-to-string | 6 + .../snippets/emacs-lisp-mode/or | 6 + .../snippets/emacs-lisp-mode/point | 6 + .../snippets/emacs-lisp-mode/point-max | 5 + .../snippets/emacs-lisp-mode/point-min | 6 + .../snippets/emacs-lisp-mode/princ | 5 + .../snippets/emacs-lisp-mode/print | 5 + .../snippets/emacs-lisp-mode/progn | 5 + .../snippets/emacs-lisp-mode/push | 5 + .../snippets/emacs-lisp-mode/put | 5 + .../emacs-lisp-mode/re-search-backward | 6 + .../emacs-lisp-mode/re-search-forward | 6 + .../snippets/emacs-lisp-mode/region-active-p | 6 + .../snippets/emacs-lisp-mode/region-beginning | 6 + .../snippets/emacs-lisp-mode/region-end | 6 + .../snippets/emacs-lisp-mode/rename-file | 6 + .../snippets/emacs-lisp-mode/repeat | 5 + .../snippets/emacs-lisp-mode/replace-regexp | 6 + .../emacs-lisp-mode/replace-regexp-in-string | 6 + .../snippets/emacs-lisp-mode/require | 5 + .../snippets/emacs-lisp-mode/save-buffer | 6 + .../snippets/emacs-lisp-mode/save-excursion | 6 + .../snippets/emacs-lisp-mode/search-backward | 6 + .../emacs-lisp-mode/search-backward-regexp | 6 + .../snippets/emacs-lisp-mode/search-forward | 6 + .../emacs-lisp-mode/search-forward-regexp | 6 + .../snippets/emacs-lisp-mode/set | 5 + .../snippets/emacs-lisp-mode/set-buffer | 6 + .../snippets/emacs-lisp-mode/set-file-modes | 6 + .../snippets/emacs-lisp-mode/set-mark | 6 + .../snippets/emacs-lisp-mode/setq | 6 + .../snippets/emacs-lisp-mode/should | 6 + .../emacs-lisp-mode/skip-chars-backward | 6 + .../emacs-lisp-mode/skip-chars-forward | 6 + .../snippets/emacs-lisp-mode/split-string | 6 + .../snippets/emacs-lisp-mode/string | 5 + .../snippets/emacs-lisp-mode/string-match | 6 + .../snippets/emacs-lisp-mode/string-to-number | 6 + .../snippets/emacs-lisp-mode/string= | 5 + .../snippets/emacs-lisp-mode/stringp | 5 + .../snippets/emacs-lisp-mode/substring | 5 + .../snippets/emacs-lisp-mode/thing-at-point | 6 + .../snippets/emacs-lisp-mode/traverse_dir | 6 + .../snippets/emacs-lisp-mode/unless | 5 + .../snippets/emacs-lisp-mode/vector | 6 + .../snippets/emacs-lisp-mode/when | 5 + .../snippets/emacs-lisp-mode/while | 5 + .../snippets/emacs-lisp-mode/widget-get | 6 + .../emacs-lisp-mode/with-current-buffer | 6 + .../snippets/emacs-lisp-mode/word-or-region | 27 + .../snippets/emacs-lisp-mode/word_regexp | 5 + .../emacs-lisp-mode/x-dired.process_marked | 17 + .../snippets/emacs-lisp-mode/x-file.process | 18 + .../emacs-lisp-mode/x-file.read-lines | 18 + .../snippets/emacs-lisp-mode/x-find-replace | 18 + .../snippets/emacs-lisp-mode/x-grabstring | 5 + .../snippets/emacs-lisp-mode/x-grabthing | 5 + .../snippets/emacs-lisp-mode/x-traverse_dir | 7 + .../snippets/emacs-lisp-mode/x-word-or-region | 28 + .../snippets/emacs-lisp-mode/y-or-n-p | 6 + .../snippets/emacs-lisp-mode/yes-or-no-p | 5 + .../snippets/enh-ruby-mode | 0 .../snippets/ensime-mode | 0 .../snippets/erc-mode/blist | 5 + .../snippets/erc-mode/help | 5 + .../snippets/erlang-mode/after | 4 + .../snippets/erlang-mode/begin | 5 + .../snippets/erlang-mode/beh | 4 + .../snippets/erlang-mode/case | 5 + .../snippets/erlang-mode/compile | 4 + .../snippets/erlang-mode/def | 4 + .../snippets/erlang-mode/exp | 5 + .../snippets/erlang-mode/fun | 3 + .../snippets/erlang-mode/if | 6 + .../snippets/erlang-mode/ifdef | 5 + .../snippets/erlang-mode/ifndef | 5 + .../snippets/erlang-mode/imp | 5 + .../snippets/erlang-mode/inc | 4 + .../snippets/erlang-mode/inc.lib | 4 + .../snippets/erlang-mode/loop | 8 + .../snippets/erlang-mode/mod | 6 + .../snippets/erlang-mode/rcv | 5 + .../snippets/erlang-mode/rcv.after | 6 + .../snippets/erlang-mode/rec | 4 + .../snippets/erlang-mode/try | 7 + .../snippets/erlang-mode/undef | 4 + .../snippets/f90-mode/bd | 4 + .../snippets/f90-mode/c | 4 + .../snippets/f90-mode/ch | 4 + .../snippets/f90-mode/cx | 4 + .../snippets/f90-mode/dc | 4 + .../snippets/f90-mode/do | 8 + .../snippets/f90-mode/dp | 4 + .../snippets/f90-mode/forall | 8 + .../snippets/f90-mode/function | 12 + .../snippets/f90-mode/if | 6 + .../snippets/f90-mode/in | 4 + .../snippets/f90-mode/inc | 4 + .../snippets/f90-mode/intr | 4 + .../snippets/f90-mode/l | 4 + .../snippets/f90-mode/module | 12 + .../snippets/f90-mode/pa | 4 + .../snippets/f90-mode/program | 11 + .../snippets/f90-mode/puref | 12 + .../snippets/f90-mode/pures | 10 + .../snippets/f90-mode/re | 4 + .../snippets/f90-mode/subroutine | 10 + .../snippets/f90-mode/until | 9 + .../snippets/f90-mode/where | 9 + .../snippets/f90-mode/while | 8 + .../snippets/f90-mode/wr | 4 + .../snippets/fundamental-mode/.yas-setup.el | 8 + .../snippets/fundamental-mode/.yas-setup.elc | Bin 0 -> 623 bytes .../snippets/git-commit-mode/.yas-parents | 1 + .../snippets/git-commit-mode/fixes | 5 + .../snippets/git-commit-mode/references | 5 + .../snippets/go-mode/benchmark | 10 + .../snippets/go-mode/const | 6 + .../snippets/go-mode/const( | 7 + .../snippets/go-mode/dd | 6 + .../snippets/go-mode/default | 6 + .../snippets/go-mode/else | 7 + .../snippets/go-mode/error | 8 + .../snippets/go-mode/example | 8 + .../snippets/go-mode/for | 7 + .../snippets/go-mode/forrange | 8 + .../snippets/go-mode/func | 8 + .../snippets/go-mode/if | 7 + .../snippets/go-mode/iferr | 7 + .../snippets/go-mode/import | 6 + .../snippets/go-mode/import( | 7 + .../snippets/go-mode/lambda | 7 + .../snippets/go-mode/main | 7 + .../snippets/go-mode/map | 5 + .../snippets/go-mode/printf | 6 + .../snippets/go-mode/select | 8 + .../snippets/go-mode/switch | 8 + .../snippets/go-mode/test | 8 + .../snippets/go-mode/testmain | 21 + .../snippets/go-mode/type | 7 + .../snippets/go-mode/var | 6 + .../snippets/go-mode/var( | 7 + .../snippets/groovy-mode/.yas-parents | 1 + .../snippets/groovy-mode/class | 7 + .../snippets/groovy-mode/def | 7 + .../snippets/groovy-mode/dict | 5 + .../snippets/groovy-mode/for | 7 + .../snippets/groovy-mode/println | 6 + .../snippets/groovy-mode/times | 7 + .../snippets/haskell-mode/case | 9 + .../snippets/haskell-mode/data | 5 + .../snippets/haskell-mode/doc | 7 + .../snippets/haskell-mode/efix | 6 + .../snippets/haskell-mode/function | 6 + .../snippets/haskell-mode/functione | 6 + .../snippets/haskell-mode/import | 5 + .../snippets/haskell-mode/instance | 6 + .../snippets/haskell-mode/main | 7 + .../snippets/haskell-mode/module | 6 + .../snippets/haskell-mode/new class | 7 + .../snippets/haskell-mode/pragma | 5 + .../snippets/haskell-mode/print | 5 + .../snippets/html-mode/.yas-parents | 1 + .../snippets/html-mode/dd | 5 + .../snippets/html-mode/dl | 7 + .../snippets/html-mode/doctype | 4 + .../snippets/html-mode/doctype.html5 | 4 + .../snippets/html-mode/doctype.xhtml1 | 4 + .../snippets/html-mode/doctype.xhtml1_1 | 4 + .../snippets/html-mode/doctype.xhtml1_strict | 4 + .../html-mode/doctype.xhtml1_transitional | 4 + .../snippets/html-mode/dt | 5 + .../snippets/html-mode/form | 6 + .../snippets/html-mode/html | 6 + .../snippets/html-mode/html.xmlns | 6 + .../snippets/html-mode/link.stylesheet | 4 + .../snippets/html-mode/link.stylesheet-ie | 6 + .../snippets/html-mode/mailto | 4 + .../snippets/html-mode/meta | 5 + .../snippets/html-mode/meta.http-equiv | 5 + .../snippets/html-mode/script.javascript | 6 + .../snippets/html-mode/script.javascript-src | 4 + .../snippets/html-mode/textarea | 4 + .../snippets/html-mode/th | 5 + .../snippets/java-mode/apr_assert | 7 + .../snippets/java-mode/assert | 5 + .../snippets/java-mode/assertEquals | 7 + .../snippets/java-mode/cls | 7 + .../snippets/java-mode/constructor | 7 + .../snippets/java-mode/define test method | 8 + .../snippets/java-mode/doc | 7 + .../snippets/java-mode/equals | 7 + .../snippets/java-mode/file_class | 9 + .../snippets/java-mode/for | 7 + .../snippets/java-mode/fori | 7 + .../snippets/java-mode/getter | 7 + .../snippets/java-mode/if | 7 + .../snippets/java-mode/ife | 10 + .../snippets/java-mode/import | 6 + .../snippets/java-mode/iterator | 7 + .../snippets/java-mode/javadoc | 8 + .../snippets/java-mode/lambda | 5 + .../snippets/java-mode/main | 7 + .../snippets/java-mode/main_class | 11 + .../snippets/java-mode/method | 7 + .../snippets/java-mode/new | 6 + .../snippets/java-mode/override | 6 + .../snippets/java-mode/param | 5 + .../snippets/java-mode/printf | 5 + .../snippets/java-mode/println | 6 + .../snippets/java-mode/return | 5 + .../snippets/java-mode/test | 8 + .../snippets/java-mode/testClass | 12 + .../snippets/java-mode/this | 6 + .../snippets/java-mode/toString | 7 + .../snippets/java-mode/try | 11 + .../snippets/java-mode/value | 5 + .../snippets/js-mode/al | 4 + .../snippets/js-mode/class | 8 + .../snippets/js-mode/com | 6 + .../snippets/js-mode/debugger | 5 + .../snippets/js-mode/each | 6 + .../snippets/js-mode/el | 6 + .../snippets/js-mode/ev.add | 6 + .../snippets/js-mode/ev.fire | 4 + .../snippets/js-mode/for | 6 + .../snippets/js-mode/function | 7 + .../snippets/js-mode/if | 6 + .../snippets/js-mode/init | 6 + .../snippets/js-mode/log | 4 + .../snippets/js-mode/multiline-comment | 7 + .../snippets/js-mode/param-comment | 6 + .../snippets/js-mode/req.html | 8 + .../snippets/js-mode/req.json | 8 + .../snippets/js-mode/return-comment | 6 + .../snippets/js-mode/type-inline-comment | 6 + .../snippets/js-mode/type-multiline-comment | 6 + elpa/yasnippet-20160131.948/snippets/js2-mode | 0 .../snippets/latex-mode/acronym | 5 + .../snippets/latex-mode/alertblock | 7 + .../snippets/latex-mode/alg | 7 + .../snippets/latex-mode/begin | 7 + .../snippets/latex-mode/block | 7 + .../snippets/latex-mode/capgls | 5 + .../snippets/latex-mode/caption | 5 + .../snippets/latex-mode/cite | 5 + .../snippets/latex-mode/code | 7 + .../snippets/latex-mode/columns | 13 + .../snippets/latex-mode/emph | 5 + .../snippets/latex-mode/enumerate | 7 + .../snippets/latex-mode/figure | 9 + .../snippets/latex-mode/frac | 5 + .../snippets/latex-mode/frame | 8 + .../snippets/latex-mode/gls | 5 + .../snippets/latex-mode/glspl | 5 + .../snippets/latex-mode/if | 8 + .../snippets/latex-mode/includegraphics | 5 + .../snippets/latex-mode/item | 5 + .../snippets/latex-mode/itemize | 7 + .../snippets/latex-mode/label | 5 + .../snippets/latex-mode/listing | 7 + .../snippets/latex-mode/movie | 15 + .../snippets/latex-mode/newcommand | 5 + .../snippets/latex-mode/newglossaryentry | 5 + .../snippets/latex-mode/note | 5 + .../snippets/latex-mode/python | 8 + .../snippets/latex-mode/question | 5 + .../snippets/latex-mode/section | 8 + .../snippets/latex-mode/subf | 8 + .../snippets/latex-mode/subfigure | 13 + .../snippets/latex-mode/subsec | 8 + .../snippets/latex-mode/textbf | 5 + .../snippets/latex-mode/usepackage | 5 + .../snippets/lisp-interaction-mode/defun | 7 + .../snippets/lisp-mode/class | 8 + .../snippets/lisp-mode/comment | 6 + .../snippets/lisp-mode/defpackage | 10 + .../snippets/lisp-mode/do | 9 + .../snippets/lisp-mode/for | 7 + .../snippets/lisp-mode/foreach | 7 + .../snippets/lisp-mode/format | 5 + .../snippets/lisp-mode/if | 7 + .../snippets/lisp-mode/ifelse | 9 + .../snippets/lisp-mode/ifnot | 8 + .../snippets/lisp-mode/slot | 13 + .../snippets/lisp-mode/switch | 9 + .../snippets/lisp-mode/typecast | 6 + .../snippets/lua-mode/fun | 7 + .../snippets/m4-mode/def | 6 + .../makefile-automake-mode/noinst_HEADERS | 5 + .../snippets/makefile-bsdmake-mode/PHONY | 5 + .../snippets/makefile-bsdmake-mode/echo | 5 + .../snippets/makefile-bsdmake-mode/gen | 11 + .../snippets/makefile-bsdmake-mode/if | 7 + .../snippets/makefile-bsdmake-mode/var | 5 + .../snippets/makefile-gmake-mode/abspath | 6 + .../snippets/makefile-gmake-mode/addprefix | 6 + .../snippets/makefile-gmake-mode/addsuffix | 6 + .../snippets/makefile-gmake-mode/dir | 6 + .../snippets/makefile-gmake-mode/make | 7 + .../snippets/makefile-gmake-mode/notdir | 6 + .../snippets/makefile-gmake-mode/patsubst | 5 + .../snippets/makefile-gmake-mode/phony | 5 + .../snippets/makefile-gmake-mode/shell | 5 + .../snippets/makefile-gmake-mode/special | 6 + .../snippets/makefile-gmake-mode/template | 10 + .../snippets/makefile-gmake-mode/wildcard | 5 + .../snippets/makefile-mode/all | 6 + .../snippets/makefile-mode/clean | 9 + .../snippets/malabar-mode/variable | 5 + .../snippets/markdown-mode/+ | 5 + .../snippets/markdown-mode/- | 5 + .../snippets/markdown-mode/_ | 4 + .../snippets/markdown-mode/__ | 4 + .../snippets/markdown-mode/` | 4 + .../snippets/markdown-mode/h1.1 | 6 + .../snippets/markdown-mode/h1.2 | 7 + .../snippets/markdown-mode/h2.1 | 6 + .../snippets/markdown-mode/h2.2 | 7 + .../snippets/markdown-mode/h3 | 6 + .../snippets/markdown-mode/h4 | 6 + .../snippets/markdown-mode/h5 | 6 + .../snippets/markdown-mode/h6 | 6 + .../snippets/markdown-mode/highlight | 6 + .../snippets/markdown-mode/hr.1 | 7 + .../snippets/markdown-mode/hr.2 | 7 + .../snippets/markdown-mode/img | 4 + .../snippets/markdown-mode/link | 4 + .../snippets/markdown-mode/ol | 5 + .../snippets/markdown-mode/rimg | 4 + .../snippets/markdown-mode/rlb | 5 + .../snippets/markdown-mode/rlink | 4 + .../snippets/markdown-mode/utf8 | 6 + .../snippets/ned-mode/.yas-parents | 1 + .../snippets/ned-mode/chan | 7 + .../snippets/ned-mode/connections | 6 + .../snippets/ned-mode/for | 7 + .../snippets/ned-mode/import | 5 + .../snippets/ned-mode/network | 11 + .../snippets/ned-mode/simple | 8 + .../snippets/ned-mode/submodules | 6 + .../snippets/nesc-mode/.yas-parents | 1 + .../snippets/nesc-mode/TOSSIM | 7 + .../snippets/nesc-mode/command | 7 + .../snippets/nesc-mode/dbg | 5 + .../snippets/nesc-mode/event | 7 + .../snippets/nesc-mode/ifdef | 9 + .../snippets/nesc-mode/interface | 7 + .../snippets/nesc-mode/module | 8 + .../snippets/nesc-mode/nx | 6 + .../snippets/nesc-mode/provides | 5 + .../snippets/nesc-mode/sim | 7 + .../snippets/nesc-mode/uint8_t | 6 + .../snippets/nesc-mode/uses | 6 + .../snippets/nsis-mode/.yas-parents | 1 + .../snippets/nsis-mode/define | 5 + .../snippets/nsis-mode/function | 7 + .../snippets/nsis-mode/if | 9 + .../snippets/nsis-mode/include | 5 + .../snippets/nsis-mode/insert_macro | 5 + .../snippets/nsis-mode/instdir | 5 + .../snippets/nsis-mode/macro | 8 + .../snippets/nsis-mode/message | 5 + .../snippets/nsis-mode/outdir | 5 + .../snippets/nsis-mode/outfile | 5 + .../snippets/nsis-mode/section | 7 + .../snippets/nxml-mode/body | 6 + .../snippets/nxml-mode/br | 4 + .../snippets/nxml-mode/doctype | 5 + .../snippets/nxml-mode/doctype_xhtml1_strict | 5 + .../nxml-mode/doctype_xhtml1_transitional | 5 + .../snippets/nxml-mode/form | 6 + .../snippets/nxml-mode/href | 5 + .../snippets/nxml-mode/html | 6 + .../snippets/nxml-mode/img | 4 + .../snippets/nxml-mode/input | 4 + .../snippets/nxml-mode/link | 4 + .../snippets/nxml-mode/meta | 5 + .../snippets/nxml-mode/name | 4 + .../snippets/nxml-mode/quote | 6 + .../snippets/nxml-mode/style | 6 + .../snippets/nxml-mode/tag | 5 + .../snippets/nxml-mode/tag_closing | 5 + .../snippets/nxml-mode/tag_newline | 7 + .../snippets/octave-mode/for | 7 + .../snippets/octave-mode/function | 7 + .../snippets/octave-mode/if | 9 + .../snippets/org-mode/code | 7 + .../snippets/org-mode/dot | 9 + .../snippets/org-mode/elisp | 7 + .../snippets/org-mode/embedded | 5 + .../snippets/org-mode/entry | 11 + .../snippets/org-mode/figure | 7 + .../snippets/org-mode/img | 10 + .../snippets/org-mode/latex | 7 + .../snippets/org-mode/matrix | 11 + .../snippets/org-mode/verse | 7 + .../snippets/perl-mode/.yas-parents | 1 + .../snippets/perl-mode/eval | 9 + .../snippets/perl-mode/for | 6 + .../snippets/perl-mode/fore | 6 + .../snippets/perl-mode/if | 6 + .../snippets/perl-mode/ife | 8 + .../snippets/perl-mode/ifee | 10 + .../snippets/perl-mode/sub | 6 + .../snippets/perl-mode/unless | 6 + .../snippets/perl-mode/while | 6 + .../snippets/perl-mode/xfore | 4 + .../snippets/perl-mode/xif | 4 + .../snippets/perl-mode/xunless | 4 + .../snippets/perl-mode/xwhile | 4 + .../snippets/prog-mode/.yas-setup.el | 2 + .../snippets/prog-mode/.yas-setup.elc | Bin 0 -> 516 bytes .../snippets/prog-mode/fixme | 6 + .../snippets/prog-mode/todo | 5 + .../snippets/prog-mode/xxx | 5 + .../snippets/python-mode/.yas-parents | 1 + .../snippets/python-mode/.yas-setup.el | 22 + .../snippets/python-mode/.yas-setup.elc | Bin 0 -> 1328 bytes .../snippets/python-mode/__contains__ | 7 + .../snippets/python-mode/__enter__ | 9 + .../snippets/python-mode/__exit__ | 7 + .../snippets/python-mode/__getitem__ | 7 + .../snippets/python-mode/__len__ | 7 + .../snippets/python-mode/__new__ | 8 + .../snippets/python-mode/__setitem__ | 7 + .../snippets/python-mode/all | 7 + .../snippets/python-mode/arg | 7 + .../snippets/python-mode/arg_positional | 6 + .../snippets/python-mode/ass | 6 + .../snippets/python-mode/assertEqual | 6 + .../snippets/python-mode/assertFalse | 6 + .../snippets/python-mode/assertIn | 6 + .../snippets/python-mode/assertNotEqual | 6 + .../snippets/python-mode/assertNotIn | 6 + .../snippets/python-mode/assertRaises | 6 + .../snippets/python-mode/assertRaises.with | 6 + .../snippets/python-mode/assertTrue | 6 + .../snippets/python-mode/celery_pdb | 6 + .../snippets/python-mode/classmethod | 8 + .../snippets/python-mode/cls | 7 + .../snippets/python-mode/dec | 14 + .../snippets/python-mode/deftest | 7 + .../snippets/python-mode/django_test_class | 7 + .../snippets/python-mode/doc | 6 + .../snippets/python-mode/doctest | 8 + .../snippets/python-mode/eq | 7 + .../snippets/python-mode/for | 6 + .../snippets/python-mode/from | 6 + .../snippets/python-mode/function | 7 + .../snippets/python-mode/function_docstring | 10 + .../snippets/python-mode/if | 7 + .../snippets/python-mode/ife | 9 + .../snippets/python-mode/ifmain | 6 + .../snippets/python-mode/import | 7 + .../snippets/python-mode/init | 8 + .../snippets/python-mode/init_docstring | 10 + .../snippets/python-mode/interact | 5 + .../snippets/python-mode/ipdbdebug | 6 + .../snippets/python-mode/iter | 7 + .../snippets/python-mode/lambda | 5 + .../snippets/python-mode/list | 7 + .../snippets/python-mode/logger_name | 5 + .../snippets/python-mode/logging | 6 + .../snippets/python-mode/main | 6 + .../snippets/python-mode/metaclass | 6 + .../snippets/python-mode/method | 7 + .../snippets/python-mode/method_docstring | 10 + .../snippets/python-mode/not_impl | 5 + .../snippets/python-mode/np | 7 + .../snippets/python-mode/parse_args | 9 + .../snippets/python-mode/parser | 7 + .../snippets/python-mode/pass | 5 + .../snippets/python-mode/pl | 7 + .../snippets/python-mode/print | 5 + .../snippets/python-mode/prop | 17 + .../snippets/python-mode/reg | 7 + .../snippets/python-mode/repr | 7 + .../snippets/python-mode/return | 5 + .../snippets/python-mode/script | 11 + .../snippets/python-mode/self | 6 + .../snippets/python-mode/self_without_dot | 6 + .../snippets/python-mode/selfassign | 6 + .../snippets/python-mode/setdef | 5 + .../snippets/python-mode/setup | 14 + .../snippets/python-mode/size | 5 + .../snippets/python-mode/static | 6 + .../snippets/python-mode/str | 7 + .../snippets/python-mode/super | 7 + .../snippets/python-mode/test_class | 7 + .../snippets/python-mode/test_file | 12 + .../snippets/python-mode/trace | 6 + .../snippets/python-mode/try | 8 + .../snippets/python-mode/tryelse | 10 + .../snippets/python-mode/unicode | 7 + .../snippets/python-mode/utf8 | 5 + .../snippets/python-mode/while | 7 + .../snippets/python-mode/with | 7 + .../snippets/python-mode/with_statement | 6 + .../snippets/rename_add_contr.py | 36 + .../snippets/rst-mode/autoclass | 6 + .../snippets/rst-mode/autofunction | 5 + .../snippets/rst-mode/automodule | 5 + .../snippets/rst-mode/class | 5 + .../snippets/rst-mode/code | 5 + .../snippets/rst-mode/digraph | 7 + .../snippets/rst-mode/function | 5 + .../snippets/rst-mode/graph | 7 + .../snippets/rst-mode/graphviz | 7 + .../snippets/rst-mode/image | 10 + .../snippets/rst-mode/inheritance | 5 + .../snippets/rst-mode/literal_include | 5 + .../snippets/rst-mode/meta | 5 + .../snippets/rst-mode/module | 5 + .../snippets/rst-mode/parsed_literal | 6 + .../snippets/rst-mode/pause | 6 + .../snippets/rst-mode/term | 5 + .../snippets/rst-mode/url | 5 + .../snippets/rst-mode/verbatim | 6 + .../snippets/rst-mode/warning | 6 + .../snippets/ruby-mode/# | 4 + .../snippets/ruby-mode/=b | 6 + .../snippets/ruby-mode/Comp | 8 + .../snippets/ruby-mode/GLOB | 5 + .../snippets/ruby-mode/all | 4 + .../snippets/ruby-mode/am | 4 + .../snippets/ruby-mode/any | 4 + .../snippets/ruby-mode/app | 6 + .../snippets/ruby-mode/attribute | 5 + .../snippets/ruby-mode/bench | 10 + .../snippets/ruby-mode/bm | 6 + .../snippets/ruby-mode/case | 7 + .../snippets/ruby-mode/cla | 6 + .../snippets/ruby-mode/cls | 11 + .../snippets/ruby-mode/collect | 4 + .../snippets/ruby-mode/dee | 4 + .../snippets/ruby-mode/def | 7 + .../snippets/ruby-mode/deli | 4 + .../snippets/ruby-mode/det | 4 + .../snippets/ruby-mode/dow | 6 + .../snippets/ruby-mode/ea | 4 + .../snippets/ruby-mode/eac | 4 + .../snippets/ruby-mode/eai | 4 + .../snippets/ruby-mode/eav | 4 + .../snippets/ruby-mode/eawi | 4 + .../snippets/ruby-mode/for | 7 + .../snippets/ruby-mode/forin | 6 + .../snippets/ruby-mode/formula | 16 + .../snippets/ruby-mode/if | 6 + .../snippets/ruby-mode/ife | 8 + .../snippets/ruby-mode/init | 7 + .../snippets/ruby-mode/inject | 4 + .../snippets/ruby-mode/map | 4 + .../snippets/ruby-mode/mm | 6 + .../snippets/ruby-mode/r | 4 + .../snippets/ruby-mode/rb | 4 + .../snippets/ruby-mode/red | 4 + .../snippets/ruby-mode/reject | 4 + .../snippets/ruby-mode/rel | 4 + .../snippets/ruby-mode/req | 4 + .../snippets/ruby-mode/rw | 4 + .../snippets/ruby-mode/select | 4 + .../snippets/ruby-mode/str | 5 + .../snippets/ruby-mode/test class | 7 + .../snippets/ruby-mode/tim | 4 + .../snippets/ruby-mode/to_ | 8 + .../snippets/ruby-mode/tu | 5 + .../snippets/ruby-mode/until | 6 + .../snippets/ruby-mode/upt | 6 + .../snippets/ruby-mode/w | 4 + .../snippets/ruby-mode/when | 6 + .../snippets/ruby-mode/while | 6 + .../snippets/ruby-mode/y | 4 + .../snippets/ruby-mode/zip | 4 + .../snippets/scala-mode/app | 8 + .../snippets/scala-mode/case | 6 + .../snippets/scala-mode/cc | 8 + .../snippets/scala-mode/co | 6 + .../snippets/scala-mode/cons | 6 + .../snippets/scala-mode/def | 8 + .../snippets/scala-mode/doc | 9 + .../snippets/scala-mode/for | 8 + .../snippets/scala-mode/if | 8 + .../snippets/scala-mode/ls | 6 + .../snippets/scala-mode/main | 8 + .../snippets/scala-mode/match | 8 + .../snippets/scala-mode/ob | 6 + .../snippets/scala-mode/throw | 6 + .../snippets/scala-mode/try | 11 + .../snippets/sh-mode/args | 7 + .../snippets/sh-mode/bang | 6 + .../snippets/sh-mode/for loop | 7 + .../snippets/sh-mode/function | 7 + .../snippets/sh-mode/if | 8 + .../snippets/sh-mode/ife | 9 + .../snippets/snippet-mode/cont | 5 + .../snippets/snippet-mode/elisp | 5 + .../snippets/snippet-mode/field | 6 + .../snippets/snippet-mode/group | 5 + .../snippets/snippet-mode/mirror | 6 + .../snippets/snippet-mode/vars | 13 + .../snippets/ruby-mode/definitions/mod | 13 + .../snippets/sql-mode/column | 4 + .../snippets/sql-mode/constraint | 4 + .../snippets/sql-mode/constraint.1 | 4 + .../snippets/sql-mode/create | 10 + .../snippets/sql-mode/create.1 | 12 + .../snippets/sql-mode/references | 4 + .../snippets/text-mode/.yas-parents | 1 + .../snippets/tuareg-mode/assert | 5 + .../snippets/tuareg-mode/docstring | 5 + .../snippets/tuareg-mode/for | 7 + .../snippets/tuareg-mode/fun | 5 + .../snippets/tuareg-mode/guard | 5 + .../snippets/tuareg-mode/ifthen | 6 + .../snippets/tuareg-mode/ifthenelse | 8 + .../snippets/tuareg-mode/let | 5 + .../snippets/tuareg-mode/list_comprehension | 5 + .../snippets/tuareg-mode/main | 6 + .../snippets/tuareg-mode/match | 6 + .../snippets/tuareg-mode/module | 9 + .../snippets/tuareg-mode/open | 5 + .../snippets/tuareg-mode/printf | 5 + .../snippets/tuareg-mode/rec | 6 + .../snippets/tuareg-mode/try | 8 + .../snippets/tuareg-mode/type | 5 + .../snippets/tuareg-mode/type_type | 6 + .../snippets/tuareg-mode/val | 5 + .../snippets/tuareg-mode/while | 7 + .../snippets/typerex-mode | 0 .../snippets/udev-mode/ENV | 5 + .../snippets/udev-mode/GOTO | 8 + .../snippets/udev-mode/KERNEL | 5 + .../snippets/udev-mode/add | 5 + .../snippets/udev-mode/env$ | 5 + .../snippets/udev-mode/run | 5 + elpa/yasnippet-20160131.948/snippets/web-mode | 0 .../snippets/yaml-mode/entry | 6 + .../snippets/yaml-mode/list | 6 + .../snippets/yaml-mode/section | 6 + .../yasnippet-autoloads.el | 57 + elpa/yasnippet-20160131.948/yasnippet-pkg.el | 5 + elpa/yasnippet-20160131.948/yasnippet.el | 4596 ++++++ elpa/yasnippet-20160131.948/yasnippet.elc | Bin 0 -> 191804 bytes emacs-color-theme-solarized | 1 - find_python_file.py | 37 - init.el | 201 +- js2-mode | 1 - scss-mode | 1 - smart-tab | 1 - 1535 files changed, 129906 insertions(+), 240 deletions(-) delete mode 100644 .gitmodules delete mode 100644 README.md create mode 100644 after_package.el delete mode 160000 coffee-mode delete mode 160000 color-theme create mode 100644 elpa/ac-js2-20140906.442/ac-js2-autoloads.el create mode 100644 elpa/ac-js2-20140906.442/ac-js2-pkg.el create mode 100644 elpa/ac-js2-20140906.442/ac-js2-tests.el create mode 100644 elpa/ac-js2-20140906.442/ac-js2-tests.elc create mode 100644 elpa/ac-js2-20140906.442/ac-js2.el create mode 100644 elpa/ac-js2-20140906.442/ac-js2.elc create mode 100644 elpa/ac-js2-20140906.442/skewer-addon.js create mode 100644 elpa/archives/elpy/archive-contents create mode 100644 elpa/archives/gnu/archive-contents create mode 100644 elpa/archives/gnu/archive-contents.signed create mode 100644 elpa/archives/melpa/archive-contents create mode 100644 elpa/async-20160108.1249/async-autoloads.el create mode 100644 elpa/async-20160108.1249/async-bytecomp.el create mode 100644 elpa/async-20160108.1249/async-bytecomp.elc create mode 100644 elpa/async-20160108.1249/async-pkg.el create mode 100644 elpa/async-20160108.1249/async.el create mode 100644 elpa/async-20160108.1249/async.elc create mode 100644 elpa/async-20160108.1249/dired-async.el create mode 100644 elpa/async-20160108.1249/dired-async.elc create mode 100644 elpa/async-20160108.1249/smtpmail-async.el create mode 100644 elpa/async-20160108.1249/smtpmail-async.elc create mode 100644 elpa/auto-complete-20160107.8/auto-complete-autoloads.el create mode 100644 elpa/auto-complete-20160107.8/auto-complete-config.el create mode 100644 elpa/auto-complete-20160107.8/auto-complete-config.elc create mode 100644 elpa/auto-complete-20160107.8/auto-complete-pkg.el create mode 100644 elpa/auto-complete-20160107.8/auto-complete.el create mode 100644 elpa/auto-complete-20160107.8/auto-complete.elc create mode 100644 elpa/auto-complete-20160107.8/dict/ada-mode create mode 100644 elpa/auto-complete-20160107.8/dict/c++-mode create mode 100644 elpa/auto-complete-20160107.8/dict/c-mode create mode 100644 elpa/auto-complete-20160107.8/dict/caml-mode create mode 100644 elpa/auto-complete-20160107.8/dict/clojure-mode create mode 100644 elpa/auto-complete-20160107.8/dict/clojurescript-mode create mode 100644 elpa/auto-complete-20160107.8/dict/coq-mode create mode 100644 elpa/auto-complete-20160107.8/dict/css-mode create mode 100644 elpa/auto-complete-20160107.8/dict/erlang-mode create mode 100644 elpa/auto-complete-20160107.8/dict/go-mode create mode 100644 elpa/auto-complete-20160107.8/dict/haskell-mode create mode 100644 elpa/auto-complete-20160107.8/dict/java-mode create mode 100644 elpa/auto-complete-20160107.8/dict/js-mode create mode 100644 elpa/auto-complete-20160107.8/dict/lua-mode create mode 100644 elpa/auto-complete-20160107.8/dict/octave-mode create mode 100644 elpa/auto-complete-20160107.8/dict/php-mode create mode 100644 elpa/auto-complete-20160107.8/dict/python-mode create mode 100644 elpa/auto-complete-20160107.8/dict/qml-mode create mode 100644 elpa/auto-complete-20160107.8/dict/ruby-mode create mode 100644 elpa/auto-complete-20160107.8/dict/scala-mode create mode 100644 elpa/auto-complete-20160107.8/dict/scheme-mode create mode 100644 elpa/auto-complete-20160107.8/dict/sclang-mode create mode 100644 elpa/auto-complete-20160107.8/dict/sh-mode create mode 100644 elpa/auto-complete-20160107.8/dict/tcl-mode create mode 100644 elpa/auto-complete-20160107.8/dict/ts-mode create mode 100644 elpa/auto-complete-20160107.8/dict/tuareg-mode create mode 100644 elpa/auto-complete-20160107.8/dict/verilog-mode create mode 100644 elpa/company-20160211.520/company-abbrev.el create mode 100644 elpa/company-20160211.520/company-abbrev.elc create mode 100644 elpa/company-20160211.520/company-autoloads.el create mode 100644 elpa/company-20160211.520/company-bbdb.el create mode 100644 elpa/company-20160211.520/company-bbdb.elc create mode 100644 elpa/company-20160211.520/company-capf.el create mode 100644 elpa/company-20160211.520/company-capf.elc create mode 100644 elpa/company-20160211.520/company-clang.el create mode 100644 elpa/company-20160211.520/company-clang.elc create mode 100644 elpa/company-20160211.520/company-cmake.el create mode 100644 elpa/company-20160211.520/company-cmake.elc create mode 100644 elpa/company-20160211.520/company-css.el create mode 100644 elpa/company-20160211.520/company-css.elc create mode 100644 elpa/company-20160211.520/company-dabbrev-code.el create mode 100644 elpa/company-20160211.520/company-dabbrev-code.elc create mode 100644 elpa/company-20160211.520/company-dabbrev.el create mode 100644 elpa/company-20160211.520/company-dabbrev.elc create mode 100644 elpa/company-20160211.520/company-eclim.el create mode 100644 elpa/company-20160211.520/company-eclim.elc create mode 100644 elpa/company-20160211.520/company-elisp.el create mode 100644 elpa/company-20160211.520/company-elisp.elc create mode 100644 elpa/company-20160211.520/company-etags.el create mode 100644 elpa/company-20160211.520/company-etags.elc create mode 100644 elpa/company-20160211.520/company-files.el create mode 100644 elpa/company-20160211.520/company-files.elc create mode 100644 elpa/company-20160211.520/company-gtags.el create mode 100644 elpa/company-20160211.520/company-gtags.elc create mode 100644 elpa/company-20160211.520/company-ispell.el create mode 100644 elpa/company-20160211.520/company-ispell.elc create mode 100644 elpa/company-20160211.520/company-keywords.el create mode 100644 elpa/company-20160211.520/company-keywords.elc create mode 100644 elpa/company-20160211.520/company-nxml.el create mode 100644 elpa/company-20160211.520/company-nxml.elc create mode 100644 elpa/company-20160211.520/company-oddmuse.el create mode 100644 elpa/company-20160211.520/company-oddmuse.elc create mode 100644 elpa/company-20160211.520/company-pkg.el create mode 100644 elpa/company-20160211.520/company-semantic.el create mode 100644 elpa/company-20160211.520/company-semantic.elc create mode 100644 elpa/company-20160211.520/company-template.el create mode 100644 elpa/company-20160211.520/company-template.elc create mode 100644 elpa/company-20160211.520/company-tempo.el create mode 100644 elpa/company-20160211.520/company-tempo.elc create mode 100644 elpa/company-20160211.520/company-xcode.el create mode 100644 elpa/company-20160211.520/company-xcode.elc create mode 100644 elpa/company-20160211.520/company-yasnippet.el create mode 100644 elpa/company-20160211.520/company-yasnippet.elc create mode 100644 elpa/company-20160211.520/company.el create mode 100644 elpa/company-20160211.520/company.elc create mode 100644 elpa/darktooth-theme-20151121.1722/darktooth-theme-autoloads.el create mode 100644 elpa/darktooth-theme-20151121.1722/darktooth-theme-pkg.el create mode 100644 elpa/darktooth-theme-20151121.1722/darktooth-theme.el create mode 100644 elpa/darktooth-theme-20151121.1722/darktooth-theme.elc create mode 100644 elpa/dash-20151216.1315/dash-autoloads.el create mode 100644 elpa/dash-20151216.1315/dash-pkg.el create mode 100644 elpa/dash-20151216.1315/dash.el create mode 100644 elpa/dash-20151216.1315/dash.elc create mode 100644 elpa/elpy-20160131.118/NEWS.rst create mode 100644 elpa/elpy-20160131.118/elpy-autoloads.el create mode 100644 elpa/elpy-20160131.118/elpy-pkg.el create mode 100644 elpa/elpy-20160131.118/elpy-refactor.el create mode 100644 elpa/elpy-20160131.118/elpy-refactor.elc create mode 100644 elpa/elpy-20160131.118/elpy.el create mode 100644 elpa/elpy-20160131.118/elpy.elc create mode 100644 elpa/elpy-20160131.118/elpy/__init__.py create mode 100644 elpa/elpy-20160131.118/elpy/__init__.pyc create mode 100644 elpa/elpy-20160131.118/elpy/__main__.py create mode 100644 elpa/elpy-20160131.118/elpy/auto_pep8.py create mode 100644 elpa/elpy-20160131.118/elpy/auto_pep8.pyc create mode 100644 elpa/elpy-20160131.118/elpy/compat.py create mode 100644 elpa/elpy-20160131.118/elpy/compat.pyc create mode 100644 elpa/elpy-20160131.118/elpy/impmagic.py create mode 100644 elpa/elpy-20160131.118/elpy/impmagic.pyc create mode 100644 elpa/elpy-20160131.118/elpy/jedibackend.py create mode 100644 elpa/elpy-20160131.118/elpy/jedibackend.pyc create mode 100644 elpa/elpy-20160131.118/elpy/pydocutils.py create mode 100644 elpa/elpy-20160131.118/elpy/pydocutils.pyc create mode 100644 elpa/elpy-20160131.118/elpy/refactor.py create mode 100644 elpa/elpy-20160131.118/elpy/ropebackend.py create mode 100644 elpa/elpy-20160131.118/elpy/ropebackend.pyc create mode 100644 elpa/elpy-20160131.118/elpy/rpc.py create mode 100644 elpa/elpy-20160131.118/elpy/rpc.pyc create mode 100644 elpa/elpy-20160131.118/elpy/server.py create mode 100644 elpa/elpy-20160131.118/elpy/server.pyc create mode 100644 elpa/elpy-20160131.118/elpy/tests/__init__.py create mode 100644 elpa/elpy-20160131.118/elpy/tests/compat.py create mode 100644 elpa/elpy-20160131.118/elpy/tests/support.py create mode 100644 elpa/elpy-20160131.118/elpy/tests/test_auto_pep8.py create mode 100644 elpa/elpy-20160131.118/elpy/tests/test_impmagic.py create mode 100644 elpa/elpy-20160131.118/elpy/tests/test_jedibackend.py create mode 100644 elpa/elpy-20160131.118/elpy/tests/test_pydocutils.py create mode 100644 elpa/elpy-20160131.118/elpy/tests/test_refactor.py create mode 100644 elpa/elpy-20160131.118/elpy/tests/test_ropebackend.py create mode 100644 elpa/elpy-20160131.118/elpy/tests/test_rpc.py create mode 100644 elpa/elpy-20160131.118/elpy/tests/test_server.py create mode 100644 elpa/elpy-20160131.118/elpy/tests/test_support.py create mode 100644 elpa/elpy-20160131.118/elpy/tests/test_yapf.py create mode 100644 elpa/elpy-20160131.118/elpy/yapfutil.py create mode 100644 elpa/elpy-20160131.118/elpy/yapfutil.pyc create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/.yas-setup.el create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/.yas-setup.elc create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__abs__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__add__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__and__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__bool__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__call__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__cmp__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__coerce__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__complex__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__contains__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__del__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__delattr__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__delete__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__delitem__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__div__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__divmod__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__enter__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__eq__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__exit__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__float__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__floordiv__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__ge__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__get__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__getattr__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__getattribute__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__getitem__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__gt__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__hash__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__hex__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__iadd__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__iand__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__idiv__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__ifloordiv__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__ilshift__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__imod__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__imul__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__index__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__init__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__instancecheck__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__int__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__invert__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__ior__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__ipow__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__irshift__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__isub__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__iter__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__itruediv__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__ixor__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__le__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__len__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__long__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__lshift__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__lt__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__mod__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__mul__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__ne__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__neg__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__new__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__nonzero__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__oct__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__or__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__pos__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__pow__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__radd__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__rand__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__rdivmod__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__repr__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__reversed__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__rfloordiv__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__rlshift__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__rmod__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__rmul__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__ror__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__rpow__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__rrshift__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__rshift__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__rsub__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__rtruediv__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__rxor__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__set__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__setattr__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__setitem__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__slots__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__str__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__sub__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__subclasscheck__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__truediv__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__unicode__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/__xor__ create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/ase create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/asne create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/asr create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/class create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/defs create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/enc create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/env create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/from create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/pdb create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/py3 create mode 100644 elpa/elpy-20160131.118/snippets/python-mode/super create mode 100644 elpa/find-file-in-project-20151216.1850/find-file-in-project-autoloads.el create mode 100644 elpa/find-file-in-project-20151216.1850/find-file-in-project-pkg.el create mode 100644 elpa/find-file-in-project-20151216.1850/find-file-in-project.el create mode 100644 elpa/find-file-in-project-20151216.1850/find-file-in-project.elc create mode 100644 elpa/flymake-easy-20140818.55/flymake-easy-autoloads.el create mode 100644 elpa/flymake-easy-20140818.55/flymake-easy-pkg.el create mode 100644 elpa/flymake-easy-20140818.55/flymake-easy.el create mode 100644 elpa/flymake-easy-20140818.55/flymake-easy.elc create mode 100644 elpa/flymake-python-pyflakes-20131127.6/flymake-python-pyflakes-autoloads.el create mode 100644 elpa/flymake-python-pyflakes-20131127.6/flymake-python-pyflakes-pkg.el create mode 100644 elpa/flymake-python-pyflakes-20131127.6/flymake-python-pyflakes.el create mode 100644 elpa/flymake-python-pyflakes-20131127.6/flymake-python-pyflakes.elc create mode 100644 elpa/gnupg/pubring.gpg create mode 100644 elpa/gnupg/pubring.gpg~ create mode 100644 elpa/gnupg/secring.gpg create mode 100644 elpa/gnupg/trustdb.gpg create mode 100644 elpa/helm-20160217.958/emacs-helm.sh create mode 100644 elpa/helm-20160217.958/helm-adaptive.el create mode 100644 elpa/helm-20160217.958/helm-adaptive.elc create mode 100644 elpa/helm-20160217.958/helm-apt.el create mode 100644 elpa/helm-20160217.958/helm-apt.elc create mode 100644 elpa/helm-20160217.958/helm-autoloads.el create mode 100644 elpa/helm-20160217.958/helm-bookmark.el create mode 100644 elpa/helm-20160217.958/helm-bookmark.elc create mode 100644 elpa/helm-20160217.958/helm-buffers.el create mode 100644 elpa/helm-20160217.958/helm-buffers.elc create mode 100644 elpa/helm-20160217.958/helm-color.el create mode 100644 elpa/helm-20160217.958/helm-color.elc create mode 100644 elpa/helm-20160217.958/helm-command.el create mode 100644 elpa/helm-20160217.958/helm-command.elc create mode 100644 elpa/helm-20160217.958/helm-config.el create mode 100644 elpa/helm-20160217.958/helm-config.elc create mode 100644 elpa/helm-20160217.958/helm-dabbrev.el create mode 100644 elpa/helm-20160217.958/helm-dabbrev.elc create mode 100644 elpa/helm-20160217.958/helm-easymenu.el create mode 100644 elpa/helm-20160217.958/helm-easymenu.elc create mode 100644 elpa/helm-20160217.958/helm-elisp-package.el create mode 100644 elpa/helm-20160217.958/helm-elisp-package.elc create mode 100644 elpa/helm-20160217.958/helm-elisp.el create mode 100644 elpa/helm-20160217.958/helm-elisp.elc create mode 100644 elpa/helm-20160217.958/helm-elscreen.el create mode 100644 elpa/helm-20160217.958/helm-elscreen.elc create mode 100644 elpa/helm-20160217.958/helm-eshell.el create mode 100644 elpa/helm-20160217.958/helm-eshell.elc create mode 100644 elpa/helm-20160217.958/helm-eval.el create mode 100644 elpa/helm-20160217.958/helm-eval.elc create mode 100644 elpa/helm-20160217.958/helm-external.el create mode 100644 elpa/helm-20160217.958/helm-external.elc create mode 100644 elpa/helm-20160217.958/helm-files.el create mode 100644 elpa/helm-20160217.958/helm-files.elc create mode 100644 elpa/helm-20160217.958/helm-font.el create mode 100644 elpa/helm-20160217.958/helm-font.elc create mode 100644 elpa/helm-20160217.958/helm-grep.el create mode 100644 elpa/helm-20160217.958/helm-grep.elc create mode 100644 elpa/helm-20160217.958/helm-help.el create mode 100644 elpa/helm-20160217.958/helm-help.elc create mode 100644 elpa/helm-20160217.958/helm-id-utils.el create mode 100644 elpa/helm-20160217.958/helm-id-utils.elc create mode 100644 elpa/helm-20160217.958/helm-imenu.el create mode 100644 elpa/helm-20160217.958/helm-imenu.elc create mode 100644 elpa/helm-20160217.958/helm-info.el create mode 100644 elpa/helm-20160217.958/helm-info.elc create mode 100644 elpa/helm-20160217.958/helm-locate.el create mode 100644 elpa/helm-20160217.958/helm-locate.elc create mode 100644 elpa/helm-20160217.958/helm-man.el create mode 100644 elpa/helm-20160217.958/helm-man.elc create mode 100644 elpa/helm-20160217.958/helm-misc.el create mode 100644 elpa/helm-20160217.958/helm-misc.elc create mode 100644 elpa/helm-20160217.958/helm-mode.el create mode 100644 elpa/helm-20160217.958/helm-mode.elc create mode 100644 elpa/helm-20160217.958/helm-multi-match.el create mode 100644 elpa/helm-20160217.958/helm-multi-match.elc create mode 100644 elpa/helm-20160217.958/helm-net.el create mode 100644 elpa/helm-20160217.958/helm-net.elc create mode 100644 elpa/helm-20160217.958/helm-org.el create mode 100644 elpa/helm-20160217.958/helm-org.elc create mode 100644 elpa/helm-20160217.958/helm-pkg.el create mode 100644 elpa/helm-20160217.958/helm-plugin.el create mode 100644 elpa/helm-20160217.958/helm-plugin.elc create mode 100644 elpa/helm-20160217.958/helm-regexp.el create mode 100644 elpa/helm-20160217.958/helm-regexp.elc create mode 100644 elpa/helm-20160217.958/helm-ring.el create mode 100644 elpa/helm-20160217.958/helm-ring.elc create mode 100644 elpa/helm-20160217.958/helm-semantic.el create mode 100644 elpa/helm-20160217.958/helm-semantic.elc create mode 100644 elpa/helm-20160217.958/helm-sys.el create mode 100644 elpa/helm-20160217.958/helm-sys.elc create mode 100644 elpa/helm-20160217.958/helm-tags.el create mode 100644 elpa/helm-20160217.958/helm-tags.elc create mode 100644 elpa/helm-20160217.958/helm-types.el create mode 100644 elpa/helm-20160217.958/helm-types.elc create mode 100644 elpa/helm-20160217.958/helm-utils.el create mode 100644 elpa/helm-20160217.958/helm-utils.elc create mode 100644 elpa/helm-cmd-t-20150823.1157/helm-C-x-b.el create mode 100644 elpa/helm-cmd-t-20150823.1157/helm-C-x-b.elc create mode 100644 elpa/helm-cmd-t-20150823.1157/helm-cmd-t-autoloads.el create mode 100644 elpa/helm-cmd-t-20150823.1157/helm-cmd-t-find.el create mode 100644 elpa/helm-cmd-t-20150823.1157/helm-cmd-t-find.elc create mode 100644 elpa/helm-cmd-t-20150823.1157/helm-cmd-t-pkg.el create mode 100644 elpa/helm-cmd-t-20150823.1157/helm-cmd-t.el create mode 100644 elpa/helm-cmd-t-20150823.1157/helm-cmd-t.elc create mode 100644 elpa/helm-core-20160217.958/helm-core-autoloads.el create mode 100644 elpa/helm-core-20160217.958/helm-core-pkg.el create mode 100644 elpa/helm-core-20160217.958/helm-lib.el create mode 100644 elpa/helm-core-20160217.958/helm-lib.elc create mode 100644 elpa/helm-core-20160217.958/helm-multi-match.el create mode 100644 elpa/helm-core-20160217.958/helm-multi-match.elc create mode 100644 elpa/helm-core-20160217.958/helm-source.el create mode 100644 elpa/helm-core-20160217.958/helm-source.elc create mode 100644 elpa/helm-core-20160217.958/helm.el create mode 100644 elpa/helm-core-20160217.958/helm.elc create mode 100644 elpa/helm-fuzzy-find-20150613.349/helm-fuzzy-find-autoloads.el create mode 100644 elpa/helm-fuzzy-find-20150613.349/helm-fuzzy-find-pkg.el create mode 100644 elpa/helm-fuzzy-find-20150613.349/helm-fuzzy-find.el create mode 100644 elpa/helm-fuzzy-find-20150613.349/helm-fuzzy-find.elc create mode 100644 elpa/helm-git-files-20141212.517/helm-git-files-autoloads.el create mode 100644 elpa/helm-git-files-20141212.517/helm-git-files-pkg.el create mode 100644 elpa/helm-git-files-20141212.517/helm-git-files.el create mode 100644 elpa/helm-git-files-20141212.517/helm-git-files.elc create mode 100644 elpa/helm-ls-git-20151031.2256/helm-ls-git-autoloads.el create mode 100644 elpa/helm-ls-git-20151031.2256/helm-ls-git-pkg.el create mode 100644 elpa/helm-ls-git-20151031.2256/helm-ls-git.el create mode 100644 elpa/helm-ls-git-20151031.2256/helm-ls-git.elc create mode 100644 elpa/highlight-indentation-20150307.208/highlight-indentation-autoloads.el create mode 100644 elpa/highlight-indentation-20150307.208/highlight-indentation-pkg.el create mode 100644 elpa/highlight-indentation-20150307.208/highlight-indentation.el create mode 100644 elpa/highlight-indentation-20150307.208/highlight-indentation.elc create mode 100644 elpa/js2-highlight-vars-20150914.108/js2-highlight-vars-autoloads.el create mode 100644 elpa/js2-highlight-vars-20150914.108/js2-highlight-vars-pkg.el create mode 100644 elpa/js2-highlight-vars-20150914.108/js2-highlight-vars.el create mode 100644 elpa/js2-highlight-vars-20150914.108/js2-highlight-vars.elc create mode 100644 elpa/js2-mode-20160124.1132/js2-imenu-extras.el create mode 100644 elpa/js2-mode-20160124.1132/js2-imenu-extras.elc create mode 100644 elpa/js2-mode-20160124.1132/js2-mode-autoloads.el create mode 100644 elpa/js2-mode-20160124.1132/js2-mode-pkg.el create mode 100644 elpa/js2-mode-20160124.1132/js2-mode.el create mode 100644 elpa/js2-mode-20160124.1132/js2-mode.elc create mode 100644 elpa/js2-mode-20160124.1132/js2-old-indent.el create mode 100644 elpa/js2-mode-20160124.1132/js2-old-indent.elc create mode 100644 elpa/js2-refactor-20151029.507/js2-refactor-autoloads.el create mode 100644 elpa/js2-refactor-20151029.507/js2-refactor-pkg.el create mode 100644 elpa/js2-refactor-20151029.507/js2-refactor.el create mode 100644 elpa/js2-refactor-20151029.507/js2-refactor.elc create mode 100644 elpa/js2-refactor-20151029.507/js2r-conditionals.el create mode 100644 elpa/js2-refactor-20151029.507/js2r-conditionals.elc create mode 100644 elpa/js2-refactor-20151029.507/js2r-conveniences.el create mode 100644 elpa/js2-refactor-20151029.507/js2r-conveniences.elc create mode 100644 elpa/js2-refactor-20151029.507/js2r-formatting.el create mode 100644 elpa/js2-refactor-20151029.507/js2r-formatting.elc create mode 100644 elpa/js2-refactor-20151029.507/js2r-functions.el create mode 100644 elpa/js2-refactor-20151029.507/js2r-functions.elc create mode 100644 elpa/js2-refactor-20151029.507/js2r-helpers.el create mode 100644 elpa/js2-refactor-20151029.507/js2r-helpers.elc create mode 100644 elpa/js2-refactor-20151029.507/js2r-iife.el create mode 100644 elpa/js2-refactor-20151029.507/js2r-iife.elc create mode 100644 elpa/js2-refactor-20151029.507/js2r-paredit.el create mode 100644 elpa/js2-refactor-20151029.507/js2r-paredit.elc create mode 100644 elpa/js2-refactor-20151029.507/js2r-vars.el create mode 100644 elpa/js2-refactor-20151029.507/js2r-vars.elc create mode 100644 elpa/js2-refactor-20151029.507/js2r-wrapping.el create mode 100644 elpa/js2-refactor-20151029.507/js2r-wrapping.elc create mode 100644 elpa/markdown-mode-20160513.618/markdown-mode-autoloads.el create mode 100644 elpa/markdown-mode-20160513.618/markdown-mode-pkg.el create mode 100644 elpa/markdown-mode-20160513.618/markdown-mode.el create mode 100644 elpa/markdown-mode-20160513.618/markdown-mode.elc create mode 100644 elpa/mmm-mode-20150828.1716/dir create mode 100644 elpa/mmm-mode-20150828.1716/mmm-auto.el create mode 100644 elpa/mmm-mode-20150828.1716/mmm-auto.elc create mode 100644 elpa/mmm-mode-20150828.1716/mmm-class.el create mode 100644 elpa/mmm-mode-20150828.1716/mmm-class.elc create mode 100644 elpa/mmm-mode-20150828.1716/mmm-cmds.el create mode 100644 elpa/mmm-mode-20150828.1716/mmm-cmds.elc create mode 100644 elpa/mmm-mode-20150828.1716/mmm-compat.el create mode 100644 elpa/mmm-mode-20150828.1716/mmm-compat.elc create mode 100644 elpa/mmm-mode-20150828.1716/mmm-cweb.el create mode 100644 elpa/mmm-mode-20150828.1716/mmm-cweb.elc create mode 100644 elpa/mmm-mode-20150828.1716/mmm-defaults.el create mode 100644 elpa/mmm-mode-20150828.1716/mmm-defaults.elc create mode 100644 elpa/mmm-mode-20150828.1716/mmm-erb.el create mode 100644 elpa/mmm-mode-20150828.1716/mmm-erb.elc create mode 100644 elpa/mmm-mode-20150828.1716/mmm-mason.el create mode 100644 elpa/mmm-mode-20150828.1716/mmm-mason.elc create mode 100644 elpa/mmm-mode-20150828.1716/mmm-mode-autoloads.el create mode 100644 elpa/mmm-mode-20150828.1716/mmm-mode-pkg.el create mode 100644 elpa/mmm-mode-20150828.1716/mmm-mode.el create mode 100644 elpa/mmm-mode-20150828.1716/mmm-mode.elc create mode 100644 elpa/mmm-mode-20150828.1716/mmm-myghty.el create mode 100644 elpa/mmm-mode-20150828.1716/mmm-myghty.elc create mode 100644 elpa/mmm-mode-20150828.1716/mmm-noweb.el create mode 100644 elpa/mmm-mode-20150828.1716/mmm-noweb.elc create mode 100644 elpa/mmm-mode-20150828.1716/mmm-region.el create mode 100644 elpa/mmm-mode-20150828.1716/mmm-region.elc create mode 100644 elpa/mmm-mode-20150828.1716/mmm-rpm.el create mode 100644 elpa/mmm-mode-20150828.1716/mmm-rpm.elc create mode 100644 elpa/mmm-mode-20150828.1716/mmm-sample.el create mode 100644 elpa/mmm-mode-20150828.1716/mmm-sample.elc create mode 100644 elpa/mmm-mode-20150828.1716/mmm-univ.el create mode 100644 elpa/mmm-mode-20150828.1716/mmm-univ.elc create mode 100644 elpa/mmm-mode-20150828.1716/mmm-utils.el create mode 100644 elpa/mmm-mode-20150828.1716/mmm-utils.elc create mode 100644 elpa/mmm-mode-20150828.1716/mmm-vars.el create mode 100644 elpa/mmm-mode-20150828.1716/mmm-vars.elc create mode 100644 elpa/mmm-mode-20150828.1716/mmm.info create mode 100644 elpa/multi-term-20150220.520/multi-term-autoloads.el create mode 100644 elpa/multi-term-20150220.520/multi-term-pkg.el create mode 100644 elpa/multi-term-20150220.520/multi-term.el create mode 100644 elpa/multi-term-20150220.520/multi-term.elc create mode 100644 elpa/multiple-cursors-20160213.817/mc-cycle-cursors.el create mode 100644 elpa/multiple-cursors-20160213.817/mc-cycle-cursors.elc create mode 100644 elpa/multiple-cursors-20160213.817/mc-edit-lines.el create mode 100644 elpa/multiple-cursors-20160213.817/mc-edit-lines.elc create mode 100644 elpa/multiple-cursors-20160213.817/mc-hide-unmatched-lines-mode.el create mode 100644 elpa/multiple-cursors-20160213.817/mc-hide-unmatched-lines-mode.elc create mode 100644 elpa/multiple-cursors-20160213.817/mc-mark-more.el create mode 100644 elpa/multiple-cursors-20160213.817/mc-mark-more.elc create mode 100644 elpa/multiple-cursors-20160213.817/mc-mark-pop.el create mode 100644 elpa/multiple-cursors-20160213.817/mc-mark-pop.elc create mode 100644 elpa/multiple-cursors-20160213.817/mc-separate-operations.el create mode 100644 elpa/multiple-cursors-20160213.817/mc-separate-operations.elc create mode 100644 elpa/multiple-cursors-20160213.817/multiple-cursors-autoloads.el create mode 100644 elpa/multiple-cursors-20160213.817/multiple-cursors-core.el create mode 100644 elpa/multiple-cursors-20160213.817/multiple-cursors-core.elc create mode 100644 elpa/multiple-cursors-20160213.817/multiple-cursors-pkg.el create mode 100644 elpa/multiple-cursors-20160213.817/multiple-cursors.el create mode 100644 elpa/multiple-cursors-20160213.817/multiple-cursors.elc create mode 100644 elpa/multiple-cursors-20160213.817/rectangular-region-mode.el create mode 100644 elpa/multiple-cursors-20160213.817/rectangular-region-mode.elc create mode 100644 elpa/popup-20151222.1339/popup-autoloads.el create mode 100644 elpa/popup-20151222.1339/popup-pkg.el create mode 100644 elpa/popup-20151222.1339/popup.el create mode 100644 elpa/popup-20151222.1339/popup.elc create mode 100644 elpa/pyvenv-20160108.28/pyvenv-autoloads.el create mode 100644 elpa/pyvenv-20160108.28/pyvenv-pkg.el create mode 100644 elpa/pyvenv-20160108.28/pyvenv.el create mode 100644 elpa/pyvenv-20160108.28/pyvenv.elc create mode 100644 elpa/s-20160115.58/s-autoloads.el create mode 100644 elpa/s-20160115.58/s-pkg.el create mode 100644 elpa/s-20160115.58/s.el create mode 100644 elpa/s-20160115.58/s.elc create mode 100644 elpa/simple-httpd-20150430.1755/simple-httpd-autoloads.el create mode 100644 elpa/simple-httpd-20150430.1755/simple-httpd-pkg.el create mode 100644 elpa/simple-httpd-20150430.1755/simple-httpd.el create mode 100644 elpa/simple-httpd-20150430.1755/simple-httpd.elc create mode 100644 elpa/skewer-mode-20150914.1304/cache-table.el create mode 100644 elpa/skewer-mode-20150914.1304/cache-table.elc create mode 100644 elpa/skewer-mode-20150914.1304/example.html create mode 100644 elpa/skewer-mode-20150914.1304/skewer-bower.el create mode 100644 elpa/skewer-mode-20150914.1304/skewer-bower.elc create mode 100644 elpa/skewer-mode-20150914.1304/skewer-css.el create mode 100644 elpa/skewer-mode-20150914.1304/skewer-css.elc create mode 100644 elpa/skewer-mode-20150914.1304/skewer-everything.user.js create mode 100644 elpa/skewer-mode-20150914.1304/skewer-html.el create mode 100644 elpa/skewer-mode-20150914.1304/skewer-html.elc create mode 100644 elpa/skewer-mode-20150914.1304/skewer-mode-autoloads.el create mode 100644 elpa/skewer-mode-20150914.1304/skewer-mode-pkg.el create mode 100644 elpa/skewer-mode-20150914.1304/skewer-mode.el create mode 100644 elpa/skewer-mode-20150914.1304/skewer-mode.elc create mode 100644 elpa/skewer-mode-20150914.1304/skewer-repl.el create mode 100644 elpa/skewer-mode-20150914.1304/skewer-repl.elc create mode 100644 elpa/skewer-mode-20150914.1304/skewer-setup.el create mode 100644 elpa/skewer-mode-20150914.1304/skewer-setup.elc create mode 100644 elpa/skewer-mode-20150914.1304/skewer.js create mode 100644 elpa/swiper-20160219.536/colir.el create mode 100644 elpa/swiper-20160219.536/colir.elc create mode 100644 elpa/swiper-20160219.536/dir create mode 100644 elpa/swiper-20160219.536/ivy-help.org create mode 100644 elpa/swiper-20160219.536/ivy-hydra.el create mode 100644 elpa/swiper-20160219.536/ivy-hydra.elc create mode 100644 elpa/swiper-20160219.536/ivy.el create mode 100644 elpa/swiper-20160219.536/ivy.elc create mode 100644 elpa/swiper-20160219.536/ivy.info create mode 100644 elpa/swiper-20160219.536/swiper-autoloads.el create mode 100644 elpa/swiper-20160219.536/swiper-pkg.el create mode 100644 elpa/swiper-20160219.536/swiper.el create mode 100644 elpa/swiper-20160219.536/swiper.elc create mode 100644 elpa/typescript-mode-20160126.408/typescript-mode-autoloads.el create mode 100644 elpa/typescript-mode-20160126.408/typescript-mode-pkg.el create mode 100644 elpa/typescript-mode-20160126.408/typescript-mode.el create mode 100644 elpa/typescript-mode-20160126.408/typescript-mode.elc create mode 100644 elpa/yasnippet-20160131.948/snippets/.gitignore create mode 100644 elpa/yasnippet-20160131.948/snippets/.nosearch create mode 100644 elpa/yasnippet-20160131.948/snippets/CONTRIBUTORS.txt create mode 100644 elpa/yasnippet-20160131.948/snippets/LICENSE create mode 100644 elpa/yasnippet-20160131.948/snippets/README.md create mode 100644 elpa/yasnippet-20160131.948/snippets/antlr-mode/project create mode 100644 elpa/yasnippet-20160131.948/snippets/antlr-mode/property create mode 100644 elpa/yasnippet-20160131.948/snippets/antlr-mode/target create mode 100644 elpa/yasnippet-20160131.948/snippets/applescript-mode/.yas-parents create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/.yas-parents create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/assert create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/beginend create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/boost_require create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/cerr create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/cin create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/class create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/const_[] create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/constructor create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/cout create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/cpp create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/cstd create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/d+= create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/d_operator create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/d_operator[] create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/d_operator[]_const create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/d_operator_istream create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/d_operator_ostream create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/delete create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/delete[] create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/doc create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/dynamic_casting create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/enum create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/fixture create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/fori create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/friend create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/fun_declaration create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/function create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/gtest create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/ignore create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/inline create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/io create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/iterator create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/map create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/module create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/namespace create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/ns create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/operator!= create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/operator+ create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/operator+= create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/operator= create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/operator== create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/operator[] create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/operator_istream create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/operator_ostream create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/ostream create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/pack create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/private create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/protected create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/public create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/sstream create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/std create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/std_colon create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/str create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/template create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/test case create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/test_main create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/test_suite create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/this create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/throw create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/try create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/tryw create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/using create mode 100644 elpa/yasnippet-20160131.948/snippets/c++-mode/vector create mode 100644 elpa/yasnippet-20160131.948/snippets/c-mode/.yas-parents create mode 100644 elpa/yasnippet-20160131.948/snippets/c-mode/assert create mode 100644 elpa/yasnippet-20160131.948/snippets/c-mode/compile create mode 100644 elpa/yasnippet-20160131.948/snippets/c-mode/define create mode 100644 elpa/yasnippet-20160131.948/snippets/c-mode/malloc create mode 100644 elpa/yasnippet-20160131.948/snippets/c-mode/packed create mode 100644 elpa/yasnippet-20160131.948/snippets/c-mode/printf create mode 100644 elpa/yasnippet-20160131.948/snippets/c-mode/stdio create mode 100644 elpa/yasnippet-20160131.948/snippets/c-mode/stdlib create mode 100644 elpa/yasnippet-20160131.948/snippets/c-mode/string create mode 100644 elpa/yasnippet-20160131.948/snippets/c-mode/union create mode 100644 elpa/yasnippet-20160131.948/snippets/c-mode/unistd create mode 100644 elpa/yasnippet-20160131.948/snippets/cc-mode/case create mode 100644 elpa/yasnippet-20160131.948/snippets/cc-mode/do create mode 100644 elpa/yasnippet-20160131.948/snippets/cc-mode/else create mode 100644 elpa/yasnippet-20160131.948/snippets/cc-mode/file_description create mode 100644 elpa/yasnippet-20160131.948/snippets/cc-mode/fopen create mode 100644 elpa/yasnippet-20160131.948/snippets/cc-mode/for create mode 100644 elpa/yasnippet-20160131.948/snippets/cc-mode/for_n create mode 100644 elpa/yasnippet-20160131.948/snippets/cc-mode/function_description create mode 100644 elpa/yasnippet-20160131.948/snippets/cc-mode/if create mode 100644 elpa/yasnippet-20160131.948/snippets/cc-mode/ifdef create mode 100644 elpa/yasnippet-20160131.948/snippets/cc-mode/inc create mode 100644 elpa/yasnippet-20160131.948/snippets/cc-mode/inc.1 create mode 100644 elpa/yasnippet-20160131.948/snippets/cc-mode/main create mode 100644 elpa/yasnippet-20160131.948/snippets/cc-mode/math create mode 100644 elpa/yasnippet-20160131.948/snippets/cc-mode/member_description create mode 100644 elpa/yasnippet-20160131.948/snippets/cc-mode/once create mode 100644 elpa/yasnippet-20160131.948/snippets/cc-mode/printf create mode 100644 elpa/yasnippet-20160131.948/snippets/cc-mode/struct create mode 100644 elpa/yasnippet-20160131.948/snippets/cc-mode/switch create mode 100644 elpa/yasnippet-20160131.948/snippets/cc-mode/ternary create mode 100644 elpa/yasnippet-20160131.948/snippets/cc-mode/typedef create mode 100644 elpa/yasnippet-20160131.948/snippets/cc-mode/while create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/action create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/bash create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/cookbook_file create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/cron create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/cronf create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/deploy create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/directory create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/directoryf create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/env create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/execute create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/executef create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/file create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/filef create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/git create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/group create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/http_request create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/http_requestp create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/ignore_failure create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/inc create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/link create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/linkf create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/log create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/machine create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/meta create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/not_if create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/notifies create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/only_if create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/pac create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/pak create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/provider create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/python create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/remote_file create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/retries create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/role create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/ruby create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/script create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/service create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/servicep create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/subscribes create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/supports create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/template create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/templatev create mode 100644 elpa/yasnippet-20160131.948/snippets/chef-mode/user create mode 100644 elpa/yasnippet-20160131.948/snippets/cider-repl-mode create mode 100644 elpa/yasnippet-20160131.948/snippets/clojure-mode/.yas-parents create mode 100644 elpa/yasnippet-20160131.948/snippets/clojure-mode/bench create mode 100644 elpa/yasnippet-20160131.948/snippets/clojure-mode/bp create mode 100644 elpa/yasnippet-20160131.948/snippets/clojure-mode/def create mode 100644 elpa/yasnippet-20160131.948/snippets/clojure-mode/defm create mode 100644 elpa/yasnippet-20160131.948/snippets/clojure-mode/defn create mode 100644 elpa/yasnippet-20160131.948/snippets/clojure-mode/defr create mode 100644 elpa/yasnippet-20160131.948/snippets/clojure-mode/deft create mode 100644 elpa/yasnippet-20160131.948/snippets/clojure-mode/doseq create mode 100644 elpa/yasnippet-20160131.948/snippets/clojure-mode/fn create mode 100644 elpa/yasnippet-20160131.948/snippets/clojure-mode/for create mode 100644 elpa/yasnippet-20160131.948/snippets/clojure-mode/if create mode 100644 elpa/yasnippet-20160131.948/snippets/clojure-mode/ifl create mode 100644 elpa/yasnippet-20160131.948/snippets/clojure-mode/import create mode 100644 elpa/yasnippet-20160131.948/snippets/clojure-mode/is create mode 100644 elpa/yasnippet-20160131.948/snippets/clojure-mode/let create mode 100644 elpa/yasnippet-20160131.948/snippets/clojure-mode/map create mode 100644 elpa/yasnippet-20160131.948/snippets/clojure-mode/map.lambda create mode 100644 elpa/yasnippet-20160131.948/snippets/clojure-mode/mdoc create mode 100644 elpa/yasnippet-20160131.948/snippets/clojure-mode/ns create mode 100644 elpa/yasnippet-20160131.948/snippets/clojure-mode/opts create mode 100644 elpa/yasnippet-20160131.948/snippets/clojure-mode/pr create mode 100644 elpa/yasnippet-20160131.948/snippets/clojure-mode/print create mode 100644 elpa/yasnippet-20160131.948/snippets/clojure-mode/reduce create mode 100644 elpa/yasnippet-20160131.948/snippets/clojure-mode/require create mode 100644 elpa/yasnippet-20160131.948/snippets/clojure-mode/test create mode 100644 elpa/yasnippet-20160131.948/snippets/clojure-mode/try create mode 100644 elpa/yasnippet-20160131.948/snippets/clojure-mode/use create mode 100644 elpa/yasnippet-20160131.948/snippets/clojure-mode/when create mode 100644 elpa/yasnippet-20160131.948/snippets/clojure-mode/whenl create mode 100644 elpa/yasnippet-20160131.948/snippets/cmake-mode/add_executable create mode 100644 elpa/yasnippet-20160131.948/snippets/cmake-mode/add_library create mode 100644 elpa/yasnippet-20160131.948/snippets/cmake-mode/cmake_minimum_required create mode 100644 elpa/yasnippet-20160131.948/snippets/cmake-mode/foreach create mode 100644 elpa/yasnippet-20160131.948/snippets/cmake-mode/function create mode 100644 elpa/yasnippet-20160131.948/snippets/cmake-mode/if create mode 100644 elpa/yasnippet-20160131.948/snippets/cmake-mode/ifelse create mode 100644 elpa/yasnippet-20160131.948/snippets/cmake-mode/include create mode 100644 elpa/yasnippet-20160131.948/snippets/cmake-mode/macro create mode 100644 elpa/yasnippet-20160131.948/snippets/cmake-mode/message create mode 100644 elpa/yasnippet-20160131.948/snippets/cmake-mode/option create mode 100644 elpa/yasnippet-20160131.948/snippets/cmake-mode/project create mode 100644 elpa/yasnippet-20160131.948/snippets/cmake-mode/set create mode 100644 elpa/yasnippet-20160131.948/snippets/conf-unix-mode/.yas-parents create mode 100644 elpa/yasnippet-20160131.948/snippets/conf-unix-mode/section create mode 100644 elpa/yasnippet-20160131.948/snippets/cperl-mode/.yas-parents create mode 100644 elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/EV create mode 100644 elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/emit_signal create mode 100644 elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/intuniform create mode 100644 elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/math create mode 100644 elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/nan create mode 100644 elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/omnet create mode 100644 elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/parameter_omnetpp create mode 100644 elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/scheduleAt create mode 100644 elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/uniform create mode 100644 elpa/yasnippet-20160131.948/snippets/csharp-mode/.yas-parents create mode 100644 elpa/yasnippet-20160131.948/snippets/csharp-mode/attrib create mode 100644 elpa/yasnippet-20160131.948/snippets/csharp-mode/attrib.1 create mode 100644 elpa/yasnippet-20160131.948/snippets/csharp-mode/attrib.2 create mode 100644 elpa/yasnippet-20160131.948/snippets/csharp-mode/class create mode 100644 elpa/yasnippet-20160131.948/snippets/csharp-mode/comment create mode 100644 elpa/yasnippet-20160131.948/snippets/csharp-mode/comment.1 create mode 100644 elpa/yasnippet-20160131.948/snippets/csharp-mode/comment.2 create mode 100644 elpa/yasnippet-20160131.948/snippets/csharp-mode/comment.3 create mode 100644 elpa/yasnippet-20160131.948/snippets/csharp-mode/method create mode 100644 elpa/yasnippet-20160131.948/snippets/csharp-mode/namespace create mode 100644 elpa/yasnippet-20160131.948/snippets/csharp-mode/prop create mode 100644 elpa/yasnippet-20160131.948/snippets/csharp-mode/region create mode 100644 elpa/yasnippet-20160131.948/snippets/csharp-mode/using create mode 100644 elpa/yasnippet-20160131.948/snippets/csharp-mode/using.1 create mode 100644 elpa/yasnippet-20160131.948/snippets/csharp-mode/using.2 create mode 100644 elpa/yasnippet-20160131.948/snippets/css-mode/bg create mode 100644 elpa/yasnippet-20160131.948/snippets/css-mode/bg.1 create mode 100644 elpa/yasnippet-20160131.948/snippets/css-mode/bor create mode 100644 elpa/yasnippet-20160131.948/snippets/css-mode/cl create mode 100644 elpa/yasnippet-20160131.948/snippets/css-mode/disp.block create mode 100644 elpa/yasnippet-20160131.948/snippets/css-mode/disp.inline create mode 100644 elpa/yasnippet-20160131.948/snippets/css-mode/disp.none create mode 100644 elpa/yasnippet-20160131.948/snippets/css-mode/ff create mode 100644 elpa/yasnippet-20160131.948/snippets/css-mode/fs create mode 100644 elpa/yasnippet-20160131.948/snippets/css-mode/mar.bottom create mode 100644 elpa/yasnippet-20160131.948/snippets/css-mode/mar.left create mode 100644 elpa/yasnippet-20160131.948/snippets/css-mode/mar.mar create mode 100644 elpa/yasnippet-20160131.948/snippets/css-mode/mar.margin create mode 100644 elpa/yasnippet-20160131.948/snippets/css-mode/mar.right create mode 100644 elpa/yasnippet-20160131.948/snippets/css-mode/mar.top create mode 100644 elpa/yasnippet-20160131.948/snippets/css-mode/pad.bottom create mode 100644 elpa/yasnippet-20160131.948/snippets/css-mode/pad.left create mode 100644 elpa/yasnippet-20160131.948/snippets/css-mode/pad.pad create mode 100644 elpa/yasnippet-20160131.948/snippets/css-mode/pad.padding create mode 100644 elpa/yasnippet-20160131.948/snippets/css-mode/pad.right create mode 100644 elpa/yasnippet-20160131.948/snippets/css-mode/pad.top create mode 100644 elpa/yasnippet-20160131.948/snippets/css-mode/v create mode 100644 elpa/yasnippet-20160131.948/snippets/elixir-mode/.yas-parents create mode 100644 elpa/yasnippet-20160131.948/snippets/elixir-mode/case create mode 100644 elpa/yasnippet-20160131.948/snippets/elixir-mode/cond create mode 100644 elpa/yasnippet-20160131.948/snippets/elixir-mode/def create mode 100644 elpa/yasnippet-20160131.948/snippets/elixir-mode/defmacro create mode 100644 elpa/yasnippet-20160131.948/snippets/elixir-mode/defmacrop create mode 100644 elpa/yasnippet-20160131.948/snippets/elixir-mode/defmodule create mode 100644 elpa/yasnippet-20160131.948/snippets/elixir-mode/defp create mode 100644 elpa/yasnippet-20160131.948/snippets/elixir-mode/doc create mode 100644 elpa/yasnippet-20160131.948/snippets/elixir-mode/mdoc create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/.read_me create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/add-hook create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/and create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/append create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/apply create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/aref create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/aset create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/assq create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/autoload create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/backward-char create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/beginning-of-line create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/bounds-of-thing-at-point create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/buffer-file-name create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/buffer-modified-p create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/buffer-substring create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/buffer-substring-no-properties create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/car create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/cdr create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/concat create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/cond create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/condition-case create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/cons create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/consp create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/copy-directory create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/copy-file create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/current-buffer create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/custom-autoload create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/defalias create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/defcustom create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/define-key create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/defsubst create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/defun create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/defvar create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/delete-char create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/delete-directory create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/delete-file create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/delete-region create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/directory-files create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/dired.process_marked create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/dolist create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/end-of-line create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/eq create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/equal create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/error create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/ert-deftest create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/expand-file-name create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/f create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/fboundp create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/file-name-directory create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/file-name-extension create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/file-name-nondirectory create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/file-name-sans-extension create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/file-relative-name create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/file.process create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/file.read-lines create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/find-file create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/find-replace create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/format create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/forward-char create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/forward-line create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/funcall create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/function create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/get create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/global-set-key create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/goto-char create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/grabstring create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/grabthing create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/hash create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/if create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/insert create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/insert-file-contents create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/interactive create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/kbd create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/kill-buffer create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/lambda create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/length create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/let create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/line-beginning-position create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/line-end-position create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/list create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/looking-at create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/make-directory create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/make-local-variable create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/mapc create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/mapcar create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/match-beginning create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/match-end create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/match-string create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/memq create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/message create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/minor_mode create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/not create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/nth create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/null create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/number-to-string create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/or create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/point create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/point-max create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/point-min create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/princ create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/print create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/progn create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/push create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/put create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/re-search-backward create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/re-search-forward create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/region-active-p create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/region-beginning create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/region-end create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/rename-file create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/repeat create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/replace-regexp create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/replace-regexp-in-string create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/require create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/save-buffer create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/save-excursion create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/search-backward create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/search-backward-regexp create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/search-forward create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/search-forward-regexp create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/set create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/set-buffer create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/set-file-modes create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/set-mark create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/setq create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/should create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/skip-chars-backward create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/skip-chars-forward create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/split-string create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/string create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/string-match create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/string-to-number create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/string= create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/stringp create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/substring create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/thing-at-point create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/traverse_dir create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/unless create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/vector create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/when create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/while create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/widget-get create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/with-current-buffer create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/word-or-region create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/word_regexp create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-dired.process_marked create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-file.process create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-file.read-lines create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-find-replace create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-grabstring create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-grabthing create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-traverse_dir create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-word-or-region create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/y-or-n-p create mode 100644 elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/yes-or-no-p create mode 100644 elpa/yasnippet-20160131.948/snippets/enh-ruby-mode create mode 100644 elpa/yasnippet-20160131.948/snippets/ensime-mode create mode 100644 elpa/yasnippet-20160131.948/snippets/erc-mode/blist create mode 100644 elpa/yasnippet-20160131.948/snippets/erc-mode/help create mode 100644 elpa/yasnippet-20160131.948/snippets/erlang-mode/after create mode 100644 elpa/yasnippet-20160131.948/snippets/erlang-mode/begin create mode 100644 elpa/yasnippet-20160131.948/snippets/erlang-mode/beh create mode 100644 elpa/yasnippet-20160131.948/snippets/erlang-mode/case create mode 100644 elpa/yasnippet-20160131.948/snippets/erlang-mode/compile create mode 100644 elpa/yasnippet-20160131.948/snippets/erlang-mode/def create mode 100644 elpa/yasnippet-20160131.948/snippets/erlang-mode/exp create mode 100644 elpa/yasnippet-20160131.948/snippets/erlang-mode/fun create mode 100644 elpa/yasnippet-20160131.948/snippets/erlang-mode/if create mode 100644 elpa/yasnippet-20160131.948/snippets/erlang-mode/ifdef create mode 100644 elpa/yasnippet-20160131.948/snippets/erlang-mode/ifndef create mode 100644 elpa/yasnippet-20160131.948/snippets/erlang-mode/imp create mode 100644 elpa/yasnippet-20160131.948/snippets/erlang-mode/inc create mode 100644 elpa/yasnippet-20160131.948/snippets/erlang-mode/inc.lib create mode 100644 elpa/yasnippet-20160131.948/snippets/erlang-mode/loop create mode 100644 elpa/yasnippet-20160131.948/snippets/erlang-mode/mod create mode 100644 elpa/yasnippet-20160131.948/snippets/erlang-mode/rcv create mode 100644 elpa/yasnippet-20160131.948/snippets/erlang-mode/rcv.after create mode 100644 elpa/yasnippet-20160131.948/snippets/erlang-mode/rec create mode 100644 elpa/yasnippet-20160131.948/snippets/erlang-mode/try create mode 100644 elpa/yasnippet-20160131.948/snippets/erlang-mode/undef create mode 100644 elpa/yasnippet-20160131.948/snippets/f90-mode/bd create mode 100644 elpa/yasnippet-20160131.948/snippets/f90-mode/c create mode 100644 elpa/yasnippet-20160131.948/snippets/f90-mode/ch create mode 100644 elpa/yasnippet-20160131.948/snippets/f90-mode/cx create mode 100644 elpa/yasnippet-20160131.948/snippets/f90-mode/dc create mode 100644 elpa/yasnippet-20160131.948/snippets/f90-mode/do create mode 100644 elpa/yasnippet-20160131.948/snippets/f90-mode/dp create mode 100644 elpa/yasnippet-20160131.948/snippets/f90-mode/forall create mode 100644 elpa/yasnippet-20160131.948/snippets/f90-mode/function create mode 100644 elpa/yasnippet-20160131.948/snippets/f90-mode/if create mode 100644 elpa/yasnippet-20160131.948/snippets/f90-mode/in create mode 100644 elpa/yasnippet-20160131.948/snippets/f90-mode/inc create mode 100644 elpa/yasnippet-20160131.948/snippets/f90-mode/intr create mode 100644 elpa/yasnippet-20160131.948/snippets/f90-mode/l create mode 100644 elpa/yasnippet-20160131.948/snippets/f90-mode/module create mode 100644 elpa/yasnippet-20160131.948/snippets/f90-mode/pa create mode 100644 elpa/yasnippet-20160131.948/snippets/f90-mode/program create mode 100644 elpa/yasnippet-20160131.948/snippets/f90-mode/puref create mode 100644 elpa/yasnippet-20160131.948/snippets/f90-mode/pures create mode 100644 elpa/yasnippet-20160131.948/snippets/f90-mode/re create mode 100644 elpa/yasnippet-20160131.948/snippets/f90-mode/subroutine create mode 100644 elpa/yasnippet-20160131.948/snippets/f90-mode/until create mode 100644 elpa/yasnippet-20160131.948/snippets/f90-mode/where create mode 100644 elpa/yasnippet-20160131.948/snippets/f90-mode/while create mode 100644 elpa/yasnippet-20160131.948/snippets/f90-mode/wr create mode 100644 elpa/yasnippet-20160131.948/snippets/fundamental-mode/.yas-setup.el create mode 100644 elpa/yasnippet-20160131.948/snippets/fundamental-mode/.yas-setup.elc create mode 100644 elpa/yasnippet-20160131.948/snippets/git-commit-mode/.yas-parents create mode 100644 elpa/yasnippet-20160131.948/snippets/git-commit-mode/fixes create mode 100644 elpa/yasnippet-20160131.948/snippets/git-commit-mode/references create mode 100644 elpa/yasnippet-20160131.948/snippets/go-mode/benchmark create mode 100644 elpa/yasnippet-20160131.948/snippets/go-mode/const create mode 100644 elpa/yasnippet-20160131.948/snippets/go-mode/const( create mode 100644 elpa/yasnippet-20160131.948/snippets/go-mode/dd create mode 100644 elpa/yasnippet-20160131.948/snippets/go-mode/default create mode 100644 elpa/yasnippet-20160131.948/snippets/go-mode/else create mode 100644 elpa/yasnippet-20160131.948/snippets/go-mode/error create mode 100644 elpa/yasnippet-20160131.948/snippets/go-mode/example create mode 100644 elpa/yasnippet-20160131.948/snippets/go-mode/for create mode 100644 elpa/yasnippet-20160131.948/snippets/go-mode/forrange create mode 100644 elpa/yasnippet-20160131.948/snippets/go-mode/func create mode 100644 elpa/yasnippet-20160131.948/snippets/go-mode/if create mode 100644 elpa/yasnippet-20160131.948/snippets/go-mode/iferr create mode 100644 elpa/yasnippet-20160131.948/snippets/go-mode/import create mode 100644 elpa/yasnippet-20160131.948/snippets/go-mode/import( create mode 100644 elpa/yasnippet-20160131.948/snippets/go-mode/lambda create mode 100644 elpa/yasnippet-20160131.948/snippets/go-mode/main create mode 100644 elpa/yasnippet-20160131.948/snippets/go-mode/map create mode 100644 elpa/yasnippet-20160131.948/snippets/go-mode/printf create mode 100644 elpa/yasnippet-20160131.948/snippets/go-mode/select create mode 100644 elpa/yasnippet-20160131.948/snippets/go-mode/switch create mode 100644 elpa/yasnippet-20160131.948/snippets/go-mode/test create mode 100644 elpa/yasnippet-20160131.948/snippets/go-mode/testmain create mode 100644 elpa/yasnippet-20160131.948/snippets/go-mode/type create mode 100644 elpa/yasnippet-20160131.948/snippets/go-mode/var create mode 100644 elpa/yasnippet-20160131.948/snippets/go-mode/var( create mode 100644 elpa/yasnippet-20160131.948/snippets/groovy-mode/.yas-parents create mode 100644 elpa/yasnippet-20160131.948/snippets/groovy-mode/class create mode 100644 elpa/yasnippet-20160131.948/snippets/groovy-mode/def create mode 100644 elpa/yasnippet-20160131.948/snippets/groovy-mode/dict create mode 100644 elpa/yasnippet-20160131.948/snippets/groovy-mode/for create mode 100644 elpa/yasnippet-20160131.948/snippets/groovy-mode/println create mode 100644 elpa/yasnippet-20160131.948/snippets/groovy-mode/times create mode 100644 elpa/yasnippet-20160131.948/snippets/haskell-mode/case create mode 100644 elpa/yasnippet-20160131.948/snippets/haskell-mode/data create mode 100644 elpa/yasnippet-20160131.948/snippets/haskell-mode/doc create mode 100644 elpa/yasnippet-20160131.948/snippets/haskell-mode/efix create mode 100644 elpa/yasnippet-20160131.948/snippets/haskell-mode/function create mode 100644 elpa/yasnippet-20160131.948/snippets/haskell-mode/functione create mode 100644 elpa/yasnippet-20160131.948/snippets/haskell-mode/import create mode 100644 elpa/yasnippet-20160131.948/snippets/haskell-mode/instance create mode 100644 elpa/yasnippet-20160131.948/snippets/haskell-mode/main create mode 100644 elpa/yasnippet-20160131.948/snippets/haskell-mode/module create mode 100644 elpa/yasnippet-20160131.948/snippets/haskell-mode/new class create mode 100644 elpa/yasnippet-20160131.948/snippets/haskell-mode/pragma create mode 100644 elpa/yasnippet-20160131.948/snippets/haskell-mode/print create mode 100644 elpa/yasnippet-20160131.948/snippets/html-mode/.yas-parents create mode 100644 elpa/yasnippet-20160131.948/snippets/html-mode/dd create mode 100644 elpa/yasnippet-20160131.948/snippets/html-mode/dl create mode 100644 elpa/yasnippet-20160131.948/snippets/html-mode/doctype create mode 100644 elpa/yasnippet-20160131.948/snippets/html-mode/doctype.html5 create mode 100644 elpa/yasnippet-20160131.948/snippets/html-mode/doctype.xhtml1 create mode 100644 elpa/yasnippet-20160131.948/snippets/html-mode/doctype.xhtml1_1 create mode 100644 elpa/yasnippet-20160131.948/snippets/html-mode/doctype.xhtml1_strict create mode 100644 elpa/yasnippet-20160131.948/snippets/html-mode/doctype.xhtml1_transitional create mode 100644 elpa/yasnippet-20160131.948/snippets/html-mode/dt create mode 100644 elpa/yasnippet-20160131.948/snippets/html-mode/form create mode 100644 elpa/yasnippet-20160131.948/snippets/html-mode/html create mode 100644 elpa/yasnippet-20160131.948/snippets/html-mode/html.xmlns create mode 100644 elpa/yasnippet-20160131.948/snippets/html-mode/link.stylesheet create mode 100644 elpa/yasnippet-20160131.948/snippets/html-mode/link.stylesheet-ie create mode 100644 elpa/yasnippet-20160131.948/snippets/html-mode/mailto create mode 100644 elpa/yasnippet-20160131.948/snippets/html-mode/meta create mode 100644 elpa/yasnippet-20160131.948/snippets/html-mode/meta.http-equiv create mode 100644 elpa/yasnippet-20160131.948/snippets/html-mode/script.javascript create mode 100644 elpa/yasnippet-20160131.948/snippets/html-mode/script.javascript-src create mode 100644 elpa/yasnippet-20160131.948/snippets/html-mode/textarea create mode 100644 elpa/yasnippet-20160131.948/snippets/html-mode/th create mode 100644 elpa/yasnippet-20160131.948/snippets/java-mode/apr_assert create mode 100644 elpa/yasnippet-20160131.948/snippets/java-mode/assert create mode 100644 elpa/yasnippet-20160131.948/snippets/java-mode/assertEquals create mode 100644 elpa/yasnippet-20160131.948/snippets/java-mode/cls create mode 100644 elpa/yasnippet-20160131.948/snippets/java-mode/constructor create mode 100644 elpa/yasnippet-20160131.948/snippets/java-mode/define test method create mode 100644 elpa/yasnippet-20160131.948/snippets/java-mode/doc create mode 100644 elpa/yasnippet-20160131.948/snippets/java-mode/equals create mode 100644 elpa/yasnippet-20160131.948/snippets/java-mode/file_class create mode 100644 elpa/yasnippet-20160131.948/snippets/java-mode/for create mode 100644 elpa/yasnippet-20160131.948/snippets/java-mode/fori create mode 100644 elpa/yasnippet-20160131.948/snippets/java-mode/getter create mode 100644 elpa/yasnippet-20160131.948/snippets/java-mode/if create mode 100644 elpa/yasnippet-20160131.948/snippets/java-mode/ife create mode 100644 elpa/yasnippet-20160131.948/snippets/java-mode/import create mode 100644 elpa/yasnippet-20160131.948/snippets/java-mode/iterator create mode 100644 elpa/yasnippet-20160131.948/snippets/java-mode/javadoc create mode 100644 elpa/yasnippet-20160131.948/snippets/java-mode/lambda create mode 100644 elpa/yasnippet-20160131.948/snippets/java-mode/main create mode 100644 elpa/yasnippet-20160131.948/snippets/java-mode/main_class create mode 100644 elpa/yasnippet-20160131.948/snippets/java-mode/method create mode 100644 elpa/yasnippet-20160131.948/snippets/java-mode/new create mode 100644 elpa/yasnippet-20160131.948/snippets/java-mode/override create mode 100644 elpa/yasnippet-20160131.948/snippets/java-mode/param create mode 100644 elpa/yasnippet-20160131.948/snippets/java-mode/printf create mode 100644 elpa/yasnippet-20160131.948/snippets/java-mode/println create mode 100644 elpa/yasnippet-20160131.948/snippets/java-mode/return create mode 100644 elpa/yasnippet-20160131.948/snippets/java-mode/test create mode 100644 elpa/yasnippet-20160131.948/snippets/java-mode/testClass create mode 100644 elpa/yasnippet-20160131.948/snippets/java-mode/this create mode 100644 elpa/yasnippet-20160131.948/snippets/java-mode/toString create mode 100644 elpa/yasnippet-20160131.948/snippets/java-mode/try create mode 100644 elpa/yasnippet-20160131.948/snippets/java-mode/value create mode 100644 elpa/yasnippet-20160131.948/snippets/js-mode/al create mode 100644 elpa/yasnippet-20160131.948/snippets/js-mode/class create mode 100644 elpa/yasnippet-20160131.948/snippets/js-mode/com create mode 100644 elpa/yasnippet-20160131.948/snippets/js-mode/debugger create mode 100644 elpa/yasnippet-20160131.948/snippets/js-mode/each create mode 100644 elpa/yasnippet-20160131.948/snippets/js-mode/el create mode 100644 elpa/yasnippet-20160131.948/snippets/js-mode/ev.add create mode 100644 elpa/yasnippet-20160131.948/snippets/js-mode/ev.fire create mode 100644 elpa/yasnippet-20160131.948/snippets/js-mode/for create mode 100644 elpa/yasnippet-20160131.948/snippets/js-mode/function create mode 100644 elpa/yasnippet-20160131.948/snippets/js-mode/if create mode 100644 elpa/yasnippet-20160131.948/snippets/js-mode/init create mode 100644 elpa/yasnippet-20160131.948/snippets/js-mode/log create mode 100644 elpa/yasnippet-20160131.948/snippets/js-mode/multiline-comment create mode 100644 elpa/yasnippet-20160131.948/snippets/js-mode/param-comment create mode 100644 elpa/yasnippet-20160131.948/snippets/js-mode/req.html create mode 100644 elpa/yasnippet-20160131.948/snippets/js-mode/req.json create mode 100644 elpa/yasnippet-20160131.948/snippets/js-mode/return-comment create mode 100644 elpa/yasnippet-20160131.948/snippets/js-mode/type-inline-comment create mode 100644 elpa/yasnippet-20160131.948/snippets/js-mode/type-multiline-comment create mode 100644 elpa/yasnippet-20160131.948/snippets/js2-mode create mode 100644 elpa/yasnippet-20160131.948/snippets/latex-mode/acronym create mode 100644 elpa/yasnippet-20160131.948/snippets/latex-mode/alertblock create mode 100644 elpa/yasnippet-20160131.948/snippets/latex-mode/alg create mode 100644 elpa/yasnippet-20160131.948/snippets/latex-mode/begin create mode 100644 elpa/yasnippet-20160131.948/snippets/latex-mode/block create mode 100644 elpa/yasnippet-20160131.948/snippets/latex-mode/capgls create mode 100644 elpa/yasnippet-20160131.948/snippets/latex-mode/caption create mode 100644 elpa/yasnippet-20160131.948/snippets/latex-mode/cite create mode 100644 elpa/yasnippet-20160131.948/snippets/latex-mode/code create mode 100644 elpa/yasnippet-20160131.948/snippets/latex-mode/columns create mode 100644 elpa/yasnippet-20160131.948/snippets/latex-mode/emph create mode 100644 elpa/yasnippet-20160131.948/snippets/latex-mode/enumerate create mode 100644 elpa/yasnippet-20160131.948/snippets/latex-mode/figure create mode 100644 elpa/yasnippet-20160131.948/snippets/latex-mode/frac create mode 100644 elpa/yasnippet-20160131.948/snippets/latex-mode/frame create mode 100644 elpa/yasnippet-20160131.948/snippets/latex-mode/gls create mode 100644 elpa/yasnippet-20160131.948/snippets/latex-mode/glspl create mode 100644 elpa/yasnippet-20160131.948/snippets/latex-mode/if create mode 100644 elpa/yasnippet-20160131.948/snippets/latex-mode/includegraphics create mode 100644 elpa/yasnippet-20160131.948/snippets/latex-mode/item create mode 100644 elpa/yasnippet-20160131.948/snippets/latex-mode/itemize create mode 100644 elpa/yasnippet-20160131.948/snippets/latex-mode/label create mode 100644 elpa/yasnippet-20160131.948/snippets/latex-mode/listing create mode 100644 elpa/yasnippet-20160131.948/snippets/latex-mode/movie create mode 100644 elpa/yasnippet-20160131.948/snippets/latex-mode/newcommand create mode 100644 elpa/yasnippet-20160131.948/snippets/latex-mode/newglossaryentry create mode 100644 elpa/yasnippet-20160131.948/snippets/latex-mode/note create mode 100644 elpa/yasnippet-20160131.948/snippets/latex-mode/python create mode 100644 elpa/yasnippet-20160131.948/snippets/latex-mode/question create mode 100644 elpa/yasnippet-20160131.948/snippets/latex-mode/section create mode 100644 elpa/yasnippet-20160131.948/snippets/latex-mode/subf create mode 100644 elpa/yasnippet-20160131.948/snippets/latex-mode/subfigure create mode 100644 elpa/yasnippet-20160131.948/snippets/latex-mode/subsec create mode 100644 elpa/yasnippet-20160131.948/snippets/latex-mode/textbf create mode 100644 elpa/yasnippet-20160131.948/snippets/latex-mode/usepackage create mode 100644 elpa/yasnippet-20160131.948/snippets/lisp-interaction-mode/defun create mode 100644 elpa/yasnippet-20160131.948/snippets/lisp-mode/class create mode 100644 elpa/yasnippet-20160131.948/snippets/lisp-mode/comment create mode 100644 elpa/yasnippet-20160131.948/snippets/lisp-mode/defpackage create mode 100644 elpa/yasnippet-20160131.948/snippets/lisp-mode/do create mode 100644 elpa/yasnippet-20160131.948/snippets/lisp-mode/for create mode 100644 elpa/yasnippet-20160131.948/snippets/lisp-mode/foreach create mode 100644 elpa/yasnippet-20160131.948/snippets/lisp-mode/format create mode 100644 elpa/yasnippet-20160131.948/snippets/lisp-mode/if create mode 100644 elpa/yasnippet-20160131.948/snippets/lisp-mode/ifelse create mode 100644 elpa/yasnippet-20160131.948/snippets/lisp-mode/ifnot create mode 100644 elpa/yasnippet-20160131.948/snippets/lisp-mode/slot create mode 100644 elpa/yasnippet-20160131.948/snippets/lisp-mode/switch create mode 100644 elpa/yasnippet-20160131.948/snippets/lisp-mode/typecast create mode 100644 elpa/yasnippet-20160131.948/snippets/lua-mode/fun create mode 100644 elpa/yasnippet-20160131.948/snippets/m4-mode/def create mode 100644 elpa/yasnippet-20160131.948/snippets/makefile-automake-mode/noinst_HEADERS create mode 100644 elpa/yasnippet-20160131.948/snippets/makefile-bsdmake-mode/PHONY create mode 100644 elpa/yasnippet-20160131.948/snippets/makefile-bsdmake-mode/echo create mode 100644 elpa/yasnippet-20160131.948/snippets/makefile-bsdmake-mode/gen create mode 100644 elpa/yasnippet-20160131.948/snippets/makefile-bsdmake-mode/if create mode 100644 elpa/yasnippet-20160131.948/snippets/makefile-bsdmake-mode/var create mode 100644 elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/abspath create mode 100644 elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/addprefix create mode 100644 elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/addsuffix create mode 100644 elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/dir create mode 100644 elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/make create mode 100644 elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/notdir create mode 100644 elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/patsubst create mode 100644 elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/phony create mode 100644 elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/shell create mode 100644 elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/special create mode 100644 elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/template create mode 100644 elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/wildcard create mode 100644 elpa/yasnippet-20160131.948/snippets/makefile-mode/all create mode 100644 elpa/yasnippet-20160131.948/snippets/makefile-mode/clean create mode 100644 elpa/yasnippet-20160131.948/snippets/malabar-mode/variable create mode 100644 elpa/yasnippet-20160131.948/snippets/markdown-mode/+ create mode 100644 elpa/yasnippet-20160131.948/snippets/markdown-mode/- create mode 100644 elpa/yasnippet-20160131.948/snippets/markdown-mode/_ create mode 100644 elpa/yasnippet-20160131.948/snippets/markdown-mode/__ create mode 100644 elpa/yasnippet-20160131.948/snippets/markdown-mode/` create mode 100644 elpa/yasnippet-20160131.948/snippets/markdown-mode/h1.1 create mode 100644 elpa/yasnippet-20160131.948/snippets/markdown-mode/h1.2 create mode 100644 elpa/yasnippet-20160131.948/snippets/markdown-mode/h2.1 create mode 100644 elpa/yasnippet-20160131.948/snippets/markdown-mode/h2.2 create mode 100644 elpa/yasnippet-20160131.948/snippets/markdown-mode/h3 create mode 100644 elpa/yasnippet-20160131.948/snippets/markdown-mode/h4 create mode 100644 elpa/yasnippet-20160131.948/snippets/markdown-mode/h5 create mode 100644 elpa/yasnippet-20160131.948/snippets/markdown-mode/h6 create mode 100644 elpa/yasnippet-20160131.948/snippets/markdown-mode/highlight create mode 100644 elpa/yasnippet-20160131.948/snippets/markdown-mode/hr.1 create mode 100644 elpa/yasnippet-20160131.948/snippets/markdown-mode/hr.2 create mode 100644 elpa/yasnippet-20160131.948/snippets/markdown-mode/img create mode 100644 elpa/yasnippet-20160131.948/snippets/markdown-mode/link create mode 100644 elpa/yasnippet-20160131.948/snippets/markdown-mode/ol create mode 100644 elpa/yasnippet-20160131.948/snippets/markdown-mode/rimg create mode 100644 elpa/yasnippet-20160131.948/snippets/markdown-mode/rlb create mode 100644 elpa/yasnippet-20160131.948/snippets/markdown-mode/rlink create mode 100644 elpa/yasnippet-20160131.948/snippets/markdown-mode/utf8 create mode 100644 elpa/yasnippet-20160131.948/snippets/ned-mode/.yas-parents create mode 100644 elpa/yasnippet-20160131.948/snippets/ned-mode/chan create mode 100644 elpa/yasnippet-20160131.948/snippets/ned-mode/connections create mode 100644 elpa/yasnippet-20160131.948/snippets/ned-mode/for create mode 100644 elpa/yasnippet-20160131.948/snippets/ned-mode/import create mode 100644 elpa/yasnippet-20160131.948/snippets/ned-mode/network create mode 100644 elpa/yasnippet-20160131.948/snippets/ned-mode/simple create mode 100644 elpa/yasnippet-20160131.948/snippets/ned-mode/submodules create mode 100644 elpa/yasnippet-20160131.948/snippets/nesc-mode/.yas-parents create mode 100644 elpa/yasnippet-20160131.948/snippets/nesc-mode/TOSSIM create mode 100644 elpa/yasnippet-20160131.948/snippets/nesc-mode/command create mode 100644 elpa/yasnippet-20160131.948/snippets/nesc-mode/dbg create mode 100644 elpa/yasnippet-20160131.948/snippets/nesc-mode/event create mode 100644 elpa/yasnippet-20160131.948/snippets/nesc-mode/ifdef create mode 100644 elpa/yasnippet-20160131.948/snippets/nesc-mode/interface create mode 100644 elpa/yasnippet-20160131.948/snippets/nesc-mode/module create mode 100644 elpa/yasnippet-20160131.948/snippets/nesc-mode/nx create mode 100644 elpa/yasnippet-20160131.948/snippets/nesc-mode/provides create mode 100644 elpa/yasnippet-20160131.948/snippets/nesc-mode/sim create mode 100644 elpa/yasnippet-20160131.948/snippets/nesc-mode/uint8_t create mode 100644 elpa/yasnippet-20160131.948/snippets/nesc-mode/uses create mode 100644 elpa/yasnippet-20160131.948/snippets/nsis-mode/.yas-parents create mode 100644 elpa/yasnippet-20160131.948/snippets/nsis-mode/define create mode 100644 elpa/yasnippet-20160131.948/snippets/nsis-mode/function create mode 100644 elpa/yasnippet-20160131.948/snippets/nsis-mode/if create mode 100644 elpa/yasnippet-20160131.948/snippets/nsis-mode/include create mode 100644 elpa/yasnippet-20160131.948/snippets/nsis-mode/insert_macro create mode 100644 elpa/yasnippet-20160131.948/snippets/nsis-mode/instdir create mode 100644 elpa/yasnippet-20160131.948/snippets/nsis-mode/macro create mode 100644 elpa/yasnippet-20160131.948/snippets/nsis-mode/message create mode 100644 elpa/yasnippet-20160131.948/snippets/nsis-mode/outdir create mode 100644 elpa/yasnippet-20160131.948/snippets/nsis-mode/outfile create mode 100644 elpa/yasnippet-20160131.948/snippets/nsis-mode/section create mode 100644 elpa/yasnippet-20160131.948/snippets/nxml-mode/body create mode 100644 elpa/yasnippet-20160131.948/snippets/nxml-mode/br create mode 100644 elpa/yasnippet-20160131.948/snippets/nxml-mode/doctype create mode 100644 elpa/yasnippet-20160131.948/snippets/nxml-mode/doctype_xhtml1_strict create mode 100644 elpa/yasnippet-20160131.948/snippets/nxml-mode/doctype_xhtml1_transitional create mode 100644 elpa/yasnippet-20160131.948/snippets/nxml-mode/form create mode 100644 elpa/yasnippet-20160131.948/snippets/nxml-mode/href create mode 100644 elpa/yasnippet-20160131.948/snippets/nxml-mode/html create mode 100644 elpa/yasnippet-20160131.948/snippets/nxml-mode/img create mode 100644 elpa/yasnippet-20160131.948/snippets/nxml-mode/input create mode 100644 elpa/yasnippet-20160131.948/snippets/nxml-mode/link create mode 100644 elpa/yasnippet-20160131.948/snippets/nxml-mode/meta create mode 100644 elpa/yasnippet-20160131.948/snippets/nxml-mode/name create mode 100644 elpa/yasnippet-20160131.948/snippets/nxml-mode/quote create mode 100644 elpa/yasnippet-20160131.948/snippets/nxml-mode/style create mode 100644 elpa/yasnippet-20160131.948/snippets/nxml-mode/tag create mode 100644 elpa/yasnippet-20160131.948/snippets/nxml-mode/tag_closing create mode 100644 elpa/yasnippet-20160131.948/snippets/nxml-mode/tag_newline create mode 100644 elpa/yasnippet-20160131.948/snippets/octave-mode/for create mode 100644 elpa/yasnippet-20160131.948/snippets/octave-mode/function create mode 100644 elpa/yasnippet-20160131.948/snippets/octave-mode/if create mode 100644 elpa/yasnippet-20160131.948/snippets/org-mode/code create mode 100644 elpa/yasnippet-20160131.948/snippets/org-mode/dot create mode 100644 elpa/yasnippet-20160131.948/snippets/org-mode/elisp create mode 100644 elpa/yasnippet-20160131.948/snippets/org-mode/embedded create mode 100644 elpa/yasnippet-20160131.948/snippets/org-mode/entry create mode 100644 elpa/yasnippet-20160131.948/snippets/org-mode/figure create mode 100644 elpa/yasnippet-20160131.948/snippets/org-mode/img create mode 100644 elpa/yasnippet-20160131.948/snippets/org-mode/latex create mode 100644 elpa/yasnippet-20160131.948/snippets/org-mode/matrix create mode 100644 elpa/yasnippet-20160131.948/snippets/org-mode/verse create mode 100644 elpa/yasnippet-20160131.948/snippets/perl-mode/.yas-parents create mode 100644 elpa/yasnippet-20160131.948/snippets/perl-mode/eval create mode 100644 elpa/yasnippet-20160131.948/snippets/perl-mode/for create mode 100644 elpa/yasnippet-20160131.948/snippets/perl-mode/fore create mode 100644 elpa/yasnippet-20160131.948/snippets/perl-mode/if create mode 100644 elpa/yasnippet-20160131.948/snippets/perl-mode/ife create mode 100644 elpa/yasnippet-20160131.948/snippets/perl-mode/ifee create mode 100644 elpa/yasnippet-20160131.948/snippets/perl-mode/sub create mode 100644 elpa/yasnippet-20160131.948/snippets/perl-mode/unless create mode 100644 elpa/yasnippet-20160131.948/snippets/perl-mode/while create mode 100644 elpa/yasnippet-20160131.948/snippets/perl-mode/xfore create mode 100644 elpa/yasnippet-20160131.948/snippets/perl-mode/xif create mode 100644 elpa/yasnippet-20160131.948/snippets/perl-mode/xunless create mode 100644 elpa/yasnippet-20160131.948/snippets/perl-mode/xwhile create mode 100644 elpa/yasnippet-20160131.948/snippets/prog-mode/.yas-setup.el create mode 100644 elpa/yasnippet-20160131.948/snippets/prog-mode/.yas-setup.elc create mode 100644 elpa/yasnippet-20160131.948/snippets/prog-mode/fixme create mode 100644 elpa/yasnippet-20160131.948/snippets/prog-mode/todo create mode 100644 elpa/yasnippet-20160131.948/snippets/prog-mode/xxx create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/.yas-parents create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/.yas-setup.el create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/.yas-setup.elc create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/__contains__ create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/__enter__ create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/__exit__ create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/__getitem__ create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/__len__ create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/__new__ create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/__setitem__ create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/all create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/arg create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/arg_positional create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/ass create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/assertEqual create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/assertFalse create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/assertIn create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/assertNotEqual create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/assertNotIn create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/assertRaises create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/assertRaises.with create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/assertTrue create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/celery_pdb create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/classmethod create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/cls create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/dec create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/deftest create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/django_test_class create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/doc create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/doctest create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/eq create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/for create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/from create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/function create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/function_docstring create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/if create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/ife create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/ifmain create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/import create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/init create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/init_docstring create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/interact create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/ipdbdebug create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/iter create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/lambda create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/list create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/logger_name create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/logging create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/main create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/metaclass create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/method create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/method_docstring create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/not_impl create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/np create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/parse_args create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/parser create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/pass create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/pl create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/print create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/prop create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/reg create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/repr create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/return create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/script create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/self create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/self_without_dot create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/selfassign create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/setdef create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/setup create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/size create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/static create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/str create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/super create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/test_class create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/test_file create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/trace create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/try create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/tryelse create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/unicode create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/utf8 create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/while create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/with create mode 100644 elpa/yasnippet-20160131.948/snippets/python-mode/with_statement create mode 100644 elpa/yasnippet-20160131.948/snippets/rename_add_contr.py create mode 100644 elpa/yasnippet-20160131.948/snippets/rst-mode/autoclass create mode 100644 elpa/yasnippet-20160131.948/snippets/rst-mode/autofunction create mode 100644 elpa/yasnippet-20160131.948/snippets/rst-mode/automodule create mode 100644 elpa/yasnippet-20160131.948/snippets/rst-mode/class create mode 100644 elpa/yasnippet-20160131.948/snippets/rst-mode/code create mode 100644 elpa/yasnippet-20160131.948/snippets/rst-mode/digraph create mode 100644 elpa/yasnippet-20160131.948/snippets/rst-mode/function create mode 100644 elpa/yasnippet-20160131.948/snippets/rst-mode/graph create mode 100644 elpa/yasnippet-20160131.948/snippets/rst-mode/graphviz create mode 100644 elpa/yasnippet-20160131.948/snippets/rst-mode/image create mode 100644 elpa/yasnippet-20160131.948/snippets/rst-mode/inheritance create mode 100644 elpa/yasnippet-20160131.948/snippets/rst-mode/literal_include create mode 100644 elpa/yasnippet-20160131.948/snippets/rst-mode/meta create mode 100644 elpa/yasnippet-20160131.948/snippets/rst-mode/module create mode 100644 elpa/yasnippet-20160131.948/snippets/rst-mode/parsed_literal create mode 100644 elpa/yasnippet-20160131.948/snippets/rst-mode/pause create mode 100644 elpa/yasnippet-20160131.948/snippets/rst-mode/term create mode 100644 elpa/yasnippet-20160131.948/snippets/rst-mode/url create mode 100644 elpa/yasnippet-20160131.948/snippets/rst-mode/verbatim create mode 100644 elpa/yasnippet-20160131.948/snippets/rst-mode/warning create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/# create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/=b create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/Comp create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/GLOB create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/all create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/am create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/any create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/app create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/attribute create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/bench create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/bm create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/case create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/cla create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/cls create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/collect create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/dee create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/def create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/deli create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/det create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/dow create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/ea create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/eac create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/eai create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/eav create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/eawi create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/for create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/forin create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/formula create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/if create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/ife create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/init create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/inject create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/map create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/mm create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/r create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/rb create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/red create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/reject create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/rel create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/req create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/rw create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/select create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/str create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/test class create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/tim create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/to_ create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/tu create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/until create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/upt create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/w create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/when create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/while create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/y create mode 100644 elpa/yasnippet-20160131.948/snippets/ruby-mode/zip create mode 100644 elpa/yasnippet-20160131.948/snippets/scala-mode/app create mode 100644 elpa/yasnippet-20160131.948/snippets/scala-mode/case create mode 100644 elpa/yasnippet-20160131.948/snippets/scala-mode/cc create mode 100644 elpa/yasnippet-20160131.948/snippets/scala-mode/co create mode 100644 elpa/yasnippet-20160131.948/snippets/scala-mode/cons create mode 100644 elpa/yasnippet-20160131.948/snippets/scala-mode/def create mode 100644 elpa/yasnippet-20160131.948/snippets/scala-mode/doc create mode 100644 elpa/yasnippet-20160131.948/snippets/scala-mode/for create mode 100644 elpa/yasnippet-20160131.948/snippets/scala-mode/if create mode 100644 elpa/yasnippet-20160131.948/snippets/scala-mode/ls create mode 100644 elpa/yasnippet-20160131.948/snippets/scala-mode/main create mode 100644 elpa/yasnippet-20160131.948/snippets/scala-mode/match create mode 100644 elpa/yasnippet-20160131.948/snippets/scala-mode/ob create mode 100644 elpa/yasnippet-20160131.948/snippets/scala-mode/throw create mode 100644 elpa/yasnippet-20160131.948/snippets/scala-mode/try create mode 100644 elpa/yasnippet-20160131.948/snippets/sh-mode/args create mode 100644 elpa/yasnippet-20160131.948/snippets/sh-mode/bang create mode 100644 elpa/yasnippet-20160131.948/snippets/sh-mode/for loop create mode 100644 elpa/yasnippet-20160131.948/snippets/sh-mode/function create mode 100644 elpa/yasnippet-20160131.948/snippets/sh-mode/if create mode 100644 elpa/yasnippet-20160131.948/snippets/sh-mode/ife create mode 100644 elpa/yasnippet-20160131.948/snippets/snippet-mode/cont create mode 100644 elpa/yasnippet-20160131.948/snippets/snippet-mode/elisp create mode 100644 elpa/yasnippet-20160131.948/snippets/snippet-mode/field create mode 100644 elpa/yasnippet-20160131.948/snippets/snippet-mode/group create mode 100644 elpa/yasnippet-20160131.948/snippets/snippet-mode/mirror create mode 100644 elpa/yasnippet-20160131.948/snippets/snippet-mode/vars create mode 100644 elpa/yasnippet-20160131.948/snippets/snippets/ruby-mode/definitions/mod create mode 100644 elpa/yasnippet-20160131.948/snippets/sql-mode/column create mode 100644 elpa/yasnippet-20160131.948/snippets/sql-mode/constraint create mode 100644 elpa/yasnippet-20160131.948/snippets/sql-mode/constraint.1 create mode 100644 elpa/yasnippet-20160131.948/snippets/sql-mode/create create mode 100644 elpa/yasnippet-20160131.948/snippets/sql-mode/create.1 create mode 100644 elpa/yasnippet-20160131.948/snippets/sql-mode/references create mode 100644 elpa/yasnippet-20160131.948/snippets/text-mode/.yas-parents create mode 100644 elpa/yasnippet-20160131.948/snippets/tuareg-mode/assert create mode 100644 elpa/yasnippet-20160131.948/snippets/tuareg-mode/docstring create mode 100644 elpa/yasnippet-20160131.948/snippets/tuareg-mode/for create mode 100644 elpa/yasnippet-20160131.948/snippets/tuareg-mode/fun create mode 100644 elpa/yasnippet-20160131.948/snippets/tuareg-mode/guard create mode 100644 elpa/yasnippet-20160131.948/snippets/tuareg-mode/ifthen create mode 100644 elpa/yasnippet-20160131.948/snippets/tuareg-mode/ifthenelse create mode 100644 elpa/yasnippet-20160131.948/snippets/tuareg-mode/let create mode 100644 elpa/yasnippet-20160131.948/snippets/tuareg-mode/list_comprehension create mode 100644 elpa/yasnippet-20160131.948/snippets/tuareg-mode/main create mode 100644 elpa/yasnippet-20160131.948/snippets/tuareg-mode/match create mode 100644 elpa/yasnippet-20160131.948/snippets/tuareg-mode/module create mode 100644 elpa/yasnippet-20160131.948/snippets/tuareg-mode/open create mode 100644 elpa/yasnippet-20160131.948/snippets/tuareg-mode/printf create mode 100644 elpa/yasnippet-20160131.948/snippets/tuareg-mode/rec create mode 100644 elpa/yasnippet-20160131.948/snippets/tuareg-mode/try create mode 100644 elpa/yasnippet-20160131.948/snippets/tuareg-mode/type create mode 100644 elpa/yasnippet-20160131.948/snippets/tuareg-mode/type_type create mode 100644 elpa/yasnippet-20160131.948/snippets/tuareg-mode/val create mode 100644 elpa/yasnippet-20160131.948/snippets/tuareg-mode/while create mode 100644 elpa/yasnippet-20160131.948/snippets/typerex-mode create mode 100644 elpa/yasnippet-20160131.948/snippets/udev-mode/ENV create mode 100644 elpa/yasnippet-20160131.948/snippets/udev-mode/GOTO create mode 100644 elpa/yasnippet-20160131.948/snippets/udev-mode/KERNEL create mode 100644 elpa/yasnippet-20160131.948/snippets/udev-mode/add create mode 100644 elpa/yasnippet-20160131.948/snippets/udev-mode/env$ create mode 100644 elpa/yasnippet-20160131.948/snippets/udev-mode/run create mode 100644 elpa/yasnippet-20160131.948/snippets/web-mode create mode 100644 elpa/yasnippet-20160131.948/snippets/yaml-mode/entry create mode 100644 elpa/yasnippet-20160131.948/snippets/yaml-mode/list create mode 100644 elpa/yasnippet-20160131.948/snippets/yaml-mode/section create mode 100644 elpa/yasnippet-20160131.948/yasnippet-autoloads.el create mode 100644 elpa/yasnippet-20160131.948/yasnippet-pkg.el create mode 100644 elpa/yasnippet-20160131.948/yasnippet.el create mode 100644 elpa/yasnippet-20160131.948/yasnippet.elc delete mode 160000 emacs-color-theme-solarized delete mode 100644 find_python_file.py delete mode 160000 js2-mode delete mode 160000 scss-mode delete mode 160000 smart-tab diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 200ac4f..0000000 --- a/.gitmodules +++ /dev/null @@ -1,18 +0,0 @@ -[submodule "coffee-mode"] - path = coffee-mode - url = https://github.com/defunkt/coffee-mode -[submodule "js2-mode"] - path = js2-mode - url = git://github.com/mooz/js2-mode.git -[submodule "scss-mode"] - path = scss-mode - url = git://github.com/antonj/scss-mode.git -[submodule "color-theme"] - path = color-theme - url = git@github.com:my8bird/emacs-color-theme.git -[submodule "smart-tab"] - path = smart-tab - url = git://github.com/genehack/smart-tab.git -[submodule "emacs-color-theme-solarized"] - path = emacs-color-theme-solarized - url = git://github.com/sellout/emacs-color-theme-solarized.git diff --git a/README.md b/README.md deleted file mode 100644 index 15289f6..0000000 --- a/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Install -```bash -git clone git@github.com:my8bird/emacs.git -mv emacs ~/.emacs.d -cd ~/.emacs.d -git submodule init -git submodule update -echo Done... enjoy emacs -``` diff --git a/after_package.el b/after_package.el new file mode 100644 index 0000000..cb4e1b6 --- /dev/null +++ b/after_package.el @@ -0,0 +1,131 @@ +; (load-theme 'gruvbox t) +(load-theme 'darktooth t) + +; Always have auto complete running +(global-auto-complete-mode t) +; Start auto-completion after 2 characters of a word +(setq ac-auto-start 2) + +;; Set the whitespace rules I must follow +;; - Do this before loading other things encase they cash them +(setq-default py-indent-offset 3) +(setq-default indent-tabs-mode nil) +(setq js-indent-level 3) +(setq-default indent-tabs-mode nil) ; always replace tabs with spaces +(setq-default tab-width 3) ; set tab width to 3 for all buffers +(setq-default c-basic-offset 3) +(setq-default css-indent-offset 3) + +(add-hook 'python-mode-hook '(lambda () + (setq python-indent 3) + (flymake-python-pyflakes-load))) + +(add-to-list 'auto-mode-alist (cons (rx ".js" eos) 'js2-mode)) + +(setq js2-highlight-level 3) + + +(defun wg/ido-for-this-mode + () + (interactive) + (let + ((the-mode major-mode)) + (switch-to-buffer + (ido-completing-read + (format "Buffers of %s: " the-mode) + (save-excursion + (delq + nil + (mapcar + (lambda + (buf) + (when + (buffer-live-p buf) + (with-current-buffer buf + (and + (eq major-mode the-mode) + (buffer-name buf))))) + (buffer-list)))))))) + +(global-set-key (kbd "H-t") 'wg/ido-for-this-mode) +(global-set-key (kbd "C-c t") 'wg/ido-for-this-mode) + +(defun json-format () + (interactive) + (save-excursion + (shell-command-on-region (mark) (point) "python -m json.tool" (buffer-name) t) + ) + ) + +(global-set-key (kbd "C->") 'mc/mark-next-like-this) +(global-set-key (kbd "C-<") 'mc/mark-previous-like-this) +(global-set-key (kbd "C-c C-<") 'mc/mark-all-like-this) + +(push "~/.emacs.d/helm-cmd-t" load-path) +(require 'helm-config) + +(require 'helm-cmd-t) +(global-set-key (kbd "M-t") 'helm-cmd-t) +;;(setq helm-cmd-t-cache-threshhold +(require 'helm-ls-git) + +(require 'helm-grep) +(require 'helm-files) +(require 'helm-locate) + +(setq helm-idle-delay 0.1) +(setq helm-input-idle-delay 0.1) +(setq helm-locate-command "es !~ !# %s %s") + +; The default "C-x c" is quite close to "C-x C-c", which quits Emacs. +; Changed to "C-c h". Note: We must set "C-c h" globally, because we +; cannot change `helm-command-prefix-key' once `helm-config' is loaded. +(global-set-key (kbd "C-c h") 'helm-command-prefix) +(global-unset-key (kbd "C-x c")) + +(define-key helm-map (kbd "") 'helm-execute-persistent-action) ; rebihnd tab to do persistent action +(define-key helm-map (kbd "C-i") 'helm-execute-persistent-action) ; make TAB works in terminal +(define-key helm-map (kbd "C-z") 'helm-select-action) ; list actions using C-z + +(when (executable-find "curl") + (setq helm-google-suggest-use-curl-p t)) + +(setq helm-quick-update t ; do not display invisible candidates + helm-split-window-in-side-p t ; open helm buffer inside current window, not occupy whole other window + helm-buffers-fuzzy-matching t ; fuzzy matching buffer names when non--nil + helm-move-to-line-cycle-in-source t ; move to end or beginning of source when reaching top or bottom of source. + helm-ff-search-library-in-sexp t ; search for library in `require' and `declare-function' sexp. + helm-scroll-amount 8 ; scroll 8 lines other window using M-/M- + helm-ff-file-name-history-use-recentf t) +(helm-mode 1) + +;(require 'epc) +;(add-hook 'python-mode-hook 'jedi:setup) +;(setq jedi:complete-on-dot t) + +(require 'multi-term) + +;(elpy-enable) +;(define-key elpy-mode-map (kbd "") nil) +;(define-key elpy-mode-map (kbd "") nil) +;(define-key elpy-mode-map (kbd "") nil) +;(define-key elpy-mode-map (kbd "") nil) + + +(require 'mmm-mode) +(setq mmm-global-mode 'maybe) + +(defun my-mmm-markdown-auto-class (lang &optional submode) + "Define a mmm-mode class for LANG in `markdown-mode' using SUBMODE. +If SUBMODE is not provided, use `LANG-mode' by default." + (let ((class (intern (concat "markdown-" lang))) + (submode (or submode (intern (concat lang "-mode")))) + (front (concat "^```" lang "[\n\r]+")) + (back "^```")) + (mmm-add-classes (list (list class :submode submode :front front :back back))) + (mmm-add-mode-ext-class 'markdown-mode nil class))) + +;; Mode names that derive directly from the language name +(mapc 'my-mmm-markdown-auto-class + '("css" "html" "python" "xml" "sh")) +(my-mmm-markdown-auto-class "javascript" 'js-mode) diff --git a/coffee-mode b/coffee-mode deleted file mode 160000 index c58da19..0000000 --- a/coffee-mode +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c58da19b141204032f7a0c8c919bec1dbe0cd305 diff --git a/color-theme b/color-theme deleted file mode 160000 index 538303e..0000000 --- a/color-theme +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 538303e9ade5e0046da11a44bdb7678b819f404f diff --git a/elpa/ac-js2-20140906.442/ac-js2-autoloads.el b/elpa/ac-js2-20140906.442/ac-js2-autoloads.el new file mode 100644 index 0000000..688ad44 --- /dev/null +++ b/elpa/ac-js2-20140906.442/ac-js2-autoloads.el @@ -0,0 +1,50 @@ +;;; ac-js2-autoloads.el --- automatically extracted autoloads +;; +;;; Code: +(add-to-list 'load-path (directory-file-name (or (file-name-directory #$) (car load-path)))) + +;;;### (autoloads nil "ac-js2" "ac-js2.el" (22215 23004 0 0)) +;;; Generated autoloads from ac-js2.el + +(autoload 'ac-js2-expand-function "ac-js2" "\ +Expand the function definition left of point. +Expansion will only occur for candidates whose documentation +string contain a function prototype. + +\(fn)" t nil) + +(autoload 'ac-js2-completion-function "ac-js2" "\ +Function for `completions-at-point'. + +\(fn)" nil nil) + +(autoload 'ac-js2-company "ac-js2" "\ + + +\(fn COMMAND &optional ARG &rest IGNORED)" t nil) + +(autoload 'ac-js2-jump-to-definition "ac-js2" "\ +Jump to the definition of an object's property, variable or function. +Navigation to a property definend in an Object literal isn't +implemented. + +\(fn)" t nil) + +(autoload 'ac-js2-mode "ac-js2" "\ +A minor mode that provides auto-completion and navigation for Js2-mode. + +\(fn &optional ARG)" t nil) + +;;;*** + +;;;### (autoloads nil nil ("ac-js2-pkg.el" "ac-js2-tests.el") (22215 +;;;;;; 23004 0 0)) + +;;;*** + +;; Local Variables: +;; version-control: never +;; no-byte-compile: t +;; no-update-autoloads: t +;; End: +;;; ac-js2-autoloads.el ends here diff --git a/elpa/ac-js2-20140906.442/ac-js2-pkg.el b/elpa/ac-js2-20140906.442/ac-js2-pkg.el new file mode 100644 index 0000000..0a7cacd --- /dev/null +++ b/elpa/ac-js2-20140906.442/ac-js2-pkg.el @@ -0,0 +1,7 @@ +(define-package "ac-js2" "20140906.442" "Auto-complete source for Js2-mode, with navigation" + '((js2-mode "20090723") + (skewer-mode "1.4")) + :url "https://github.com/ScottyB/ac-js2") +;; Local Variables: +;; no-byte-compile: t +;; End: diff --git a/elpa/ac-js2-20140906.442/ac-js2-tests.el b/elpa/ac-js2-20140906.442/ac-js2-tests.el new file mode 100644 index 0000000..05514e3 --- /dev/null +++ b/elpa/ac-js2-20140906.442/ac-js2-tests.el @@ -0,0 +1,76 @@ +;;; Tests for ac-js2 + +(require 'ert) +(require 'skewer-mode) +(require 'js2-mode) +(require 'ac-js2) + +;;; Must have a skewer client connected before running the tests +;; Need to call httpd-stop from main Emacs if running tests in batch mode +(unless skewer-clients + (run-skewer)) + +(ert-deftest ac-js2-candidates-test () + "Test the major function that returns candidates for all frontends." + (let (property + property-dot + func-call + var) + (with-temp-buffer + (insert " + var temp = function(param1, param2) { + var localParam = 15; + return param1 + param2; + }; + + var look; + +temp.aFun = function(lolParam) {}; +temp.anotherFunction = function() { return {about: 3};}") + (setq ac-js2-evaluate-calls t) + (setq ac-js2-external-libraries nil) + + (js2-mode) + (ac-js2-mode t) + (js2-parse) + + (insert "tem") + (ac-js2-candidates) + (setq var ac-js2-skewer-candidates) + (delete-char -3) + + (insert "temp.") + (js2-parse) + (ac-js2-candidates) + (setq property-dot ac-js2-skewer-candidates) + (delete-char -5) + + (insert "temp.aF") + (js2-parse) + (ac-js2-candidates) + (setq property ac-js2-skewer-candidates)) + + (should (assoc 'anotherFunction property-dot)) + (print property) + (should (assoc 'aFun property)) + (should (assoc 'temp var)))) + +(defmacro completion-frontend-test (test-name completion-function) + "Utility for testing completion front ends. +TODO: cover more cases" + `(ert-deftest ,test-name () + (let (var) + (with-temp-buffer + (insert "var testComplete = function(param1, param2) {};") + + (js2-mode) + (ac-js2-mode t) + (js2-parse) + + (insert "testComplet") + (funcall ',completion-function) + (setq var (thing-at-point 'word))) + (should (string= var "testComplete"))))) + +(completion-frontend-test auto-complete-test auto-complete) +(completion-frontend-test completion-at-point-test completion-at-point) diff --git a/elpa/ac-js2-20140906.442/ac-js2-tests.elc b/elpa/ac-js2-20140906.442/ac-js2-tests.elc new file mode 100644 index 0000000000000000000000000000000000000000..ae5c0018d1e1eb6a6664885bda4afacfd0ff7cdd GIT binary patch literal 5430 zcmdT|ZExE~63(~U4r=t;USF;~bt1Mgm6!^5sTaS%eM!^+1rFB&&3&r$fhJcm8;X=k zDyduKzxSD4u0%<-i$engH9&F6ot+)dJTvpGPrv=olMnCQxwChAdP-07**r;AtRIq$ zzMX|pNiS7VCV57(-}Sr4qAT?DtE9T1Fik0+SII2-HLM_0cK7t;vx}spDOAy-R3*h% zSvX4~iu0(fiX?kp9%8mAD+=RS#kAZ?9CzjMmX0`wjx4Vz%Cjnj@S>V}M|hKY-~9OG zyYDEv2#YYPVCSLUKFne&bBe-@&K0G3xVB0CJte8INE201bpb&cn0?`gzx2lj{MEm` zy*>B*s#0E*$BNqHz?Zm!dt)j5`k~i+=r zy`cS!msJ;vX5r5enJ%)3QOE&hbE-v=!O*2XnnH*nJ1qbtmBnSZP0mkQl4>6h@ZG{* zAAS6f`3A8@PUJOJ?mNX! z12zckyvXN($CVeOTG$72#F=wasoC5+UreV+_!?>IWtc7iG`$uT1~_=GGF9-aOue$w zZF<0qA2hKdc3_F$-{l08dd$W+!XdMThk~c*MUtkqmI=uTP?iy~#jKCcmVkBVs9!U2 zNct{2^cxEr(KN@G{lN2BAo{0f#(>+%3wl^D)RV9AYxha>{Dpqx4ZGpfMb_Lk&5dI0 z$BT>%>g55uQeRhD@~;f7g`L`b<1Af;zs9Z00U2g8a=#hy5BWOn}vqikpQ z@n|f2D0xWhj1zm@{)(gc9-@fM&+1uIApZ+EicffY+~#>*Devx%+aqAI*LxqY2IDEC zKu3N6d#0I(WOw=)hQ;&J6GL)_cwm?*PaKh_ewn9eU?`*H9PtXaK2~K^B^5NO!sLD=kxSRmtU_;o@XJ7 ztKJpzDq6596B6CM=g9Al^>ASIHYv)_b3 z2J0aZjH2xr^tWTcpKKk!?)2b|J6#tCrw7w+^zSVLT(CjxUm#p?@Qs53alwGE9lU{Y zq0?d$ zI#{jrEc-De>c9obFLLT4U0vSCw63On-3vN~iSD3&fXeDr|vtA6e#Sqb-2+w|75;)4vgmS(rx z>anj++Z}Q(JH@bufaa=IJ*68M#&!p`xz>)=Q@DnC$K@i&X08h^d#M||TU{VtURZha zoNMO6tGtLiKsRLS@@`H-XIdN$a;a9eAqO1v$aOwPSmg20?@T(K%_9Mbqd6Af&avPl zf{h2?L0$d+ip~pv=P~%E&nEz0T8B`NnXcO9o67>TtY61$oAxuVR~&v(AhxNpS$|%HD{Xz3hLA?FRqG zh zYOvLBg8sGC6C~lyu}>7Ov;R9o{+QYs#%IVKH`peALD`xhz+r4H6F3pbV&568Emfe{ zOqg!!d%-R93NG(l-BH|EWD4{Rb>5~j>iwB(KS{%5;H)c9kxMgZNe-x=d$th+af0{B&JM_RC3nNG~$+0 RXM>(K=#TB;CUFcw`yHgHLRA0& literal 0 HcmV?d00001 diff --git a/elpa/ac-js2-20140906.442/ac-js2.el b/elpa/ac-js2-20140906.442/ac-js2.el new file mode 100644 index 0000000..1b010e2 --- /dev/null +++ b/elpa/ac-js2-20140906.442/ac-js2.el @@ -0,0 +1,605 @@ +;;; ac-js2.el --- Auto-complete source for Js2-mode, with navigation + +;; Copyright (C) 2013 Scott Barnett + +;; Author: Scott Barnett +;; URL: https://github.com/ScottyB/ac-js2 +;; Version: 1.0 +;; Package-Requires: ((js2-mode "20090723")(skewer-mode "1.4")) + +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . + +;;; Commentary: + +;; An attempt to get context sensitive Javascript completion in Emacs. +;; Basic completions are obtained by parsing Javascript code with +;; Js2-mode's parser. +;; +;; Installation +;; +;; Easiest way to get ac-js2 is to install it from MELPA. You may need +;; this snippet +;; +;; `(add-to-list 'package-archives +;; '("melpa" . "http://melpa.milkbox.net/packages/") t)' +;; +;; if you don't have it already to fetch packages from MELPA. +;; +;; Enable ac-js2 in js2-mode as follows: +;; +;; (add-hook 'js2-mode-hook 'ac-js2-mode) +;; +;; Ac-js2 does not require auto-complete mode but I suggest you grab +;; it anyway as ac-js2 is designed to work with a completion frontend. +;; Support for Company mode is on its way. +;; +;; For more comprehensive completions you can opt to evaluate the code +;; for candidates. A browser needs to be connected to Emacs for the +;; evaluation completions to work. Put this in your init.el file. +;; +;; `(setq ac-js2-evaluate-calls t)' +;; +;; To add completions for external libraries add something like this: +;; +;; (add-to-list 'ac-js2-external-libraries "path/to/lib/library.js") +;; +;; Then connect a browser to Emacs by calling `(run-skewer)'. You may +;; need to save the buffer for completions to start. +;; +;; If auto-complete mode is installed on your system then completions +;; should start showing up otherwise use `completion-at-point'. +;; +;; Note: library completions will only work if `ac-js2-evaluate-calls' +;; is set and a browser is connected to Emacs. +;; +;; Bonus: M-. is bound to `ac-js2-jump-to-definition' which will jump +;; to Javascript definitions found in the same buffer. Given the +;; following proprety reference: +;; +;; foo.bar.baz(); +;; +;; placing the cursor on `foo', `bar' or `baz' and executing M-. will +;; take you straight to their respective definitions. Use M-, to jump +;; back to where you were. Also works for object literals. +;; +;; Recently added `ac-js2-expand-function' that will expand a function's +;; parameters bound to `C-c C-c`. Expansion will only work if the cursor +;; is after the function. +;; +;; If you have any issues or suggestions please create an issue on Github: +;; https://github.com/ScottyB/ac-js2 + +;;; History: + +;; Version 1.0 +;; * Navigation within current buffer +;; * Completion and docstring for objects via Skewer +;; * External library support +;; * Basic completions of objects in current buffer + +;;; Code: + +(require 'js2-mode) +(require 'skewer-mode) +(require 'cl-lib) +(require 'etags) + +(defgroup ac-js2 nil + "Auto-completion for js2-mode." + :group 'completion + :prefix "ac-js2-") + +;;; Configuration variables + +(defcustom ac-js2-add-ecma-262-externs t + "If non-nil add `js2-ecma-262-externs' to completion candidates.") + +(defcustom ac-js2-add-browser-externs t + "If non-nil add `js2-browser-externs' to completion candidates.") + +(defcustom ac-js2-add-keywords t + "If non-nil add `js2-keywords' to completion candidates.") + +(defcustom ac-js2-add-prototype-completions t + "When non-nil traverse the prototype chain adding to completion candidates.") + +(defcustom ac-js2-external-libraries '() + "List of absolute paths to external Javascript libraries.") + +(defcustom ac-js2-evaluate-calls nil + "Warning. When true function calls will be evaluated in the browser. +This may cause undesired side effects however it will + provide better completions. Use at your own risk.") + +(defcustom ac-js2-force-reparse t + "Force Js2-mode to reparse buffer before fetching completion candidates.") + +;;; Internal variables + +(defvar ac-js2-keywords '() + "Cached string version of `js2-keywords'.") + +(defvar ac-js2-candidates '()) + +;; Types of skewer completion methods available +(defconst ac-js2-method-eval 0) +(defconst ac-js2-method-global 1 + "Return candidates for the global object. +Only keys of the object are returned as the other properties come + from js2-mode's externs.") + +(defvar ac-js2-data-root (file-name-directory load-file-name) + "Location of data files needed for `ac-js2-on-skewer-load'.") + +;;; Skewer integration + +(defvar ac-js2-skewer-candidates '() + "Cadidates obtained from skewering.") + +(defun ac-js2-on-skewer-load () + "Inject skewer addon and evaluate external libraries in browser." + (insert-file-contents (expand-file-name "skewer-addon.js" ac-js2-data-root)) + (and ac-js2-evaluate-calls + (mapcar (lambda (library) + (with-temp-buffer + (insert-file-contents (expand-file-name library)) + (skewer-eval (buffer-string) + nil + :type "complete"))) ac-js2-external-libraries))) + +(defun ac-js2-skewer-completion-candidates () + "Get completions returned from skewer." + (mapcar (lambda (candidate) (symbol-name (car candidate))) ac-js2-skewer-candidates)) + +(defun ac-js2-skewer-document-candidates (name) + "Return document string for NAME from skewer." + (let ((doc (cdr (assoc-string name ac-js2-skewer-candidates)))) + (or (ac-js2-format-function doc) doc))) + +(defun ac-js2-get-object-properties (name) + "Find properties of NAME for completion." + (ac-js2-skewer-eval-wrapper name `((prototypes . ,ac-js2-add-prototype-completions)))) + +(defun ac-js2-skewer-result-callback (result) + "Process the RESULT passed from the browser." + (let ((value (cdr (assoc 'value result)))) + (if (and (skewer-success-p result) value) + (setq ac-js2-skewer-candidates (append value nil))))) + +(defun ac-js2-skewer-eval-wrapper (str &optional extras) + "Wrap `skewer-eval-synchronously' to check if a skewer-client is avilable. +STR is the text to send to the browser for evaluation. Extra +parameters can be passed to the browser using EXTRAS. EXTRAS must +be of the form (param-string . value) where param-string is the +reference and value is the value that can be retrieved from the +request object in Javacript." + (setq ac-js2-skewer-candidates nil) + (if skewer-clients + (if (or ac-js2-evaluate-calls + (not (ac-js2-has-function-calls str))) + (ac-js2-skewer-result-callback + (skewer-eval-synchronously str + :type "complete" + :extra extras))) + (setq skewer-queue nil))) + +;; Generate candidates +(defun ac-js2-candidates () + "Main function called to gather candidates for auto-completion." + (if ac-js2-force-reparse (js2-reparse)) + (let ((node (js2-node-parent (js2-node-at-point (1- (point))))) + beg + (prop-get-regex "[a-zA-Z)]\\.") + name) + (setq ac-js2-candidates nil) + (cond + ((looking-back "\\.") + ;; TODO: Need to come up with a better way to extract object than this regex!! + (save-excursion + (setq beg (and (skip-chars-backward "[a-zA-Z_$][0-9a-zA-Z_$#\"())]+\\.") (point)))) + (setq name (buffer-substring-no-properties beg (1- (point)))) + (ac-js2-get-object-properties name) + (setq node (ac-js2-initialized-node (if (string-match prop-get-regex name) + (reverse (split-string name prop-get-regex)) name))) + (if (js2-object-node-p node) + (setq ac-js2-candidates + (mapcar (lambda (elem) + (ac-js2-format-node (js2-node-string (js2-object-prop-node-left elem)) + elem)) + (js2-object-node-elems node)))) + (append (mapcar 'first ac-js2-candidates) + (ac-js2-skewer-completion-candidates))) + ((js2-prop-get-node-p node) + (setq node (js2-prop-get-node-left node)) + (setq name (js2-node-string node)) + (ac-js2-get-object-properties name) + (ac-js2-skewer-completion-candidates)) + (t + (ac-js2-skewer-eval-wrapper "" `((method . ,ac-js2-method-global))) + (append (ac-js2-skewer-completion-candidates) + (ac-js2-add-extra-completions + (mapcar 'first (ac-js2-get-names-in-scope)))))))) + +(defun ac-js2-document (name) + "Show documentation for NAME from local buffer if present +otherwise use documentation obtained from skewer." + (let* ((docs (cdr (assoc name ac-js2-candidates))) + (doc (if (listp docs) (first docs) docs))) + (if doc doc (ac-js2-skewer-document-candidates name)))) + +;; Auto-complete settings + +(defun ac-js2-ac-candidates () + "Completion candidates for auto-complete mode." + (ac-js2-candidates)) + +(defun ac-js2-ac-document (name) + "Documentation to be shown for auto-complete mode." + (ac-js2-document name)) + +(defun ac-js2-ac-prefix() + (or (ac-prefix-default) (ac-prefix-c-dot))) + +(defun ac-js2-save () + "Called on `before-save-hook' to evaluate buffer." + (interactive) + (when (string= major-mode "js2-mode") + (ac-js2-skewer-eval-wrapper (buffer-string))) + t) + +;;;###autoload +(defun ac-js2-expand-function() + "Expand the function definition left of point. +Expansion will only occur for candidates whose documentation +string contain a function prototype." + (interactive) + (let* ((word (progn + (if (featurep 'auto-complete) (ac-complete)) + (substring-no-properties (or (thing-at-point 'word) "")))) + (candidate (ac-js2-ac-document word))) + (if (and (looking-back word) (stringp candidate)) + (when (string-match "^function" candidate) + (cond ((featurep 'yasnippet) + (yas-expand-snippet + (concat "(" + (replace-regexp-in-string "\\([a-zA-Z0-9]+\\)" + (lambda (txt) (concat "${" txt "}")) + (second (split-string candidate "[()]"))) + ")$0")))))))) + +(defun ac-js2-setup-auto-complete-mode () + "Setup ac-js2 to be used with auto-complete-mode." + (add-to-list 'ac-sources 'ac-source-js2) + (auto-complete-mode) + (ac-define-source "js2" + '((candidates . ac-js2-ac-candidates) + (document . ac-js2-ac-document) + (prefix . ac-js2-ac-prefix) + (requires . -1)))) + +;;; Completion at point function + +;;;###autoload +(defun ac-js2-completion-function () + "Function for `completions-at-point'." + (save-excursion + (let ((bounds (if (looking-back "\\.") + (cons (point) (point)) + (bounds-of-thing-at-point 'word)))) + (list (car bounds) (cdr bounds) (ac-js2-candidates))))) + +;;; Company + +;;;###autoload +(defun ac-js2-company (command &optional arg &rest ignored) + (interactive (list 'interactive)) + (if (not (featurep 'company)) + (message "Company is not installed") + (case command + (interactive (company-begin-backend 'ac-js2-company)) + (prefix (when ac-js2-mode + (or (company-grab-symbol) + 'stop))) + (candidates (all-completions arg (ac-js2-candidates))) + (duplicates t) + (meta (let ((doc (ac-js2-document arg))) + (when doc + (with-temp-buffer + (insert doc) + (js-mode) + (font-lock-ensure) + (buffer-string)))))))) + +;;; Helper functions + +(defun ac-js2-build-prop-name-list (prop-node) + "Build a list of names from a PROP-NODE." + (let* (names + left + left-node) + (unless (js2-prop-get-node-p prop-node) + (error "Node is not a property prop-node")) + (while (js2-prop-get-node-p prop-node) + (push (js2-name-node-name (js2-prop-get-node-right prop-node)) names) + (setq left-node (js2-prop-get-node-left prop-node)) + (when (js2-name-node-p left-node) + (setq left (js2-name-node-name left-node))) + (setq prop-node (js2-node-parent prop-node))) + (append names `(,left)))) + +(defun ac-js2-prop-names-left (name-node) + "Create a list of all of the names in the property NAME-NODE. +NAME-NODE must have a js2-prop-get-node as parent. Only adds +properties to the left of point. This is so individual jump +points can be found for each property in the chain." + (let* (name + (parent (js2-node-parent name-node)) + left + names) + (unless (or (js2-prop-get-node-p parent) (js2-name-node-p name-node)) + (error "Not a name node or doesn't have a prop-get-node as parent")) + (setq name (js2-name-node-name name-node) + left (js2-prop-get-node-left parent)) + (if (and (js2-name-node-p left) + (string= name (js2-name-node-name left))) + (setq names name) + (js2-visit-ast + parent + (lambda (node endp) + (unless endp + (if (js2-name-node-p node) + (push (js2-name-node-name node) names) + t)))) + names))) + +(defun ac-js2-has-function-calls (string) + "Check if the Javascript code in STRING has a Js2-call-node." + (with-temp-buffer + (insert string) + (let* ((ast (js2-parse))) + (catch 'call-node + (js2-visit-ast-root + ast + (lambda (node end-p) + (unless end-p + (if (js2-call-node-p node) + (throw 'call-node t) + t)))))))) + +(defun ac-js2-add-extra-completions (completions) + "Add extra candidates to COMPLETIONS." + (append completions + (if ac-js2-add-keywords (or ac-js2-keywords (setq ac-js2-keywords (mapcar 'symbol-name js2-keywords)))) + (if ac-js2-add-ecma-262-externs js2-ecma-262-externs) + (if ac-js2-add-browser-externs js2-browser-externs))) + +(defun ac-js2-root-or-node () + "Return the current node or js2-ast-root node." + (let ((node (js2-node-at-point))) + (if (js2-ast-root-p node) + node + (js2-node-get-enclosing-scope node)))) + +(defun ac-js2-get-names-in-scope () + "Fetches all symbols in scope and formats them for completion." + (let* ((scope (ac-js2-root-or-node)) + result) + (while scope + (setq result (append result + (loop for item in (js2-scope-symbol-table scope) + if (not (assoc (car item) result)) + collect item))) + (setq scope (js2-scope-parent-scope scope))) + (setq ac-js2-candidates + (mapcar #'(lambda (x) + (let* ((name (symbol-name (car x))) + (init (ac-js2-initialized-node name))) + (ac-js2-format-node name init))) + result)))) + +(defun ac-js2-initialized-node (name) + "Return initial value assigned to NAME. +NAME may be either a variable, a function or a variable that +holds a function. NAME may also be a list of names that make up a +object property. Returns nil if no initial value can be found." + (let* ((node (if (listp name) (ac-js2-find-property name) + (ac-js2-name-declaration name))) + (parent (if node (js2-node-parent node))) + (init (cond + ((js2-function-node-p parent) + parent) + ((js2-function-node-p node) + node) + ((js2-var-init-node-p parent) + (js2-var-init-node-initializer parent)) + ((js2-assign-node-p parent) + (js2-assign-node-right parent)) + (t + nil)))) + init)) + +(defun ac-js2-name-declaration (name) + "Return the declaration node for node named NAME." + (let* ((node (ac-js2-root-or-node)) + (scope-def (js2-get-defining-scope node name)) + (scope (if scope-def (js2-scope-get-symbol scope-def name) nil)) + (symbol (if scope (js2-symbol-ast-node scope) nil))) + (if (not symbol) + (ac-js2-get-function-node name scope-def) + symbol))) + +;;; Completion candidate formatting + +(defun ac-js2-format-node (name node) + "Format NAME and NODE for completion. +Returned format is a list where the first element is the NAME of +the node (shown in completion candidate list) and the last +element is the text to show as documentation." + (let ((node (if (js2-object-prop-node-p node) (js2-object-prop-node-right node) node)) + (name-format (replace-regexp-in-string "\"" "" name)) + (doc (if (and (js2-function-node-p node) + (cl-find name (js2-function-node-params node) + :test '(lambda (name param) (string= name (js2-name-node-name param))))) + "Function parameter" + (ac-js2-format-node-doc node)))) + `(,name-format . ,doc))) + +(defun ac-js2-format-object-node-doc (obj-node) + "Format OBJ-NODE to display as documentation." + (let (elems) + (unless (js2-object-node-p obj-node) + (error "Node is not an object node")) + (setq elems (js2-object-node-elems obj-node)) + (if (not elems) + "{}" + (mapconcat #'(lambda (x) (ac-js2-format-js2-object-prop-doc x)) elems "\n")))) + +(defun ac-js2-format-node-doc (node) + "Format NODE for displaying in a document string." + (let* ((node-above (and node (js2-node-at-point + (save-excursion + (goto-char (js2-node-abs-pos node)) + (forward-line -1) + (point))))) + (comment (if (js2-comment-node-p node-above) + (ac-js2-format-comment (js2-node-string node-above)))) + (doc (cond + ((js2-function-node-p node) + (ac-js2-format-function node)) + ((js2-object-node-p node) + (ac-js2-format-object-node-doc node)) + ((js2-object-prop-node-p node) + (ac-js2-format-node-doc (js2-object-prop-node-right node))) + (t + (if (js2-node-p node) (js2-node-string node) ""))))) + (if comment (concat comment "\n" doc) doc))) + +(defun ac-js2-format-js2-object-prop-doc (obj-prop) + "Format an OBJ-PROP for displaying as a document string." + (unless (js2-object-prop-node-p obj-prop) + (error "Node is not an object property node")) + (let* ((left (js2-object-prop-node-left obj-prop)) + (right (js2-object-prop-node-right obj-prop))) + (concat (js2-node-string left) " : " + (ac-js2-format-node-doc right)))) + +(defun ac-js2-format-function (func) + "Formats a function for a document string. +FUNC can be either a function node or a string starting with +'function'. Returns nil if neither." + (let ((str (or (and (js2-function-node-p func) (js2-node-string func)) + (and (stringp func) (eq 0 (string-match "function" func)) func)))) + (if str (substring str 0 (1+ (string-match ")" str)))))) + +(defun ac-js2-format-comment (comment) + "Prepare a COMMENT node for displaying in a popup." + (let* ((node-string (if (js2-comment-node-p comment) + (js2-node-string comment) + comment)) + (string (replace-regexp-in-string "[ \t]$" "" + (replace-regexp-in-string "^[ \t\n*/*]+" "" node-string)))) + string)) + +;;; Navigation commands for js2-mode + +(defun ac-js2-find-property (list-names) + "Find the property definition that consists of LIST-NAMES. +Supports navigation to 'foo.bar = 3' and 'foo = {bar: 3}'." + (catch 'prop-found + (js2-visit-ast-root + js2-mode-ast + (lambda (node endp) + (let ((parent (js2-node-parent node))) + (unless endp + (if (or (and (js2-prop-get-node-p node) + (not (or (js2-elem-get-node-p parent) (js2-call-node-p parent))) + (equal list-names (ac-js2-build-prop-name-list node))) + (and (js2-name-node-p node) + (js2-object-prop-node-p parent) + (string= (js2-name-node-name node) + (first list-names)))) + (throw 'prop-found node)) + t)))))) + +(defun ac-js2-get-function-node (name scope) + "Return node of function named NAME in SCOPE." + (catch 'function-found + (js2-visit-ast + scope + (lambda (node end-p) + (when (and (not end-p) + (string= name (ac-js2-get-function-name node))) + (throw 'function-found node)) + t)) + nil)) + +;;;###autoload +(defun ac-js2-jump-to-definition () + "Jump to the definition of an object's property, variable or function. +Navigation to a property definend in an Object literal isn't +implemented." + (interactive) + (ring-insert find-tag-marker-ring (point-marker)) + (let* ((node (js2-node-at-point)) + (parent (js2-node-parent node)) + (prop-names (if (js2-prop-get-node-p parent) + (ac-js2-prop-names-left node))) + (name (if (and (js2-name-node-p node) + (not (js2-object-prop-node-p parent))) + (js2-name-node-name node) + (error "Node is not a supported jump node"))) + (node-init (if (and prop-names (listp prop-names)) + (ac-js2-find-property prop-names) + (ac-js2-name-declaration name)))) + (unless node-init + (pop-tag-mark) + (error "No jump location found")) + (goto-char (js2-node-abs-pos node-init)))) + +(defun ac-js2-get-function-name (fn-node) + "Return the name of the function FN-NODE. +Value may be either function name or the variable name that holds +the function." + (let ((parent (js2-node-parent fn-node))) + (if (js2-function-node-p fn-node) + (or (js2-function-name fn-node) + (if (js2-var-init-node-p parent) + (js2-name-node-name (js2-var-init-node-target parent))))))) + +(defvar ac-js2-mode-map + (let ((map (make-sparse-keymap))) + (define-key map (kbd "M-.") 'ac-js2-jump-to-definition) + (define-key map (kbd "M-,") 'pop-tag-mark) + (define-key map (kbd "C-c C-c") 'ac-js2-expand-function) + map) + "Keymap for `ac-js2-mode'.") + +;;; Minor mode + +;;;###autoload +(define-minor-mode ac-js2-mode + "A minor mode that provides auto-completion and navigation for Js2-mode." + :keymap ac-js2-mode-map + (if (featurep 'auto-complete) + (ac-js2-setup-auto-complete-mode)) + (set (make-local-variable 'completion-at-point-functions) + (cons 'ac-js2-completion-function completion-at-point-functions)) + (ac-js2-skewer-eval-wrapper (buffer-string)) + (add-hook 'before-save-hook 'ac-js2-save nil t) + (add-hook 'skewer-js-hook 'ac-js2-on-skewer-load)) + + +(provide 'ac-js2) + +;;; ac-js2.el ends here diff --git a/elpa/ac-js2-20140906.442/ac-js2.elc b/elpa/ac-js2-20140906.442/ac-js2.elc new file mode 100644 index 0000000000000000000000000000000000000000..52d5c8fd9377a21150d6c2f571281914a04eccb5 GIT binary patch literal 22584 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 (trust undefined) created at 2016-02-21T04:20:02-0600 using DSA \ No newline at end of file diff --git a/elpa/archives/melpa/archive-contents b/elpa/archives/melpa/archive-contents new file mode 100644 index 0000000..2dd93b8 --- /dev/null +++ b/elpa/archives/melpa/archive-contents @@ -0,0 +1,2 @@ + +(1 (zzz-to-char . [(20160122 440) ((emacs (24 4)) (cl-lib (0 5)) (avy (0 3 0))) "Fancy version of `zap-to-char' command" single ((:url . "https://github.com/mrkkrp/zzz-to-char") (:keywords "convenience"))]) (zygospore . [(20140703 152) nil "reversible C-x 1 (delete-other-windows)" single ((:url . "https://github.com/louiskottmann/zygospore.el"))]) (ztree . [(20160127 1542) ((cl-lib (0))) "Text mode directory tree" tar ((:url . "https://github.com/fourier/ztree") (:keywords "files" "tools"))]) (zotxt . [(20160427 1922) ((request-deferred (0 2 0))) "Tools to integrate emacs with Zotero via the zotxt plugin." tar nil]) (zotelo . [(20160118 2045) ((cl-lib (0 5))) "Manage Zotero collections from emacs" single ((: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 ((:url . "https://github.com/technomancy/zossima") (:keywords "ruby" "convenience"))]) (zop-to-char . [(20160212 108) ((cl-lib (0 5))) "A replacement of zap-to-char." single ((:url . "https://github.com/thierryvolpiatto/zop-to-char"))]) (zoom-window . [(20160522 1919) ((emacs (24)) (cl-lib (0 5))) "Zoom window like tmux" single ((:url . "https://github.com/syohex/emacs-zoom-window"))]) (zoom-frm . [(20151231 1625) ((frame-fns (0)) (frame-cmds (0))) "Commands to zoom frame font size." single ((:url . "http://www.emacswiki.org/zoom-frm.el") (:keywords "frames" "extensions" "convenience"))]) (zonokai-theme . [(20160321 1925) nil "No description available." tar nil]) (zones . [(20160209 920) nil "Zones of text - like multiple regions" single ((:url . "http://www.emacswiki.org/zones.el") (:keywords "narrow" "restriction" "widen" "region" "zone"))]) (zone-sl . [(20160201 410) ((emacs (24 3))) "Zone out with steam locomotives." single ((:url . "https://github.com/kawabata/zone-sl") (:keywords "games"))]) (zone-select . [(20160118 619) ((emacs (24 3)) (dash (2 8))) "Select zone programs." single ((:url . "https://github.com/kawabata/zone-select") (:keywords "games"))]) (zone-rainbow . [(20160120 534) ((emacs (24 3))) "Zone out with rainbow." single ((:url . "https://github.com/kawabata/zone-rainbow") (:keywords "games"))]) (zone-nyan . [(20160102 1456) ((esxml (0 3 1))) "Zone out with nyan cat" single ((: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 ((:keywords "languages"))]) (zombie . [(20141222 816) nil "major mode for editing ZOMBIE programs" single ((:url . "http://hins11.yu-yake.com/"))]) (znc . [(20140722 1421) ((cl-lib (0 2)) (erc (5 3))) "ZNC + ERC" single ((:url . "https://github.com/sshirokov/ZNC.el"))]) (zlc . [(20151010 1857) nil "Provides zsh like completion system to Emacs" single ((:keywords "matching" "convenience"))]) (zerodark-theme . [(20160518 627) nil "A dark, medium contrast theme for Emacs" single ((:url . "https://github.com/NicolasPetton/zerodark-theme") (:keywords "themes"))]) (zenity-color-picker . [(20160302 354) ((emacs (24 4))) "Insert and adjust colors using Zenity" single ((:url . "https://bitbucket.org/Soft/zenity-color-picker.el") (:keywords "colors"))]) (zencoding-mode . [(20140213 22) nil "Unfold CSS-selector-like expressions to markup" single ((:url . "https://github.com/rooney/zencoding") (:keywords "convenience"))]) (zenburn-theme . [(20160501 749) nil "A low contrast color theme for Emacs." single ((:url . "http://github.com/bbatsov/zenburn-emacs"))]) (zen-and-art-theme . [(20120622 737) nil "zen and art color theme for GNU Emacs 24" single nil]) (zeitgeist . [(20131228 1009) nil "No description available." single nil]) (zeal-at-point . [(20151231 48) nil "Search the word at point with Zeal" single ((:url . "https://github.com/jinzhu/zeal-at-point"))]) (z3-mode . [(20151120 1455) ((flycheck (0 23)) (emacs (24))) "A z3/SMTLIBv2 interactive development environment" single ((:url . "https://github.com/zv/z3-mode") (:keywords "z3" "yices" "mathsat" "smt" "beaver"))]) (youdao-dictionary . [(20150913 2344) ((popup (0 5 0)) (chinese-word-at-point (0 2)) (names (0 5)) (emacs (24))) "Youdao Dictionary interface for Emacs" single ((:url . "https://github.com/xuchunyang/youdao-dictionary.el") (:keywords "convenience" "chinese" "dictionary"))]) (yoshi-theme . [(20160304 1518) nil "Theme named after my cat" single ((:url . "http://projects.ryuslash.org/yoshi-theme/") (:keywords "faces"))]) (yesql-ghosts . [(20150220 437) ((s (1 9 0)) (dash (2 10 0)) (cider (0 8 0))) "Display ghostly yesql defqueries inline" single nil]) (ycmd . [(20160506 21) ((emacs (24 3)) (dash (2 12 0)) (s (1 10 0)) (deferred (0 3 2)) (popup (0 5 0)) (cl-lib (0 5)) (let-alist (1 0 4)) (request (0 2 0)) (request-deferred (0 2 0))) "emacs bindings to the ycmd completion server" tar ((:url . "https://github.com/abingham/emacs-ycmd"))]) (ycm . [(20150822 1136) nil "Emacs client for the YouCompleteMe auto-completion server." single ((:keywords "c" "abbrev"))]) (yaxception . [(20150105 652) nil "Provide framework about exception like Java for Elisp" single ((:url . "https://github.com/aki2o/yaxception") (:keywords "exception" "error" "signal"))]) (yatex . [(20160107 1519) nil "Yet Another tex-mode for emacs //野鳥//" tar nil]) (yatemplate . [(20151124 2307) ((yasnippet (0 8 1))) "File templates with yasnippet" single ((:url . "https://github.com/mineo/yatemplate") (:keywords "files" "convenience"))]) (yasnippet . [(20160517 1628) ((cl-lib (0 5))) "Yet another snippet extension for Emacs." tar ((:url . "http://github.com/capitaomorte/yasnippet") (:keywords "convenience" "emulation"))]) (yascroll . [(20150315 605) ((cl-lib (0 3))) "Yet Another Scroll Bar Mode" single ((:keywords "convenience"))]) (yari . [(20151127 2339) nil "Yet Another RI interface for Emacs" single ((:keywords "tools"))]) (yard-mode . [(20160310 850) nil "Minor mode for Ruby YARD comments" single ((:url . "https://github.com/pd/yard-mode.el"))]) (yaoddmuse . [(20150712 421) nil "Major mode for EmacsWiki and other Oddmuse wikis" single ((:url . "http://www.emacswiki.org/emacs/download/yaoddmuse.el") (:keywords "yaoddmuse" "oddmuse"))]) (yankpad . [(20160517 727) nil "Paste snippets from an org-mode file" single ((:url . "http://github.com/Kungsgeten/yankpad") (:keywords "abbrev" "convenience"))]) (yandex-weather . [(20160311 1237) nil "Fetch Yandex Weather forecasts." tar nil]) (yaml-tomato . [(20151122 2353) ((s (1 9))) "copy or show the yaml path currently under cursor." single ((:keywords "yaml"))]) (yaml-mode . [(20160426 138) ((emacs (24 1))) "Major mode for editing YAML files" single ((:keywords "data" "yaml"))]) (yalinum . [(20130217 243) nil "yet another display line numbers." single ((:keywords "convenience" "tools"))]) (yahoo-weather . [(20160426 529) ((emacs (24))) "Displays weather information in mode-line" single ((: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 ((:url . "https://github.com/mhayashi1120/yagist.el") (:keywords "tools"))]) (yafolding . [(20141202 2056) nil "Yet another folding extension for Emacs" single ((:keywords "folding"))]) (yabin . [(20140205 1951) nil "Yet Another Bignum package (A thin wrapper of calc.el)." single ((:keywords "data"))]) (xtest . [(20141214 906) ((cl-lib (0 5))) "Simple Testing with Emacs & ERT" single ((:url . "https://github.com/promethial/xtest") (:keywords "testing" "ert"))]) (xterm-title . [(20091203 1023) nil "Update xterm titles" single nil]) (xterm-keybinder . [(20160522 1756) ((emacs (24 3)) (cl-lib (0 5)) (let-alist (1 0 1))) "Let you extra keybinds in xterm/urxvt" tar ((:keywords "convenient"))]) (xterm-frobs . [(20091211 1555) nil "manipulate xterm when running emacs in tty mode" single nil]) (xterm-color . [(20160401 2025) nil "ANSI & XTERM 256 color support" single nil]) (xresources-theme . [(20160331 702) nil "Use your .Xresources as your emacs theme" single ((:keywords "xresources" "theme"))]) (xref-js2 . [(20160521 448) ((emacs (25)) (js2-mode (20150909))) "Jump to references/definitions using ag & js2-mode's AST" single ((:keywords "javascript" "convenience" "tools"))]) (xquery-tool . [(20160203 953) nil "A simple interface to saxonb's xquery." single ((:url . "https://github.com/paddymcall/xquery-tool.el") (:keywords "xml" "xquery" "emacs"))]) (xquery-mode . [(20140121 943) nil "A simple mode for editing xquery programs" tar nil]) (xo . [(20160402 2346) nil "XO linter integration with compilation mode" single ((:keywords "processes"))]) (xmlunicode . [(20160319 912) nil "Unicode support for XML" tar ((:keywords "utf-8" "unicode" "xml" "characters"))]) (xmlgen . [(20130219 219) nil "A DSL for generating XML." single nil]) (xml-rpc . [(20160430 1458) nil "An elisp implementation of clientside XML-RPC" single ((:url . "http://github.com/hexmode/xml-rpc-el") (:keywords "xml" "rpc" "network"))]) (xml-quotes . [(20151230 1449) nil "read quotations from an XML document" tar ((:url . "https://github.com/ndw/xml-quotes") (:keywords "xml" "quotations"))]) (xml+ . [(20160210 1942) ((emacs (24 4)) (dash (2 12 0))) "Utilities for xml and html trees" single ((:url . "https://github.com/bddean/xml-plus") (:keywords "xml" "html"))]) (xkcd . [(20160419 430) ((json (1 3))) "View xkcd from Emacs" single ((:url . "https://github.com/vibhavp/emacs-xkcd") (:keywords "xkcd" "webcomic"))]) (xcscope . [(20160513 1206) nil "cscope interface for (X)Emacs" single ((:url . "https://github.com/dkogan/xcscope.el") (:keywords "languages" "c"))]) (xbm-life . [(20160103 217) nil "A XBM version of Conway's Game of Life" single ((:url . "https://github.com/wasamasa/xbm-life") (:keywords "games"))]) (xahk-mode . [(20150504 1611) nil "Major mode for editing AutoHotkey scripts." single ((:url . "http://xahlee.info/mswin/emacs_autohotkey_mode.html") (:keywords "languages"))]) (xah-replace-pairs . [(20150522 333) nil "Multi-pair find/replace in strings and region." single ((:url . "http://ergoemacs.org/emacs/elisp_replace_string_region.html") (:keywords "lisp" "tools" "find replace"))]) (xah-math-input . [(20160127 1408) nil "a minor mode for inputting math and Unicode symbols." single ((:url . "http://ergoemacs.org/emacs/xmsi-math-symbols-input.html") (:keywords "abbrev" "convenience" "unicode" "math" "latex"))]) (xah-lookup . [(20150602 1146) nil "look up word on internet" single ((:url . "http://ergoemacs.org/emacs/emacs_lookup_ref.html") (:keywords "help" "docs" "convenience"))]) (xah-get-thing . [(20150712 1430) nil "get thing or selection at point." single ((:url . "http://ergoemacs.org/emacs/elisp_get-selection-or-unit.html") (:keywords "extensions" "lisp" "tools"))]) (xah-fly-keys . [(20160510 1241) nil "A efficient modal keybinding set minor mode based on ergonomics." single ((:url . "http://ergoemacs.org/misc/ergoemacs_vi_mode.html") (:keywords "convenience" "emulations" "vim" "ergoemacs"))]) (xah-find . [(20160210 1902) nil "find replace in pure emacs lisp. Purpose similar to unix grep/sed." single ((:url . "http://ergoemacs.org/emacs/elisp-xah-find-text.html") (:keywords "convenience" "extensions" "files" "tools" "unix"))]) (xah-elisp-mode . [(20160409 327) nil "Major mode for editing emacs lisp." single ((:url . "http://ergoemacs.org/emacs/xah-elisp-mode.html") (:keywords "lisp" "languages"))]) (x86-lookup . [(20160516 1456) ((emacs (24 3)) (cl-lib (0 3))) "jump to x86 instruction documentation" single ((:url . "https://github.com/skeeto/x86-lookup"))]) (x-dict . [(20091203 1023) nil "emacs interface for several online dictionaries" single nil]) (wwtime . [(20151122 810) nil "Insert a time of day with appropriate world-wide localization" single ((:keywords "time"))]) (wttrin . [(20160414 837) ((emacs (24 4)) (xterm-color (1 0))) "Emacs frontend for weather web service wttr.in" single ((:url . "https://github.com/bcbcarl/emacs-wttrin") (:keywords "comm" "weather" "wttrin"))]) (wsd-mode . [(20160510 2251) nil "Emacs major-mode for www.websequencediagrams.com" tar ((:url . "https://github.com/josteink/wsd-mode") (:keywords "wsd" "diagrams" "design" "process" "modelling" "uml"))]) (ws-butler . [(20150126 759) nil "Unobtrusively remove trailing whitespace." single ((:url . "https://github.com/lewang/ws-butler"))]) (writeroom-mode . [(20160413 1233) ((emacs (24 1)) (visual-fill-column (1 4))) "Minor mode for distraction-free writing" tar ((:keywords "text"))]) (writegood-mode . [(20150325 1115) nil "Polish up poor writing on the fly" single ((: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 ((:url . "http://github.com/rejeep/wrap-region") (:keywords "speed" "convenience"))]) (world-time-mode . [(20140627 107) nil "show whole days of world-time diffs" single ((: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 ((:url . "https://github.com/pashinin/workgroups2") (:keywords "session" "management" "window-configuration" "persistence"))]) (workgroups . [(20110726 941) nil "workgroups for windows (for Emacs)" single ((:keywords "session" "management" "window-configuration" "persistence"))]) (worf . [(20160422 716) ((swiper (0 7 0)) (ace-link (0 1 0)) (hydra (0 13 0))) "A warrior does not press so many keys! (in org-mode)" tar ((:url . "https://github.com/abo-abo/worf") (:keywords "lisp"))]) (wordsmith-mode . [(20151117 236) nil "Syntax analysis and NLP text-processing in Emacs (OSX-only)" single nil]) (wordnut . [(20151002 1457) ((emacs (24 4))) "Major mode interface to WordNet" tar nil]) (wonderland . [(20130912 1819) ((dash (2 0 0)) (dash-functional (1 0 0)) (multi (2 0 0)) (emacs (24))) "declarative configuration for Emacsen" single ((:url . "http://github.com/kurisuwhyte/emacs-wonderland") (:keywords "configuration" "profile" "wonderland"))]) (wolfram-mode . [(20140118 757) ((emacs (24 3))) "Mathematica editing and inferior mode." single ((:url . "https://github.com/kawabata/wolfram-mode/") (:keywords "languages" "processes" "tools"))]) (wn-mode . [(20151109 2152) ((emacs (24))) "numeric window switching shortcuts" single ((:url . "https://github.com/luismbo/wn-mode") (:keywords "buffers" "windows" "switching-windows"))]) (with-namespace . [(20130407 1122) ((dash (1 1 0)) (loop (1 1))) "interoperable elisp namespaces" single ((:keywords "namespaces"))]) (with-editor . [(20160408 201) ((emacs (24 4)) (async (1 5)) (dash (2 12 1))) "Use the Emacsclient as $EDITOR" tar ((:url . "https://github.com/magit/with-editor") (:keywords "tools"))]) (wispjs-mode . [(20140103 1432) ((clojure-mode (0))) "Major mode for Wisp code." single ((:url . "https://github.com/krisajenkins/wispjs-mode"))]) (wisp-mode . [(20160419 1232) nil "Tools for wisp: the Whitespace-to-Lisp preprocessor" single ((:keywords "languages" "lisp"))]) (winring . [(20150804 1108) nil "Window configuration rings" single ((:url . "https://gitlab.com/warsaw/winring") (:keywords "frames" "tools"))]) (winpoint . [(20131023 1013) nil "Remember buffer positions per-window, not per buffer" single ((:url . "https://github.com/jorgenschaefer/winpoint") (:keywords "convenience"))]) (windsize . [(20151121 540) nil "Simple, intuitive window resizing" single ((:url . "http://github.com/grammati/windsize") (:keywords "window" "resizing" "convenience"))]) (window-purpose . [(20160310 428) ((emacs (24)) (cl-lib (0 5)) (let-alist (1 0 3)) (imenu-list (0 1))) "Purpose-based window management for Emacs" tar ((:url . "https://github.com/bmag/emacs-purpose") (:keywords "frames"))]) (window-numbering . [(20150228 1247) nil "Numbered window shortcuts" single ((:url . "http://nschum.de/src/emacs/window-numbering-mode/") (:keywords "faces" "matching"))]) (window-number . [(20140123 1902) nil "Select windows by numbers." single ((:url . "http://www.emacswiki.org/emacs/download/window-number.el"))]) (window-layout . [(20150716 2207) nil "window layout manager" single ((:keywords "window" "layout"))]) (window-jump . [(20150213 1236) nil "Move left/right/up/down through your windows." single ((: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 ((:url . "http://github.com/rolandwalker/window-end-visible") (:keywords "extensions"))]) (window+ . [(20151231 1624) nil "Extensions to `window.el'." single ((:url . "http://www.emacswiki.org/window%2b.el") (:keywords "internal" "window"))]) (windata . [(20080412 755) nil "convert window configuration to list" single ((:keywords "convenience" "frames"))]) (win-switch . [(20150208 1911) nil "fast, dynamic bindings for window-switching/resizing" single ((:url . "http://www.stat.cmu.edu/~genovese/emacs/win-switch/") (:keywords "window" "switch" "key bindings" "ergonomic" "efficient"))]) (wimpy-del . [(20151231 1623) nil "Require confirmation for large region deletion." single ((:url . "http://www.emacswiki.org/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 ((:url . "https://github.com/sixty-north/emacs-wilt"))]) (wiki-summary . [(20150408 1422) ((emacs (24))) "View Wikipedia summaries in Emacs easily." single ((: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 ((:url . "http://github.com/rolandwalker/button-lock") (:keywords "mouse" "button" "hypermedia" "navigation"))]) (widget-mvc . [(20150101 2006) nil "MVC framework for the emacs widgets" single ((:keywords "lisp" "widget"))]) (wide-column . [(20120814 112) nil "Calls functions dependant on column position." single ((:keywords "minor mode" "cursor colour" "column width"))]) (wid-edit+ . [(20151231 1622) nil "Extensions to standard library `wid-edit.el'." single ((:url . "http://www.emacswiki.org/wid-edit%2b.el") (:keywords "widget" "color"))]) (whole-line-or-region . [(20110901 130) nil "operate on current line if region undefined" single ((:keywords "kill" "yank" "cut" "copy" "paste" "whole" "lines"))]) (whitespace-cleanup-mode . [(20150603 447) nil "Intelligently call whitespace-cleanup on save" single ((:url . "https://github.com/purcell/whitespace-cleanup-mode") (:keywords "convenience"))]) (white-sand-theme . [(20151117 848) ((emacs (24))) "Emacs theme with a light background." single nil]) (whitaker . [(20150814 422) ((dash (2 10 0))) "Comint interface for Whitaker's Words" single ((:keywords "processes"))]) (which-key . [(20160516 1806) ((emacs (24 3))) "Display available keybindings in popup" single ((:url . "https://github.com/justbur/emacs-which-key"))]) (what-the-commit . [(20150901 616) nil "Random commit message generator" single ((: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 ((:url . "http://github.com/mhayashi1120/Emacs-wgrep/raw/master/wgrep-pt.el") (:keywords "grep" "edit" "extensions"))]) (wgrep-helm . [(20140528 1427) ((wgrep (2 1 1))) "Writable helm-grep-mode buffer and apply the changes to files" single ((:url . "http://github.com/mhayashi1120/Emacs-wgrep/raw/master/wgrep-helm.el") (:keywords "grep" "edit" "extensions"))]) (wgrep-ag . [(20141012 311) ((wgrep (2 1 5))) "Writable ag buffer and apply the changes to files" single ((: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 ((: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 ((: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 ((: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 ((:url . "https://github.com/kungi/weechat-alert") (:keywords "irc" "chat" "network" "weechat"))]) (weechat . [(20160229 1248) ((s (1 3 1)) (cl-lib (0 2)) (emacs (24)) (tracking (1 2))) "Chat via WeeChat's relay protocol in Emacs" tar nil]) (wedge-ws . [(20140714 1449) nil "Wedge whitespace between columns in text" single ((:keywords "formatting" "indentation"))]) (websocket . [(20160510 2001) nil "Emacs WebSocket client and server" single ((:keywords "communication" "websocket" "server"))]) (weblogger . [(20110926 918) ((xml-rpc (1 6 8))) "Weblog maintenance via XML-RPC APIs" single ((: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 ((:url . "https://github.com/eschulte/emacs-web-server") (:keywords "http" "server" "network"))]) (web-mode . [(20160505 910) nil "major mode for editing web templates" single ((:url . "http://web-mode.org") (:keywords "languages"))]) (web-completion-data . [(20160318 148) nil "Shared completion data for ac-html and company-web" tar ((:url . "https://github.com/osv/web-completion-data") (:keywords "html" "auto-complete" "company"))]) (web-beautify . [(20160410 1005) nil "Format HTML, CSS and JavaScript/JSON by js-beautify" single ((:url . "https://github.com/yasuyk/web-beautify"))]) (web . [(20141231 1201) ((dash (2 9 0)) (s (1 5 0))) "useful HTTP client" single ((: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 nil]) (wcheck-mode . [(20160208 1136) nil "General interface for text checkers" tar nil]) (wc-mode . [(20131121 826) nil "Running word count with goals (minor mode)" single ((:url . "https://github.com/bnbeckwith/wc-mode"))]) (wc-goal-mode . [(20140829 659) nil "Running word count with goals (minor mode)" single ((:url . "https://github.com/bnbeckwith/wc-goal-mode"))]) (wavefront-obj-mode . [(20150501 1116) nil "Major mode for Wavefront obj files" single ((:url . "http://github.com/abend/wavefront-obj-mode"))]) (watch-buffer . [(20120331 1344) nil "run a shell command when saving a buffer" single ((:url . "https://github.com/mjsteger/watch-buffer") (:keywords "automation" "convenience"))]) (warm-night-theme . [(20150607 741) ((emacs (24))) "Emacs 24 theme with a dark background." single nil]) (wanderlust . [(20160429 1638) ((semi (1 14 7))) "Yet Another Message Interface on Emacsen" tar nil]) (wandbox . [(20160418 1114) ((emacs (24)) (request (0 2 0)) (s (1 10 0))) "Wandbox API Library for Emacs" tar ((:url . "https://github.com/kosh04/emacs-wandbox") (:keywords "c" "programming" "tools"))]) (wand . [(20141104 1645) ((dash (2 5 0))) "Magic wand for Emacs - Selecting and executing" tar ((:url . "https://github.com/cmpitg/wand") (:keywords "extensions" "tools"))]) (wakatime-mode . [(20160417 109) nil "Automatic time tracking extension for WakaTime" single ((:keywords "calendar" "comm"))]) (waher-theme . [(20141115 430) ((emacs (24 1))) "Emacs 24 theme based on waher for st2 by dduckster" single ((:url . "https://github.com/jasonm23/emacs-waher-theme"))]) (wacspace . [(20140826 2232) ((dash (1 2 0)) (cl-lib (0 2))) "The WACky WorkSPACE manager for emACS" tar nil]) (w3m . [(20121224 1747) nil "an Emacs interface to w3m" tar ((:keywords "w3m" "www" "hypermedia"))]) (w32browser-dlgopen . [(20151231 1621) nil "Use w32browser with standard Windows Open File box." single ((:url . "http://www.emacswiki.org/w32browser-dlgopen.el") (:keywords "files" "extensions" "convenience" "dialog"))]) (w32-browser . [(20151231 1620) nil "Run Windows application associated with a file." single ((:url . "http://www.emacswiki.org/w32-browser.el") (:keywords "mouse" "dired" "w32" "explorer"))]) (vue-mode . [(20160411 2054) ((mmm-mode (0 5 4))) "Major mode for vue component based on web-mode and mmm-mode" single ((:keywords "languages"))]) (volume . [(20150718 1309) nil "tweak your sound card volume from Emacs" single ((:url . "http://www.brockman.se/software/volume-el/"))]) (volatile-highlights . [(20160520 2006) nil "Minor mode for visual feedback on some operations." single ((:url . "http://www.emacswiki.org/emacs/download/volatile-highlights.el") (:keywords "emulations" "convenience" "wp"))]) (voca-builder . [(20150625 1133) nil "No description available." single nil]) (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 . [(20150101 718) nil "View Large Files" tar ((:url . "https://github.com/m00natic/vlfi") (:keywords "large files" "utilities"))]) (vkill . [(20091203 1022) nil "view and kill Unix processes from within Emacs" single nil]) (visual-regexp-steroids . [(20160516 1238) ((visual-regexp (1 0))) "Extends visual-regexp to support other regexp engines" tar ((:url . "https://github.com/benma/visual-regexp-steroids.el/") (:keywords "external" "foreign" "regexp" "replace" "python" "visual" "feedback"))]) (visual-regexp . [(20160520 400) ((cl-lib (0 2))) "A regexp/replace command for Emacs with interactive visual feedback" single ((:url . "https://github.com/benma/visual-regexp.el/") (:keywords "regexp" "replace" "visual" "feedback"))]) (visual-fill-column . [(20160411 520) ((emacs (24 3))) "fill-column for visual-line-mode" single nil]) (visual-ascii-mode . [(20150129 246) nil "Visualize ascii code (small integer) on buffer." single ((:url . "https://github.com/Dewdrops/visual-ascii-mode") (:keywords "presentation"))]) (visible-mark . [(20150623 2150) nil "Make marks visible." single ((:url . "https://gitlab.com/iankelling/visible-mark") (:keywords "marking" "color" "faces"))]) (virtualenvwrapper . [(20151127 621) ((dash (1 5 0)) (s (1 6 1))) "a featureful virtualenv tool for Emacs" single ((:url . "http://github.com/porterjamesj/virtualenvwrapper.el") (:keywords "python" "virtualenv" "virtualenvwrapper"))]) (virtualenv . [(20140220 1501) nil "Virtualenv for Python" single ((:keywords "python" "virtualenv"))]) (vimrc-mode . [(20150607 913) nil "Major mode for vimrc files" single ((:url . "https://github.com/mcandre/vimrc-mode") (:keywords "languages" "vim"))]) (vimish-fold . [(20160514 455) ((emacs (24 4)) (cl-lib (0 5)) (f (0 18 0))) "Fold text like in Vim" single ((:url . "https://github.com/mrkkrp/vimish-fold") (:keywords "convenience"))]) (vimgolf . [(20140814 1448) nil "VimGolf interface for the One True Editor" single ((:keywords "games" "vimgolf" "vim"))]) (vim-region . [(20140329 924) ((expand-region (20140127))) "Select region as vim" single ((: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 ((:url . "https://github.com/jmickelin/vim-empty-lines-mode") (:keywords "emulations"))]) (viking-mode . [(20160520 439) nil "kill first, ask later" single ((:url . "https://github.com/tlinden/viking-mode") (:keywords "kill" "delete"))]) (viewer . [(20141021 1136) nil "View-mode extension" single ((:url . "http://www.emacswiki.org/cgi-bin/wiki/download/viewer.el") (:keywords "view" "extensions"))]) (vi-tilde-fringe . [(20141027 1942) ((emacs (24))) "Displays tildes in the fringe on empty lines a la Vi." single ((:url . "https://github.com/syl20bnr/vi-tilde-fringe") (:keywords "emulation"))]) (vhdl-tools . [(20160501 1011) ((ggtags (0 8 11)) (emacs (24 3)) (outshine (2 0)) (projectile (0 13 0)) (helm (1 9 2))) "Utilities for navigating vhdl sources." single ((:url . "https://github.com/csantosb/vhdl-tools") (:keywords "vhdl"))]) (vhdl-capf . [(20160221 934) nil "Completion at point function (capf) for vhdl-mode." single ((: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 ((:url . "https://github.com/noctuid/vertigo.el") (:keywords "vim" "vertigo"))]) (vertica . [(20131217 711) ((sql (3 0))) "Vertica SQL mode extension" single ((:keywords "sql" "vertica"))]) (verify-url . [(20160426 528) ((cl-lib (0 5))) "find out invalid urls in the buffer or region" single ((:url . "https://github.com/lujun9972/verify-url") (:keywords "convenience" "usability" "url"))]) (vector-utils . [(20140508 1341) nil "Vector-manipulation utility functions" single ((:url . "http://github.com/rolandwalker/vector-utils") (:keywords "extensions"))]) (vdirel . [(20151215 2255) ((emacs (24 4)) (org-vcard (0 1 0)) (helm (1 7 0)) (seq (1 11))) "Manipulate vdir (i.e., vCard) repositories" single ((:keywords "vdirsyncer" "vdir" "vcard" "carddav" "contact" "addressbook" "helm"))]) (vcomp . [(20140906 1508) nil "compare version strings" single ((:url . "https://github.com/tarsius/vcomp") (:keywords "versions"))]) (vcl-mode . [(20151213 1123) nil "Syntax highlighting for Varnish Command Language" single nil]) (vc-osc . [(20120910 211) nil "non-resident support for osc version-control" single nil]) (vc-fossil . [(20160324 349) nil "VC backend for the fossil sofware configuraiton management system" tar nil]) (vc-darcs . [(20151225 1228) nil "a VC backend for darcs" single ((:keywords "vc"))]) (vc-check-status . [(20160108 216) nil "Warn you when quitting emacs and leaving repo dirty." tar ((:url . "https://github.com/thisirs/vc-check-status") (:keywords "vc" "convenience"))]) (vc-auto-commit . [(20160108 215) nil "Auto-committing feature for your repository" tar ((: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 ((:url . "https://github.com/aki2o/emacs-vbasense") (:keywords "vba" "completion"))]) (vala-snippets . [(20150428 2052) ((yasnippet (0 8 0))) "Yasnippets for Vala" tar ((:url . "https://github.com/gopar/vala-snippets"))]) (vala-mode . [(20150324 1525) nil "Vala mode derived mode" single ((:keywords "vala" "languages" "oop"))]) (vagrant-tramp . [(20160427 1632) ((dash (2 12 0))) "Vagrant method for TRAMP" tar ((:url . "https://github.com/dougm/vagrant-tramp") (:keywords "vagrant"))]) (vagrant . [(20160505 130) nil "Manage a vagrant box from emacs" single ((:url . "https://github.com/ottbot/vagrant.el") (:keywords "vagrant" "chef"))]) (uzumaki . [(20150119 1706) ((cl-lib (0 5))) "A simple buffer cycler" single ((:url . "http://github.com/geyslan/uzumaki") (:keywords "buffer" "convenience"))]) (uuidgen . [(20140918 1601) nil "Provides various UUID generating functions" single ((:keywords "extensions" "lisp" "tools"))]) (uuid . [(20120910 151) nil "UUID's for EmacsLisp" single ((:keywords "lisp"))]) (utop . [(20151105 247) ((emacs (24))) "Universal toplevel for OCaml" single ((:url . "https://github.com/diml/utop") (:keywords "ocaml" "languages"))]) (use-package-chords . [(20160407 907) ((use-package (2 0)) (bind-key (1 0)) (bind-chord (0 1))) "key-chord keyword for use-package" single ((:url . "https://github.com/waymondo/use-package-chords") (:keywords "convenience" "tools" "extensions"))]) (use-package . [(20160403 1129) ((bind-key (1 0)) (diminish (0 44))) "A use-package declaration for simplifying your .emacs" single ((: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 ((:url . "https://github.com/buzztaiki/urlenc-el") (:keywords "url"))]) (url-shortener . [(20160404 1959) nil "shorten long url and expand tinyurl" single ((:url . "https://github.com/yuyang0/url-shortener"))]) (unkillable-scratch . [(20160504 1903) nil "Disallow buffers from being killed by regexp -- default is *scratch* buffer" single ((:keywords "scratch"))]) (unison-mode . [(20160513 801) nil "Syntax highlighting for unison file synchronization program" single ((:url . "https://github.com/impaktor/unison-mode") (:keywords "symchronization" "unison"))]) (unipoint . [(20140113 1424) nil "a simple way to insert unicode characters by TeX name" single ((:url . "https://github.com/apgwoz/unipoint"))]) (unify-opening . [(20151116 1648) ((emacs (24 4))) "Make everything use the same mechanism to open files" single ((:url . "https://github.com/DamienCassou/unify-opening") (:keywords "dired" "org" "mu4e" "open" "runner" "extension" "file"))]) (unidecode . [(20140317 2118) ((cl-lib (0 4))) "Convert Unicode text into safe ASCII strings" tar nil]) (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 ((:url . "http://github.com/rolandwalker/unicode-whitespace") (:keywords "faces" "wp" "interface"))]) (unicode-troll-stopper . [(20151023 1831) nil "Minor mode for Highlighting Unicode homoglyphs" single ((: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 ((: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 ((:url . "http://github.com/rolandwalker/unicode-fonts") (:keywords "i18n" "faces" "frames" "wp" "interface"))]) (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 ((:url . "http://github.com/rolandwalker/unicode-enbox") (:keywords "extensions" "interface"))]) (unicode-emoticons . [(20150204 308) nil "Shortcuts for common unicode emoticons" single ((:url . "https://github.com/hagleitn/unicode-emoticons") (:keywords "games" "entertainment" "comms"))]) (unfill . [(20131103 213) nil "The inverse of fill-paragraph and fill-region" single ((:keywords "utilities"))]) (undohist . [(20150315 542) ((cl-lib (1 0))) "Persistent undo history for GNU Emacs" single ((:keywords "convenience"))]) (undo-tree . [(20140509 522) nil "Treat undo history as a tree" single ((: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 ((:keywords "faces"))]) (undercover . [(20160329 737) ((emacs (24)) (dash (2 0 0)) (shut-up (0 3 2))) "Test coverage library for Emacs" single ((:url . "https://github.com/sviridov/undercover.el") (:keywords "lisp" "tests" "coverage" "tools"))]) (uncrustify-mode . [(20130707 659) nil "Minor mode to automatically uncrustify." single ((:keywords "uncrustify"))]) (unbound . [(20160505 2355) nil "Find convenient unbound keystrokes" single ((:keywords "keyboard"))]) (ukrainian-holidays . [(20130720 649) nil "Ukrainian holidays for Emacs calendar." single ((:url . "https://github.com/abo-abo/ukrainian-holidays"))]) (ujelly-theme . [(20160521 1101) nil "Ujelly theme for GNU Emacs 24 (deftheme)" single ((:url . "http://github.com/marktran/color-theme-ujelly"))]) (uimage . [(20160426 526) nil "An iimage like mode with the ability to display url images" single ((: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 ((:url . "http://github.com/rolandwalker/ucs-utils") (:keywords "i18n" "extensions"))]) (ucs-cmds . [(20151231 1616) nil "Macro to create commands that insert Unicode chars." single ((:url . "http://www.emacswiki.org/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 ((:url . "http://github.com/rocher/ubuntu-theme"))]) (typo . [(20160121 330) nil "Minor mode for typographic editing" single ((:url . "https://github.com/jorgenschaefer/typoel") (:keywords "convenience" "wp"))]) (typit . [(20160510 958) ((emacs (24 4)) (f (0 18)) (mmt (0 1 1))) "Typing game similar to tests on 10 fast fingers" tar ((:url . "https://github.com/mrkkrp/typit") (:keywords "games"))]) (typing-game . [(20160426 520) nil "a simple typing game" single ((:keywords "lisp" "game"))]) (typing . [(20121026 1418) nil "The Typing Of Emacs" single ((:url . "http://www.emacswiki.org/emacs/TypingOfEmacs") (:keywords "games"))]) (typescript-mode . [(20160126 408) nil "Major mode for editing typescript" single ((: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 ((:url . "https://github.com/typedclojure/typed-clojure-mode"))]) (twittering-mode . [(20160313 936) nil "Major mode for Twitter" single ((:url . "http://twmode.sf.net/") (:keywords "twitter" "web"))]) (twilight-theme . [(20120412 603) nil "Twilight theme for GNU Emacs 24 (deftheme)" single nil]) (twilight-bright-theme . [(20130605 143) nil "A Emacs 24 faces port of the TextMate theme" single ((:url . "https://github.com/jimeh/twilight-bright-theme.el") (:keywords "themes"))]) (twilight-anti-bright-theme . [(20140810 34) nil "A soothing Emacs 24 light-on-dark theme" single ((:url . "https://github.com/jimeh/twilight-anti-bright-theme.el") (:keywords "themes"))]) (twig-mode . [(20130220 1050) nil "A major mode for twig" single nil]) (turnip . [(20150308 2329) ((dash (2 6 0)) (s (1 9 0))) "Interacting with tmux from Emacs" single ((:keywords "terminals" "tools"))]) (turkish . [(20160324 323) nil "Convert to Turkish characters on-the-fly" single ((:url . "http://www.denizyuret.com/2006/11/emacs-turkish-mode.html") (:keywords "turkish" "languages" "automatic" "conversion"))]) (tup-mode . [(20140410 914) nil "Major mode for editing files for Tup" single ((: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 nil]) (tumble . [(20160111 2329) ((http-post-simple (0)) (cl-lib (0 5))) "an Tumblr mode for Emacs" single ((:keywords "tumblr"))]) (tuareg . [(20160408 1131) ((caml (3 12 0 1))) "OCaml mode for Emacs." tar ((:url . "https://github.com/ocaml/tuareg") (:keywords "ocaml" "languages"))]) (ttrss . [(20130409 1049) ((emacs (23 1))) "Tiny Tiny RSS elisp bindings" single ((:url . "https://github.com/pedros/ttrss.el") (:keywords "news" "local"))]) (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 nil]) (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 ((:url . "https://github.com/aki2o/emacs-tss") (:keywords "typescript" "completion"))]) (try . [(20160226 730) ((emacs (24))) "Try out Emacs packages." single ((:url . "http://github.com/larstvei/try") (:keywords "packages"))]) (truthy . [(20140508 1341) ((list-utils (0 4 2))) "Test the content of a value" single ((:url . "http://github.com/rolandwalker/truthy") (:keywords "extensions"))]) (tronesque-theme . [(20150125 241) nil "Color Theme based on Tron universe." single ((:url . "https://github.com/aurelienbottazini/tronesque"))]) (trident-mode . [(20130726 1207) ((emacs (24)) (slime (20130526)) (skewer-mode (1 5 0)) (dash (1 0 3))) "Live Parenscript interaction" single ((:url . "https://github.com/johnmastro/trident-mode.el") (:keywords "languages" "lisp" "processes" "tools"))]) (tree-mode . [(20151104 531) nil "A mode to manage tree widgets" single ((: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 ((:url . "https://github.com/nlamirault/emacs-travis") (:keywords "travis"))]) (transpose-mark . [(20150405 16) nil "Transpose data using the Emacs mark" single ((:keywords "transpose" "convenience"))]) (transpose-frame . [(20140827 1206) nil "Transpose windows arrangement in a frame" single ((:keywords "window"))]) (transmission . [(20160517 715) ((emacs (24 4)) (let-alist (1 0 3))) "Interface to a Transmission session" single ((:keywords "comm" "tools"))]) (tramp-term . [(20141104 1345) nil "Automatic setup of directory tracking in ssh sessions." single ((:url . "https://github.com/randymorris/tramp-term.el") (:keywords "tramp" "ssh"))]) (tramp-hdfs . [(20151028 2036) nil "Tramp extension to access hadoop/hdfs file system in Emacs" single ((:keywords "tramp" "emacs" "hdfs" "hadoop" "webhdfs" "rest"))]) (tracwiki-mode . [(20150119 821) ((xml-rpc (1 6 8))) "Emacs Major mode for working with Trac" single ((:keywords "trac" "wiki" "tickets"))]) (tracking . [(20151129 319) nil "Buffer modification tracking" tar ((:url . "https://github.com/jorgenschaefer/circe/wiki/Tracking"))]) (traad . [(20151225 2334) ((deferred (0 3 2)) (popup (0 5 0)) (request (0 2 0)) (request-deferred (0 2 0)) (python-environment (0 0 2))) "emacs interface to the traad refactoring server." single ((:url . "https://github.com/abingham/traad"))]) (toxi-theme . [(20160424 1426) ((emacs (24))) "A dark color theme by toxi" single ((:url . "http://bitbucket.org/postspectacular/toxi-theme/"))]) (tox . [(20141004 1403) nil "Launch current python test with tox" single ((: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 ((:keywords "help"))]) (tornado-template-mode . [(20141128 208) nil "A major mode for editing tornado templates" single nil]) (top-mode . [(20130605 1039) nil "run \"top\" from emacs" single ((:keywords "extensions" "processes"))]) (tool-bar+ . [(20151231 1615) nil "Extensions to standard library tool-bar.el" single ((:url . "http://www.emacswiki.org/tool-bar%2b.el") (:keywords "tool-bar" "convenience" "mouse" "button" "frame"))]) (tommyh-theme . [(20131004 1630) nil "A bright, bold-colored theme for emacs" single nil]) (toml-mode . [(20150818 120) nil "Mojor mode for editing TOML files" single ((:url . "https://github.com/dryman/toml-mode.el") (:keywords "data" "toml"))]) (toml . [(20130903 555) nil "TOML (Tom's Obvious, Minimal Language) parser" single ((:url . "https://github.com/gongo/emacs-toml") (:keywords "toml" "parser"))]) (tomatinho . [(20140120 1540) nil "Tomatinho" tar ((:keywords "time" "productivity" "pomodoro technique"))]) (toggle-window . [(20141207 748) nil "toggle current window size between half and full" single ((: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 ((: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 ((: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 ((:keywords "files" "extensions" "convenience"))]) (togetherly . [(20150820 138) ((cl-lib (0 3))) "allow multiple clients to edit a single buffer online" single ((:url . "http://hins11.yu-yake.com/"))]) (todotxt-mode . [(20150424 704) nil "Major mode for editing todo.txt files" single ((:keywords "wp" "files"))]) (todotxt . [(20150513 1929) nil "A major mode for editing todo.txt files" single ((:url . "https://github.com/rpdillon/todotxt.el") (:keywords "todo.txt" "todotxt" "todotxt.el"))]) (todochiku . [(20150112 1254) nil "A mode for interfacing with Growl, Snarl, and the like." single nil]) (toc-org . [(20160422 605) nil "add table of contents to org-mode files (formerly, org-toc)" single ((: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 ((:keywords "minor mode" "font lock" "toggling."))]) (tldr . [(20160312 608) ((emacs (24 3))) "tldr client for Emacs" single ((:url . "https://github.com/kuanyui/tldr.el") (:keywords "tools" "docs"))]) (tj-mode . [(20150826 851) ((emacs (24)) (tern (0 0 1)) (js2-mode (20150514))) "Highlight JavaScript with Tern" single ((:url . "https://github.com/katspaugh/tj-mode") (:keywords "languages" "javascript"))]) (tinysegmenter . [(20141124 213) ((cl-lib (0 5))) "Super compact Japanese tokenizer in Javascript ported to emacs lisp" single ((:url . "https://github.com/myuhe/tinysegmenter.el") (:keywords "convenience"))]) (tiny . [(20151208 205) nil "Quickly generate linear ranges in Emacs" single ((:url . "https://github.com/abo-abo/tiny") (:keywords "convenience"))]) (tinkerer . [(20150219 2249) ((s (1 2 0))) "Elisp wrapper for Tinkerer Blogging Engine." single ((:url . "https://github.com/yyr/tinkerer.el") (:keywords "tinkerer" "blog" "wrapper"))]) (timp . [(20160521 153) ((emacs (24 4)) (cl-lib (0 5)) (fifo-class (1 0)) (signal (1 0))) "Multithreading library" tar ((:url . "https://github.com/mola-T/timp") (:keywords "internal" "lisp" "processes" "tools"))]) (timesheet . [(20151107 604) ((s (1)) (org (7)) (auctex (11))) "Timesheet management add-on for org-mode" tar ((: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 nil]) (timecop . [(20160520 352) ((cl-lib (0 5)) (datetime-format (0 0 1))) "Freeze Time for testing" single ((:url . "https://github.com/zonuexe/emacs-datetime") (:keywords "datetime" "testing"))]) (time-ext . [(20100515 1740) nil "No description available." single nil]) (tidy . [(20111222 956) nil "Interface to the HTML Tidy program" single ((:url . "http://www.emacswiki.org/elisp/tidy.el") (:keywords "languages"))]) (tide . [(20160510 2342) ((typescript-mode (0 1)) (emacs (24 1)) (flycheck (0 23)) (dash (2 10 0))) "Typescript Interactive Development Environment" tar nil]) (thumb-through . [(20120118 2134) nil "Plain text reader of HTML documents" single ((:keywords "html"))]) (thumb-frm . [(20151231 1612) ((frame-fns (0)) (frame-cmds (0))) "Commands for thumbnail frames." single ((:url . "http://www.emacswiki.org/thumb-frm.el") (:keywords "frame" "icon"))]) (thrift . [(20140312 1348) nil "Major mode for Apache Thrift files" single ((:keywords "files"))]) (thread-dump . [(20130323 1025) nil "Java thread dump viewer" single ((:url . "http://github.com/nd/thread-dump.el"))]) (thingopt . [(20160520 1618) nil "Thing at Point optional utilities" single ((:keywords "convenience"))]) (thingatpt+ . [(20151231 1610) nil "Extensions to `thingatpt.el'." single ((:url . "http://www.emacswiki.org/thingatpt%2b.el") (:keywords "extensions" "matching" "mouse"))]) (thing-cmds . [(20151231 1609) ((hide-comnt (0))) "Commands that use things, as defined by `thingatpt.el'." single ((:url . "http://www.emacswiki.org/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 ((:url . "https://github.com/abingham/therapy"))]) (theme-looper . [(20150723 1104) ((cl-lib (0 5))) "Loop thru the available color-themes" single ((:url . "http://ismail.teamfluxion.com") (:keywords "convenience" "color-themes"))]) (theme-changer . [(20130725 1919) nil "Sunrise/Sunset Theme Changer for Emacs" single ((: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"))]) (textmate-to-yas . [(20160409 1008) nil "Import Textmate macros into yasnippet syntax" tar ((:url . "https://github.com/mlf176f2/textmate-to-yas.el/") (:keywords "yasnippet" "textmate"))]) (textmate . [(20110816 1446) nil "TextMate minor mode for Emacs" single ((:keywords "textmate" "osx" "mac"))]) (textile-mode . [(20151203 53) nil "Textile markup editing major mode" single nil]) (tex-smart-umlauts . [(20160427 58) nil "Smart umlaut conversion for TeX." single ((:url . "http://hub.darcs.net/lyro/tex-smart-umlauts") (:keywords "tex" "wp"))]) (test-simple . [(20160303 36) ((cl-lib (0))) "Simple Unit Test Framework for Emacs Lisp" single ((:url . "http://github.com/rocky/emacs-test-simple") (:keywords "unit-test"))]) (test-kitchen . [(20160516 1348) nil "Run test-kitchen inside of emacs" single ((: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 ((:url . "http://nschum.de/src/emacs/test-case-mode/") (:keywords "tools"))]) (terraform-mode . [(20160502 1717) ((hcl-mode (0 2)) (cl-lib (0 5))) "Major mode for terraform configuration file" single ((: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 ((:url . "https://github.com/proofit404/tern-django"))]) (tern-auto-complete . [(20151123 653) ((tern (0 0 1)) (auto-complete (1 4)) (cl-lib (0 5)) (emacs (24))) "Tern Completion by auto-complete.el" single nil]) (tern . [(20160425 659) ((json (1 2)) (cl-lib (0 5)) (emacs (24))) "Tern-powered JavaScript integration" single ((:url . "http://ternjs.net/"))]) (termbright-theme . [(20151030 1935) ((emacs (24 1))) "a more usable theme for white-on-black terminals" single ((:url . "https://github.com/bmastenbrook/termbright-theme-el") (:keywords "themes"))]) (term-run . [(20151228 105) nil "Run arbitrary command in terminal buffer" single ((:url . "https://github.com/10sr/term-run-el") (:keywords "utility" "shell" "command" "term-mode"))]) (term-cmd . [(20160517 345) ((emacs (24 0)) (dash (2 12 0)) (f (0 18 2))) "Send commands from programs running in term.el." tar nil]) (term-alert . [(20160517 348) ((emacs (24 0)) (term-cmd (1 1)) (alert (1 1)) (f (0 18 2))) "Notifications when commands complete in term.el." tar nil]) (term+mux . [(20140210 2349) ((term+ (0 1)) (tab-group (0 1))) "term+ terminal multiplexer and session management" single ((: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 ((:url . "http://github.com/tarao/term+-el") (:keywords "terminal" "emulation"))]) (term+ . [(20160404 355) nil "term-mode enhancement" tar ((:url . "https://github.com/tarao/term-plus-el") (:keywords "terminal" "emulation"))]) (ten-hundred-mode . [(20160409 551) ((cl-lib (0 5))) "use only the ten hundred most usual words" tar nil]) (telephone-line . [(20160302 1515) ((emacs (24 4)) (cl-lib (0 5)) (cl-generic (0 2)) (seq (1 8))) "Rewrite of Powerline" tar ((:url . "https://github.com/dbordak/telephone-line") (:keywords "mode-line"))]) (telepathy . [(20131209 458) nil "Access Telepathy from Emacs" single ((:keywords "telepathy" "tools"))]) (tea-time . [(20120331 120) nil "Simple timer package, useful to make perfect tea." single ((:keywords "timer" "tea-time"))]) (tdd-status-mode-line . [(20131123 916) nil "TDD status on the mode-line" single ((:url . "https://github.com/algernon/tdd-status-mode-line") (:keywords "faces" "tdd"))]) (tco . [(20140412 612) ((dash (1 2 0)) (emacs (24))) "tail-call optimisation for Emacs lisp" single nil]) (tc . [(20150113 1926) nil "a Japanese input method with T-Code on Emacs" tar nil]) (tbx2org . [(20140224 759) ((dash (2 5 0)) (s (1 8 0)) (cl-lib (0 4))) "Tinderbox to org-mode conversion" single ((:url . "https://github.com/istib/tbx2org") (:keywords "org-mode"))]) (tawny-mode . [(20160504 1046) ((cider (0 12)) (emacs (25))) "Ontology Editing with Tawny-OWL" single nil]) (tao-theme . [(20160330 650) nil "Light & dark themes with greyscale palettes generated from the golden mean" tar nil]) (tangotango-theme . [(20150702 104) nil "Tango Palette color theme for Emacs 24." single ((:url . "https://github.com/juba/color-theme-tangotango") (:keywords "tango" "palette" "color" "theme" "emacs"))]) (tango-plus-theme . [(20140425 1511) nil "A color theme based on the tango palette" single ((:url . "https://github.com/tmalsburg/tango-plus-theme"))]) (tango-2-theme . [(20120312 1325) nil "Tango 2 color theme for GNU Emacs 24" single nil]) (take-off . [(20140531 217) ((emacs (24 3)) (web-server (0 1 0))) "Emacs remote web access" tar ((:url . "https://github.com/tburette/take-off"))]) (tagedit . [(20160516 754) ((s (1 3 1)) (dash (1 0 3))) "Some paredit-like features for html-mode" single ((:keywords "convenience"))]) (tabula-rasa . [(20141215 2147) ((emacs (24 4))) "Distraction free writing mode" single ((:url . "https://github.com/idomagal/Tabula-Rasa/blob/master/tabula-rasa.el") (:keywords "distraction free" "writing"))]) (tablist . [(20160424 235) ((emacs (24 3))) "Extended tabulated-list-mode" tar ((:keywords "extensions" "lisp"))]) (tabbar-ruler . [(20160517 1825) ((tabbar (2 0 1)) (powerline (2 3)) (mode-icons (0 4 0)) (cl-lib (0 5))) "Pretty tabbar, autohide, use both tabbar/ruler" tar ((:url . "http://github.com/mlf176f2/tabbar-ruler.el") (:keywords "tabbar" "ruler mode" "menu" "tool bar."))]) (tabbar . [(20141109 143) nil "Display a tab bar in the header line" tar ((:keywords "convenience"))]) (tab-jump-out . [(20151005 1830) ((dash (2 10)) (emacs (24 4))) "Use tab to jump out of delimiter pairs." single ((:keywords "tab" "editing"))]) (tab-group . [(20140306 650) nil "Grouped tabs and their tabbar" single ((:url . "http://github.com/tarao/tab-group-el") (:keywords "convenience" "tabs"))]) (ta . [(20150604 1024) ((emacs (24 3)) (cl-lib (0 5))) "A tool to deal with Chinese homophonic characters" single ((:url . "http://github.com/kuanyui/ta.el") (:keywords "tools"))]) (systemtap-mode . [(20151122 1140) nil "A mode for SystemTap" single ((:url . "https://github.com/ruediger/systemtap-mode") (:keywords "tools" "languages"))]) (systemd . [(20160514 715) ((emacs (24 4))) "Major mode for editing systemd units" tar ((:keywords "tools" "unix"))]) (system-specific-settings . [(20140818 757) nil "Apply settings only on certain systems" single ((:url . "https://github.com/DarwinAwardWinner/emacs-system-specific-settings") (:keywords "configuration"))]) (syslog-mode . [(20160522 2024) ((hide-lines (20130623))) "Major-mode for viewing log files" single ((:url . "https://github.com/vapniks/syslog-mode") (:keywords "unix"))]) (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 ((:url . "http://github.com/rolandwalker/syntactic-sugar") (:keywords "extensions"))]) (synosaurus . [(20151119 1049) ((cl-lib (0 5))) "An extensible thesaurus supporting lookup and substitution." tar ((:url . "https://github.com/rootzlevel/synosaurus"))]) (synonyms . [(20160328 654) nil "Look up synonyms for a word or phrase in a thesaurus." single ((:url . "http://www.emacswiki.org/synonyms.el") (:keywords "text" "dictionary" "thesaurus" "spelling" "apropos" "help"))]) (synonymous . [(20150909 834) ((emacs (24)) (cl-lib (0 5)) (request (0 2 0))) "A thesaurus at your fingertips" single ((:url . "http://github.com/toroidal-code/synonymous.el") (:keywords "utility"))]) (syndicate . [(20160510 1758) ((evil (1 0))) "evil keybindings for org-mode" single ((: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 ((: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 ((:url . "http://hins11.yu-yake.com/"))]) (symon . [(20160514 1904) nil "tiny graphical system monitor" single ((:url . "http://hins11.yu-yake.com/"))]) (sx . [(20160125 1601) ((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 ((:url . "https://github.com/vermiculus/sx.el/") (:keywords "help" "hypermedia" "tools"))]) (sws-mode . [(20150317 1245) nil "(S)ignificant (W)hite(S)pace mode" single ((: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 ((:url . "https://github.com/ShingoFukuyama/emacs-swoop") (:keywords "swoop" "inner" "buffer" "search" "navigation"))]) (switch-window . [(20160229 334) ((cl-lib (0 5))) "A *visual* way to choose a window to switch to" single ((:url . "https://github.com/dimitri/switch-window") (:keywords "window" "navigation"))]) (swiper-helm . [(20151116 330) ((emacs (24 1)) (swiper (0 1 0)) (helm (1 5 3))) "Helm version of Swiper." single ((:url . "https://github.com/abo-abo/swiper-helm") (:keywords "matching"))]) (swiper . [(20160510 2311) ((emacs (24 1)) (ivy (0 8 0))) "Isearch with an overview. Oh, man!" single ((:url . "https://github.com/abo-abo/swiper") (:keywords "matching"))]) (swift-mode . [(20160124 236) ((emacs (24 4))) "Major-mode for Apple's Swift programming language." single ((: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 ((: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 . [(20041012 718) nil "Quick switch between Emacs buffers." single ((:keywords "extensions" "convenience"))]) (swap-regions . [(20160413 1023) ((emacs (24 3))) "Swap two regions of text" single ((: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 ((:url . "https://github.com/ekazakov/swap-buffers") (:keywords "window" "swap" "buffer" "exchange"))]) (svg-mode-line-themes . [(20150425 1306) ((xmlgen (0 4))) "SVG-based themes for mode-line" tar ((:url . "https://github.com/sabof/svg-mode-line-themes"))]) (suscolors-theme . [(20160319 1743) nil "Colorful theme, inspired by Gruvbox." single ((:url . "https://github.com/TheSuspiciousWombat/SusColors-emacs"))]) (supergenpass . [(20130328 2248) nil "SuperGenPass for Emacs" single ((:keywords "supergenpass"))]) (super-save . [(20160426 729) ((emacs (24 4))) "Auto-save buffers, based on your activity." single ((:url . "https://github.com/bbatsov/super-save") (:keywords "convenience"))]) (suomalainen-kalenteri . [(20151129 304) nil "Finnish national and Christian holidays for calendar" tar nil]) (sunshine . [(20160410 1317) ((cl-lib (0 5))) "Provide weather and forecast information." single ((:url . "https://github.com/aaronbieber/sunshine.el") (:keywords "tools" "weather"))]) (sunny-day-theme . [(20140413 1425) nil "Emacs24 theme with a light background." single ((:url . "http://github.com/mswift42/sunny-day-theme"))]) (summarye . [(20130328 327) nil "list up matched strings from a buffer, and display them in summary buffer" single nil]) (sudo-ext . [(20110116 2310) nil "No description available." single nil]) (sudo-edit . [(20160303 2226) nil "Utilities for opening files with sudo" single nil]) (sudden-death . [(20140829 538) nil "Totsuzen-no-Shi" single ((:url . "https://github.com/yewton/sudden-death.el"))]) (subshell-proc . [(20130122 1322) nil "Functions for working with comints" single ((:url . "https://github.com/andrewmains12/subshell-proc"))]) (subr+ . [(20151231 1607) nil "Extensions to standard library `subr.el'." single ((:url . "http://www.emacswiki.org/simple%2b.el") (:keywords "strings" "text"))]) (sublimity . [(20151230 727) nil "smooth-scrolling, minimap and distraction-free mode" tar ((:url . "http://hins11.yu-yake.com/"))]) (sublime-themes . [(20160111 122) nil "A collection of themes based on Sublime Text" tar ((:keywords "faces"))]) (subemacs . [(20160105 359) nil "Evaluating expressions in a fresh Emacs subprocess" single ((:url . "https://github.com/kbauer/subemacs") (:keywords "extensions" "lisp" "multiprocessing"))]) (subatomic256-theme . [(20130620 1910) nil "Fork of subatomic-theme for terminals." single ((:url . "https://github.com/cryon/subatomic256"))]) (subatomic-theme . [(20160126 738) nil "Low contrast bluish color theme" single ((: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 ((:url . "https://github.com/brianc/jade-mode"))]) (stupid-indent-mode . [(20130816 1354) nil "Plain stupid indentation minor mode" single nil]) (stumpwm-mode . [(20140130 1816) nil "special lisp mode for evaluating code into running stumpwm" single ((:keywords "comm" "lisp" "tools"))]) (stripe-buffer . [(20141208 708) ((cl-lib (1 0))) "Use a different background for even and odd lines" single ((:url . "https://github.com/sabof/stripe-buffer"))]) (strings . [(20151231 1607) nil "Miscellaneous string functions." single ((:url . "http://www.emacswiki.org/strings.el") (:keywords "internal" "strings" "text"))]) (string-utils . [(20140508 1341) ((list-utils (0 4 2))) "String-manipulation utilities" single ((:url . "http://github.com/rolandwalker/string-utils") (:keywords "extensions"))]) (string-inflection . [(20150805 256) nil "underscore -> UPCASE -> CamelCase -> lowerCamelCase conversion of names" single ((:keywords "elisp"))]) (string-edit . [(20160410 2356) ((dash (1 2 0))) "Avoid escape nightmares by editing string in separate buffer" single nil]) (strie . [(20160211 1422) ((cl-lib (0 5))) "A simple trie data structure implementation" single nil]) (stock-ticker . [(20150204 252) ((s (1 9 0)) (request (0 2 0))) "Show stock prices in mode line" single ((:url . "https://github.com/hagleitn/stock-ticker") (:keywords "comms"))]) (stickyfunc-enhance . [(20150429 1114) ((emacs (24 3))) "An enhancement to stock `semantic-stickyfunc-mode'" single ((: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"))]) (stgit . [(20140213 348) nil "major mode for StGit interaction" single ((:url . "http://www.procode.org/stgit"))]) (stem . [(20131102 409) nil "Routines for stemming" single ((:url . "https://github.com/yuutayamada/stem") (:keywords "stemming"))]) (stekene-theme . [(20141108 1211) ((emacs (24))) "Low-contrast (except for strings) theme, in light and dark versions." tar nil]) (steam . [(20160427 231) ((cl-lib (0 5))) "Organize and launch Steam games" single ((:url . "http://github.com/Kungsgeten/steam.el") (:keywords "games"))]) (status . [(20151230 608) nil "This package adds support for status icons to Emacs." tar nil]) (state . [(20160422 550) ((emacs (24))) "Quick navigation between workspaces" single ((:url . "https://github.com/thisirs/state.git") (:keywords "convenience" "workspaces"))]) (stash . [(20151117 627) nil "lightweight persistent caching" single ((: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 ((:url . "https://github.com/lujun9972/el-start-menu") (:keywords "convenience" "menu"))]) (standoff-mode . [(20150628 1642) nil "Create stand-off markup, also called external markup." tar nil]) (stan-snippets . [(20160116 2247) ((stan-mode (9 0 5)) (yasnippet (0 8 0))) "Yasnippets for Stan" tar ((:url . "http://github.com/stan-dev/stan-mode") (:keywords "snippets"))]) (stan-mode . [(20160116 2247) nil "Major mode for editing Stan files" tar ((: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 ((:url . "https://github.com/commercialhaskell/stack-ide") (:keywords "haskell" "stack"))]) (ssh-tunnels . [(20141219 318) ((cl-lib (0 5)) (emacs (24))) "Manage SSH tunnels" single ((:url . "http://github.com/death/ssh-tunnels") (:keywords "tools" "convenience"))]) (ssh-config-mode . [(20160326 552) nil "Mode for fontification of ~/.ssh/config" single ((:url . "http://www.mahalito.net/~harley/elisp/ssh-config-mode.el") (:keywords "ssh" "config" "emacs"))]) (ssh-agency . [(20160101 1435) ((emacs (24 4)) (dash (2 10 0))) "use ssh-agent on win32 from Emacs" single ((:url . "https://github.com/magit/ssh-agency"))]) (ssh . [(20120904 1342) nil "Support for remote logins using ssh." single ((:keywords "unix" "comm"))]) (srefactor . [(20160420 33) ((emacs (24 4))) "A refactoring tool based on Semantic parser framework" tar ((:url . "https://github.com/tuhdo/semantic-refactor") (:keywords "c" "languages" "tools"))]) (sr-speedbar . [(20150804 951) nil "Same frame speedbar" single ((:url . "http://www.emacswiki.org/emacs/download/sr-speedbar.el") (:keywords "speedbar" "sr-speedbar.el"))]) (sqlup-mode . [(20151121 630) nil "Upcase SQL words for you" single ((:url . "https://github.com/trevoke/sqlup-mode.el") (:keywords "sql" "tools"))]) (sqlplus . [(20141009 739) 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 nil]) (sql-mssql . [(20160512 137) ((emacs (24 4))) "Connect Microsoft SQL Server with sql.el in Linux/Unix environment" single ((:url . "https://github.com/tumashu/sql-mssql"))]) (sql-indent . [(20150424 1716) nil "indentation of SQL statements" single ((:url . "https://github.com/bsvingen/sql-indent") (:keywords "languages"))]) (sql-impala . [(20160427 1658) nil "comint support for Cloudera Impala" single ((:url . "https://github.com/jterk/sql-impala") (:keywords "sql" "impala"))]) (spu . [(20160515 157) ((emacs (24 4)) (signal (1 0)) (timp (1 2 0))) "Silently upgrade package in the background" tar ((: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 ((:keywords "tools"))]) (sproto-mode . [(20151115 1005) nil "Major mode for editing sproto." single ((:keywords "sproto"))]) (sprintly-mode . [(20121005 2234) ((furl (0 0 2))) "Major mode for dealing with sprint.ly" single ((:url . "https://github.com/sprintly/sprintly-mode"))]) (springboard . [(20160329 1109) ((helm (1 6 9))) "Temporarily change default-directory for one command" single ((:url . "https://github.com/jwiegley/springboard") (:keywords "helm"))]) (spray . [(20160304 1420) nil "a speed reading mode" single ((: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 ((:url . "http://www.pragmaticemacs.com") (:keywords "search" "external"))]) (spotify . [(20160128 106) ((cl-lib (0 5))) "Control the spotify application from emacs" single ((:url . "https://github.com/remvee/spotify-el") (:keywords "convenience"))]) (splitter . [(20130705 50) nil "Manage window splits" single ((: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 ((:url . "https://github.com/syohex/emacs-splitjoin"))]) (sphinx-frontend . [(20151122 212) nil "Launch build process for rst documents via sphinx." single ((: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 ((:url . "https://github.com/naiquevin/sphinx-doc.el") (:keywords "sphinx" "python"))]) (speed-type . [(20150120 2034) ((cl-lib (0 3))) "Practice touch and speed typing" single ((:url . "https://github.com/hagleitn/speed-type") (:keywords "games"))]) (speechd-el . [(20141025 912) nil "Client to speech synthesizers and Braille displays." tar nil]) (speech-tagger . [(20160224 2) ((cl-lib (0 5))) "tag parts of speech using coreNLP" tar ((:url . "https://github.com/cosmicexplorer/speech-tagger") (:keywords "speech" "tag" "nlp" "language" "corenlp" "parsing" "natural"))]) (speck . [(20140901 1135) nil "minor mode for spell checking" single ((:keywords "spell" "checking"))]) (sparql-mode . [(20160316 804) ((cl-lib (0 5)) (async (1 6))) "Edit and interactively evaluate SPARQL queries." tar ((:url . "https://github.com/ljos/sparql-mode"))]) (sparkline . [(20150101 519) ((cl-lib (0 3))) "Make sparkline images from a list of numbers" single ((:keywords "extensions"))]) (spark . [(20160414 1901) ((emacs (24 3))) "sparkline generation" single ((:url . "https://github.com/alvinfrancis/spark") (:keywords "lisp" "data"))]) (spaces . [(20130610 49) nil "Create and switch between named window configurations." single ((:url . "https://github.com/chumpage/chumpy-windows") (:keywords "frames" "convenience"))]) (spacemacs-theme . [(20160508 1215) nil "Color theme with a dark and light versions" tar ((:keywords "color" "theme") (:url . "https://github.com/nashamri/spacemacs-theme"))]) (spaceline . [(20160519 815) ((emacs (24 3)) (cl-lib (0 5)) (powerline (2 3)) (dash (2 11 0)) (s (1 10 0))) "Modeline configuration library for powerline" tar ((:url . "https://github.com/TheBB/spaceline") (:keywords "mode-line" "powerline" "spacemacs"))]) (spacegray-theme . [(20150719 1231) ((emacs (24 1))) "A Hyperminimal UI Theme" single ((:url . "http://github.com/bruce/emacs-spacegray-theme") (:keywords "themes"))]) (sourcetalk . [(20140823 739) ((request (0 2 0))) "SourceTalk (http://sourcetalk.net) plugin for Emacs" single ((:url . "https://github.com/malroc/sourcetalk_emacs") (:keywords "sourcetalk" "code" "discussion"))]) (sourcemap . [(20160511 2137) ((cl-lib (0 5)) (emacs (24))) "Sourcemap parser" single ((:url . "https://github.com/syohex/emacs-sourcemap"))]) (sourcekit . [(20160510 2017) ((emacs (24 3)) (dash (2 12 1)) (dash-functional (1 2 0))) "Library to interact with sourcekittendaemon" single ((: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 ((: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 ((:keywords "soundcloud" "music" "audio"))]) (sound-wav . [(20140303 457) ((deferred (0 3 1)) (cl-lib (0 5))) "Play wav file" single ((:url . "https://github.com/syohex/emacs-sound-wav"))]) (sotlisp . [(20160509 1504) ((emacs (24 1))) "Write lisp at the speed of thought." single ((:url . "https://github.com/Malabarba/speed-of-thought-lisp") (:keywords "convenience" "lisp"))]) (sotclojure . [(20160421 1811) ((emacs (24 1)) (clojure-mode (4 0 0)) (cider (0 8)) (sotlisp (1 3))) "Write clojure at the speed of thought." single ((:url . "https://github.com/Malabarba/speed-of-thought-clojure") (:keywords "convenience" "clojure"))]) (sos . [(20141214 2003) ((org (7))) "StackOverflow Search" single ((:url . "https://github.com/omouse/emacs-sos") (:keywords "tools" "search" "questions"))]) (soothe-theme . [(20141027 741) ((emacs (24 1))) "a dark colorful theme for Emacs24." single ((:url . "https://github.com/jasonm23/emacs-soothe-theme"))]) (sonic-pi . [(20150919 330) ((cl-lib (0 5)) (osc (0 1)) (dash (2 2 0)) (emacs (24))) "A Emacs client for SonicPi" tar ((:url . "http://www.github.com/repl-electric/sonic-pi.el") (:keywords "sonicpi" "ruby"))]) (solidity-mode . [(20160505 203) nil "Major mode for ethereum's solidity language" single ((:keywords "languages"))]) (solarized-theme . [(20160515 442) ((emacs (24 1)) (cl-lib (0 5)) (dash (2 6 0))) "The Solarized color theme, ported to Emacs." tar nil]) (soft-stone-theme . [(20140614 135) ((emacs (24))) "Emacs 24 theme with a light background." single ((:url . "http://github.com/mswift42/soft-stone-theme"))]) (soft-morning-theme . [(20150918 1341) nil "Emacs24 theme with a light background." single ((:url . "http://github.com/mswift42/soft-morning-theme"))]) (soft-charcoal-theme . [(20140420 943) nil "Dark charcoal theme with soft colors" single ((:url . "http://github.com/mswift42/soft-charcoal-theme"))]) (snippet . [(20130210 1515) nil "Insert snippets of text into a buffer" single nil]) (snapshot-timemachine . [(20160222 132) ((emacs (24 4)) (cl-lib (0 5))) "Step through (Btrfs, ZFS, ...) snapshots of files" single ((:url . "https://github.com/mrBliss/snapshot-timemachine"))]) (snakemake-mode . [(20160517 1844) ((emacs (24)) (cl-lib (0 5)) (magit-popup (2 4 0))) "Major mode for editing Snakemake files" tar ((:url . "https://github.com/kyleam/snakemake-mode") (:keywords "tools"))]) (smyx-theme . [(20141127 28) nil "smyx Color Theme" single ((:keywords "color" "theme" "smyx"))]) (smtpmail-multi . [(20160218 1549) nil "Use different smtp servers for sending mail" single ((:url . "https://github.com/vapniks/smtpmail-multi") (:keywords "comm"))]) (smotitah . [(20150218 230) nil "Modular emacs configuration framework" tar nil]) (smooth-scrolling . [(20160227 1715) nil "Make emacs scroll smoothly" single ((:url . "http://github.com/aspiers/smooth-scrolling/") (:keywords "convenience"))]) (smooth-scroll . [(20130321 2114) nil "Minor mode for smooth scrolling and in-place scrolling." single ((:url . "http://www.emacswiki.org/emacs/download/smooth-scroll.el") (:keywords "convenience" "emulations" "frames"))]) (sml-modeline . [(20120110 1240) nil "Show position in a scrollbar like way in mode-line" single ((:url . "http://bazaar.launchpad.net/~nxhtml/nxhtml/main/annotate/head%3A/util/sml-modeline.el"))]) (smex . [(20151212 1409) ((emacs (24))) "M-x interface with Ido-style fuzzy matching." single ((:url . "http://github.com/nonsequitur/smex/") (:keywords "convenience" "usability"))]) (smeargle . [(20151013 2242) ((cl-lib (0 5)) (emacs (24))) "Highlighting region by last updated time" single ((:url . "https://github.com/syohex/emacs-smeargle"))]) (smblog . [(20160317 430) ((emacs (24 3))) "samba log viewer" single ((:url . "http://github.com/aaptel/smblog-mode"))]) (smarty-mode . [(20100703 458) nil "major mode for editing smarty templates" single ((:url . "none yet") (:keywords "smarty" "php" "languages" "templates"))]) (smartwin . [(20160513 56) ((emacs (24 4))) "A minor mode shows shell like buffers." single ((:url . "https://github.com/jerryxgh/smartwin") (:keywords "convenience"))]) (smartscan . [(20131230 739) nil "Jumps between other symbols found at point" single ((:keywords "extensions"))]) (smartrep . [(20150508 1930) nil "Support sequential operation which omitted prefix keys." single ((:url . "https://github.com/myuhe/smartrep.el") (:keywords "convenience"))]) (smartparens . [(20160521 508) ((dash (2 12 1)) (cl-lib (0 3))) "Automatic insertion, wrapping and paredit-like navigation with user defined pairs." tar nil]) (smart-window . [(20130214 1142) nil "vim-like window controlling plugin" single ((:url . "https://github.com/dryman/smart-window.el") (:keywords "window"))]) (smart-tabs-mode . [(20140331 1629) nil "Intelligently indent with tabs, align with spaces!" single ((:url . "http://www.emacswiki.org/emacs/SmartTabs") (:keywords "languages"))]) (smart-tab . [(20150703 917) nil "Intelligent tab completion and indentation." single ((:url . "http://github.com/genehack/smart-tab/tree/master") (:keywords "extensions"))]) (smart-shift . [(20150202 2325) nil "Smart shift text left/right." single ((:url . "https://github.com/hbin/smart-shift") (:keywords "convenience" "tools"))]) (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 ((:url . "https://github.com/uk-ar/smart-region") (:keywords "marking" "region"))]) (smart-newline . [(20131207 1940) nil "Provide smart newline for one keybind." single nil]) (smart-mode-line-powerline-theme . [(20160520 854) ((emacs (24 3)) (powerline (2 2)) (smart-mode-line (2 5))) "smart-mode-line theme that mimics the powerline appearance." tar ((:url . "http://github.com/Bruce-Connor/smart-mode-line") (:keywords "mode-line" "faces" "themes"))]) (smart-mode-line . [(20160506 747) ((emacs (24 3)) (rich-minority (0 1 1))) "A color coded smart mode-line." tar ((: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 ((:keywords "mark" "restore"))]) (smart-indent-rigidly . [(20141205 1615) nil "Smart rigid indenting" single ((:url . "https://github.com/re5et/smart-indent-rigidly") (:keywords "indenting" "coffee-mode" "haml-mode" "sass-mode"))]) (smart-forward . [(20140430 13) ((expand-region (0 8 0))) "Semantic navigation" single ((:keywords "navigation"))]) (smart-cursor-color . [(20141124 919) nil "Change cursor color dynamically" single ((:url . "https://github.com/7696122/smart-cursor-color/") (:keywords "cursor" "color" "face"))]) (smart-compile . [(20150519 947) nil "an interface to `compile'" single ((:keywords "tools" "unix"))]) (smart-comment . [(20160322 1139) nil "smarter commenting" single ((:keywords "lisp"))]) (sly-repl-ansi-color . [(20160214 18) ((sly (0)) (cl-lib (0 5))) "Add ANSI colors support to the sly mrepl." single ((:url . "https://github.com/PuercoPop/sly-repl-ansi-color") (:keywords "sly"))]) (sly-quicklisp . [(20160204 815) ((sly (1 0 0 -2 2))) "A template SLY contrib" tar ((: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 ((: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 ((: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 ((: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 ((:keywords "convenience" "lisp" "abbrev"))]) (sly . [(20160522 927) ((emacs (24 3))) "Sylvester the Cat's Common Lisp IDE" tar ((:url . "https://github.com/joaotavora/sly") (:keywords "languages" "lisp" "sly"))]) (slovak-holidays . [(20150418 155) nil "Adds a list of slovak holidays to Emacs calendar" single ((:keywords "calendar"))]) (slirm . [(20160201 625) ((emacs (24 4))) "Systematic Literature Review Mode for Emacs." single ((:url . "http://github.com/fbie/slirm"))]) (slime-volleyball . [(20140717 2141) nil "An SVG Slime Volleyball Game" tar ((:keywords "games"))]) (slime-theme . [(20141115 2302) ((emacs (24 0))) "an Emacs 24 theme based on Slime (tmTheme)" single ((:url . "https://github.com/emacsfodder/tmtheme-to-deftheme"))]) (slime-ritz . [(20130218 1537) nil "slime extensions for ritz" single ((:url . "https://github.com/pallet/ritz") (:keywords "languages" "lisp" "slime"))]) (slime-docker . [(20160506 1408) ((emacs (24)) (slime (2 16)) (docker-tramp (0 1)) (cl-lib (0 5))) "Integration of SLIME with Docker containers." tar ((:url . "https://github.com/daewok/slime-docker") (:keywords "docker" "lisp" "slime"))]) (slime-company . [(20151210 614) ((slime (2 13)) (company (0 9 0))) "slime completion backend for company mode" single ((:keywords "convenience" "lisp" "abbrev"))]) (slime-annot . [(20131230 1908) ((slime (0))) "cl-annot support for SLIME" single ((:url . "https://github.com/arielnetworks/cl-annot"))]) (slime . [(20160521 915) ((cl-lib (0 5)) (macrostep (0 9))) "Superior Lisp Interaction Mode for Emacs" tar ((:url . "https://github.com/slime/slime") (:keywords "languages" "lisp" "slime"))]) (slim-mode . [(20140611 950) nil "Major mode for editing Slim files" single ((:url . "http://github.com/slim-template/emacs-slim") (:keywords "markup" "language"))]) (slideview . [(20150324 1540) ((cl-lib (0 3))) "File slideshow" single ((:url . "https://github.com/mhayashi1120/Emacs-slideview") (:keywords "files"))]) (slamhound . [(20140506 1618) nil "Rip Clojure namespaces apart and rebuild them." single ((:url . "https://github.com/technomancy/slamhound") (:keywords "tools" "lisp"))]) (slack . [(20160521 722) ((websocket (1 5)) (request (0 2 0)) (oauth2 (0 10)) (circe (2 2)) (alert (1 2)) (emojify (0 2))) "Slack client for Emacs" tar ((:url . "https://github.com/yuya373/emacs-slack"))]) (skype . [(20131001 2118) nil "skype UI for emacs users.." tar ((:keywords "skype" "chat"))]) (skewer-reload-stylesheets . [(20160520 341) ((skewer-mode (1 5 3))) "live-edit CSS stylesheets." tar nil]) (skewer-mode . [(20150914 1304) ((simple-httpd (1 4 0)) (js2-mode (20090723)) (emacs (24))) "live browser JavaScript, CSS, and HTML interaction" tar nil]) (skewer-less . [(20131015 622) ((skewer-mode (1 5 3))) "Skewer support for live LESS stylesheet updates" single ((:keywords "languages" "tools"))]) (skeletor . [(20151220 2054) ((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 nil]) (simplezen . [(20130421 300) ((s (1 4 0)) (dash (1 1 0))) "A simple subset of zencoding-mode for Emacs." single nil]) (simplenote2 . [(20160318 603) ((request-deferred (0 2 0))) "Interact with simple-note.appspot.com" single ((:keywords "simplenote"))]) (simplenote . [(20141118 640) nil "Interact with simple-note.appspot.com" single ((:keywords "simplenote"))]) (simpleclip . [(20150804 1010) nil "Simplified access to the system clipboard" single ((:url . "http://github.com/rolandwalker/simpleclip") (:keywords "convenience"))]) (simple-screen . [(20141023 758) nil "Simple screen configuration manager" single ((: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 ((:keywords "remember" "the" "milk" "productivity" "todo"))]) (simple-mpc . [(20151227 1034) nil "provides a simple interface to mpc" tar ((:keywords "multimedia" "mpd" "mpc"))]) (simple-httpd . [(20150430 1755) ((cl-lib (0 3))) "pure elisp HTTP server" single ((:url . "https://github.com/skeeto/emacs-http-server"))]) (simple-call-tree . [(20160319 1016) ((emacs (24 3)) (anaphora (1 0 0))) "analyze source code based on font-lock text-properties" single ((:url . "http://www.emacswiki.org/emacs/download/simple-call-tree.el") (:keywords "programming"))]) (simple+ . [(20151231 1600) ((strings (0))) "Extensions to standard library `simple.el'." single ((:url . "http://www.emacswiki.org/simple%2b.el") (:keywords "internal" "lisp" "extensions" "abbrev"))]) (simp . [(20160315 924) nil "Simple project definition, chiefly for file finding, and grepping" tar ((:url . "https://github.com/re5et/simp") (:keywords "project" "grep" "find"))]) (silkworm-theme . [(20160217 509) ((emacs (24))) "Light theme with pleasant, low contrast colors." single nil]) (signature . [(20140730 1249) nil "Signature Survey" tar nil]) (signal . [(20160424 10) ((emacs (24)) (cl-lib (0 5))) "Advanced hook" single ((: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 ((:url . "https://github.com/nlamirault/sift.el") (:keywords "sift" "ack" "pt" "ag" "grep" "search"))]) (sicp . [(20151130 757) nil "Structure and Interpretation of Computer Programs in info format" tar ((:url . "https://mitpress.mit.edu/sicp"))]) (sibilant-mode . [(20151119 1345) nil "Support for the Sibilant programming language" single ((:url . "http://sibilantjs.info") (:keywords "languages"))]) (shut-up . [(20150423 522) ((cl-lib (0 3)) (emacs (24))) "Shut up would you!" single ((:url . "http://github.com/rejeep/shut-up.el"))]) (shrink-whitespace . [(20150916 1215) nil "Whitespace removal DWIM key" single ((:url . "https://github.com/jcpetkovich/shrink-whitespace.el") (:keywords "editing"))]) (shpec-mode . [(20150530 222) nil "Minor mode for shpec specification" single ((:url . "http://github.com/shpec/shpec-mode") (:keywords "languages" "tools"))]) (showtip . [(20080329 1959) nil "Show tip at cursor" single ((:keywords "help"))]) (showkey . [(20151231 1559) nil "Show keys as you use them." single ((:url . "http://www.emacswiki.org/showkey.el") (:keywords "help" "keys" "mouse"))]) (show-marks . [(20130805 749) ((fm (1 0))) "Navigate and visualize the mark-ring" single ((: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 ((:url . "https://github.com/smmcg/showcss-mode") (:keywords "hypermedia"))]) (shoulda . [(20140616 1133) ((cl-lib (0 5))) "Shoulda test support for ruby" single ((:keywords "ruby" "tests" "shoulda"))]) (shm . [(20160211 1154) nil "Structured Haskell Mode" tar ((:keywords "development" "haskell" "structured"))]) (shimbun . [(20120718 2038) nil "interfacing with web newspapers" tar ((: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 ((:url . "https://github.com/sabof/shift-text"))]) (shift-number . [(20160419 1257) nil "Increase/decrease the number at point" single ((:url . "https://github.com/alezost/shift-number.el") (:keywords "convenience"))]) (shen-elisp . [(20160522 1457) ((emacs (24 3))) "Shen implementation in Elisp" tar ((:keywords "shen" "elisp") (:url . "http://github.com/deech/shen-elisp"))]) (shelltest-mode . [(20141227 248) nil "Major mode for shelltestrunner" single ((: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 ((:url . "http://github.com/mhayashi1120/Emacs-shelldoc") (:keywords "applications"))]) (shell-toggle . [(20150226 611) nil "Toggle to and from the shell buffer" single ((:url . "https://github.com/knu/shell-toggle.el") (:keywords "processes"))]) (shell-switcher . [(20160111 2335) ((emacs (24))) "Provide fast switching between shell buffers." tar nil]) (shell-split-string . [(20151224 208) nil "Split strings using shell-like syntax" single ((:url . "https://github.com/10sr/shell-split-string-el") (:keywords "utility" "library" "shell" "string"))]) (shell-pop . [(20160425 754) ((emacs (24))) "helps you to use shell easily on Emacs. Only one key action to work." single ((:url . "http://github.com/kyagi/shell-pop-el") (:keywords "shell" "terminal" "tools"))]) (shell-history . [(20100504 150) nil "integration with shell history" single ((: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 ((:keywords "unix" "tools" "processes"))]) (shell-current-directory . [(20140101 1554) nil "create new shell based on buffer directory" single ((:keywords "shell" "comint"))]) (shell-command . [(20090621 632) nil "enables tab-completion for `shell-command'" single ((:keywords "shell"))]) (shampoo . [(20131230 219) nil "A remote Smalltalk development mode" tar nil]) (shakespeare-mode . [(20150708 712) nil "A major mode for editing Shakespearean templates." single ((:url . "http://github.com/CodyReichert/shakespeare-mode") (:keywords "shakespeare" "hamlet" "lucius" "julius" "mode"))]) (shader-mode . [(20151030 704) ((emacs (24))) "Major mode for shader" single ((:url . "https://github.com/midnightSuyama/shader-mode"))]) (shadchen . [(20141102 1039) nil "pattern matching for elisp" single nil]) (shackle . [(20160516 419) ((cl-lib (0 5))) "Enforce rules for popups" single ((:url . "https://github.com/wasamasa/shackle") (:keywords "convenience"))]) (sexp-move . [(20150915 1030) nil "Improved S-Expression Movement" single ((:url . "https://gitlab.com/elzair/sexp-move") (:keywords "sexp"))]) (seti-theme . [(20150314 122) nil "A dark colored theme, inspired by Seti Atom Theme" single ((:url . "https://github.com/caisah/seti-theme") (:keywords "themes"))]) (session . [(20120510 1700) nil "use variables, registers and buffer places across sessions" single ((:url . "http://emacs-session.sourceforge.net/") (:keywords "session" "session management" "desktop" "data" "tools"))]) (serverspec . [(20150623 455) ((dash (2 6 0)) (s (1 9 0)) (f (0 16 2)) (helm (1 6 1))) "Serverspec minor mode" tar ((: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 ((: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 . [(20130908 1122) ((emacs (24))) "Ports of some Clojure sequence functions." single ((:keywords "convenience"))]) (seoul256-theme . [(20150714 1535) nil "No description available." single nil]) (sentence-navigation . [(20150914 2146) ((ample-regexps (0 1)) (emacs (24 4))) "Commands to navigate one-spaced sentences." single ((:url . "https://github.com/noctuid/emacs-sentence-navigation") (:keywords "sentence" "evil"))]) (sentence-highlight . [(20121026 750) nil "highlight the current sentence" single ((:keywords "plain text" "writing" "highlight" "editing" "focus"))]) (sensitive . [(20131015 635) ((emacs (24)) (sequences (0 1 0))) "A dead simple way to load sensitive information" single ((:keywords "convenience"))]) (sendto . [(20160425 550) ((emacs (24 4))) "send the region content to a function" single ((:url . "https://github.com/lujun9972/sendto.el") (:keywords "convenience" "region"))]) (semi . [(20160301 700) ((flim (1 14 9))) "A library to provide MIME features." tar nil]) (selectric-mode . [(20151201 718) nil "IBM Selectric mode for Emacs" tar ((:keywords "multimedia" "convenience" "typewriter" "selectric"))]) (selected . [(20160428 37) nil "Keymap for when region is active" single ((:url . "http://github.com/Kungsgeten/selected.el") (:keywords "convenience"))]) (select-themes . [(20160220 1706) nil "Color theme selection with completing-read" single ((:url . "https://github.com/jasonm23/emacs-select-themes"))]) (sekka . [(20150708 459) ((cl-lib (0 3)) (concurrent (0 3 1)) (popup (0 5 2))) "A client for Sekka IME server" single ((:url . "https://github.com/kiyoka/sekka") (:keywords "ime" "skk" "japanese"))]) (seethru . [(20150218 1029) ((shadchen (1 4))) "Easily change Emacs' transparency" single ((:url . "http://github.com/benaiah/seethru") (:keywords "lisp" "tools" "alpha" "transparency"))]) (seeing-is-believing . [(20151010 1029) nil "minor mode for running the seeing-is-believing ruby gem" single nil]) (second-sel . [(20151231 1553) nil "Secondary selection commands" single ((:url . "http://www.emacswiki.org/second-sel.el") (:keywords "region" "selection" "yank" "paste" "edit"))]) (seclusion-mode . [(20121118 1553) nil "Edit in seclusion. A Dark Room mode." single ((: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 nil]) (search-web . [(20150312 403) nil "Post web search queries using `browse-url'." single nil]) (scss-mode . [(20150107 1400) nil "Major mode for editing SCSS files" single ((:url . "https://github.com/antonj/scss-mode") (:keywords "scss" "css" "mode"))]) (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 ((:keywords "scratch"))]) (scratch-pop . [(20150820 139) ((popwin (0 7 0 -3))) "Generate, popup (& optionally backup) scratch buffer(s)." single ((:url . "http://hins11.yu-yake.com/"))]) (scratch-palette . [(20150225 42) ((popwin (0 7 0 -3))) "make scratch buffer for each files" single ((:url . "http://hins11.yu-yake.com/"))]) (scratch-message . [(20160520 1454) nil "Changing message in your scratch buffer" single ((:url . "https://github.com/thisirs/scratch-message.git") (:keywords "util" "scratch"))]) (scratch-log . [(20141114 2343) nil "Utility for *scratch* buffer." single nil]) (scratch-ext . [(20140103 2116) nil "Extensions for *scratch*" single ((:url . "https://github.com/kyanagi/scratch-ext-el"))]) (scratch . [(20120830 1028) nil "Mode-specific scratch buffers" tar ((:keywords "editing"))]) (scpaste . [(20151208 1735) ((htmlize (1 39))) "Paste to the web via scp." single ((:url . "https://github.com/technomancy/scpaste") (:keywords "convenience" "hypermedia"))]) (sclang-snippets . [(20130513 51) ((yasnippet (0 8 0))) "Snippets for the SuperCollider Emacs mode" tar ((: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 ((:keywords "sclang" "supercollider" "languages" "tools"))]) (scion . [(20130315 555) nil "Haskell Minor Mode for Interacting with the Scion Library" single ((:url . "https://code.google.com/p/scion-lib/"))]) (scheme-here . [(20141028 18) nil "cmuscheme extension for multiple inferior processes" single ((:url . "https://github.com/kaihaosw/scheme-here") (:keywords "scheme"))]) (scheme-complete . [(20160502 1639) nil "Smart tab completion for Scheme in Emacs" single nil]) (scf-mode . [(20151121 1848) nil "shorten file-names in compilation type buffers" single ((:url . "https://github.com/lewang/scf-mode") (:keywords "compilation"))]) (scala-mode . [(20160519 731) nil "Major mode for editing Scala" tar ((: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 ((:url . "http://hins11.yu-yake.com/"))]) (scad-mode . [(20160205 1043) nil "A major mode for editing OpenSCAD code" single ((:url . "https://raw.github.com/openscad/openscad/master/contrib/scad-mode.el") (:keywords "languages"))]) (sbt-mode . [(20160516 1536) nil "Interactive support for sbt projects" tar ((:url . "https://github.com/ensime/emacs-sbt-mode") (:keywords "languages"))]) (say-what-im-doing . [(20160512 1155) nil "dictate what you're doing with text to speech" single ((: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 ((:url . "http://www.emacswiki.org/cgi-bin/wiki/download/savekill.el") (:keywords "tools"))]) (save-visited-files . [(20151021 1043) nil "save opened files across sessions" single ((:url . "http://github.com/nflath/save-visited-files"))]) (save-load-path . [(20140206 414) nil "save load-path and reuse it to test" single ((:url . "http://www.emacswiki.org/cgi-bin/wiki/download/save-load-path.el") (:keywords "lisp"))]) (sauron . [(20160501 1045) nil "Track (erc/org/dbus/...) events and react to them." tar nil]) (sass-mode . [(20160506 2045) ((haml-mode (3 0 15)) (cl-lib (0 5))) "Major mode for editing Sass files" single ((:url . "http://github.com/nex3/haml/tree/master") (:keywords "markup" "language" "css"))]) (sane-term . [(20150917 1602) ((emacs (24 1))) "Multi Term is crazy. This is not." single ((:url . "http://github.com/adamrt/sane-term"))]) (salt-mode . [(20150904 1113) ((yaml-mode (0 0 12)) (mmm-mode (0 5 4)) (mmm-jinja2 (0 0 1))) "Major mode for Salt States" single ((:url . "https://github.com/beardedprojamz/salt-mode") (:keywords "languages"))]) (sage-shell-mode . [(20160516 2237) ((cl-lib (0 5)) (deferred (0 3 1)) (emacs (24))) "A front-end for Sage Math" tar ((:url . "https://github.com/stakemori/sage-shell-mode") (:keywords "sage" "math"))]) (sackspace . [(20130719 256) nil "A better backspace" single ((:url . "http://github.com/cofi/sackspace.el") (:keywords "delete" "convenience"))]) (s-buffer . [(20130605 1424) ((s (1 6 0)) (noflet (0 0 3))) "s operations for buffers" single ((:url . "http://github.com/nicferrier/emacs-s-buffer") (:keywords "lisp"))]) (s . [(20160508 2357) nil "The long lost Emacs string manipulation library." single ((:keywords "strings"))]) (rvm . [(20150402 742) nil "Emacs integration for rvm" single ((:url . "http://www.emacswiki.org/emacs/RvmEl") (:keywords "ruby" "rvm"))]) (rustfmt . [(20160217 542) ((emacs (24))) "Format rust code using rustfmt" single ((:url . "https://github.com/fbergroth/emacs-rustfmt") (:keywords "convenience"))]) (rust-mode . [(20160517 346) ((emacs (24 0))) "A major emacs mode for editing Rust source code" single ((:url . "https://github.com/rust-lang/rust-mode") (:keywords "languages"))]) (runtests . [(20150807 131) nil "Run unit tests from Emacs" single ((:url . "https://github.com/sunesimonsen/emacs-runtests") (:keywords "test"))]) (runner . [(20160523 141) nil "Improved \"open with\" suggestions for dired" single ((:url . "https://github.com/thamer/runner") (:keywords "shell command" "dired" "file extension" "open with"))]) (ruby-tools . [(20151209 815) nil "Collection of handy functions for ruby-mode." tar nil]) (ruby-test-mode . [(20160509 1050) ((ruby-mode (1 0)) (pcre2el (1 8))) "Minor mode for Behaviour and Test Driven" single ((:keywords "ruby" "unit" "test" "rspec"))]) (ruby-refactor . [(20160214 850) ((ruby-mode (1 2))) "A minor mode which presents various Ruby refactoring helpers." single ((:url . "https://github.com/ajvargo/ruby-refactor") (:keywords "refactor" "ruby"))]) (ruby-interpolation . [(20131112 852) nil "Ruby string interpolation helpers" single ((:url . "http://github.com/leoc/ruby-interpolation.el"))]) (ruby-hash-syntax . [(20141010 839) nil "Toggle ruby hash syntax between classic and 1.9 styles" single ((:url . "https://github.com/purcell/ruby-hash-syntax") (:keywords "languages"))]) (ruby-guard . [(20160131 1752) nil "Launching guard directly inside emacs." single ((:url . "https://github.com/cheunghy/ruby-guard") (:keywords "ruby" "guard" "rails"))]) (ruby-factory . [(20160101 2321) ((inflections (1 1))) "Minor mode for Ruby test object generation libraries" tar ((:url . "http://github.com/sshaw/ruby-factory-mode") (:keywords "ruby" "rails" "convenience"))]) (ruby-end . [(20141215 423) nil "Automatic insertion of end blocks for Ruby" single ((:url . "http://github.com/rejeep/ruby-end") (:keywords "speed" "convenience" "ruby"))]) (ruby-electric . [(20150424 752) nil "Minor mode for electrically editing ruby code" single ((:url . "https://github.com/knu/ruby-electric.el") (:keywords "languages" "ruby"))]) (ruby-dev . [(20130811 151) nil "Interactive developement environment for Ruby." tar nil]) (ruby-compilation . [(20150708 2340) ((inf-ruby (2 2 1))) "run a ruby process in a compilation buffer" single ((:url . "https://github.com/eschulte/rinari") (:keywords "test" "convenience"))]) (ruby-block . [(20131210 1931) nil "highlight matching block" single ((:keywords "languages" "faces" "ruby"))]) (ruby-additional . [(20091002 345) ((emacs (24 3)) (ruby-mode (1 2))) "ruby-mode extensions yet to be merged into Emacs" tar ((:url . "http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/misc/") (:keywords "ruby" "languages"))]) (rubocop . [(20151123 2137) ((dash (1 0 0)) (emacs (24))) "An Emacs interface for RuboCop" single ((: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 ((:url . "https://github.com/pmiddend/emacs-rtm") (:keywords "remember" "the" "milk" "productivity" "todo"))]) (rtags . [(20160522 1033) nil "A front-end for rtags" tar ((:url . "http://rtags.net"))]) (rspec-mode . [(20160425 1457) ((ruby-mode (1 0)) (cl-lib (0 4))) "Enhance ruby-mode for RSpec" tar ((:url . "http://github.com/pezra/rspec-mode") (:keywords "rspec" "ruby"))]) (rsense . [(20100510 2105) nil "RSense client for Emacs" single ((:keywords "convenience"))]) (rpn-calc . [(20150302 534) ((popup (0 4))) "quick RPN calculator for hackers" single ((:url . "http://hins11.yu-yake.com/"))]) (rpm-spec-mode . [(20150411 855) nil "RPM spec file editing commands for Emacs/XEmacs" single ((:keywords "unix" "languages"))]) (roy-mode . [(20121208 358) nil "Roy major mode" single ((:url . "https://github.com/folone/roy-mode") (:keywords "extensions"))]) (rotate . [(20160214 2318) nil "Rotate the layout of emacs" single ((:url . "https://github.com/daic-h/emacs-rotate") (:keywords "window" "layout"))]) (rope-read-mode . [(20160504 147) nil "Rearrange lines to read text smoothly" single ((: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 nil]) (robots-txt-mode . [(20160312 751) nil "Major mode for editing robots.txt" single ((:keywords "web"))]) (robe . [(20160518 259) ((inf-ruby (2 3 0))) "Code navigation, documentation lookup and completion for Ruby" tar ((:url . "https://github.com/dgutov/robe") (:keywords "ruby" "convenience" "rails"))]) (rnc-mode . [(20121227 1502) nil "A major mode for editing RELAX NG Compact syntax." single nil]) (rings . [(20140102 1536) nil "Buffer rings. Like tabs, but better." single ((: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 ((:url . "https://github.com/eschulte/rinari") (:keywords "ruby" "rails" "project" "convenience" "web"))]) (rigid-tabs . [(20150807 856) ((emacs (24 3))) "Rigidify and adjust the visual alignment of TABs" single ((:url . "https://github.com/wavexx/rigid-tabs.el") (:keywords "diff" "whitespace" "version control" "magit"))]) (rich-minority . [(20151201 400) ((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"))]) (rhtml-mode . [(20130422 611) nil "major mode for editing RHTML files" tar nil]) (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 nil]) (revive . [(20150417 1555) nil "Resume Emacs" single nil]) (review-mode . [(20150110 612) nil "major mode for ReVIEW" single ((:url . "https://github.com/kmuto/review-el"))]) (reverse-theme . [(20141204 1745) nil "Reverse theme for Emacs" single ((:url . "https://github.com/syohex/emacs-reverse-theme"))]) (reveal-next . [(20151231 1550) 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 ((:url . "https://github.com/kaz-yos/reveal-in-osx-finder") (:keywords "os x" "finder"))]) (restclient-test . [(20160517 1040) ((emacs (24 4)) (restclient (0))) "Run tests with restclient.el" single ((:url . "https://github.com/simenheg/restclient-test.el"))]) (restclient-helm . [(20160407 249) ((restclient (0)) (helm (1 9 4))) "helm interface for restclient.el" single ((:keywords "http" "helm"))]) (restclient . [(20160510 138) nil "An interactive HTTP client for Emacs" single ((:keywords "http"))]) (restart-emacs . [(20151203 835) nil "Restart emacs from within emacs" single ((:url . "https://github.com/iqbalansari/restart-emacs") (:keywords "convenience"))]) (resize-window . [(20160511 2005) ((emacs (24))) "easily resize windows" single ((:url . "https://github.com/dpsutton/resize-mode") (:keywords "window" "resize"))]) (requirejs-mode . [(20130215 1304) nil "Improved AMD module management" single ((: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 ((: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 nil]) (request . [(20160424 2032) ((emacs (24)) (cl-lib (0 5))) "Compatible layer for URL request in Emacs" single nil]) (req-package . [(20160227 1005) ((use-package (1 0)) (dash (2 7 0)) (log4e (0 2 0)) (ht (0))) "A use-package wrapper for package runtime dependencies management" tar ((:url . "https://github.com/edvorg/req-package") (:keywords "dotemacs" "startup" "speed" "config" "package"))]) (repo . [(20160114 1114) ((emacs (24 3))) "Running repo from Emacs" single ((:url . "https://github.com/canatella/repo-el") (:keywords "convenience"))]) (replace-symbol . [(20160517 1712) nil "Rename symbols in expressions or buffers" single ((:url . "https://github.com/bmastenbrook/replace-symbol-el"))]) (replace-pairs . [(20160207 451) ((emacs (24 4))) "Query-replace pairs of things" single ((:url . "https://github.com/davidshepherd7/replace-pairs"))]) (replace-from-region . [(20150406 1729) nil "Replace commands whose query is from region" single ((:url . "http://www.emacswiki.org/emacs/download/replace-from-region.el") (:keywords "replace" "search" "region"))]) (replace+ . [(20160508 843) nil "Extensions to `replace.el'." single ((:url . "http://www.emacswiki.org/replace%2b.el") (:keywords "matching" "help" "internal" "tools" "local"))]) (repl-toggle . [(20160119 421) ((fullframe (0 0 5))) "Switch to/from repl buffer for current major-mode" single ((:keywords "repl" "buffers" "toggle"))]) (repeatable-motion . [(20150629 1112) ((emacs (24))) "Make repeatable versions of motions" tar ((:url . "https://github.com/willghatch/emacs-repeatable-motion") (:keywords "motion" "repeatable"))]) (remark-mode . [(20151004 955) ((markdown-mode (2 0))) "Major mode for the remark slideshow tool" tar ((:keywords "remark" "slideshow" "markdown"))]) (relax . [(20131029 1434) ((json (1 2))) "For browsing and interacting with CouchDB" single ((:url . "http://github.com/technomancy/relax.el") (:keywords "database" "http"))]) (relative-line-numbers . [(20151006 1446) ((emacs (24))) "Display relative line numbers on the margin" single ((:url . "https://github.com/Fanael/relative-line-numbers"))]) (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 ((:url . "https://github.com/proofit404/relative-buffers"))]) (register-channel . [(20150513 2059) nil "Jump around fast using registers" single ((:keywords "convenience"))]) (region-state . [(20151128 238) nil "Show the number of chars/lines or rows/columns in the region" single ((:url . "https://github.com/xuchunyang/region-state.el") (:keywords "convenience"))]) (region-bindings-mode . [(20140407 1514) nil "Enable custom bindings when mark is active." single ((:url . "https://github.com/fgallina/region-bindings-mode") (:keywords "convenience"))]) (regex-tool . [(20131104 1434) nil "A regular expression evaluation tool for programmers" single ((:url . "http://www.newartisans.com/") (:keywords "regex" "languages" "programming" "development"))]) (regex-dsl . [(20100124 228) nil "lisp syntax for regexps" single nil]) (refheap . [(20140902 1402) ((json (1 2))) "A library for pasting to https://refheap.com" single ((:url . "https://github.com/Raynes/refheap.el"))]) (redtick . [(20160516 1416) ((emacs (24))) "Smallest pomodoro timer (1 char)" tar ((:url . "http://github.com/ferfebles/redtick") (:keywords "pomodoro" "timer"))]) (redshank . [(20120510 1230) nil "No description available." tar nil]) (redpen-paragraph . [(20160512 622) ((emacs (24)) (cl-lib (0 5)) (json (1 4))) "RedPen interface." single ((: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 ((:url . "https://github.com/emacs-pe/redis.el") (:keywords "convenience"))]) (recursive-narrow . [(20140902 1027) nil "narrow-to-region that operates recursively" single ((:url . "http://github.com/nflath/recursive-narrow"))]) (rectangle-utils . [(20160427 1024) ((emacs (24)) (cl-lib (0 5))) "Some useful rectangle functions." single ((:url . "https://github.com/thierryvolpiatto/rectangle-utils"))]) (rect+ . [(20150620 1744) nil "Extensions to rect.el" single ((:url . "https://github.com/mhayashi1120/Emacs-rectplus") (:keywords "extensions" "data" "tools"))]) (recover-buffers . [(20150812 5) nil "revisit all buffers from an auto-save file" tar nil]) (recompile-on-save . [(20151126 646) ((dash (1 1 0)) (cl-lib (0 5))) "Trigger recompilation on file save." single ((:url . "https://github.com/maio/recompile-on-save.el") (:keywords "convenience" "files" "processes" "tools"))]) (recentf-ext . [(20130130 1350) 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 ((:url . "https://github.com/lewang/rebox2"))]) (realgud-rdb2 . [(20160303 43) ((realgud (1 3))) "realgud front-end for interacting with Ruby debugger2" tar ((:url . "http://github.com/rocky/realgud-ruby-debugger2"))]) (realgud-pry . [(20160303 54) ((realgud (1 3))) "realgud front-end to the Ruby pry debugger" tar ((:url . "http://github.com/rocky/realgud-pry"))]) (realgud-old-debuggers . [(20160303 54) ((realgud (1 3))) "realgud front-end to older lesser-used debuggers" tar ((:url . "http://github.com/rocky/realgud-old-debuggers"))]) (realgud-byebug . [(20160303 440) ((realgud (1 3))) "realgud front-end to the Ruby byebug debugger" tar ((:url . "http://github.com/rocky/realgud-byebug"))]) (realgud . [(20160305 157) ((load-relative (1 0)) (list-utils (0 4 2)) (loc-changes (1 1)) (test-simple (1 0))) "A modular front-end for interacting with external debuggers" tar ((:url . "http://github.com/rocky/emacs-dbgr"))]) (real-auto-save . [(20150701 815) nil "Automatically save your all your buffers/files at regular intervals." single nil]) (readline-complete . [(20150708 737) nil "offers completions in shell mode" single nil]) (readability . [(20140715 1727) ((oauth (1 4)) (ov (1 0)) (emacs (24 3))) "Read articles from Readability in Emacs" single ((:url . "https://github.com/ShingoFukuyama/emacs-readability") (:keywords "readability" "oauth"))]) (react-snippets . [(20151104 1540) ((yasnippet (0 7 0))) "Yasnippets for React" tar nil]) (rdp . [(20120928 1854) nil "Recursive Descent Parser library" single ((:url . "https://github.com/skeeto/rdp"))]) (rdf-prefix . [(20160517 1123) nil "Prefix lookup for RDF" single ((: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 nil]) (rcirc-notify . [(20150219 1404) nil "libnotify popups" single ((:keywords "lisp" "rcirc" "irc" "notify" "growl"))]) (rcirc-groups . [(20160115 431) nil "an emacs buffer in rcirc-groups major mode" single ((:url . "http://tapoueh.org/emacs/rcirc-groups.html") (:keywords "comm" "convenience"))]) (rcirc-color . [(20151130 758) nil "color nicks" single ((:keywords "comm"))]) (rcirc-alertify . [(20140406 1819) ((alert (20140406 1353))) "Cross platform notifications for rcirc" single ((:keywords "comm" "convenience"))]) (rcirc-alert . [(20141127 247) nil "Configurable alert messages on top of RCIRC" tar ((:keywords "lisp" "rcirc" "irc" "alert" "awesome"))]) (rbt . [(20160129 1051) nil "No description available." single nil]) (rbenv . [(20141119 2349) nil "Emacs integration for rbenv" single ((:url . "https://github.com/senny/rbenv.el") (:keywords "ruby" "rbenv"))]) (rats . [(20160315 1145) ((s (1 10 0)) (go-mode (1 3 1)) (cl-lib (0 5))) "Rapid testing suite for Go" single ((:keywords "go"))]) (rase . [(20120928 1345) nil "Run At Sun Event daemon" single ((:url . "https://github.com/m00natic/rase/") (:keywords "solar" "sunrise" "sunset" "midday" "midnight"))]) (ranger . [(20160518 700) ((emacs (24 4))) "Make dired more like ranger" single ((:url . "https://github.com/ralesi/ranger") (:keywords "files" "convenience"))]) (random-splash-image . [(20151002 1830) nil "Randomly sets splash image to *GNU Emacs* buffer on startup." single ((: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 ((:url . "https://github.com/gopar/rand-theme"))]) (rally-mode . [(20160326 902) ((popwin (1 0 0))) "a mode to interact with the Rally Software web site." single ((:url . "https://pragcraft.wordpress.com/") (:keywords "rally" "ca" "agile"))]) (rake . [(20150831 158) ((f (0 13 0)) (dash (1 5 0)) (cl-lib (0 5))) "Run rake commands" single ((:url . "https://github.com/asok/rake.el") (:keywords "rake" "ruby"))]) (rainbow-identifiers . [(20141102 726) ((emacs (24))) "Highlight identifiers according to their names" single ((:url . "https://github.com/Fanael/rainbow-identifiers"))]) (rainbow-delimiters . [(20160430 2358) nil "Highlight brackets according to their depth" single ((:url . "https://github.com/Fanael/rainbow-delimiters") (:keywords "faces" "convenience" "lisp" "tools"))]) (rainbow-blocks . [(20140306 1033) nil "Block syntax highlighting for lisp code" single ((:url . "https://github.com/istib/rainbow-blocks"))]) (railscasts-theme . [(20150219 725) nil "Railscasts color theme for GNU Emacs." single ((:url . "https://github.com/mikenichols/railscasts-theme") (:keywords "railscasts" "color" "theme"))]) (rails-new . [(20141221 49) nil "Handy emacs command for generating rails application." single ((:url . "https://github.com/cheunghy/rails-new") (:keywords "rails" "ruby"))]) (rails-log-mode . [(20140407 2125) nil "Major mode for viewing Rails log files" single ((:keywords "rails" "log"))]) (railgun . [(20121016 2257) nil "No description available." single nil]) (racket-mode . [(20160213 904) ((emacs (24 3)) (faceup (0 0 2)) (s (1 9 0))) "Major mode for Racket language." tar ((:url . "https://github.com/greghendershott/racket-mode"))]) (racer . [(20160419 1425) ((emacs (24 3)) (rust-mode (0 2 0)) (dash (2 11 0)) (s (1 10 0))) "Rust completion and code navigation via racer" single ((: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 ((:url . "https://github.com/mlf176f2/r-autoyas.el") (:keywords "r" "yasnippet"))]) (quiet . [(20160508 556) nil "disconnect from the online world for a while" single ((:url . "https://github.com/zzkt/quiet") (:keywords "quiet" "distraction" "network" "detachment" "offline"))]) (quickrun . [(20160307 318) ((emacs (24)) (cl-lib (0 5))) "Run commands quickly" single ((:url . "https://github.com/syohex/emacs-quickrun"))]) (quickref . [(20160326 936) ((dash (1 0 3)) (s (1 0 0))) "Display relevant notes-to-self in the echo area" single ((:url . "https://github.com/pd/quickref.el"))]) (quick-preview . [(20150828 2139) nil "quick preview using GNOME sushi, gloobus or quick look" single ((:url . "https://github.com/myuhe/quick-preview.el") (:keywords "files" "hypermedia"))]) (quick-buffer-switch . [(20151007 1508) nil "Quick switch to file or dir buffers." single ((:keywords "emacs" "configuration"))]) (quelpa-use-package . [(20150805 328) ((emacs (24 3)) (quelpa (0)) (use-package (2))) "quelpa handler for use-package" single ((:url . "https://github.com/quelpa/quelpa-use-package") (:keywords "package" "management" "elpa" "use-package"))]) (quelpa . [(20160325 629) ((package-build (0)) (emacs (24 3))) "Emacs Lisp packages built directly from source" tar ((:url . "https://github.com/quelpa/quelpa") (:keywords "package" "management" "build" "source" "elpa"))]) (quasi-monochrome-theme . [(20150801 1325) nil "High contrast quasi monochrome color theme" single ((:url . "https://github.com/lbolla/emacs-quasi-monochrome") (:keywords "color-theme" "monochrome" "high contrast"))]) (quack . [(20160410 207) nil "enhanced support for editing and running Scheme code" single nil]) (qml-mode . [(20160108 704) nil "Major mode for editing QT Declarative (QML) code." single ((: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 ((:url . "https://github.com/gongo/qiita-el") (:keywords "qiita"))]) (pyvenv . [(20160413 56) nil "Python virtual environment interface" single ((:url . "http://github.com/jorgenschaefer/pyvenv") (:keywords "python" "virtualenv" "tools"))]) (pythonic . [(20160221 1123) ((emacs (24)) (cl-lib (0 5)) (dash (2 11)) (s (1 9)) (f (0 17 2))) "Utility functions for writing pythonic emacs package." single ((:url . "https://github.com/proofit404/pythonic"))]) (python-x . [(20160313 636) ((python (0 24)) (folding (0)) (cl-lib (0 5))) "python.el extras for interactive evaluation" tar ((:keywords "python" "eval" "folding") (:url . "https://github.com/wavexx/python-x.el") (:author . "Yuri D'Elia "))]) (python-mode . [(20160521 10) nil "Python major mode" tar nil]) (python-info . [(20151228 1052) nil "Python info manual for Emacs" tar nil]) (python-environment . [(20150310 153) ((deferred (0 3 1))) "virtualenv API for Emacs Lisp" tar ((:keywords "applications" "tools"))]) (python-docstring . [(20160509 315) nil "Smart Python docstring formatting" tar nil]) (python-django . [(20150821 2104) nil "A Jazzy package for managing Django projects" single ((:url . "https://github.com/fgallina/python-django.el") (:keywords "languages"))]) (python-cell . [(20131029 1616) nil "Support for MATLAB-like cells in python mode" single ((:keywords "python" "matlab" "cell"))]) (pytest . [(20160330 647) ((s (1 9 0))) "Easy Python test running in Emacs" single ((:url . "https://github.com/ionrock/pytest-el") (:keywords "pytest" "python" "testing"))]) (pylint . [(20160505 244) nil "minor mode for running `pylint'" single ((:keywords "languages" "python"))]) (pyimpsort . [(20160129 2053) ((emacs (24 3))) "Sort python imports." tar ((:url . "https://github.com/emacs-pe/pyimpsort.el") (:keywords "convenience"))]) (pyfmt . [(20150521 1356) nil "Emacs interface to pyfmt" single ((: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 ((:url . "https://github.com/ssbb/pyenv-mode-auto") (:keywords "python" "pyenv"))]) (pyenv-mode . [(20160221 1123) ((pythonic (0 1 0))) "Integrate pyenv with python-mode" single ((:url . "https://github.com/proofit404/pyenv-mode"))]) (pydoc-info . [(20110301 34) nil "Better Python support for info-lookup-symbol." tar nil]) (pydoc . [(20160403 1733) nil "functional, syntax highlighted pydoc navigation" single ((: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 ((:url . "https://github.com/mattharrison/pycoverage.el") (:keywords "project" "convenience"))]) (pycarddavel . [(20150831 516) ((helm (1 7 0)) (emacs (24 0))) "Integrate pycarddav" single ((:keywords "helm" "pyccarddav" "carddav" "message" "mu4e" "contacts"))]) (py-yapf . [(20160101 412) nil "Use yapf to beautify a Python buffer" single ((: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 ((:url . "https://github.com/Bogdanp/py-test.el") (:keywords "python" "testing" "py.test"))]) (py-smart-operator . [(20150824 1910) ((s (1 9 0))) "smart-operator for python-mode" single ((:keywords "python" "convenience" "smart-operator"))]) (py-isort . [(20150422 839) nil "Use isort to sort the imports in a Python buffer" single ((:url . "http://paetzke.me/project/py-isort.el"))]) (py-import-check . [(20130802 411) nil "Finds the unused python imports using importchecker" single ((:url . "https://github.com/psibi/emacs-py-import-check") (:keywords "python" "import" "check"))]) (py-gnitset . [(20140224 2010) nil "Run your Python tests any way you'd like" single ((:url . "https://www.github.com/quodlibetor/py-gnitset"))]) (py-autopep8 . [(20151231 614) nil "Use autopep8 to beautify a Python buffer" single ((:url . "http://paetzke.me/project/py-autopep8.el"))]) (px . [(20141006 548) nil "preview inline latex in any mode" single ((:url . "http://github.com/aaptel/preview-latex"))]) (pushbullet . [(20140809 532) ((grapnel (0 5 2)) (json (1 2))) "Emacs client for the PushBullet Android app" single ((: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 nil]) (purple-haze-theme . [(20141014 1929) ((emacs (24 0))) "an overtly purple color theme for Emacs24." single ((:url . "https://github.com/jasonm23/emacs-purple-haze-theme"))]) (purescript-mode . [(20150316 1828) nil "A PureScript editing mode" tar nil]) (puppet-mode . [(20160416 936) ((emacs (24 1)) (pkg-info (0 4))) "Major mode for Puppet manifests" single ((:url . "https://github.com/lunaryorn/puppet-mode") (:keywords "languages"))]) (punpun-theme . [(20160324 1045) nil "A bleak theme" tar nil]) (pungi . [(20150222 446) ((jedi (0 2 0 -3 2)) (pyvenv (1 5))) "Integrates jedi with virtualenv and buildout python environments" single ((:keywords "convenience"))]) (punctuality-logger . [(20141120 1231) nil "Punctuality logger for Emacs" single ((:url . "https://gitlab.com/elzair/punctuality-logger") (:keywords "reminder" "calendar"))]) (puml-mode . [(20160324 1525) nil "Major mode for PlantUML" single ((:keywords "uml" "plantuml" "ascii"))]) (pt . [(20160119 817) nil "A front-end for pt, The Platinum Searcher." single ((:url . "https://github.com/bling/pt.el") (:keywords "pt" "ack" "ag" "grep" "search"))]) (psysh . [(20160509 708) nil "PsySH, PHP interactive shell (REPL)" single ((:url . "https://github.com/zonuexe/psysh.el") (:keywords "process" "php"))]) (psvn . [(20151103 1042) nil "Subversion interface for emacs" single nil]) (psession . [(20160514 2359) ((emacs (24)) (cl-lib (0 5))) "Persistent save of elisp objects." single ((:url . "https://github.com/thierryvolpiatto/psession"))]) (psci . [(20150328 1201) ((purescript-mode (13 10)) (dash (2 9 0)) (s (1 9 0)) (f (0 17 1)) (deferred (0 3 2))) "Major mode for purescript repl psci" tar ((:url . "https://github.com/ardumont/emacs-psci") (:keywords "purescript" "psci" "repl" "major" "mode"))]) (psc-ide . [(20160522 1240) ((dash (2 11 0)) (company (0 8 7)) (cl-lib (0 5)) (s (1 10 0))) "Minor mode for PureScript's psc-ide tool." tar ((:url . "https://github.com/epost/psc-ide-emacs") (:keywords "languages"))]) (protobuf-mode . [(20150521 2011) nil "major mode for editing protocol buffers." single ((:keywords "google" "protobuf" "languages"))]) (prosjekt . [(20151127 616) ((dash (2 8 0))) "a software project tool for emacs" tar ((:url . "https://github.com/abingham/prosjekt"))]) (propfont-mixed . [(20150113 1411) ((emacs (24)) (cl-lib (0 5))) "Use proportional fonts with space-based indentation." single ((: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 ((:url . "https://github.com/david-christiansen/prop-menu-el") (:keywords "convenience"))]) (prompt-text . [(20160106 609) nil "Various information in minibuffer prompt" single ((:url . "https://github.com/10sr/prompt-text-el") (:keywords "utility" "minibuffer"))]) (projmake-mode . [(20150619 1420) ((dash (20150611 922)) (indicators (20130217 1405))) "Project oriented automatic builder and error highlighter, flymake for projects" tar nil]) (projekt . [(20150324 148) ((emacs (24))) "some kind of staging for CVS" single nil]) (projector . [(20151201 1241) ((alert (1 1)) (projectile (0 11 0)) (cl-lib (0 5))) "Lightweight library for managing project-aware shell and command buffers" single ((:url . "https://github.com/waymondo/projector"))]) (projectile-speedbar . [(20150629 1153) ((projectile (0 11 0))) "projectile integration for speedbar" single ((: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 ((:url . "https://github.com/nlamirault/sift.el") (:keywords "sift" "projectile"))]) (projectile-rails . [(20160519 39) ((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 ((: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 ((:url . "https://github.com/avdgaag/projectile-hanami") (:keywords "hanami" "ruby" "projectile"))]) (projectile-direnv . [(20160305 1738) ((emacs (24)) (s (1 11 0)) (dash (2 12 0)) (projectile (0 13 0))) "Set environment variables from .envrc" single ((:url . "https://github.com/christianromney/projectile-direnv") (:keywords "convenience"))]) (projectile-codesearch . [(20151228 20) ((codesearch (20141019 625)) (projectile (20150405 126))) "Integration of codesearch into projectile" single ((:url . "https://github.com/abingham/codesearch.el") (:keywords "tools" "development" "search"))]) (projectile . [(20160522 919) ((dash (2 11 0)) (pkg-info (0 4))) "Manage and navigate projects in Emacs easily" single ((:url . "https://github.com/bbatsov/projectile") (:keywords "project" "convenience"))]) (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 nil]) (project-persist . [(20150519 1324) nil "A minor mode to allow loading and saving of project settings." tar nil]) (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 ((:url . "https://github.com/sabof/project-explorer"))]) (programmer-dvorak . [(20150426 1837) nil "Input method for Programmer Dvorak." single ((:url . "https://github.com/yangchenyun/programmer-dvorak") (:keywords "dvorak" "programmer-dvorak" "input-method"))]) (prognth . [(20130920 1059) nil "Extend prog1 to arbitrary index" single ((:keywords "lisp"))]) (professional-theme . [(20150315 400) nil "Emacs port of Vim's professional theme" single ((:url . "https://github.com/juanjux/emacs-professional-theme") (:keywords "theme" "light" "professional"))]) (prodigy . [(20160428 2354) ((s (1 8 0)) (dash (2 4 0)) (f (0 14 0)) (emacs (24))) "Manage external services from within Emacs" single ((:url . "http://github.com/rejeep/prodigy.el"))]) (processing-snippets . [(20140426 728) ((yasnippet (0 8 0))) "Snippets for processing-mode" tar nil]) (processing-mode . [(20150217 432) nil "Major mode for Processing 2.0" single ((:url . "https://github.com/ptrv/processing2-emacs") (:keywords "languages" "snippets"))]) (proc-net . [(20130321 1712) nil "network process tools" single ((:url . "http://github.com/nicferrier/emacs-procnet") (:keywords "processes"))]) (private-diary . [(20151216 857) ((emacs (24 0))) "maintain a private diary in Emacs" single ((:url . "https://github.com/cacology/private-diary") (:keywords "diary" "encryption"))]) (private . [(20150121 1757) ((aes (0 6))) "take care of your private configuration files." single ((:url . "https://github.com/cheunghy/private") (:keywords "private" "configuration" "backup" "recover"))]) (pretty-symbols . [(20140814 259) nil "Draw tokens as Unicode glyphs." single ((:url . "http://github.com/drothlis/pretty-symbols") (:keywords "faces"))]) (pretty-sha-path . [(20141105 1026) nil "Prettify Guix/Nix store paths" single ((:url . "https://gitorious.org/alezost-emacs/pretty-sha-path") (:keywords "faces" "convenience"))]) (pretty-mode . [(20160416 734) nil "Redisplay parts of the buffer as pretty symbols." single ((:url . "https://github.com/akatov/pretty-mode") (:keywords "pretty" "unicode" "symbols"))]) (pretty-lambdada . [(20151231 1548) nil "Show the word `lambda' as the Greek letter." single ((:url . "http://www.emacswiki.org/pretty-lambdada.el") (:keywords "convenience" "display"))]) (preseed-generic-mode . [(20150119 1241) nil "Debian preseed file major mode" single ((:url . "https://github.com/suntong001/preseed-generic-mode"))]) (preproc-font-lock . [(20151107 1218) nil "Highlight C-style preprocessor directives." single ((:url . "https://github.com/Lindydancer/preproc-font-lock") (:keywords "c" "languages" "faces"))]) (ppd-sr-speedbar . [(20151108 424) ((sr-speedbar (20140914 2339)) (project-persist-drawer (0 0 4))) "Sr Speedbar adaptor for project-persist-drawer." tar nil]) (pp-c-l . [(20151231 1547) nil "Display Control-l characters in a pretty way" single ((:url . "http://www.emacswiki.org/pp-c-l.el") (:keywords "display" "convenience" "faces"))]) (pp+ . [(20160521 1940) nil "Extensions to `pp.el'." single ((:url . "http://www.emacswiki.org/pp%2b.el") (:keywords "lisp"))]) (powershell . [(20160210 1858) ((emacs (24))) "Mode for editing Powershell scripts" single ((: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 ((:url . "http://github.com/raugturi/powerline-evil/") (:keywords "evil" "mode-line" "powerline"))]) (powerline . [(20160504 2355) ((cl-lib (0 2))) "Rewrite of Powerline" tar ((: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 ((:url . "http://github.com/yukihr/emacs-pow") (:keywords "develop" "web" "pow"))]) (pov-mode . [(20120825 716) nil "Major mode for editing POV-Ray scene files." tar nil]) (pos-tip . [(20150318 813) nil "Show tooltip at point" single ((:keywords "tooltip"))]) (portage-navi . [(20141208 555) ((concurrent (0 3 1)) (ctable (0 1 2))) "portage viewer" single ((:url . "https://github.com/kiwanami/emacs-portage-navi") (:keywords "tools" "gentoo"))]) (popwin . [(20150315 600) nil "Popup Window Manager." single ((:keywords "convenience"))]) (popup-switcher . [(20160518 339) ((cl-lib (0 3)) (popup (0 5 3))) "switch to other buffers and files via popup." single ((: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 ((:url . "https://github.com/waymondo/popup-kill-ring") (:keywords "popup" "kill-ring" "pos-tip"))]) (popup-imenu . [(20160409 510) ((dash (2 12 1)) (popup (0 5 3)) (flx-ido (0 6 1))) "imenu index popup" single ((:url . "https://github.com/ancane/popup-imenu") (:keywords "popup" "imenu"))]) (popup-complete . [(20141108 1908) ((popup (0 5 0))) "completion with popup" single ((:url . "https://github.com/syohex/emacs-popup-complete"))]) (popup . [(20160409 2133) ((cl-lib (0 5))) "Visual Popup User Interface" single ((:keywords "lisp"))]) (poporg . [(20150603 1847) nil "Pop a comment or string to an empty buffer for text editing" single ((:url . "https://github.com/QBobWatson/poporg") (:keywords "outlines" "tools"))]) (pophint . [(20150930 1034) ((popup (0 5 0)) (log4e (0 2 0)) (yaxception (0 1))) "Provide navigation using pop-up tips, like Firefox's Vimperator Hint Mode" tar ((:url . "https://github.com/aki2o/emacs-pophint") (:keywords "popup"))]) (ponylang-mode . [(20160519 1530) ((dash (2 10 0))) "Major mode for Pony code" single ((:url . "https://github.com/seantallen/ponylang-mode") (:keywords "languages" "programming"))]) (pony-snippets . [(20160204 2011) ((yasnippet (0 8 0))) "Yasnippets for Pony" tar ((:url . "https://github.com/seantallen/pony-snippets") (:keywords "snippets" "pony"))]) (pony-mode . [(20151028 302) nil "Minor mode for working with Django Projects" tar nil]) (pomodoro . [(20150716 1046) nil "A timer for the Pomodoro Technique" single nil]) (polymode . [(20160520 1829) ((emacs (24))) "Versatile multiple modes with extensive literate programming support" tar ((:url . "https://github.com/vitoshka/polymode"))]) (pointback . [(20100210 752) nil "Restore window points when returning to buffers" single ((:keywords "convenience"))]) (point-undo . [(20100504 129) nil "undo/redo position" single nil]) (point-stack . [(20141225 2110) nil "Back and forward navigation through buffer locations" single nil]) (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 ((: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 ((: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 ((:url . "https://github.com/aki2o/emacs-plsense") (:keywords "perl" "completion"))]) (plim-mode . [(20140812 1713) nil "Major mode for editing Plim files" single ((:url . "http://github.com/dongweiming/plim-mode") (:keywords "markup" "language"))]) (plenv . [(20130706 2316) nil "A plenv wrapper for Emacs" single ((:keywords "emacs" "perl"))]) (play-routes-mode . [(20160322 1000) nil "Play Framework Routes File Support" single ((:url . "https://github.com/brocode/play-routes-mode/") (:keywords "play" "scala"))]) (platformio-mode . [(20160327 1820) ((projectile (0 13 0))) "PlatformIO integration" single ((:url . "https://github.com/zachmassia/platformio-mode"))]) (plantuml-mode . [(20150531 2331) nil "No description available." single nil]) (planet-theme . [(20160425 2058) ((emacs (24))) "A dark theme inspired by Gmail's 'Planets' theme of yore" single ((:url . "https://github.com/cmack/emacs-planet-theme") (:keywords "themes"))]) (plan9-theme . [(20160111 1923) nil "A color theme for Emacs based on Plan9" single ((:url . "https://github.com/john2x/plan9-theme.el"))]) (pkgbuild-mode . [(20151010 736) nil "Interface to the ArchLinux package manager" single nil]) (pkg-info . [(20150517 443) ((epl (0 8))) "Information about packages" single ((:url . "https://github.com/lunaryorn/pkg-info.el") (:keywords "convenience"))]) (pixiv-novel-mode . [(20160220 621) nil "Major mode for pixiv novel" single ((:keywords "novel" "pixiv"))]) (pixie-mode . [(20150121 2124) ((clojure-mode (3 0 1)) (inf-clojure (1 0 0))) "Major mode for Pixie-lang" single ((:url . "https://github.com/johnwalker/pixie-mode"))]) (pivotal-tracker . [(20151203 1150) nil "Interact with Pivotal Tracker through its API" single ((:url . "http://github.com/jxa/pivotal-tracker"))]) (pip-requirements . [(20160131 926) ((dash (2 8 0))) "A major mode for editing pip requirements files." single nil]) (pinyinlib . [(20160505 1248) nil "Convert first letter of Pinyin to Simplified/Traditional Chinese characters" single ((:keywords "extensions"))]) (pinyin-search . [(20160514 2058) ((pinyinlib (0 1 0))) "Search Chinese by Pinyin" single ((:url . "https://github.com/xuchunyang/pinyin-search.el") (:keywords "chinese" "search"))]) (pinot . [(20140211 1226) nil "Emacs interface to pinot-search" tar nil]) (pinboard-api . [(20140324 448) nil "Rudimentary http://pinboard.in integration" single ((:url . "https://github.com/danieroux/pinboard-api-el") (:keywords "pinboard" "www"))]) (pillar . [(20141112 1011) ((makey (0 3))) "Major mode for editing Pillar files" tar ((:url . "http://github.com/DamienCassou/pillar-mode") (:keywords "markup" "major-mode"))]) (pig-snippets . [(20130912 2324) ((yasnippet (0 8 0))) "Snippets for pig-mode" tar nil]) (pig-mode . [(20140617 1058) nil "Major mode for Pig files" single nil]) (picolisp-mode . [(20150516 155) nil "Major mode for PicoLisp programming." single ((:url . "https://github.com/flexibeast/picolisp-mode") (:keywords "picolisp" "lisp" "programming"))]) (pianobar . [(20120128 1301) nil "thin wrapper for Pianobar, a Pandora Radio client" single ((:url . "http://github.com/agrif/pianobar.el"))]) (phpunit . [(20160512 730) ((s (1 9 0)) (f (0 16 0)) (pkg-info (0 5)) (emacs (24 3))) "Launch PHP unit tests using phpunit" tar ((:url . "https://github.com/nlamirault/phpunit.el") (:keywords "php" "tests" "phpunit"))]) (phpcbf . [(20150302 528) ((s (1 9 0))) "Format PHP code in Emacs using PHP_CodeSniffer's phpcbf" single ((:url . "https://github.com/nishimaki10/emacs-phpcbf") (:keywords "tools" "php"))]) (php-refactor-mode . [(20160417 1446) nil "Minor mode to quickly and safely perform common refactorings" single ((:url . "https://github.com/keelerm84/php-refactor-mode.el") (:keywords "php" "refactor"))]) (php-mode . [(20160413 28) ((emacs (24)) (cl-lib (0 5))) "Major mode for editing PHP code" tar ((:url . "https://github.com/ejmr/php-mode"))]) (php-eldoc . [(20140202 1141) nil "eldoc backend for php" tar ((:url . "https://github.com/sabof/php-eldoc"))]) (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 ((:url . "https://github.com/steckerhalter/php-boris-minor-mode") (:keywords "php" "repl" "eval"))]) (php-boris . [(20130527 121) nil "Run boris php REPL" single ((:keywords "php" "commint" "repl" "boris"))]) (php-auto-yasnippets . [(20141128 1411) ((php-mode (1 11)) (yasnippet (0 8 0))) "Creates snippets for PHP functions" tar ((:url . "https://github.com/ejmr/php-auto-yasnippets"))]) (php+-mode . [(20121129 1252) nil "A better PHP mode with Zend Framework 1 support." tar nil]) (phoenix-dark-pink-theme . [(20150406 2002) nil "Port of the Sublime Text 2 theme of the same name" single ((:url . "http://github.com/j0ni/phoenix-dark-pink"))]) (phoenix-dark-mono-theme . [(20130306 1215) nil "Monochromatic version of the Phoenix theme" single ((:url . "http://github.com/j0ni/phoenix-dark-mono"))]) (phi-search-migemo . [(20150116 506) ((phi-search (2 2 0)) (migemo (1 9 1))) "migemo extension for phi-search" single ((: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 ((: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 ((:url . "http://hins11.yu-yake.com/"))]) (phi-search . [(20150807 112) nil "another incremental search & replace, compatible with \"multiple-cursors\"" tar ((:url . "http://hins11.yu-yake.com/"))]) (phi-rectangle . [(20151207 2254) nil "another rectangle-mark command (rewrite of rect-mark)" single ((:url . "http://hins11.yu-yake.com/"))]) (phi-grep . [(20150212 724) ((cl-lib (0 1))) "Interactively-editable recursive grep implementation in elisp" single ((:url . "http://hins11.yu-yake.com/"))]) (phi-autopair . [(20150527 223) ((paredit (20))) "another simple-minded autopair implementation" single ((:url . "http://hins11.yu-yake.com/"))]) (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 ((:url . "https://github.com/ajtulloch/phabricator.el") (:keywords "phabricator" "arcanist" "diffusion"))]) (ph . [(20130312 1137) ((emacs (24 3))) "A global minor mode for managing multiple projects." tar nil]) (pgdevenv . [(20150105 1436) nil "Manage your PostgreSQL development envs" tar ((:keywords "emacs" "postgresql" "development" "environment" "shell" "debug" "gdb"))]) (pg . [(20130731 1442) nil "Emacs Lisp interface to the PostgreSQL RDBMS" single ((:keywords "data" "comm" "database" "postgresql"))]) (perspective . [(20160219 1622) ((cl-lib (0 5))) "switch between named \"perspectives\" of the editor" single ((:url . "http://github.com/nex3/perspective-el") (:keywords "workspace" "convenience" "frames"))]) (persp-projectile . [(20151220 430) ((perspective (1 9)) (projectile (0 11 0)) (cl-lib (0 3))) "Perspective integration with Projectile" single ((:keywords "project" "convenience"))]) (persp-mode . [(20160521 942) nil "\"perspectives\" shared among frames + save/load - bugs." single ((:url . "https://github.com/Bad-ptr/persp-mode.el") (:keywords "perspectives" "session" "workspace" "persistence" "windows" "buffers" "convenience"))]) (persistent-soft . [(20150223 1053) ((pcache (0 3 1)) (list-utils (0 4 2))) "Persistent storage, returning nil on failure" single ((:url . "http://github.com/rolandwalker/persistent-soft") (:keywords "data" "extensions"))]) (persistent-scratch . [(20160404 915) ((emacs (24))) "Preserve the scratch buffer across Emacs sessions" single ((:url . "https://github.com/Fanael/persistent-scratch"))]) (persistent-overlays . [(20160426 1221) nil "Minor mode to store selected overlays to be loaded later" tar ((:url . "https://github.com/mneilly/Emacs-Persistent-Overlays") (:keywords "overlays" "persistent"))]) (perlbrew . [(20130127 324) nil "A perlbrew wrapper for Emacs" single ((:keywords "emacs" "perl"))]) (perl6-mode . [(20160117 1109) ((emacs (24 4)) (pkg-info (0 1))) "Major mode for editing Perl 6 code" tar ((:url . "https://github.com/hinrik/perl6-mode") (:keywords "languages"))]) (perl-completion . [(20090527 2336) nil "No description available." single nil]) (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"))]) (peg . [(20150707 2341) nil "Parsing Expression Grammars in Emacs Lisp" single nil]) (peep-dired . [(20160321 1537) nil "Peep at files in another window from dired buffers" single ((:keywords "files" "convenience"))]) (peek-mode . [(20130620 1246) ((elnode (0 9 8 1))) "Serve buffers live over HTTP with elnode backend" tar ((:url . "https://github.com/erikriverson/peek-mode"))]) (peacock-theme . [(20141115 2302) ((emacs (24 0))) "an Emacs 24 theme based on Peacock (tmTheme)" single ((:url . "https://github.com/emacsfodder/tmtheme-to-deftheme"))]) (pdf-tools . [(20160410 214) ((emacs (24 3)) (tablist (0 70)) (let-alist (1 0 4))) "Support library for PDF documents." tar ((:keywords "files" "multimedia"))]) (pdb-mode . [(20150128 951) nil "Major mode for editing Protein Data Bank files" single ((:url . "http://bondxray.org/software/pdb-mode/") (:keywords "data" "pdb"))]) (pcsv . [(20150220 331) nil "Parser of csv" single ((:url . "https://github.com/mhayashi1120/Emacs-pcsv/raw/master/pcsv.el") (:keywords "data"))]) (pcre2el . [(20151213 234) ((emacs (24)) (cl-lib (0 3))) "regexp syntax converter" single ((:url . "https://github.com/joddie/pcre2el"))]) (pcomplete-extension . [(20140604 947) ((emacs (24)) (cl-lib (0 5))) "additional completion for pcomplete" single ((:url . "https://github.com/thierryvolpiatto/pcomplete-extension"))]) (pcmpl-pip . [(20141024 148) nil "pcomplete for pip" single ((:keywords "pcomplete" "pip" "python" "tools"))]) (pcmpl-homebrew . [(20150506 1852) nil "pcomplete for homebrew" single ((:keywords "pcomplete" "homebrew" "tools"))]) (pcmpl-git . [(20160110 2255) nil "pcomplete for git" tar ((:keywords "tools"))]) (pcmpl-args . [(20120911 2224) nil "Enhanced shell command completion" single ((:url . "https://github.com/JonWaltman/pcmpl-args.el") (:keywords "abbrev" "completion" "convenience" "processes" "terminals" "unix"))]) (pcache . [(20151109 639) ((eieio (1 3))) "persistent caching for Emacs." single nil]) (pc-bufsw . [(20150923 13) nil "PC style quick buffer switcher" single ((:url . "https://github.com/ibukanov/pc-bufsw") (:keywords "buffer"))]) (pbcopy . [(20150224 2059) nil "Emacs Interface to pbcopy" single ((:url . "https://github.com/jkp/pbcopy.el") (:keywords "mac" "osx" "pbcopy"))]) (paxedit . [(20160102 1821) ((cl-lib (0 5)) (paredit (23))) "Structured, Context Driven LISP Editing and Refactoring" single ((:url . "https://github.com/promethial/paxedit") (:keywords "lisp" "refactoring" "context"))]) (pathify . [(20160423 146) nil "Symlink your scripts into a PATH directory" single ((:url . "https://gitlab.com/alezost-emacs/pathify") (:keywords "convenience"))]) (path-headerline-mode . [(20140423 632) nil "Displaying file path on headerline." single ((:url . "https://github.com/7696122/path-headerline-mode") (:keywords "headerline"))]) (pastels-on-dark-theme . [(20120304 1022) nil "Pastels on Dark theme for Emacs 24" single ((:url . "http://gist.github.com/1906662") (:keywords "theme" "color"))]) (pastelmac-theme . [(20151030 1936) ((emacs (24 1))) "a soothing theme with a pastel color palette" single ((:url . "https://github.com/bmastenbrook/pastelmac-theme-el") (:keywords "themes"))]) (pastehub . [(20140614 2320) nil "A client for the PasteHub cloud service" single ((:url . "https://github.com/kiyoka/pastehub"))]) (pastebin . [(20101125 1202) nil "A simple interface to the www.pastebin.com webservice" single nil]) (password-vault . [(20160126 1020) ((cl-lib (0 2)) (emacs (24))) "A Password manager for Emacs." single ((:url . "http://github.com/PuercoPop/password-vault") (:keywords "password" "productivity"))]) (password-store . [(20151027 1449) ((f (0 11 0)) (s (1 9 0))) "Password store (pass) support" single ((:keywords "pass"))]) (password-generator . [(20150222 1240) nil "Password generator for humans. Good, Bad, Phonetic passwords included." single ((:url . "http://github.com/zargener/emacs-password-genarator"))]) (passthword . [(20141201 123) ((cl-lib (0 5))) "Simple password manager" single nil]) (pass . [(20160214 235) ((emacs (24)) (password-store (0 1)) (f (0 17))) "Major mode for password-store.el" single ((:keywords "password-store" "password" "keychain"))]) (parsebib . [(20151006 232) ((emacs (24 3))) "A library for parsing bib files" single ((:keywords "text" "bibtex"))]) (parse-csv . [(20160512 1023) nil "Parse strings with CSV fields into s-expressions" single ((:url . "https://github.com/mrc/el-csv") (:keywords "csv"))]) (parent-mode . [(20150824 1600) nil "get major mode's parent modes" single ((:url . "https://github.com/Fanael/parent-mode"))]) (paren-face . [(20160521 755) nil "a face for parentheses in lisp modes" single ((:url . "http://github.com/tarsius/paren-face"))]) (paren-completer . [(20160501 352) ((emacs (24 3))) "Automatically, language agnostically, fill in delimiters." single ((: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 ((:keywords "paredit"))]) (paredit-everywhere . [(20150821 2144) ((paredit (22))) "Enable some paredit features in non-lisp buffers" single ((:keywords "languages" "convenience"))]) (paredit . [(20160324 1215) nil "minor mode for editing parentheses" single ((:keywords "lisp"))]) (paradox . [(20160323 1210) ((emacs (24 4)) (seq (1 7)) (let-alist (1 0 3)) (spinner (1 4)) (hydra (0 13 2))) "A modern Packages Menu. Colored, with package ratings, and customizable." tar ((:url . "https://github.com/Malabarba/paradox") (:keywords "package" "packages"))]) (paper-theme . [(20151231 932) ((emacs (24)) (hexrgb (0))) "A minimal Emacs colour theme." single ((:url . "http://gkayaalp.com/emacs.html#paper") (:keywords "theme" "paper"))]) (pangu-spacing . [(20150927 24) nil "Minor-mode to add space between Chinese and English characters." single ((:url . "http://github.com/coldnew/pangu-spacing"))]) (pandoc-mode . [(20160519 853) ((hydra (0 10 0)) (dash (2 10 0))) "Minor mode for interacting with Pandoc" tar ((:keywords "text" "pandoc"))]) (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 nil]) (palimpsest . [(20130731 821) nil "Various deletion strategies when editing" single nil]) (palette . [(20151231 1545) ((hexrgb (0))) "Color palette useful with RGB, HSV, and color names" single ((:url . "http://www.emacswiki.org/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 ((:url . "http://github.com/nflath/pager-default-keybindings"))]) (pager . [(20100330 1131) nil "windows-scroll commands" single nil]) (page-break-lines . [(20160109 1813) nil "Display ugly ^L page breaks as tidy horizontal lines" single ((:url . "https://github.com/purcell/page-break-lines") (:keywords "convenience" "faces"))]) (paganini-theme . [(20160516 358) ((emacs (24 0))) "an Emacs 24 theme based on FireCode" single ((: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 ((:url . "http://github.com/codingteam/pacmacs.el"))]) (packed . [(20160409 951) ((emacs (24 3)) (dash (2 12 1))) "package manager agnostic Emacs Lisp package utilities" single ((:url . "https://github.com/tarsius/packed") (:keywords "compile" "convenience" "lisp" "package" "library"))]) (package-utils . [(20160307 120) nil "No description available." single nil]) (package-safe-delete . [(20150116 807) ((emacs (24)) (epl (0 7 -3))) "Safely delete package.el packages" single ((:url . "https://github.com/Fanael/package-safe-delete"))]) (package-filter . [(20140105 1426) nil "special handling for package.el" single ((:url . "https://github.com/milkypostman/package-filter"))]) (package-build . [(20160430 1701) ((cl-lib (0 5))) "Tools for assembling a package archive" single ((:keywords "tools"))]) (package+ . [(20150319 1455) nil "Extensions for the package library." single ((:url . "TBA") (:keywords "extensions" "tools"))]) (pabbrev . [(20160320 1401) nil "Predictive abbreviation expansion" single nil]) (p4 . [(20150721 1237) nil "Simple Perforce-Emacs Integration" single ((:url . "https://github.com/gareth-rees/p4.el"))]) (ox-twiki . [(20160306 915) ((org (8)) (cl-lib (0 5))) "org Twiki and Foswiki export" single ((:url . "https://github.com/dfeich/org8-wikiexporters") (:keywords "org"))]) (ox-twbs . [(20160306 2258) nil "Bootstrap compatible HTML Back-End for Org" single ((:url . "https://github.com/marsmining/ox-twbs") (:keywords "org" "html" "publish" "twitter" "bootstrap"))]) (ox-trac . [(20151102 955) ((org (8 0))) "Org Export Backend to Trac WikiFormat" single ((: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 ((:url . "https://github.com/dfeich/org8-wikiexporters") (:keywords "org"))]) (ox-textile . [(20151114 2025) ((org (8 1))) "Textile Back-End for Org Export Engine" single ((:url . "https://github.com/yashi/org-textile") (:keywords "org" "textile"))]) (ox-rst . [(20151114 2343) ((emacs (24 4)) (org (8 2 4))) "Export reStructuredText using org-mode." single ((:url . "https://github.com/masayuko/ox-rst") (:keywords "org" "rst" "rest" "restructuredtext"))]) (ox-reveal . [(20160504 2008) ((org (20150330))) "reveal.js Presentation Back-End for Org Export Engine" single ((:keywords "outlines" "hypermedia" "slideshow" "presentation"))]) (ox-pukiwiki . [(20150124 916) ((org (8 1))) "Pukiwiki Back-End for Org Export Engine" single ((:url . "https://github.com/yashi/org-pukiwiki") (:keywords "org" "pukiwiki"))]) (ox-pandoc . [(20151222 1553) ((org (8 2)) (emacs (24)) (dash (2 8)) (ht (2 0))) "org exporter for pandoc." single ((: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 ((:url . "https://github.com/masayuko/ox-nikola") (:keywords "org" "nikola"))]) (ox-mediawiki . [(20150923 902) ((cl-lib (0 5)) (s (1 9 0))) "Mediawiki Back-End for Org Export Engine" single ((:url . "https://github.com/tomalexander/orgmode-mediawiki") (:keywords "org" "wp" "mediawiki"))]) (ox-latex-chinese . [(20160513 1728) ((emacs (24 4))) "An example org latex exporter configure for Chinese users" single ((:url . "https://github.com/tumashu/ox-latex-chinese"))]) (ox-jira . [(20160426 553) ((org (8 0))) "JIRA Backend for Org Export Engine" single ((:url . "https://github.com/stig/ox-jira.el") (:keywords "outlines" "hypermedia" "wp"))]) (ox-ioslide . [(20160120 805) ((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 ((: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 ((:url . "https://github.com/kinjo/org-impress-js.el") (:keywords "outlines" "hypermedia" "calendar" "wp"))]) (ox-html5slide . [(20131227 2206) ((org (8 0))) "Export org-mode to HTML5 slide." single ((:url . "http://github.com/coldnew/org-html5slide") (:keywords "html" "presentation"))]) (ox-gfm . [(20160520 1442) nil "Github Flavored Markdown Back-End for Org Export Engine" single ((:keywords "org" "wp" "markdown" "github"))]) (ox-bibtex-chinese . [(20160510 506) ((emacs (24 4))) "Let ox-bibtex work well for Chinese users" single ((:url . "https://github.com/tumashu/ox-bibtex-chinese.git"))]) (ox-asciidoc . [(20160120 523) ((org (8 1))) "AsciiDoc Back-End for Org Export Engine" single ((:url . "https://github.com/yashi/org-asciidoc") (:keywords "org" "asciidoc"))]) (owdriver . [(20141011 738) ((smartrep (0 0 3)) (log4e (0 2 0)) (yaxception (0 2 0))) "Quickly perform various actions on other windows" single ((:url . "https://github.com/aki2o/owdriver") (:keywords "convenience"))]) (overseer . [(20160517 2343) ((emacs (24)) (dash (2 10 0)) (pkg-info (0 4)) (f (0 18 1))) "Ert-runner Integration Into Emacs" single ((:url . "http://www.github.com/tonini/overseer.el"))]) (ov . [(20150311 2228) ((emacs (24 3))) "Overlay library for Emacs Lisp" single ((:url . "https://github.com/ShingoFukuyama/ov.el") (:keywords "overlay"))]) (outshine . [(20160416 846) ((outorg (2 0)) (cl-lib (0 5))) "outline with outshine outshines outline" tar ((:url . "https://github.com/tj64/outshine"))]) (outorg . [(20160327 132) nil "Org-style comment editing" single ((:url . "https://github.com/tj64/outorg"))]) (outlined-elisp-mode . [(20131108 327) nil "outline-minor-mode settings for emacs lisp" single ((:url . "http://hins11.yu-yake.com/"))]) (outline-magic . [(20150209 1426) nil "outline mode extensions for Emacs" single ((:keywords "outlines"))]) (otama . [(20160404 332) nil "Org-table Manipulator" single ((:keywords "database" "org-mode"))]) (osx-trash . [(20160520 600) ((emacs (24 1))) "System trash for OS X" tar ((:url . "https://github.com/lunaryorn/osx-trash.el") (:keywords "files" "convenience" "tools" "unix"))]) (osx-pseudo-daemon . [(20131026 1730) nil "Daemon mode that plays nice with OSX." single ((:url . "https://github.com/DarwinAwardWinner/osx-pseudo-daemon") (:keywords "convenience" "osx"))]) (osx-plist . [(20101130 448) nil "Apple plist file parser" single ((:keywords "convenience"))]) (osx-org-clock-menubar . [(20150205 1311) nil "simple menubar integration for org-clock" tar ((: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 nil]) (osx-lib . [(20160401 2336) ((emacs (24 4))) "Basic function for Apple/OSX." single ((:keywords "apple" "applescript" "osx" "finder" "emacs" "elisp" "vpn" "speech"))]) (osx-dictionary . [(20160215 726) ((cl-lib (0 5))) "Interface for OSX Dictionary.app" tar ((: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 ((: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 ((:url . "http://github.com/rolandwalker/osx-browse") (:keywords "hypermedia" "external"))]) (origami . [(20160313 1413) ((s (1 9 0)) (dash (2 5 0)) (emacs (24))) "Flexible text folding" tar ((: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 nil]) (orgtbl-join . [(20150121 1446) ((cl-lib (0 5))) "join columns from another table" tar ((:keywords "org" "table" "join" "filtering"))]) (orgtbl-ascii-plot . [(20151215 1351) nil "ascii-art bar plots in org-mode tables" single ((:keywords "org" "table" "ascii" "plot"))]) (orgtbl-aggregate . [(20160421 726) nil "Create an aggregated Org table from another one" tar ((:keywords "org" "table" "aggregation" "filtering"))]) (orglue . [(20150430 513) ((org (8 1)) (epic (0 2)) (org-mac-link (1 2))) "more functionality to org-mode." tar ((:keywords "org"))]) (orglink . [(20160521 730) ((emacs (24 3)) (dash (2 12 1)) (org (8 3))) "use Org Mode links in other modes" single ((:url . "http://github.com/tarsius/orglink") (:keywords "hypertext"))]) (orgit . [(20160119 1424) ((emacs (24 4)) (dash (2 12 1)) (magit (2 4 1)) (org (8 3 3))) "support for Org links to Magit buffers" single ((:url . "https://github.com/magit/orgit"))]) (orgbox . [(20140528 1826) ((org (8 0)) (cl-lib (0 5))) "Mailbox-like task scheduling Org." single ((:url . "https://github.com/yasuhito/orgbox") (:keywords "org"))]) (organic-green-theme . [(20160512 252) nil "Low-contrast green color theme." single nil]) (org2jekyll . [(20160519 1004) ((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 ((: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 ((:url . "https://github.com/lujun9972/org2issue") (:keywords "convenience" "github" "org"))]) (org2blog . [(20160502 1821) ((org (8 1)) (xml-rpc (1 6 8)) (metaweblog (0 1))) "Blog from Org mode to wordpress" tar nil]) (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 ((:url . "https://github.com/myuhe/org-wunderlist.el") (:keywords "convenience"))]) (org-webpage . [(20160307 26) ((cl-lib (1 0)) (ht (1 5)) (mustache (0 22)) (htmlize (1 47)) (org (8 0)) (dash (2 0 0)) (web-server (0 1))) "a static site generator based on org mode." tar nil]) (org-wc . [(20160204 1715) nil "Count words in org mode trees." single nil]) (org-vcard . [(20151213 2222) nil "org-mode support for vCard export and import." tar ((:url . "https://github.com/flexibeast/org-vcard") (:keywords "outlines" "org" "vcard"))]) (org-trello . [(20160301 941) ((request-deferred (0 2 0)) (deferred (0 4 0)) (s (1 11 0)) (dash-functional (2 12 1)) (dash (2 12 1)) (emacs (24))) "Minor mode to synchronize org-mode buffer and trello board" tar nil]) (org-tree-slide . [(20160513 2325) nil "A presentation tool for org-mode" single ((: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 ((:url . "https://github.com/jplindstrom/emacs-org-transform-tree-table") (:keywords "org-mode" "table" "org-table" "tree" "csv" "convert"))]) (org-tracktable . [(20160420 645) ((emacs (24)) (cl-lib (0 5))) "Track your writing progress in an org-table" single ((: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 ((:keywords "outlines" "data"))]) (org-time-budgets . [(20151111 1) ((alert (0 5 10)) (cl-lib (0 5))) "Define time budgets and display clocked time." single nil]) (org-themis . [(20160121 2004) ((cl-lib (0 4))) "Experimental project management mode for org-mode" single ((:url . "http://github.com/zellio/org-themis") (:keywords "org-mode" "elisp" "project"))]) (org-tfl . [(20160407 1440) ((org (0 16 2)) (cl-lib (0 5)) (emacs (24 1))) "Transport for London meets Orgmode" tar ((:url . "https://github.com/storax/org-tfl") (:keywords "org" "tfl"))]) (org-table-comment . [(20120209 1051) nil "Org table comment modes." single ((:url . "http://github.com/mlf176f2/org-table-comment.el") (:keywords "org-mode" "orgtbl"))]) (org-sync . [(20150817 754) ((cl-lib (0 5)) (org (8 2)) (emacs (24))) "Synchronize Org documents with External Issue Trackers" tar ((:url . "https://github.com/arbox/org-sync") (:keywords "org" "synchronization" "issue tracking" "github" "redmine"))]) (org-rtm . [(20160214 436) ((rtm (0 1))) "Simple import/export from rememberthemilk to org-mode" single ((:url . "https://github.com/pmiddend/org-rtm") (:keywords "outlines" "data"))]) (org-repo-todo . [(20160307 1029) nil "Simple repository todo management with org-mode" single ((:url . "https://github.com/waymondo/org-repo-todo") (:keywords "convenience"))]) (org-ref . [(20160519 537) ((dash (2 11 0)) (parsebib (1 0)) (hydra (0 13 2)) (key-chord (0)) (s (1 10 0)) (f (0 18 0)) (emacs (24 4))) "citations, cross-references and bibliographies in org-mode" tar ((:url . "https://github.com/jkitchin/org-ref") (:keywords "org-mode" "cite" "ref" "label"))]) (org-redmine . [(20160205 344) nil "Redmine tools using Emacs OrgMode" single ((:url . "https://github.com/gongo/org-redmine") (:keywords "redmine" "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 ((:url . "https://github.com/mlf176f2/org-readme") (:keywords "header2" "readme.org" "emacswiki" "git"))]) (org-random-todo . [(20160208 426) ((emacs (24 3)) (alert (1 2))) "notify of random TODO's" single ((:keywords "org" "todo" "notification"))]) (org-protocol-jekyll . [(20151119 838) ((cl-lib (0 5))) "Jekyll's handler for org-protocol" single nil]) (org-projectile . [(20160520 1514) ((projectile (0 11 0)) (dash (2 10 0))) "Repository todo management for org-mode" single ((:url . "https://github.com/IvanMalison/org-projectile") (:keywords "org" "projectile" "todo"))]) (org-present . [(20141109 1756) ((org (7))) "Minimalist presentation minor-mode for Emacs org-mode." single ((:url . "https://github.com/rlister/org-present"))]) (org-pomodoro . [(20151217 553) ((alert (0 5 10)) (cl-lib (0 5))) "Pomodoro implementation for org-mode." tar ((:url . "https://github.com/lolownia/org-pomodoro"))]) (org-pdfview . [(20160125 1254) ((org (6 1)) (pdf-tools (0 40))) "Support for links to documents in pdfview mode" single ((:keywords "org" "pdf-view" "pdf-tools"))]) (org-password-manager . [(20160430 1851) ((org (8 2 10)) (s (1 9 0))) "Minimal password manager for Emacs Org Mode." single ((:url . "https://git.leafac.com/leafac/org-password-manager") (:keywords "password"))]) (org-pandoc . [(20130729 1850) nil "Export from Org using Pandoc" tar nil]) (org-page . [(20160413 329) ((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 nil]) (org-outlook . [(20150914 547) nil "Outlook org" tar ((:url . "https://github.com/mlf176f2/org-outlook.el") (:keywords "org-outlook"))]) (org-octopress . [(20150826 416) ((org (8 0)) (orglue (0 1)) (ctable (0 1 1))) "Compose octopress articles using org-mode." tar ((:keywords "org" "jekyll" "octopress" "blog"))]) (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 ((:url . "https://github.com/myuhe/org-multiple-keymap.el") (:keywords "convenience" "org-mode"))]) (org-mobile-sync . [(20131118 1116) ((emacs (24 3 50)) (org (8 0))) "automatically sync org-mobile on changes" single ((:url . "https://github.com/steckerhalter/org-mobile-sync") (:keywords "org-mode" "org" "mobile" "sync" "todo"))]) (org-mac-link . [(20160109 1443) nil "Insert org-mode links to items selected in various Mac apps" single ((:keywords "org" "mac" "hyperlink"))]) (org-mac-iCal . [(20140107 519) nil "Imports events from iCal.app to the Emacs diary" single ((:keywords "outlines" "calendar"))]) (org-linkany . [(20160206 2011) ((log4e (0 2 0)) (yaxception (0 1))) "Insert link using anything.el/helm.el on org-mode" single ((: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 ((:url . "https://github.com/aki2o/org-link-travis") (:keywords "org"))]) (org-journal . [(20160427 618) nil "a simple org-mode based journaling mode" single ((:url . "http://github.com/bastibe/org-journal"))]) (org-jira . [(20150911 558) nil "Syncing between Jira and Org-mode." tar ((:url . "https://github.com/baohaojun/org-jira"))]) (org-jekyll . [(20130508 239) ((org (8 0))) "Export jekyll-ready posts form org-mode entries" single ((:url . "http://juanreyero.com/open/org-jekyll/") (:keywords "hypermedia"))]) (org-iv . [(20151213 714) ((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 nil]) (org-if . [(20150920 813) nil "Interactive Fiction Authoring System for Org-Mode." tar nil]) (org-grep . [(20151202 429) ((cl-lib (0 5))) "Kind of M-x rgrep adapted for Org mode." single ((: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 ((:keywords "org" "gnome"))]) (org-gcal . [(20160307 1206) ((request-deferred (0 2 0)) (alert (1 1)) (emacs (24)) (cl-lib (0 5)) (org (8 2 4))) "Org sync with Google Calendar" single ((:url . "https://github.com/myuhe/org-gcal.el") (:keywords "convenience"))]) (org-fstree . [(20090723 819) nil "include a filesystem subtree into an org file" single ((:url . "http://www.burtzlaff.de/org-fstree/org-fstree.el") (:keywords "org-mode" "filesystem" "tree"))]) (org-eww . [(20160521 1458) ((org (8 0)) (emacs (24 4))) "automatically use eww to preview current org-file when save" single ((:url . "https://github.com/lujun9972/org-eww") (:keywords "convenience" "eww" "org"))]) (org-elisp-help . [(20130423 1545) ((cl-lib (0 2)) (org (8 0))) "org links to emacs-lisp documentation" single ((: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 nil]) (org-dropbox . [(20150113 2109) ((dash (2 2)) (names (20150000)) (emacs (24))) "move Dropbox notes from phone into org-mode datetree" single ((:url . "https://github.com/heikkil/org-dropbox") (:keywords "dropbox" "android" "notes" "org-mode"))]) (org-drill-table . [(20140117 137) ((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 nil]) (org-dp . [(20160326 603) ((cl-lib (0 5))) "Declarative Local Programming with Org Elements" tar ((:url . "https://github.com/tj64/org-dp"))]) (org-download . [(20160411 710) ((async (1 2))) "Image drag-and-drop for Emacs org-mode" single ((: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 ((:url . "https://github.com/vapniks/org-dotemacs") (:keywords "local"))]) (org-doing . [(20150824 701) nil "Keep track of what you're doing" tar ((:url . "https://github.com/omouse/org-doing") (:keywords "tools" "org"))]) (org-dashboard . [(20150812 302) ((cl-lib (0 5))) "Visually summarize progress in org files" single ((:url . "http://github.com/bard/org-dashboard") (:keywords "outlines" "calendar"))]) (org-cua-dwim . [(20120202 2134) nil "Org-mode and Cua mode compatibility layer" single ((:keywords "org-mode" "cua-mode"))]) (org-context . [(20160108 214) nil "Contextual capture and agenda commands for Org-mode" single ((:url . "https://github.com/thisirs/org-context") (:keywords "org" "capture" "agenda" "convenience"))]) (org-clock-convenience . [(20160217 106) ((cl-lib (0 5)) (org (8)) (emacs (24 3))) "convenience functions for org time tracking" single ((:url . "https://github.com/dfeich/org-clock-convenience") (:keywords "org"))]) (org-cliplink . [(20160319 500) ((emacs (24 4))) "insert org-mode links from the clipboard" tar ((:url . "http://github.com/rexim/org-cliplink"))]) (org-chinese-utils . [(20160510 709) nil "Some org-mode utils for Chinese users" single ((:url . "https://github.com/tumashu/org-chinese-utils.git"))]) (org-capture-pop-frame . [(20160518 308) ((emacs (24 4))) "Run org-capture in a new pop frame" single ((:url . "https://github.com/tumashu/org-capture-pop-frame.git"))]) (org-caldav . [(20160306 637) ((org (7))) "Sync org files with external calendar through CalDAV" single ((:keywords "calendar" "caldav"))]) (org-bullets . [(20140918 1137) nil "Show bullets in org-mode as UTF-8 characters" single ((:url . "https://github.com/sabof/org-bullets"))]) (org-bookmark-heading . [(20160325 2359) ((emacs (24 4))) "Emacs bookmark support for org-mode" single ((:url . "http://github.com/alphapapa/org-bookmark-heading") (:keywords "hypermedia" "outlines"))]) (org-beautify-theme . [(20150106 956) nil "A sub-theme to make org-mode more beautiful." single ((:keywords "org" "theme"))]) (org-autolist . [(20150922 705) nil "Improved list management in org-mode" single ((:url . "https://github.com/calvinwyoung/org-autolist") (:keywords "lists" "checklists" "org-mode"))]) (org-attach-screenshot . [(20160125 1332) nil "screenshots integrated with org attachment dirs" single ((:url . "https://github.com/dfeich/org-screenshot") (:keywords "org"))]) (org-alert . [(20151007 337) ((s (1 10 0)) (dash (2 12 0)) (alert (1 2))) "Notify org deadlines via notify-send" single ((: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 ((:url . "http://github.com/Bruce-Connor/org-agenda-property") (:keywords "calendar"))]) (org-ac . [(20140302 413) ((auto-complete-pcmp (0 0 1)) (log4e (0 2 0)) (yaxception (0 1))) "Some auto-complete sources for org-mode" single ((:url . "https://github.com/aki2o/org-ac") (:keywords "org" "completion"))]) (operate-on-number . [(20150706 2323) nil "Operate on number at point with arithmetic functions" single ((: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 ((:url . "https://github.com/chmouel/openstack-cgit-browse-file") (:keywords "convenience" "vc" "git" "cgit" "gerrit" "openstack"))]) (opencl-mode . [(20160220 909) nil "Syntax coloring for opencl kernels" single ((:url . "https://github.com/salmanebah/opencl-mode") (:keywords "c" "opencl"))]) (open-junk-file . [(20160514 1525) nil "Open a junk (memo) file to try-and-error" single ((:url . "http://www.emacswiki.org/cgi-bin/wiki/download/open-junk-file.el") (:keywords "convenience" "tools"))]) (opam . [(20150719 520) ((emacs (24 1))) "OPAM tools" single ((:url . "https://github.com/lunaryorn/opam.el") (:keywords "convenience"))]) (oneonone . [(20151231 1541) ((hexrgb (0))) "Frame configuration that uses one frame per window." single ((:url . "http://www.emacswiki.org/oneonone.el") (:keywords "local" "frames"))]) (one-time-pad-encrypt . [(20160329 813) nil "One time pad encryption within file" single ((:url . "https://github.com/garvinguan/emacs-one-time-pad/") (:keywords "convenience"))]) (on-screen . [(20160302 150) ((cl-lib (0))) "guide your eyes while scrolling" single ((: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 ((:keywords "evil" "smartparens"))]) (omtose-phellack-theme . [(20160412 428) ((emacs (24))) "A dark, soothing theme with a cold bluish touch." tar ((:url . "http:/github.com/franksn/omtose-phellack-theme/"))]) (omnisharp . [(20151210 1114) ((json (1 2)) (flycheck (0 25 1)) (dash (20141201 2206)) (auto-complete (1 4)) (popup (0 5 1)) (csharp-mode (0 8 7)) (cl-lib (0 5)) (s (1 9 0))) "Omnicompletion (intellisense) and more for C#" tar ((:url . "https://github.com/sp3ctum/omnisharp-emacs") (:keywords "csharp" "c#" "ide" "auto-complete" "intellisense"))]) (omniref . [(20160225 1424) nil "Omniref Ruby documentation search engine interface" single ((:url . "http://github.org/dotemacs/omniref.el") (:keywords "docs" "help" "tools"))]) (omni-tags . [(20150513 1053) ((pcre2el (1 7)) (cl-lib (0 5))) "Highlight and Actions for 'Tags'" tar ((:url . "http://github.com/AdrieanKhisbe/omni-tags.el") (:keywords "convenience"))]) (omni-scratch . [(20151211 859) nil "Easy and mode-specific draft buffers" single ((:url . "https://github.com/AdrieanKhisbe/omni-scratch.el") (:keywords "convenience" "languages" "tools"))]) (omni-quotes . [(20150604 1057) ((dash (2 8)) (omni-log (0 1 2))) "Random quotes displayer" tar ((:url . "https://github.com/AdrieanKhisbe/omni-quotes.el") (:keywords "convenience"))]) (omni-log . [(20150604 1038) ((emacs (24)) (ht (2 0)) (s (1 6 1)) (dash (1 8 0))) "Logging utilities" tar ((:url . "https://github.com/AdrieanKhisbe/omni-log.el") (:keywords "convenience" "languages" "tools"))]) (omni-kill . [(20150526 2349) nil "Kill all the things" single ((:keywords "convenience" "editing" "tools"))]) (om-mode . [(20140915 1410) nil "Insert Om component template with life cycle." single ((:keywords "clojurescript"))]) (olivetti . [(20160412 2122) nil "Minor mode for a nice writing environment" single ((:keywords "wp"))]) (oldlace-theme . [(20150705 600) ((emacs (24))) "Emacs 24 theme with an 'oldlace' background." single nil]) (offlineimap . [(20150916 458) nil "Run OfflineIMAP from Emacs" single ((:url . "http://julien.danjou.info/offlineimap-el.html"))]) (octopress . [(20160123 1406) nil "A lightweight wrapper for Jekyll and Octopress." tar ((:url . "https://github.com/aaronbieber/octopress.el") (:keywords "octopress" "blog"))]) (octicons . [(20151031 2040) ((cl-lib (0 5))) "octicons utility" tar ((:url . "https://github.com/syohex/emacs-octicons"))]) (ocp-indent . [(20160428 2334) nil "automatic indentation with ocp-indent" single ((: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 nil]) (occur-x . [(20130610 643) nil "Extra functionality for occur" single ((:keywords "occur" "search" "convenience"))]) (occur-context-resize . [(20151227 2002) nil "dynamically resize context around matches in occur-mode" single ((:url . "https://github.com/dgtized/occur-context-resize.el") (:keywords "matching"))]) (occidental-theme . [(20130312 1258) nil "Custom theme for faces based on Adwaita" single ((:url . "http://github.com/olcai/occidental-theme"))]) (obsidian-theme . [(20140420 943) nil "port of the eclipse obsidian theme" single ((:url . "http://github.com/mswift42/obsidian-theme"))]) (objc-font-lock . [(20141021 1122) nil "Highlight Objective-C method calls." single ((:url . "https://github.com/Lindydancer/objc-font-lock") (:keywords "languages" "faces"))]) (oberon . [(20120715 209) nil "Major mode for editing Oberon/Oberon-2 program texts" single ((:keywords "oberon" "oberon-2" "languages" "oop"))]) (ob-typescript . [(20150804 530) ((emacs (24)) (org (8 0))) "org-babel functions for typescript evaluation" single ((:url . "https://github.com/lurdan/ob-typescript") (:keywords "literate programming" "reproducible research" "typescript"))]) (ob-translate . [(20160411 124) ((google-translate (0 11)) (org (8))) "Translation of text blocks in org-mode." single ((:url . "https://github.com/krisajenkins/ob-translate") (:keywords "org" "babel" "translate" "translation"))]) (ob-swift . [(20151204 2311) ((org (8))) "org-babel functions for swift evaluation" single ((:url . "http://github.com/zweifisch/ob-swift") (:keywords "org" "babel" "swift"))]) (ob-sml . [(20130829 1143) ((sml-mode (6 4))) "org-babel functions for template evaluation" single ((:url . "http://orgmode.org") (:keywords "literate programming" "reproducible research"))]) (ob-sagemath . [(20160517 1728) ((sage-shell-mode (0 0 8)) (s (1 8 0)) (emacs (24))) "org-babel functions for SageMath evaluation" tar ((:url . "https://github.com/stakemori/ob-sagemath") (:keywords "sagemath" "org-babel"))]) (ob-restclient . [(20160323 2305) ((restclient (0))) "org-babel functions for restclient-mode" single ((:url . "http://orgmode.org") (:keywords "literate programming" "reproducible research"))]) (ob-redis . [(20160411 2013) ((org (8))) "Execute Redis queries within org-mode blocks." single ((:url . "https://github.com/stardiviner/ob-redis") (:keywords "org" "babel" "redis"))]) (ob-prolog . [(20150530 937) nil "org-babel functions for prolog evaluation." single ((:url . "https://github.com/ljos/ob-prolog") (:keywords "literate programming" "reproducible research"))]) (ob-php . [(20160505 219) ((org (8))) "Execute PHP within org-mode blocks." single ((:url . "https://github.com/stardiviner/ob-php") (:keywords "org" "babel" "php"))]) (ob-mongo . [(20130718 732) ((org (8))) "Execute mongodb queries within org-mode blocks." single ((:url . "https://github.com/krisajenkins/ob-mongo") (:keywords "org" "babel" "mongo" "mongodb"))]) (ob-ml-marklogic . [(20160508 932) nil "org-babel functions for MarkLogic evaluation" tar ((:url . "http://github.com/ndw/ob-ml-marklogic") (:keywords "marklogic" "xquery" "javascript" "sparql"))]) (ob-lua . [(20160411 2024) ((org (8))) "Execute Lua code within org-mode blocks." single ((:url . "https://github.com/stardiviner/ob-lua") (:keywords "org" "babel" "lua"))]) (ob-lfe . [(20150701 655) ((org (8))) "org-babel functions for lfe evaluation" single ((:url . "http://github.com/zweifisch/ob-lfe") (:keywords "org" "babel" "lfe" "lisp" "erlang"))]) (ob-kotlin . [(20150312 614) ((org (8))) "org-babel functions for kotlin evaluation" single ((:url . "http://github.com/zweifisch/ob-kotlin") (:keywords "org" "babel" "kotlin"))]) (ob-ipython . [(20160424 1305) ((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 ((:url . "http://www.gregsexton.org") (:keywords "literate programming" "reproducible research"))]) (ob-http . [(20160415 2132) ((s (1 9 0)) (cl-lib (0 5))) "http request in org-mode babel" tar ((:url . "http://github.com/zweifisch/ob-http"))]) (ob-go . [(20160318 1252) nil "org-babel functions for go evaluation" tar ((:url . "http://orgmode.org") (:keywords "golang" "go" "literate programming" "reproducible research"))]) (ob-elixir . [(20151021 447) ((org (8))) "org-babel functions for elixir evaluation" single ((:url . "http://github.com/zweifisch/ob-elixir") (:keywords "org" "babel" "elixir"))]) (ob-diagrams . [(20160407 537) nil "org-babel functions for diagrams evaluation" single ((:url . "http://orgmode.org") (:keywords "literate programming" "reproducible research"))]) (ob-cypher . [(20150224 1837) ((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 ((:url . "http://github.com/zweifisch/ob-cypher") (:keywords "org" "babel" "cypher" "neo4j"))]) (ob-coffee . [(20160415 2036) ((org (8))) "org-babel functions for coffee-script evaluation" tar ((:url . "http://github.com/zweifisch/ob-coffee") (:keywords "org" "babel" "coffee-script"))]) (ob-browser . [(20150101 710) ((org (8))) "Render HTML in org-mode blocks." tar ((:url . "https://github.com/krisajenkins/ob-browser") (:keywords "org" "babel" "browser" "phantomjs"))]) (ob-axiom . [(20160310 1353) ((emacs (24 2)) (axiom-environment (20150801))) "org-babel for the axiom-environment system" single ((:keywords "axiom" "openaxiom" "fricas"))]) (oauth . [(20130127 1751) nil "Oauth library." tar ((:keywords "comm"))]) (o-blog . [(20151202 1539) nil "Standalone orgmode blog exporter" tar ((:keywords "emacs"))]) (nyan-prompt . [(20140809 2208) nil "Nyan Cat on the eshell prompt." tar ((:url . "http://github.com/PuercoPop/nyan-prompt") (:keywords "nyan" "cat" "lulz" "eshell" "rainbow dependencies ((rx 0))"))]) (nyan-mode . [(20160429 1323) nil "Nyan Cat shows position in current buffer in mode-line." tar ((:url . "https://github.com/TeMPOraL/nyan-mode/") (:keywords "nyan" "cat" "lulz" "scrolling" "pop tart cat" "build something amazing"))]) (nvm . [(20151113 55) ((s (1 8 0)) (dash (2 4 0)) (f (0 14 0)) (dash-functional (2 4 0))) "Manage Node versions within Emacs" single ((:url . "http://github.com/rejeep/nvm.el") (:keywords "node" "nvm"))]) (nummm-mode . [(20131117 214) nil "Display the number of minor modes instead of their names" single ((:url . "http://github.com/agpchil/nummm-mode"))]) (number . [(20141127 1004) nil "Working with numbers at point." single nil]) (nu-mode . [(20160520 614) ((undo-tree (0 6 5)) (transpose-frame (0)) (helm (20140902 1005))) "Modern Emacs Prompts Based Keybinding." tar nil]) (nsis-mode . [(20150914 546) nil "NSIS-mode" tar ((: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 ((: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 ((:keywords "lisp" "highlight" "convenience"))]) (noxml-fold . [(20151216 821) nil "Fold away XML things." single ((:url . "https://github.com/paddymcall/noxml-fold") (:keywords "xml" "folding"))]) (novice+ . [(20151231 1540) nil "Extensions to `novice.el'." single ((:url . "http://www.emacswiki.org/novice+.el") (:keywords "internal" "help"))]) (notmuch-labeler . [(20131230 919) ((notmuch (0))) "Improve notmuch way of displaying labels" tar ((:url . "https://github.com/DamienCassou/notmuch-labeler") (:keywords "emacs" "package" "elisp" "notmuch" "emails"))]) (notmuch . [(20160519 353) nil "run notmuch within emacs" tar ((:url . "https://notmuchmail.org/"))]) (nose . [(20140520 948) nil "Easy Python test running in Emacs" single ((:keywords "nose" "python" "testing"))]) (noflet . [(20141102 654) nil "locally override functions" single ((:url . "https://github.com/nicferrier/emacs-noflet") (:keywords "lisp"))]) (nodejs-repl . [(20151229 603) nil "Run Node.js REPL" single nil]) (node-resolver . [(20140930 1023) ((cl-lib (0 5))) "hook to install node modules in background" single ((:url . "https://github.com/meandavejustice/node-resolver.el") (:keywords "convenience" "nodejs" "javascript" "npm"))]) (noctilux-theme . [(20150723 747) nil "Dark theme inspired by LightTable" tar nil]) (noccur . [(20150514 1420) nil "Run multi-occur on project/dired files" single ((:keywords "convenience"))]) (nnir-est . [(20140301 602) nil "Gnus nnir interface for HyperEstraier" single ((: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 ((:url . "https://github.com/tjim/nevermore"))]) (nlinum-relative . [(20160520 603) ((emacs (24 4)) (nlinum (1 5))) "Relative line number with nlinum" single ((:keywords "convenience"))]) (nixos-options . [(20160209 1041) ((emacs (24))) "Interface for browsing and completing NixOS options." single ((:url . "http://www.github.com/travisbhartwell/nix-emacs/") (:keywords "unix"))]) (nix-sandbox . [(20160223 553) ((dash (2 12 1)) (s (1 10 0))) "Utility functions to work with nix-shell sandboxes" single ((:url . "https://github.com/travisbhartwell/nix-emacs"))]) (nix-mode . [(20160502 637) nil "Major mode for editing Nix expressions" single ((:url . "https://github.com/NixOS/nix/tree/master/misc/emacs"))]) (ninja-mode . [(20141203 2159) ((emacs (24))) "Major mode for editing .ninja files" single nil]) (nim-mode . [(20160510 1955) ((emacs (24 4)) (epc (0 1 1)) (let-alist (1 0 1)) (commenter (0 5 1)) (flycheck (0 25 1)) (company (0 8 12))) "A major mode for the Nim programming language" tar ((:keywords "nim" "languages"))]) (niflheim-theme . [(20150630 821) nil "A port of the Nifleim theme to Emacs" single ((:url . "https://github.com/niflheim-theme/emacs") (:keywords "themes"))]) (niceify-info . [(20160416 544) nil "improve usability of Info pages" single nil]) (nginx-mode . [(20150824 1411) nil "major mode for editing nginx config files" single ((:keywords "nginx"))]) (nexus . [(20140114 505) nil "REST Client for Nexus Maven Repository servers" tar ((:keywords "comm"))]) (newlisp-mode . [(20160226 745) nil "newLISP editing mode for Emacs" single ((:url . "https://github.com/kosh04/newlisp-mode") (:keywords "language" "lisp" "newlisp"))]) (never-comment . [(20140104 1407) nil "Never blocks are comment" single ((:url . "http://stackoverflow.com/a/4554658/89376"))]) (netherlands-holidays . [(20150202 817) nil "Netherlands holidays for Emacs calendar." single ((:url . "https://github.com/abo-abo/netherlands-holidays") (:keywords "calendar"))]) (neotree . [(20160306 730) nil "A tree plugin like NerdTree for Vim" tar ((:url . "https://github.com/jaypei/emacs-neotree"))]) (nemerle . [(20130328 746) nil "major mode for editing nemerle programs" single ((:keywords "nemerle" "mode" "languages"))]) (nclip . [(20130617 1315) nil "Network (HTTP) Clipboard" tar ((:url . "http://www.github.com/maio/nclip.el") (:keywords "nclip" "clipboard" "network"))]) (ncl-mode . [(20150525 929) ((emacs (24))) "Major Mode for editing NCL scripts and other goodies" tar nil]) (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 ((:keywords "terminal"))]) (navi2ch . [(20150329 1916) nil "Navigator for 2ch for Emacsen" tar ((:keywords "network" "2ch"))]) (navi-mode . [(20160327 134) ((outshine (2 0)) (outorg (2 0))) "major-mode for easy buffer-navigation" single ((:url . "https://github.com/tj64/navi"))]) (nav-flash . [(20140508 1341) nil "Briefly highlight the current line" single ((:url . "http://github.com/rolandwalker/nav-flash") (:keywords "extensions" "navigation" "interface"))]) (nav . [(20120507 7) nil "Emacs mode for filesystem navigation" tar nil]) (nasm-mode . [(20160427 1212) ((emacs (24 3))) "NASM x86 assembly major mode" single ((:url . "https://github.com/skeeto/nasm-mode"))]) (narrowed-page-navigation . [(20150108 2119) ((emacs (24)) (cl-lib (0 5))) "A minor mode for showing one page at a time" single ((:keywords "outlines"))]) (narrow-reindent . [(20150722 1206) ((emacs (24 4))) "Defines a minor mode to left-align narrowed regions." single ((:url . "https://github.com/emallson/narrow-reindent.el"))]) (narrow-indirect . [(20151231 1539) nil "Narrow using an indirect buffer that is a clone" single ((:url . "http://www.emacswiki.org/narrow-indirect.el") (:keywords "narrow" "indirect" "buffer" "clone" "view" "multiple-modes"))]) (naquadah-theme . [(20150923 141) nil "A theme based on Tango color set" single nil]) (nanowrimo . [(20151104 1828) nil "Track progress for nanowrimo" single ((:url . "https://bitbucket.org/gvol/nanowrimo-mode"))]) (nand2tetris-assembler . [(20151027 1436) ((names (0 3 0)) (nand2tetris (0 0 1))) "Assembler For the Nand2tetris Course" single ((:url . "http://www.github.com/CestDiego/nand2tetris-assembler.el/") (:keywords "nand2tetris-assembler" "hdl"))]) (nand2tetris . [(20151027 1451) ((names (0 3 0))) "Major mode for HDL files in the nand2tetris course" tar ((: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 ((:url . "https://github.com/chrisbarrett/elisp-namespaces"))]) (names . [(20151201 404) ((emacs (24 1)) (cl-lib (0 5))) "Namespaces for emacs-lisp. Avoid name clobbering without hiding symbols." tar ((:url . "https://github.com/Malabarba/names") (:keywords "extensions" "lisp"))]) (nameless . [(20160403 1113) ((emacs (24 4))) "Hide package namespace in your emacs-lisp code" single ((:url . "https://github.com/Malabarba/nameless") (:keywords "convenience" "lisp"))]) (nameframe-projectile . [(20151018 207) ((nameframe (0 4 0 -2)) (projectile (0 13 0))) "Nameframe integration with Projectile" single ((:url . "https://github.com/john2x/nameframe"))]) (nameframe-perspective . [(20151018 207) ((nameframe (0 4 0 -2)) (perspective (1 12))) "Nameframe integration with perspective.el" single ((:url . "https://github.com/john2x/nameframe"))]) (nameframe . [(20151017 2119) nil "Manage frames by name." single ((: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 ((:url . "https://github.com/knl/name-this-color.el") (:keywords "lisp" "color" "hex" "rgb" "shade" "name"))]) (naked . [(20151231 1527) nil "Provide for naked key descriptions: no angle brackets." single ((:url . "http://www.emacswiki.org/naked.el") (:keywords "lisp" "key" "print" "format" "help"))]) (n4js . [(20150713 1931) ((emacs (24)) (cypher-mode (0))) "Neo4j Shell" single ((:url . "https://github.com/tmtxt/n4js.el") (:keywords "neo4j" "shell" "comint"))]) (n3-mode . [(20141027 1057) nil "mode for Notation 3" single nil]) (myterminal-controls . [(20160119 2030) ((emacs (24)) (cl-lib (0 5))) "Quick toggle controls at a key-stroke" single ((:url . "http://ismail.teamfluxion.com") (:keywords "convenience" "shortcuts"))]) (mysql2sqlite . [(20151123 1339) nil "Convert mysql databases into sqlite databases." single nil]) (mynt-mode . [(20150512 1349) ((virtualenvwrapper (20131514))) "Minor mode to work with the mynt static site generator" single ((: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 ((:url . "https://github.com/yuutayamada/mykie-el") (:keywords "emacs" "configuration" "keybind"))]) (myanmar-input-methods . [(20160106 737) nil "Emacs Input Method for Myanmar" single ((:url . "http://github.com/yelinkyaw/emacs-myanmar-input-methods") (:keywords "myanmar" "unicode" "keyboard"))]) (mwim . [(20150822 1236) nil "Move to the beginning/end of line or code" single ((:url . "https://github.com/alezost/mwim.el") (:keywords "convenience"))]) (mwe-log-commands . [(20100703 541) nil "log keyboard commands to buffer" single ((:keywords "help"))]) (mvn . [(20160211 743) nil "helpers for compiling with maven" single ((: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 ((:url . "http://github.com/p-lambert/mutant.el") (:keywords "mutant" "testing"))]) (mustard-theme . [(20141115 2302) ((emacs (24 0))) "an Emacs 24 theme based on Mustard (tmTheme)" single ((:url . "https://github.com/emacsfodder/tmtheme-to-deftheme"))]) (mustang-theme . [(20141017 1623) nil "port of vim's mustang theme" single ((:url . "http://github.com/mswift42/mustang-theme"))]) (mustache-mode . [(20141024 732) nil "A major mode for editing Mustache files." single nil]) (mustache . [(20131117 1407) ((ht (0 9)) (s (1 3 0)) (dash (1 2 0))) "a mustache templating library in emacs lisp" tar nil]) (multiple-cursors . [(20160520 551) ((cl-lib (0 5))) "Multiple cursors for Emacs." tar nil]) (multifiles . [(20130615 1433) nil "View and edit parts of multiple files in one buffer" single ((:keywords "multiple" "files"))]) (multicolumn . [(20150202 1451) nil "Creating and managing multiple side-by-side windows." single ((:url . "https://github.com/Lindydancer/multicolumn"))]) (multi-web-mode . [(20130823 2054) nil "multiple major mode support for web editing" tar ((:url . "https://github.com/fgallina/multi-web-mode") (:keywords "convenience" "languages" "wp"))]) (multi-term . [(20150220 520) nil "Managing multiple terminal buffers in Emacs." single ((:url . "http://www.emacswiki.org/emacs/download/multi-term.el") (:keywords "term" "terminal" "multiple buffer"))]) (multi-project . [(20150314 744) nil "Easily work with multiple projects." single ((:url . "https://bitbucket.org/ellisvelo/multi-project/overview") (:keywords "project" "management"))]) (multi-line . [(20160520 1510) ((emacs (24))) "multi-line statements" tar ((:url . "https://github.com/IvanMalison/multi-line") (:keywords "multi" "line" "length" "whitespace" "programming"))]) (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 ((: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 ((:url . "http://github.com/kurisuwhyte/emacs-multi") (:keywords "multimethod" "generic" "predicate" "dispatch"))]) (mu4e-maildirs-extension . [(20160126 39) ((dash (0 0 0))) "Show mu4e maildirs summary in mu4e-main-view" single ((:url . "http://github.com/agpchil/mu4e-maildirs-extension"))]) (mu4e-alert . [(20160215 209) ((alert (1 2)) (s (1 10 0)) (ht (2 0)) (emacs (24 1))) "Desktop notification for mu4e" single ((: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 nil]) (msvc . [(20150530 151) ((emacs (24)) (cl-lib (0 5)) (cedet (1 0)) (ac-clang (1 2 0))) "Microsoft Visual C/C++ mode" tar ((: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 ((:url . "https://github.com/kljohann/mpv.el") (:keywords "tools" "multimedia"))]) (mpg123 . [(20151214 1150) nil "A front-end program to mpg123/ogg123" single nil]) (mpages . [(20150710 704) nil "An Emacs buffer for quickly writing your Morning Pages" single ((:url . "https://github.com/slevin/mpages"))]) (mozc-temp . [(20160228 40) ((emacs (24)) (dash (2 10 0)) (mozc (0))) "Use mozc temporarily" single ((:url . "https://github.com/HKey/mozc-temp"))]) (mozc-popup . [(20150223 1634) ((popup (0 5 2)) (mozc (0))) "Mozc with popup" single ((:keywords "i18n" "extentions"))]) (mozc-im . [(20160411 1722) ((mozc (0))) "Mozc with input-method-function interface." single ((:keywords "i18n" "extentions"))]) (mozc . [(20160102 1506) nil "minor mode to input Japanese with Mozc" single ((:keywords "mule" "multilingual" "input method"))]) (moz-controller . [(20151208 1806) ((moz (0))) "Control Firefox from Emacs" single ((:url . "https://github.com/RenWenshan/emacs-moz-controller"))]) (moz . [(20150805 1006) nil "Lets current buffer interact with inferior mozilla." single ((:url . "http://github.com/bard/mozrepl/raw/master/chrome/content/moz.el"))]) (mowedline . [(20150601 1009) nil "elisp utilities for using mowedline" single nil]) (move-text . [(20160430 1730) nil "Move current line or region with M-up or M-down." single ((:keywords "edit"))]) (move-dup . [(20140925 808) nil "Eclipse-like moving and duplicating lines or rectangles." single ((:keywords "convenience" "wp"))]) (mouse3 . [(20151231 1526) nil "Customizable behavior for `mouse-3'." single ((:url . "http://www.emacswiki.org/mouse3.el") (:keywords "mouse" "menu" "keymap" "kill" "rectangle" "region"))]) (mouse-slider-mode . [(20150910 1400) ((emacs (24 3)) (cl-lib (0 3))) "scale numbers dragged under the mouse" single ((:url . "https://github.com/skeeto/mouse-slider-mode"))]) (mouse+ . [(20151231 1525) nil "Extensions to `mouse.el'." single ((:url . "http://www.emacswiki.org/mouse+.el") (:keywords "mouse"))]) (motion-mode . [(20140919 1856) ((flymake-easy (0 7)) (flymake-cursor (1 0 2))) "major mode for RubyMotion enviroment" tar ((:url . "https://github.com/ainame/motion-mode"))]) (mote-mode . [(20160122 1629) ((ruby-mode (1 1))) "Mote minor mode" single ((:url . "http://inkel.github.com/mote-mode/"))]) (morlock . [(20160521 730) nil "more font-lock keywords for elisp" single ((:url . "http://github.com/tarsius/morlock") (:keywords "convenience"))]) (moonscript . [(20160503 631) ((cl-lib (0 5)) (emacs (24))) "Major mode for editing MoonScript code" tar nil]) (monroe . [(20160421 440) nil "Yet another client for nREPL" single ((:url . "http://www.github.com/sanel/monroe") (:keywords "languages" "clojure" "nrepl" "lisp"))]) (monokai-theme . [(20160515 1404) nil "A fruity color theme for Emacs." single ((:url . "http://github.com/oneKelvinSmith/monokai-emacs"))]) (monochrome-theme . [(20140326 350) nil "A dark Emacs 24 theme for your focused hacking sessions" tar nil]) (monky . [(20160315 2051) nil "Control Hg from Emacs." tar nil]) (mongo . [(20150315 519) nil "MongoDB driver for Emacs Lisp" tar ((:keywords "convenience"))]) (molokai-theme . [(20151016 845) nil "molokai theme with Emacs theme engine" single ((:url . "https://github.com/alloy-d/color-theme-molokai"))]) (moe-theme . [(20160322 115) nil "A colorful eye-candy theme. Moe, moe, kyun!" tar ((: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 ((:url . "http://www.github.com/jordonbiondo/modtime-skip-mode"))]) (modern-cpp-font-lock . [(20160520 228) nil "Font-locking for \"Modern C++\"" single ((:url . "https://github.com/ludwigpacifici/modern-cpp-font-lock") (:keywords "languages" "c++" "cpp" "font-lock"))]) (modeline-posn . [(20160112 649) nil "Set up `mode-line-position'." single ((:url . "http://www.emacswiki.org/modeline-posn.el") (:keywords "mode-line" "region" "column"))]) (modeline-char . [(20151231 1519) nil "In the mode-line, show the value of the character after point." single ((:url . "http://www.emacswiki.org/modeline-char.el") (:keywords "mode-line" "character"))]) (mode-line-debug . [(20150307 512) nil "show status of `debug-on-error' in the mode-line" single ((:url . "https://github.com/tarsius/mode-line-debug") (:keywords "convenience" "lisp"))]) (mode-icons . [(20160509 707) ((emacs (24)) (cl-lib (0 5))) "Show icons for modes" tar ((:url . "http://ryuslash.org/projects/mode-icons.html") (:keywords "multimedia"))]) (modalka . [(20160122 433) ((emacs (24 4))) "Easily introduce native modal editing of your own design" single ((: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 ((:keywords "lisp" "testing"))]) (mocha-snippets . [(20160211 832) ((yasnippet (0 8 0))) "Yasnippets for the Mocha JS Testing Framework" tar ((:keywords "test" "javascript"))]) (mocha . [(20160223 2055) ((js2-mode (20150909))) "Run Mocha or Jasmine tests" single ((: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 ((: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 ((:keywords "convenience"))]) (mo-git-blame . [(20160129 959) nil "An interactive, iterative 'git blame' mode for Emacs" single ((:keywords "tools"))]) (mmt . [(20150906 959) ((emacs (24 1)) (cl-lib (0 3))) "Missing macro tools for Emacs Lisp" single ((:url . "https://github.com/mrkkrp/mmt") (:keywords "macro" "emacs-lisp"))]) (mmm-mode . [(20150828 1716) nil "Allow Multiple Major Modes in a buffer" tar ((: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 . [(20150904 1134) ((mmm-mode (0 5 4))) "MMM submode class for Jinja2 Templates" single ((:url . "https://github.com/beardedprojamz/mmm-jinja2"))]) (mkdown . [(20140517 718) ((markdown-mode (2 0))) "Pretty Markdown previews based on mkdown.com" tar ((:url . "https://github.com/ajtulloch/mkdown.el") (:keywords "markdown"))]) (misc-fns . [(20151231 1508) nil "Miscellaneous non-interactive functions." single ((:url . "http://www.emacswiki.org/misc-fns.el") (:keywords "internal" "unix" "lisp" "extensions" "local"))]) (misc-cmds . [(20151231 1423) nil "Miscellaneous commands (interactive functions)." single ((:url . "http://www.emacswiki.org/misc-cmds.el") (:keywords "internal" "unix" "extensions" "maint" "local"))]) (mip-mode . [(20151126 2217) nil "virtual projects for emacs." single ((: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 . [(20151214 558) ((emacs (24 1))) "Major mode for MiniZinc code" single ((:url . "http://github.com/m00nlight/minizinc-mode") (:keywords "languages" "minizinc"))]) (minitest . [(20160428 1050) ((dash (1 0 0))) "An Emacs mode for ruby minitest files" tar ((:url . "https://github.com/arthurnn/minitest-emacs"))]) (minimal-theme . [(20140409 1601) nil "A light/dark minimalistic Emacs 24 theme." tar ((:url . "http://github.com/ikame/minimal-theme") (:keywords "color" "theme" "minimal"))]) (minimal-session-saver . [(20140508 1341) nil "Very lean session saver" single ((:url . "http://github.com/rolandwalker/minimal-session-saver") (:keywords "tools" "frames" "project"))]) (miniedit . [(20100419 1045) nil "Enhanced editing for minibuffer fields." single nil]) (minibuffer-cua . [(20130906 434) nil "Make CUA mode's S-up/S-down work in minibuffer" single ((:url . "https://github.com/knu/minibuffer-cua.el") (:keywords "completion" "editing"))]) (minibuffer-complete-cycle . [(20130813 945) nil "Cycle through the *Completions* buffer" single ((:url . "https://github.com/knu/minibuffer-complete-cycle") (:keywords "completion"))]) (minibuf-isearch . [(20151226 1143) nil "incremental search on minibuffer history" single ((:keywords "minibuffer" "history" "incremental search"))]) (mingus . [(20160321 917) ((libmpdee (2 1))) "MPD Interface" tar ((: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 ((:keywords "milkode" "search" "grep" "jump" "keyword"))]) (migemo . [(20150412 741) ((cl-lib (0 5))) "Japanese incremental search through dynamic pattern expansion" single ((:url . "https://github.com/emacs-jp/migemo"))]) (midje-mode . [(20150921 1750) ((cider (0 1 4)) (clojure-mode (1 0))) "Minor mode for running Midje tests in emacs" tar nil]) (micgoline . [(20160414 2026) ((emacs (24 3)) (powerline (2 3))) "powerline mode, color schemes from microsoft and google's logo." single ((:url . "https://github.com/yzprofile/micgoline") (:keywords "mode-line" "powerline" "theme"))]) (mic-paren . [(20150110 1816) nil "advanced highlighting of matching parentheses" single ((:keywords "languages" "faces" "parenthesis" "matching"))]) (mhc . [(20160519 1941) ((calfw (20150703))) "Message Harmonized Calendaring system." tar ((:url . "http://www.quickhack.net/mhc") (:keywords "calendar"))]) (mexican-holidays . [(20160109 1342) nil "Mexico holidays for Emacs calendar." single ((:url . "https://github.com/shopClerk/mexican-holidays") (:keywords "calendar"))]) (mew . [(20150813 2354) nil "Messaging in the Emacs World" tar nil]) (metaweblog . [(20141130 605) ((xml-rpc (1 6 8))) "An emacs library to access metaweblog based weblogs" tar nil]) (metascript-mode . [(20150708 1757) ((emacs (24 3))) "Major mode for the Metascript programming language" single ((:url . "http://github.com/metascript/metascript-mode") (:keywords "languages" "metascript" "mjs"))]) (metafmt . [(20160221 855) nil "Run metafmt on buffers when saving them" single ((:url . "https://github.com/lvillani/metafmt") (:keywords "languages" "tools"))]) (meta-presenter . [(20150501 410) nil "A simple multi-file presentation tool for Emacs" single ((:url . "http://ismail.teamfluxion.com") (:keywords "productivity" "presentation"))]) (message-x . [(20151029 718) nil "customizable completion in message headers" single ((:keywords "news" "mail" "compose" "completion"))]) (merlin . [(20160229 628) nil "Mode for Merlin, an assistant for OCaml." tar ((:url . "http://github.com/the-lambda-church/merlin") (:keywords "ocaml" "languages"))]) (menu-bar+ . [(20160512 1714) nil "Extensions to `menu-bar.el'." single ((:url . "http://www.emacswiki.org/menu-bar+.el") (:keywords "internal" "local" "convenience"))]) (mentor . [(20140904 1710) ((xml-rpc (1 6 9))) "Frontend for the rTorrent bittorrent client" tar ((:keywords "bittorrent" "rtorrent"))]) (memolist . [(20150804 1021) ((markdown-mode (22 0)) (ag (0 45))) "memolist.el is Emacs port of memolist.vim." single ((:url . "http://github.com/mikanfactory/emacs-memolist") (:keywords "markdown" "memo"))]) (memoize . [(20130421 1234) nil "Memoization functions" single ((:url . "https://github.com/skeeto/emacs-memoize"))]) (memento . [(20150823 339) nil "maintaining daily journals when the day ends." single ((:keywords "journal" "log" "diary"))]) (melpa-upstream-visit . [(20130720 333) ((s (1 6 0))) "A set of kludges to visit a melpa-hosted package's homepage" single ((:keywords "convenience"))]) (mellow-theme . [(20141115 2302) ((emacs (24 0))) "an Emacs 24 theme based on Mellow (tmTheme)" single ((:url . "https://github.com/emacsfodder/tmtheme-to-deftheme"))]) (mediawiki . [(20160425 702) nil "mediawiki frontend" single ((:url . "http://github.com/hexmode/mediawiki-el") (:keywords "mediawiki" "wikipedia" "network" "wiki"))]) (meacupla-theme . [(20151027 1517) nil "meacupla theme for emacs" single ((:url . "https://gitlab.com/jtecca/meacupla-theme") (:keywords "color" "theme" "meacupla" "faces"))]) (md-readme . [(20150505 2359) nil "Markdown-formatted READMEs for your ELisp" tar ((:url . "http://github.com/thomas11/md-readme/tree/master") (:keywords "lisp" "help" "readme" "markdown" "header" "documentation" "github"))]) (mc-extras . [(20150218 234) ((multiple-cursors (1 2 1))) "Extra functions for multiple-cursors mode." tar ((:url . "https://github.com/knu/mc-extras.el") (:keywords "editing" "cursors"))]) (mbo70s-theme . [(20141122 642) ((emacs (24 0))) "70s style palette, with similarities to mbo theme" single ((:url . "https://github.com/emacsfodder/tmtheme-to-deftheme"))]) (mbe . [(20151126 334) ((emacs (24)) (cl-lib (0 5))) "Macros by Example" single ((:url . "https://github.com/ijp/mbe.el") (:keywords "tools" "macros"))]) (mb-url . [(20160508 631) ((cl-lib (0))) "Multiple Backends for Emacs URL package." tar ((:url . "https://github.com/dochang/mb-url") (:keywords "url"))]) (mb-depth+ . [(20151231 1421) nil "Indicate minibuffer-depth in prompt" single ((:url . "http://www.emacswiki.org/mb-depth+.el") (:keywords "convenience"))]) (maxframe . [(20140916 754) nil "maximize the emacs frame based on display size" single ((: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 ((: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 ((:keywords "maude"))]) (matrix-client . [(20160424 2159) ((json (1 4)) (request (0 2 0))) "A minimal chat client for the Matrix.org RPC" tar ((:url . "http://doc.rix.si/matrix.html") (:keywords "web"))]) (matlab-mode . [(20160416 34) nil "Major mode for MATLAB(R) dot-m files" tar ((:url . "http://sourceforge.net/projects/matlab-emacs/") (:keywords "matlab" "programming" "language" "(X)emacs"))]) (math-symbols . [(20151121 1642) ((helm (1 0))) "Math Symbol Input methods and conversion tools" tar ((:url . "https://github.com/kawabata/math-symbols") (:keywords "math symbols" "tex" "latex"))]) (math-symbol-lists . [(20160302 1431) nil "Lists of Unicode math symbols and latex commands" tar ((:url . "https://github.com/vspinu/math-symbol-lists") (:keywords "unicode" "symbols" "mathematics"))]) (material-theme . [(20160516 844) ((emacs (24 1))) "A Theme based on the colors of the Google Material Design" tar ((:url . "http://github.com/cpaulik/emacs-material-theme") (:keywords "themes"))]) (marshal . [(20150916 1857) ((eieio (1 4)) (json (1 3))) "eieio extension for automatic (un)marshalling" single ((: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 ((:url . "https://github.com/nicferrier/emacs-marmalade-upload") (:keywords "lisp"))]) (marmalade . [(20110602 1622) ((furl (0 0 2))) "Elisp interface for the Emacs Lisp package server." single ((:url . "http://code.google.com/p/marmalade"))]) (markup-faces . [(20141110 17) nil "collection of faces for markup language modes" single ((:url . "https://github.com/sensorflo/markup-faces") (:keywords "wp" "faces"))]) (markup . [(20130207 1309) nil "Simple markup generation helpers." single ((:url . "http://github.com/leoc/markup.el") (:keywords "convenience" "markup" "html"))]) (markdown-toc . [(20160227 308) ((s (1 9 0)) (dash (2 11 0)) (markdown-mode (2 1))) "A simple TOC generator for markdown file" tar nil]) (markdown-preview-mode . [(20160215 849) ((websocket (1 5)) (markdown-mode (2 1)) (cl-lib (0 5))) "markdown realtime preview minor mode." tar ((:url . "https://github.com/ancane/markdown-preview-mode") (:keywords "markdown" "preview"))]) (markdown-preview-eww . [(20160111 702) ((emacs (24 4))) "Realtime preview by eww" single ((:url . "https://github.com/niku/markdown-preview-eww"))]) (markdown-mode . [(20160513 618) ((emacs (24)) (cl-lib (0 5))) "Major mode for Markdown-formatted text" single ((:url . "http://jblevins.org/projects/markdown-mode/") (:keywords "markdown" "github flavored markdown" "itex"))]) (markdown-mode+ . [(20120829 510) ((markdown-mode (20111229))) "extra functions for markdown-mode" tar ((:url . "http://github.com/milkypostman/markdown-mode+.el") (:keywords "markdown" "latex" "osx" "rtf"))]) (markdown-mac-link . [(20160520 221) ((emacs (24))) "Insert Markdown links to items selected in various Mac apps" single ((:url . "https://github.com/xuchunyang/markdown-mac-link") (:keywords "markdown" "mac" "hyperlink"))]) (mark-tools . [(20130614 325) nil "Some simple tools to access the mark-ring in Emacs" single ((:url . "https://github.com/stsquad/emacs-mark-tools"))]) (mark-multiple . [(20121118 754) nil "Sorta lets you mark several regions at once." tar nil]) (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 ((:url . "https://github.com/nlamirault/marcopolo") (:keywords "docker"))]) (map-regexp . [(20130522 1403) ((cl-lib (0 2))) "map over matches of a regular expression" single ((:url . "https://github.com/tarsius/map-regexp") (:keywords "convenience"))]) (map-progress . [(20140310 1432) nil "mapping macros that report progress" single ((:url . "https://github.com/tarsius/map-progress/") (:keywords "convenience"))]) (mandoku . [(20160504 1012) ((org (8 0)) (magit (20151028)) (github-clone (20150705)) (git (20140128))) "A tool to access repositories of premodern Chinese texts" tar nil]) (manage-minor-mode . [(20140310 900) ((emacs (24 3))) "Manage your minor-modes easily" single ((: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 ((:url . "http://github.com/nflath/man-commands"))]) (mallard-snippets . [(20131023 1151) ((yasnippet (0 8 0)) (mallard-mode (0 1 1))) "Yasnippets for Mallard" tar ((:url . "https://github.com/jhradilek/emacs-mallard-snippets") (:keywords "snippets" "mallard"))]) (mallard-mode . [(20131203 2025) nil "Major mode for editing Mallard files" tar ((:url . "https://github.com/jhradilek/emacs-mallard-mode") (:keywords "xml" "mallard"))]) (malinka . [(20160402 129) ((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 ((:url . "https://github.com/LefterisJP/malinka") (:keywords "c" "c++" "project-management"))]) (malabar-mode . [(20150720 1055) ((fringe-helper (1 0 1)) (groovy-mode (0))) "JVM Integration mode for EMACS" tar ((:url . "http://www.github.com/m0smith/malabar-mode") (:keywords "java" "maven" "groovy" "language" "malabar"))]) (makey . [(20131231 630) ((cl-lib (0 2))) "interactive commandline mode" single nil]) (maker-mode . [(20150116 354) ((s (1 3 0)) (dash (2 8 0))) "Emacs mode for maker (scala build tool)" single ((:url . "https://github.com/fommil/maker-mode") (:keywords "processes" "tools"))]) (make-it-so . [(20150319 1207) ((helm (1 5 3)) (emacs (24))) "Transform files with Makefile recipes." tar ((: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 ((:url . "https://github.com/alezost/make-color.el") (:keywords "color"))]) (majapahit-theme . [(20160412 432) nil "Color theme with a dark and light versions" tar ((: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 ((: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 nil]) (magma-mode . [(20160304 408) ((cl-lib (0 3)) (dash (2 6 0)) (f (0 17 1))) "Magma mode for Emacs" tar ((:url . "https://github.com/ThibautVerron/magma-mode"))]) (magit-topgit . [(20160313 1254) ((emacs (24 4)) (magit (2 1 0))) "TopGit extension for Magit" single ((:keywords "vc" "tools"))]) (magit-svn . [(20151219 547) ((emacs (24 4)) (magit (2 1 0))) "Git-Svn extension for Magit" single ((:keywords "vc" "tools"))]) (magit-stgit . [(20160224 703) ((emacs (24 4)) (magit (2 1 0))) "StGit extension for Magit" single ((:keywords "vc" "tools"))]) (magit-rockstar . [(20160517 651) ((dash (2 12 1)) (magit (2 6 1))) "commit like a rockstar" single ((:url . "http://github.com/tarsius/magit-rockstar") (:keywords "convenience"))]) (magit-popup . [(20160521 1221) ((emacs (24 4)) (async (20150909 2257)) (dash (20151021 113))) "Define prefix-infix-suffix command combos" tar ((:url . "https://github.com/magit/magit") (:keywords "bindings"))]) (magit-p4 . [(20160311 909) ((magit (2 1)) (magit-popup (2 1)) (p4 (12 0)) (cl-lib (0 5))) "git-p4 plug-in for Magit" single ((:url . "https://github.com/qoocku/magit-p4") (:keywords "vc" "tools"))]) (magit-gitflow . [(20160428 230) ((magit (2 1 0)) (magit-popup (2 2 0))) "gitflow extension for magit" single ((:url . "https://github.com/jtatarik/magit-gitflow") (:keywords "vc" "tools"))]) (magit-gh-pulls . [(20160513 310) ((emacs (24)) (gh (0 9 1)) (magit (2 1 0)) (pcache (0 2 3)) (s (1 6 1))) "GitHub pull requests extension for Magit" single ((: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 ((: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 ((: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 ((:keywords "tools"))]) (magit-annex . [(20160514 1605) ((cl-lib (0 3)) (magit (2 3 0))) "Control git-annex from Magit" single ((:url . "https://github.com/kyleam/magit-annex") (:keywords "vc" "tools"))]) (magit . [(20160522 1346) ((emacs (24 4)) (async (20150909 2257)) (dash (20151021 113)) (with-editor (20160408 201)) (git-commit (20160425 430)) (magit-popup (20160512 328))) "A Git porcelain inside Emacs" tar ((:url . "https://github.com/magit/magit") (:keywords "git" "tools" "vc"))]) (magic-latex-buffer . [(20160212 603) ((cl-lib (0 5)) (emacs (24 3))) "Magically enhance LaTeX-mode font-locking for semi-WYSIWYG editing" single ((:url . "http://hins11.yu-yake.com/"))]) (magic-filetype . [(20160522 729) ((emacs (24)) (s (1 9 0))) "Enhance filetype major mode" single ((:url . "https://github.com/zonuexe/magic-filetype.el") (:keywords "vim" "ft" "file" "magic-mode"))]) (mag-menu . [(20150505 1150) ((splitter (0 1 0))) "Intuitive keyboard-centric menu system" single ((:url . "https://github.com/chumpage/mag-menu") (:keywords "convenience"))]) (macrostep . [(20151213 145) ((cl-lib (0 5))) "interactive macro expander" tar ((:url . "https://github.com/joddie/macrostep") (:keywords "lisp" "languages" "macro" "debugging"))]) (macros+ . [(20151231 1419) nil "Extensions to `macros.el'." single ((:url . "http://www.emacswiki.org/macros+.el") (:keywords "abbrev" "local"))]) (macro-math . [(20130328 904) nil "in-buffer mathematical operations" single ((:url . "http://nschum.de/src/emacs/macro-math/") (:keywords "convenience"))]) (m-buffer . [(20160125 1303) ((dash (2 8 0)) (emacs (24 3))) "List-Oriented, Functional Buffer Manipulation" tar nil]) (lxc . [(20140410 1322) nil "lxc integration with Emacs" single ((:url . "https://github.com/nicferrier/emacs-lxc") (:keywords "processes"))]) (lusty-explorer . [(20150508 1557) nil "Dynamic filesystem explorer and buffer switcher" single ((:keywords "convenience" "files" "matching"))]) (lush-theme . [(20141107 806) ((emacs (24))) "A dark theme with strong colors" single ((:url . "https://github.com/andre-richter/emacs-lush-theme") (:keywords "theme" "dark" "strong colors"))]) (lua-mode . [(20160502 1141) nil "a major-mode for editing Lua scripts" tar ((:url . "http://immerrr.github.com/lua-mode") (:keywords "languages" "processes" "tools"))]) (love-minor-mode . [(20130429 1459) ((lua-mode (20130419))) "Minor mode for working on LÖVE projects" single ((:url . "https://github.com/ejmr/love-minor-mode"))]) (lorem-ipsum . [(20140911 1408) nil "Insert dummy pseudo Latin text." single ((:keywords "tools" "language" "convenience"))]) (loop . [(20151228 321) nil "friendly imperative loop structures" single ((:keywords "loop" "while" "for each" "break" "continue"))]) (look-mode . [(20151211 1026) nil "quick file viewer for image and text file browsing" single nil]) (look-dired . [(20151115 1756) ((look-mode (1 0))) "Extensions to look-mode for dired buffers" single ((:url . "https://github.com/vapniks/look-dired") (:keywords "convenience"))]) (lolcode-mode . [(20111002 147) nil "Major mode for editing LOLCODE" single ((:url . "http://github.com/bodil/lolcode-mode") (:keywords "lolcode" "major" "mode"))]) (logview . [(20160520 1341) ((emacs (24 1)) (datetime (0 1))) "Major mode for viewing log files" single ((:url . "https://github.com/doublep/logview") (:keywords "files" "tools"))]) (logstash-conf . [(20150308 518) nil "basic mode for editing logstash configuration" single nil]) (logito . [(20120225 1255) ((eieio (1 3))) "logging library for Emacs" single ((: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 ((:url . "https://github.com/logaling/logalimacs") (:keywords "translation" "logaling-command"))]) (log4j-mode . [(20160108 1118) nil "major mode for viewing log files" single ((:url . "http://log4j-mode.sourceforge.net") (:keywords "tools"))]) (log4e . [(20150105 505) nil "provide logging framework for elisp" single ((:url . "https://github.com/aki2o/log4e") (:keywords "log"))]) (lodgeit . [(20150312 649) nil "Paste to a lodgeit powered pastebin" single ((:url . "https://github.com/ionrock/lodgeit-el") (:keywords "pastebin" "lodgeit"))]) (loccur . [(20160129 1222) ((cl-lib (0))) "Perform an occur-like folding in current buffer" single ((:url . "https://github.com/fourier/loccur") (:keywords "matching"))]) (loc-changes . [(20150302 848) nil "keep track of positions even after buffer changes" single ((:url . "http://github.com/rocky/emacs-loc-changes"))]) (load-theme-buffer-local . [(20120702 1336) nil "Install emacs24 color themes by buffer." single ((:url . "http://github.com/vic/color-theme-buffer-local") (:keywords "faces"))]) (load-relative . [(20160505 19) nil "relative file load (within a multi-file Emacs package)" single ((:url . "http://github.com/rocky/emacs-load-relative") (:keywords "internal"))]) (llvm-mode . [(20150910 644) nil "Major mode for the LLVM assembler language." tar nil]) (livid-mode . [(20131116 544) ((skewer-mode (1 5 3)) (s (1 8 0))) "Live browser eval of JavaScript every time a buffer changes" single ((:url . "https://github.com/pandeiro/livid-mode"))]) (livescript-mode . [(20140612 2121) nil "Major mode for editing LiveScript files" single ((:url . "https://github.com/yhisamatsu/livescript-mode") (:keywords "languages" "livescript"))]) (lively . [(20160208 1035) nil "interactively updating text" single nil]) (live-py-mode . [(20160521 1130) ((emacs (24 1))) "Live Coding in Python" tar ((: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 ((:keywords "docs" "multimedia"))]) (literate-starter-kit . [(20150730 1154) ((emacs (24 3))) "A literate starter kit to configure Emacs using Org-mode files." tar nil]) (literate-coffee-mode . [(20160114 434) ((coffee-mode (0 5 0))) "major-mode for Literate CoffeeScript" single ((:url . "https://github.com/syohex/emacs-literate-coffee-mode"))]) (litecoin-ticker . [(20160514 505) nil "No description available." single nil]) (litable . [(20150908 709) ((dash (2 6 0))) "dynamic evaluation replacement with emacs" single ((:keywords "lisp"))]) (lit-mode . [(20141123 936) nil "Major mode for lit" single ((:keywords "languages" "tools"))]) (list-utils . [(20160414 702) nil "List-manipulation utility functions" single ((: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 ((:keywords "convenience"))]) (list-register . [(20091203 1015) nil "List register" single nil]) (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 ((:keywords "convenience" "tools"))]) (list-environment . [(20151226 1856) nil "A tabulated process environment editor" single ((:keywords "processes" "unix"))]) (lispyscript-mode . [(20130828 719) nil "Major mode for LispyScript code." single ((:url . "https://github.com/krisajenkins/lispyscript-mode") (:keywords "lisp" "languages"))]) (lispy . [(20160516 313) ((emacs (24 1)) (ace-window (0 9 0)) (iedit (0 9 9)) (swiper (0 7 0)) (hydra (0 13 4))) "vi-like Paredit" tar nil]) (lispxmp . [(20130824 507) 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 . [(20160507 1502) nil "Highlight bound variables and quoted exprs." single ((:url . "https://github.com/Lindydancer/lisp-extra-font-lock") (:keywords "languages" "faces"))]) (liso-theme . [(20160410 1329) nil "Eclectic Dark Theme for GNU Emacs" single ((:url . "https://github.com/caisah/liso-theme") (:keywords "theme" "themes"))]) (linum-relative . [(20160510 118) nil "display relative line number in emacs." single ((:url . "http://github.com/coldnew/linum-relative") (:keywords "converience"))]) (linum-off . [(20160217 1337) nil "Provides an interface for turning line-numbering off" single ((:url . "http://www.emacswiki.org/emacs/auto-indent-mode.el ") (:keywords "line" "numbering"))]) (linphone . [(20130524 409) nil "Emacs interface to Linphone" tar ((:url . "https://github.com/zabbal/emacs-linphone") (:keywords "comm"))]) (link-hint . [(20160412 2218) ((avy (0 3 0)) (emacs (24 1)) (cl-lib (0 5))) "Use avy to open or copy visible urls." single ((:url . "https://github.com/noctuid/link-hint.el") (:keywords "url"))]) (link . [(20140717 2029) nil "Hypertext links in text buffers" single ((:keywords "interface" "hypermedia"))]) (lingr . [(20100807 1031) nil "Lingr Client for GNU Emacs" single ((: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 nil]) (lice . [(20151225 1022) nil "License And Header Template" tar ((: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 ((:keywords "music" "mpd"))]) (lib-requires . [(20151231 1410) nil "Commands to list Emacs Lisp library dependencies." single ((:url . "http://www.emacswiki.org/lib-requires.el") (:keywords "libraries" "files"))]) (lfe-mode . [(20160422 1206) nil "Lisp Flavoured Erlang mode" tar nil]) (lexbind-mode . [(20141027 729) nil "Puts the value of lexical-binding in the mode line" single ((:url . "https://github.com/spacebat/lexbind-mode") (:keywords "convenience" "lisp"))]) (levenshtein . [(20051013 1056) nil "Edit distance between two strings." single ((:keywords "lisp"))]) (leuven-theme . [(20160514 1614) nil "Awesome Emacs color theme on white background" single ((:url . "https://github.com/fniessen/emacs-leuven-theme") (:keywords "color" "theme"))]) (letcheck . [(20160202 1148) nil "Check the erroneous assignments in let forms" single ((:url . "https://github.com/Fuco1/letcheck") (:keywords "convenience"))]) (less-css-mode . [(20150511 319) nil "Major mode for editing LESS CSS files (lesscss.org)" single ((:url . "https://github.com/purcell/less-css-mode") (:keywords "less" "css" "mode"))]) (lentic-server . [(20150320 626) ((lentic (0 8)) (web-server (0 1 1))) "Web Server for Emacs Literate Source" single nil]) (lentic . [(20160110 905) ((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 nil]) (lenlen-theme . [(20150307 11) ((color-theme-solarized (20150110))) "a solarized-based kawaii light theme" single ((:url . "http://hins11.yu-yake.com/"))]) (lemon-mode . [(20130216 504) nil "A major mode for editing lemon grammar files" single ((:keywords "lemon"))]) (legalese . [(20150820 1024) nil "Add legalese to your program files" single ((:url . "https://github.com/jorgenschaefer/legalese") (:keywords "convenience"))]) (leerzeichen . [(20151105 2228) nil "Minor mode to display whitespace characters." single ((:url . "http://github.com/fgeller/leerzeichen.el") (:keywords "whitespace" "characters"))]) (ledger-mode . [(20160504 1843) nil "Helper code for use with the \"ledger\" command-line tool" tar nil]) (ldap-mode . [(20091203 1015) nil "major modes for editing LDAP schema and LDIF files" single ((:url . "http://www.loveshack.ukfsn.org/emacs") (:keywords "data"))]) (lavender-theme . [(20141115 2302) ((emacs (24 0))) "an Emacs 24 theme based on Lavender (tmTheme)" single ((:url . "https://github.com/emacsfodder/tmtheme-to-deftheme"))]) (launchctl . [(20150518 609) ((emacs (24 1))) "Interface to launchctl on Mac OS X." single ((:url . "http://github.com/pekingduck/launchctl-el") (:keywords "tools" "convenience"))]) (launch . [(20130619 1504) nil "launch files with OS-standard associated applications." single ((:url . "https://github.com/sfllaw/emacs-launch") (:keywords "convenience" "processes"))]) (latex-unicode-math-mode . [(20160411 530) nil "Input method for Unicode math symbols" tar ((: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 nil]) (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 . [(20160321 2159) nil "preview LaTeX mathematical expressions." single ((:url . "https://gitlab.com/latex-math-preview/latex-math-preview") (:keywords "latex" "tex"))]) (latex-extra . [(20160328 1721) ((auctex (11 86 1)) (cl-lib (0 5))) "Adds several useful functionalities to LaTeX-mode." single ((:url . "http://github.com/Malabarba/latex-extra") (:keywords "tex"))]) (latest-clojure-libraries . [(20140314 617) nil "Clojure dependency resolver" single ((:url . "http://github.com/AdamClements/latest-clojure-libraries/"))]) (langtool . [(20160116 1654) ((cl-lib (0 3))) "Grammar check utility using LanguageTool" single ((: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 ((:url . "https://github.com/tom-tan/langdoc/") (:keywords "convenience" "eldoc"))]) (lang-refactor-perl . [(20131122 1327) nil "Simple refactorings, primarily for Perl" single ((:url . "https://github.com/jplindstrom/emacs-lang-refactor-perl") (:keywords "languages" "refactoring" "perl"))]) (lacarte . [(20151231 1409) nil "Execute menu items as commands, with completion." single ((:url . "http://www.emacswiki.org/lacarte.el") (:keywords "menu-bar" "menu" "command" "help" "abbrev" "minibuffer" "keys" "completion" "matching" "local" "internal" "extensions"))]) (labburn-theme . [(20160519 136) nil "A lab color space zenburn theme." single ((:url . "https://github.com/ksjogo/labburn-theme") (:keywords "theme" "zenburn"))]) (kwin . [(20150308 1112) nil "communicatewith the KWin window manager" single ((:url . "http://github.com/reactormonk/kwin-minor-mode"))]) (kv . [(20140108 734) nil "key/value data structure functions" single ((:keywords "lisp"))]) (kurecolor . [(20150423 2122) ((emacs (24 1)) (s (1 0))) "color editing goodies for Emacs" single nil]) (ksp-cfg-mode . [(20160521 1333) ((cl-lib (0 5))) "major mode for editing KSP CFG files" single ((:url . "http://github.com/lashtear/ksp-cfg-mode") (:keywords "data"))]) (kroman . [(20150827 1640) nil "Korean hangul romanization" single ((:keywords "korean" "roman"))]) (kpm-list . [(20160310 1050) nil "An emacs buffer list that tries to intelligently group together buffers." single ((:url . "https://github.com/KMahoney/kpm-list/"))]) (kooten-theme . [(20160214 451) ((emacs (24 1))) "Dark color theme" single ((:url . "http://github.com/kootenpv/emacs-kooten-theme") (:keywords "themes"))]) (kolon-mode . [(20140122 334) nil "Syntax highlighting for Text::Xslate's Kolon syntax" single ((:url . "https://github.com/samvtran/kolon-mode") (:keywords "xslate" "perl"))]) (know-your-http-well . [(20160208 1504) nil "Look up the meaning of HTTP headers, methods, relations, status codes" tar nil]) (kixtart-mode . [(20150611 904) ((emacs (24))) "major mode for Kixtart scripting files" single ((:url . "https://github.com/ryrun/kixtart-mode") (:keywords "languages"))]) (kivy-mode . [(20140524 557) nil "Emacs major mode for editing Kivy files" single nil]) (kite-mini . [(20160508 406) ((dash (2 11 0)) (websocket (1 5))) "Remotely evaluate JavaScript in the WebKit debugger" tar ((: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 ((:keywords "tools"))]) (killer . [(20120808 422) nil "kill and delete text" single ((:url . "http://github.com/tarsius/killer") (:keywords "convenience"))]) (kill-ring-search . [(20140422 855) nil "incremental search for the kill ring" single ((:url . "http://nschum.de/src/emacs/kill-ring-search/") (:keywords "convenience" "matching"))]) (kill-or-bury-alive . [(20160128 109) ((emacs (24 4)) (cl-lib (0 5))) "Precise control over buffer killing in Emacs" single ((: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 ((:url . "http://www.github.com/brunchboy/kibit-helper") (:keywords "languages" "clojure" "kibit"))]) (kfg . [(20140908 2238) ((f (0 17 1))) "an emacs configuration system" single ((:url . "https://github.com/abingham/kfg"))]) (keyword-search . [(20160519 155) nil "browser keyword search from Emacs" tar ((:url . "https://github.com/juhp/keyword-search") (:keywords "web" "search" "keyword"))]) (keyset . [(20150219 2130) ((dash (2 8 0)) (cl-lib (0 5))) "A small library for structuring key bindings." single ((:url . "https://github.com/HKey/keyset"))]) (keymap-utils . [(20160212 1529) ((cl-lib (0 3))) "keymap utilities" single ((:url . "https://github.com/tarsius/keymap-utils") (:keywords "convenience" "extensions"))]) (keyfreq . [(20160516 716) ((cl-lib (0 5))) "track command frequencies" single nil]) (keydef . [(20090428 1231) nil "a simpler way to define keys, with kbd syntax" single ((:keywords "convenience" "lisp" "customization" "keyboard" "keys"))]) (keychain-environment . [(20160424 446) nil "load keychain environment variables" single ((: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 ((:url . "http://github.com/vlevit/key-seq.el") (:keywords "convenience" "keyboard" "keybindings"))]) (key-leap . [(20160109 1237) ((emacs (24 3))) "Leap between lines by typing keywords" single ((:url . "https://github.com/MartinRykfors/key-leap") (:keywords "point" "convenience"))]) (key-intercept . [(20140210 2349) nil "Intercept prefix keys" single ((:url . "http://github.com/tarao/key-intercept-el") (:keywords "keyboard"))]) (key-combo . [(20150324 739) nil "map key sequence to commands" single ((: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 ((:keywords "keyboard" "chord" "input"))]) (kerl . [(20150424 1305) nil "Emacs integration for kerl" single ((:url . "http://github.com/correl/kerl.el/") (:keywords "tools"))]) (karma . [(20160220 445) ((pkg-info (0 4)) (emacs (24))) "Karma Test Runner Emacs Integration" single ((:url . "http://github.com/tonini/karma.el") (:keywords "language" "javascript" "js" "karma" "testing"))]) (kaomoji . [(20160218 20) ((emacs (24 3)) (helm-core (1 9 1))) "Input kaomoji superb easily" tar ((:url . "https://github.com/kuanyui/kaomoji.el") (:keywords "tools" "fun"))]) (kanji-mode . [(20150202 25) nil "View stroke order for kanji characters at cursor" tar ((:url . "http://github.com/wsgac/kanji-mode "))]) (kanban . [(20150930 917) nil "Parse org-todo headlines to use org-tables as Kanban tables" single ((:keywords "outlines" "convenience"))]) (kakapo-mode . [(20150906 2152) ((cl-lib (0 5))) "TABS (hard or soft) for indentation (leading whitespace), and SPACES for alignment." single ((: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 ((: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 ((: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 ((: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 ((: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 ((:url . "https://github.com/ganmacs/jumplist") (:keywords "jumplist" "vim"))]) (jump-to-line . [(20130122 853) nil "Jump to line number at point." single ((:keywords "jump" "line" "back" "file" "ruby" "csharp" "python" "perl"))]) (jump-char . [(20160505 851) nil "navigation by char" single ((:url . "https://github.com/lewang/jump-char"))]) (jump . [(20151009 129) ((findr (0 7)) (inflections (1 1))) "build functions which contextually jump between files" single ((:url . "http://github.com/eschulte/jump.el/tree/master") (:keywords "project" "convenience" "navigation"))]) (jumblr . [(20140908 1352) ((s (1 8 0)) (dash (2 2 0))) "an anagram game for emacs" tar ((:url . "https://github.com/mkmcc/jumblr") (:keywords "anagram" "word game" "games"))]) (julia-shell . [(20160514 728) ((julia-mode (0 3))) "Major mode for an inferior Julia shell" tar nil]) (julia-mode . [(20160517 1043) nil "Major mode for editing Julia source code" single ((:url . "https://github.com/JuliaLang/julia") (:keywords "languages"))]) (judge-indent . [(20160520 434) nil "judge indent and tab widths" single ((:keywords "indent" "tab"))]) (jtags . [(20160211 1229) nil "enhanced tags functionality for Java development" tar ((:url . "http://jtags.sourceforge.net") (:keywords "languages" "tools"))]) (jsx-mode . [(20130908 1024) nil "major mode for JSX" single ((: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 ((: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 ((:keywords "languages"))]) (json-snatcher . [(20150511 2047) ((emacs (24))) "Grabs the path to JSON values in a JSON file" single ((:url . "http://github.com/sterlingg/json-snatcher"))]) (json-rpc . [(20160427 807) ((emacs (24 1)) (cl-lib (0 5))) "JSON-RPC library" single ((:url . "https://github.com/skeeto/elisp-json-rpc"))]) (json-reformat . [(20160212 53) nil "Reformatting tool for JSON" single ((:url . "https://github.com/gongo/json-reformat") (:keywords "json"))]) (json-mode . [(20151116 2000) ((json-reformat (0 0 5)) (json-snatcher (1 0 0))) "Major mode for editing JSON files" single ((:url . "https://github.com/joshwnj/json-mode"))]) (jsfmt . [(20150727 1525) nil "Interface to jsfmt command for javascript files" single ((:url . "https://github.com/brettlangdon/jsfmt.el"))]) (jscs . [(20151015 1049) ((emacs (24 1)) (cl-lib (0 5))) "Consistent JavaScript editing using JSCS" single ((:url . "https://github.com/papaeye/emacs-jscs") (:keywords "languages" "convenience"))]) (js3-mode . [(20160515 850) nil "An improved JavaScript editing mode" tar ((:keywords "javascript" "languages"))]) (js2-refactor . [(20160506 612) ((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 nil]) (js2-mode . [(20160510 1637) ((emacs (24 1)) (cl-lib (0 5))) "Improved JavaScript editing mode" tar ((:url . "https://github.com/mooz/js2-mode/") (:keywords "languages" "javascript"))]) (js2-highlight-vars . [(20150914 108) ((js2-mode (20150908))) "highlight occurrences of the variable under cursor" single ((:url . "http://mihai.bazon.net/projects/editing-javascript-with-emacs-js2-mode/js2-highlight-vars-mode"))]) (js2-closure . [(20141027 1550) ((js2-mode (20140114))) "Google Closure dependency manager" single ((:url . "http://github.com/jart/js2-closure"))]) (js-doc . [(20160208 1707) nil "Insert JsDoc style comment easily" single ((:url . "https://github.com/mooz/js-doc") (:keywords "document" "comment"))]) (js-comint . [(20160220 350) ((nvm (0 2 0))) "Run a JavaScript interpreter in an inferior process window." single ((:url . "https://github.com/redguardtoo/js-comint") (:keywords "javascript" "node" "inferior-mode" "convenience"))]) (jquery-doc . [(20150812 58) nil "jQuery api documentation interface for emacs" tar ((:keywords "docs" "jquery"))]) (jq-mode . [(20160222 440) ((emacs (24 3))) "Edit jq scripts." tar ((:url . "https://github.com/ljos/jq-mode"))]) (jonprl-mode . [(20151203 142) ((emacs (24 3)) (cl-lib (0 5)) (yasnippet (0 8 0))) "A major mode for editing JonPRL files" tar ((:keywords "languages"))]) (jknav . [(20121006 1325) nil "Automatically enable j/k keys for line-based navigation" single ((:keywords "keyboard" "navigation"))]) (jist . [(20151228 1550) ((emacs (24 4)) (pkg-info (0 4)) (dash (2 12 0)) (let-alist (1 0 4)) (magit (2 1 0)) (request (0 2 0))) "Gist integration" single ((: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 ((: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 nil]) (jg-quicknav . [(20160216 2035) ((s (1 9 0)) (cl-lib (0 5))) "Quickly navigate the file system to find a file." single ((:url . "https://github.com/jeffgran/jg-quicknav") (:keywords "navigation"))]) (jenkins-watch . [(20121004 1626) nil "Watch continuous integration build status" single ((:url . "https://github.com/ataylor284/jenkins-watch"))]) (jenkins . [(20151114 1908) ((dash (2 12)) (emacs (24 3)) (json (1 4))) "Minimalistic Jenkins client for Emacs" single ((:keywords "jenkins" "convenience"))]) (jekyll-modes . [(20141117 514) ((polymode (0 2))) "Major modes (markdown and HTML) for authoring Jekyll content" single ((: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 nil]) (jedi-core . [(20160501 2043) ((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 nil]) (jedi . [(20160425 2156) ((emacs (24)) (jedi-core (0 2 2)) (auto-complete (1 4))) "a Python auto-completion for Emacs" single nil]) (jdee . [(20160304 536) ((emacs (24 3))) "Java Development Environment for Emacs" tar ((:url . "http://github.com/jdee-emacs/jdee") (:keywords "java" "tools"))]) (jbeans-theme . [(20160406 1257) ((emacs (24))) "Jbeans theme for GNU Emacs 24 (deftheme)" single ((:url . "https://github.com/synic/jbeans-emacs"))]) (jazz-theme . [(20160412 1036) nil "A warm color theme for Emacs 24." single ((:url . "https://github.com/donderom/jazz-theme"))]) (jaword . [(20150325 718) ((tinysegmenter (0 1))) "Minor-mode for handling Japanese words better" single ((:url . "http://hins11.yu-yake.com/"))]) (javap-mode . [(20120223 1408) nil "Javap major mode" single ((:url . "http://github.com/hiredman/javap-mode"))]) (javadoc-lookup . [(20160213 1631) ((cl-lib (0 3))) "Javadoc Emacs integration with Maven" tar ((:url . "https://github.com/skeeto/javadoc-lookup"))]) (java-snippets . [(20160328 2010) ((yasnippet (0 8 0))) "Yasnippets for Java" tar ((:url . "https://github.com/nekop/yasnippet-java-mode"))]) (java-imports . [(20160311 1515) ((emacs (24 4)) (s (1 10 0)) (pcache (0 3 2))) "Code for dealing with Java imports" single ((:url . "http://www.github.com/dakrone/emacs-java-imports") (:keywords "java"))]) (jaunte . [(20130413 219) nil "Emacs Hit a Hint" single nil]) (jasminejs-mode . [(20150526 1705) nil "A minor mode for manipulating jasmine test files" tar ((:url . "https://github.com/stoltene2/jasminejs-mode") (:keywords "javascript" "jasmine"))]) (jar-manifest-mode . [(20160430 1726) nil "Major mode to edit JAR manifest files" single ((: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 ((: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 ((:keywords "docs" "help"))]) (japanese-holidays . [(20150208 1737) ((cl-lib (0 3))) "calendar functions for the Japanese calendar" single ((:url . "https://github.com/emacs-jp/japanese-holidays") (:keywords "calendar"))]) (jammer . [(20160310 59) nil "Punish yourself for using Emacs inefficiently" single ((:url . "https://github.com/wasamasa/jammer") (:keywords "games"))]) (jade-mode . [(20160520 635) nil "Major mode for editing .jade files" single ((:url . "https://github.com/brianc/jade-mode"))]) (jack-connect . [(20141207 407) nil "Manage jack connections within Emacs" single nil]) (jabber-otr . [(20150918 444) ((emacs (24)) (jabber (0 8 92))) "Off-The-Record messaging for jabber.el" tar ((:url . "https://github.com/legoscia/emacs-jabber-otr/") (:keywords "comm"))]) (jabber . [(20160124 552) ((fsm (0 2))) "A Jabber client for Emacs." tar nil]) (j-mode . [(20140702 809) nil "Major mode for editing J programs" tar ((:url . "http://github.com/zellio/j-mode") (:keywords "j" "langauges"))]) (iy-go-to-char . [(20141029 846) nil "Go to next CHAR which is similar to \"f\" and \"t\" in vim" single ((: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 ((:url . "http://www.github.com/theanalyst/ix.el"))]) (ivy-hydra . [(20160517 1349) ((emacs (24 1)) (ivy (0 8 0)) (hydra (0 13 4))) "Additional key bindings for Ivy" single ((:url . "https://github.com/abo-abo/swiper") (:keywords "completion" "matching" "bindings"))]) (ivy-gitlab . [(20160519 312) ((s (1 9 0)) (dash (2 9 0)) (ivy (0 8 0)) (gitlab (0 8))) "Ivy interface to Gitlab" single ((:url . "https://github.com/nlamirault/emacs-gitlab") (:keywords "gitlab" "ivy"))]) (ivy-bibtex . [(20160422 1600) ((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 BibTeX bibliography manager based on Ivy" tar nil]) (ivy . [(20160523 28) ((emacs (24 1))) "Incremental Vertical completYon" tar ((:url . "https://github.com/abo-abo/swiper") (:keywords "matching"))]) (ivs-edit . [(20140720 346) ((emacs (24 3)) (dash (2 6 0)) (cl-lib (1 0))) "IVS (Ideographic Variation Sequence) editing tool" tar ((:url . "http://github.com/kawabata/ivs-edit") (:keywords "text"))]) (ivariants . [(20140720 2127) ((emacs (24 3)) (ivs-edit (1 0))) "Ideographic variants editor and browser" tar ((:url . "http://github.com/kawabata/ivariants") (:keywords "i18n" "languages"))]) (iterator . [(20160406 1206) ((emacs (24)) (cl-lib (0 5))) "A library to create and use elisp iterators objects." single ((:url . "https://github.com/thierryvolpiatto/iterator"))]) (itasca . [(20160406 542) ((emacs (24 3))) "Major modes for Itasca software data files." tar ((:url . "http://github.com/jkfurtney/itasca-emacs/") (:keywords "itasca" "flac" "3dec" "udec" "flac3d" "pfc" "pfc2d" "pfc3d" "fish"))]) (itail . [(20151113 835) nil "An interactive tail mode" single ((:url . "https://github.com/re5et/itail") (:keywords "tail"))]) (iss-mode . [(20141001 1213) nil "Mode for InnoSetup install scripts" single nil]) (isgd . [(20150414 236) nil "Shorten URLs using the isgd.com shortener service" single ((:url . "https://github.com/chmouel/isgd.el"))]) (isend-mode . [(20130419 258) nil "Interactively send parts of an Emacs buffer to an interpreter" single ((: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 ((:url . "https://github.com/re5et/isearch-symbol-at-point") (:keywords "isearch"))]) (isearch-prop . [(20151231 1407) nil "Search text-property or overlay-property contexts." single ((:url . "http://www.emacswiki.org/isearch-prop.el") (:keywords "search" "matching" "invisible" "thing" "help"))]) (isearch-dabbrev . [(20141223 2222) ((cl-lib (0 5))) "Use dabbrev in isearch" single ((:url . "https://github.com/Dewdrops/isearch-dabbrev") (:keywords "dabbrev" "isearch"))]) (isearch+ . [(20160227 1417) nil "Extensions to `isearch.el' (incremental search)." single ((:url . "http://www.emacswiki.org/isearch+.el") (:keywords "help" "matching" "internal" "local"))]) (irony-eldoc . [(20141226 2219) ((emacs (24)) (cl-lib (0 5)) (irony (0 1))) "irony-mode support for eldoc-mode" single ((:url . "https://github.com/ikirill/irony-eldoc") (:keywords "c" "c++" "objc" "convenience" "tools"))]) (irony . [(20160511 708) ((cl-lib (0 5)) (json (1 2))) "C/C++ minor mode powered by libclang" tar ((: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 ((:url . "https://github.com/atykhonov/iregister.el") (:keywords "convenience"))]) (ir-black-theme . [(20130302 2355) nil "Port of ir-black theme" single ((:keywords "faces"))]) (ipretty . [(20140406 2220) nil "Interactive Emacs Lisp pretty-printing" single ((:url . "https://github.com/steckerhalter/ipretty") (:keywords "pretty-print" "elisp" "buffer"))]) (iplayer . [(20150101 255) nil "Browse and download BBC TV/radio shows" single ((:url . "https://github.com/csrhodes/iplayer-el") (:keywords "multimedia" "bbc"))]) (iodine-theme . [(20151031 939) ((emacs (24))) "A light emacs color theme" single ((:url . "https://github.com/srdja/iodine-theme") (:keywords "themes"))]) (ioccur . [(20130821 2248) nil "Incremental occur" single ((:url . "https://github.com/thierryvolpiatto/ioccur"))]) (io-mode-inf . [(20140128 1134) nil "Interaction with an Io interpreter." single ((:url . "https://github.com/slackorama/io-emacs") (:keywords "io" "languages"))]) (io-mode . [(20140814 321) nil "Major mode to edit Io language files in Emacs" single ((:url . "https://github.com/superbobry/io-mode") (:keywords "languages" "io"))]) (interval-tree . [(20130325 707) ((dash (1 1 0))) "Interval tree data structure for 1D range queries" single ((: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 ((:url . "https://github.com/Fuco1/interval-list") (:keywords "extensions" "data structure"))]) (interleave . [(20160517 948) nil "Interleaving text books since 2015" single ((:url . "https://github.com/rudolfochrist/interleave"))]) (interaction-log . [(20160305 501) ((cl-lib (0))) "exhaustive log of interactions with Emacs" single ((:url . "https://github.com/michael-heerdegen/interaction-log.el") (:keywords "convenience"))]) (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 ((:url . "http://github.com/duelinmarkers/insfactor.el") (:keywords "clojure"))]) (insert-shebang . [(20160413 712) nil "Insert shebang line automatically." single ((:url . "http://github.com/psachin/insert-shebang") (:keywords "shebang" "tool" "convenience"))]) (inlineR . [(20120520 732) nil "insert Tag for inline image of R graphics" single ((:url . "https://github.com/myuhe/inlineR.el") (:keywords "convenience" "iimage.el" "cacoo.el"))]) (inline-crypt . [(20130409 507) nil "Simple inline encryption via openssl" tar nil]) (inkpot-theme . [(20120505 708) nil "port of vim's inkpot theme" single ((:url . "http://github.com/siovan/emacs24-inkpot.git"))]) (initsplit . [(20160113 653) nil "code to split customizations into different files" single ((:url . "http://www.gci-net.com/users/j/johnw/emacs.html") (:keywords "lisp"))]) (init-open-recentf . [(20151106 2023) ((emacs (24 4))) "Open recentf immediately after Emacs is started" single ((:keywords "file" "recentf" "after-init-hook"))]) (init-loader . [(20141030 2333) nil "Loader for configuration files" single ((:url . "https://github.com/emacs-jp/init-loader/"))]) (inform7-mode . [(20131009 2354) ((sws-mode (0 1))) "Major mode for editing Inform 7 source files" single ((:keywords "inform" "inform7" "interactive fiction"))]) (info+ . [(20151231 1403) nil "Extensions to `info.el'." single ((:url . "http://www.emacswiki.org/info+.el") (:keywords "help" "docs" "internal"))]) (inflections . [(20121016 157) nil "convert english words between singular and plural" single ((:url . "https://github.com/eschulte/jump.el") (:keywords "ruby" "rails" "languages" "oop"))]) (inf-ruby . [(20160423 837) nil "Run a Ruby process in a buffer" single ((:url . "http://github.com/nonsequitur/inf-ruby") (:keywords "languages" "ruby"))]) (inf-php . [(20130414 21) ((php-mode (1 5 0))) "Run a php interactive shell in a buffer" single ((:url . "https://github.com/taksatou/inf-php") (:keywords "languages" "php"))]) (inf-mongo . [(20131216 228) nil "Run a MongoDB shell process in a buffer" single ((:url . "http://github.com/tobiassvn/inf-mongo") (:keywords "databases" "mongodb"))]) (inf-clojure . [(20160404 2138) ((emacs (24 3)) (clojure-mode (5 3))) "Run an external Clojure process in an Emacs buffer" single ((: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 ((:keywords "convenience" "matching" "tools"))]) (indicators . [(20130217 1405) nil "Display the buffer relative location of line in the fringe." single ((:url . "https://github.com/Fuco1/indicators.el") (:keywords "fringe" "frames"))]) (indent-guide . [(20151119 717) nil "show vertical lines to guide indentation" single ((:url . "http://hins11.yu-yake.com/"))]) (import-popwin . [(20150716 233) ((popwin (0 6)) (cl-lib (0 5))) "popwin buffer near by import statements with popwin" single ((:url . "https://github.com/syohex/emacs-import-popwin"))]) (import-js . [(20160504 2210) ((emacs (24))) "Import Javascript dependencies" single ((:url . "http://github.com/trotzig/import-js/") (:keywords "javascript"))]) (impatient-mode . [(20150501 247) ((cl-lib (0 3)) (simple-httpd (1 4 0)) (htmlize (1 40))) "Serve buffers live over HTTP" tar ((:url . "https://github.com/netguy204/imp.el"))]) (immutant-server . [(20140311 1508) nil "Run your Immutant server in Emacs" single ((: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 ((:keywords "multimedia" "convenience"))]) (imgix . [(20141226 1332) ((json (1 2)) (ht (2 0)) (s (1 9 0)) (dash (2 9 0)) (cl-lib (0 5))) "Major mode for editing images in emacs via imgix" tar ((:keywords "images" "image processing" "image editing" "sepia" "blur"))]) (imenus . [(20160220 1332) ((cl-lib (0 5))) "Imenu for multiple buffers and without subgroups" single ((:url . "https://github.com/alezost/imenus.el") (:keywords "tools" "convenience"))]) (imenu-list . [(20160211 341) ((cl-lib (0 5))) "Show imenu entries in a seperate buffer" single ((:url . "https://github.com/bmag/imenu-list"))]) (imenu-anywhere . [(20160520 320) ((cl-lib (0 5))) "ido/helm imenu tag selection across all buffers with the same mode" single ((:url . "https://github.com/vitoshka/imenu-anywhere") (:keywords "ido" "imenu" "tags"))]) (imenu+ . [(20151231 1401) nil "Extensions to `imenu.el'." single ((:url . "http://www.emacswiki.org/imenu+.el") (:keywords "tools" "menus"))]) (imapfilter . [(20160419 246) nil "run the imapfilter executable" single ((:url . "http://github.com/tarsius/imapfilter") (:keywords "mail"))]) (imakado . [(20141024 223) nil "imakado's usefull macros and functions" single ((:url . "https://github.com/imakado/emacs-imakado") (:keywords "convenience"))]) (image-dired+ . [(20150429 2244) ((cl-lib (0 3))) "Image-dired extensions" single ((: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 ((:url . "https://github.com/mhayashi1120/Emacs-image-archive") (:keywords "multimedia"))]) (image+ . [(20150707 916) ((cl-lib (0 3))) "Image manipulate extensions for Emacs" single ((:url . "https://github.com/mhayashi1120/Emacs-imagex") (:keywords "multimedia" "extensions"))]) (igv . [(20141210 427) nil "Control Integrative Genomic Viewer within Emacs" single nil]) (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 ((:url . "http://github.com/rolandwalker/ignoramus") (:keywords "convenience" "tools"))]) (iflipb . [(20141123 1316) nil "interactively flip between recently visited buffers" single ((:url . "http://git.rosdahl.net/?p=joel/iflipb.git"))]) (ietf-docs . [(20150928 257) nil "Fetch, Cache and Load IETF documents" single ((:url . "https://github.com/choppsv1/ietf-docs") (:keywords "ietf" "rfc"))]) (iedit . [(20160522 1732) nil "Edit multiple regions in the same way simultaneously." tar ((:url . "http://www.emacswiki.org/emacs/Iedit") (:keywords "occurrence" "region" "simultaneous" "refactoring"))]) (ids-edit . [(20160324 1522) ((emacs (24 3))) "IDS (Ideographic Description Sequence) editing tool" tar ((:url . "http://github.com/kawabata/ids-edit") (:keywords "text"))]) (idris-mode . [(20160302 635) ((emacs (24)) (prop-menu (0 1)) (cl-lib (0 5))) "Major mode for editing Idris code" tar ((:url . "https://github.com/idris-hackers/idris-mode") (:keywords "languages"))]) (idomenu . [(20141123 1320) nil "imenu tag selection a la ido" single nil]) (ido-yes-or-no . [(20160217 1617) ((ido-completing-read+ (0))) "Use Ido to answer yes-or-no questions" single ((:url . "https://github.com/DarwinAwardWinner/ido-yes-or-no"))]) (ido-vertical-mode . [(20160429 1037) nil "Makes ido-mode display vertically." single ((:url . "https://github.com/creichert/ido-vertical-mode.el") (:keywords "convenience"))]) (ido-ubiquitous . [(20160319 2338) ((emacs (24 1)) (ido-completing-read+ (3 13)) (cl-lib (0 5))) "Use ido (nearly) everywhere." single ((:url . "https://github.com/DarwinAwardWinner/ido-ubiquitous") (:keywords "convenience" "completion" "ido"))]) (ido-springboard . [(20150505 1011) nil "Temporarily change default-directory for one command" single ((:url . "https://github.com/jwiegley/springboard") (:keywords "ido"))]) (ido-sort-mtime . [(20131117 530) nil "Sort Ido's file list by modification time" single ((:keywords "convenience" "files"))]) (ido-skk . [(20151111 150) ((emacs (24 4)) (ddskk (20150912 1820))) "ido interface for skk henkan" single ((: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 ((:url . "https://github.com/pjones/ido-select-window"))]) (ido-occur . [(20160114 1113) ((dash (2 11 0))) "Yet another `occur' with `ido'." single ((:url . "https://github.com/danil/ido-occur") (:keywords "inner" "buffer" "search"))]) (ido-occasional . [(20150214 448) ((emacs (24 1))) "Use ido where you choose." single ((:url . "https://github.com/abo-abo/ido-occasional") (:keywords "completion"))]) (ido-migemo . [(20150921 1544) ((migemo (1 9 1))) "Migemo plug-in for Ido" single ((: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 ((:url . "http://github.com/rolandwalker/ido-load-library") (:keywords "maint" "completion"))]) (ido-hacks . [(20150331 1209) nil "Put more IDO in your IDO" single ((:keywords "convenience"))]) (ido-grid-mode . [(20160122 339) ((emacs (24 4))) "Display ido-prospects in the minibuffer in a grid." single ((: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 ((:url . "https://github.com/vapniks/ido-gnus") (:keywords "comm"))]) (ido-exit-target . [(20150904 737) ((emacs (24 4))) "Commands and keys for selecting other window and frame targets within ido" single ((:url . "https://github.com/waymondo/ido-exit-target") (:keywords "convenience" "tools" "extensions"))]) (ido-describe-bindings . [(20160105 53) ((dash (2 11 0))) "Yet another `describe-bindings' with `ido'." single ((:url . "https://github.com/danil/ido-describe-bindings") (:keywords "help"))]) (ido-completing-read+ . [(20160319 2338) ((emacs (24 1)) (cl-lib (0 5))) "A completing-read-function using ido" single ((:url . "https://github.com/DarwinAwardWinner/ido-ubiquitous") (:keywords "ido" "completion" "convenience"))]) (ido-complete-space-or-hyphen . [(20130228 208) nil "Complete SPACE or HYPHEN when type SPACE in ido" single ((: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 ((:url . "https://github.com/Bogdanp/ido-clever-match") (:keywords "ido" "flex"))]) (ido-at-point . [(20151021 57) ((emacs (24))) "ido-style completion-at-point" single ((:url . "https://github.com/katspaugh/ido-at-point") (:keywords "convenience" "abbrev"))]) (idle-require . [(20090715 1503) nil "load elisp libraries while Emacs is idle" single ((:url . "http://nschum.de/src/emacs/idle-require/") (:keywords "internal"))]) (idle-highlight-mode . [(20120920 948) nil "highlight the word the point is on" single ((: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 ((: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 ((:url . "http://github.com/fourier/idea-darkula-theme") (:keywords "themes"))]) (id-manager . [(20160425 216) nil "id-password management" single ((:keywords "password" "convenience"))]) (icomplete+ . [(20151231 1400) nil "Extensions to `icomplete.el'." single ((:url . "http://www.emacswiki.org/icomplete+.el") (:keywords "help" "abbrev" "internal" "extensions" "local" "completion" "matching"))]) (icicles . [(20160521 1459) nil "Minibuffer input completion and cycling." tar ((:url . "http://www.emacswiki.org/icicles.el") (:keywords "extensions" "help" "abbrev" "local" "minibuffer" "projects" "keys" "apropos" "completion" "matching" "regexp" "command"))]) (ibuffer-vc . [(20150714 1320) ((cl-lib (0 2))) "Group ibuffer's list by VC project, or show VC status" single ((:url . "http://github.com/purcell/ibuffer-vc") (:keywords "themes"))]) (ibuffer-tramp . [(20151118 939) nil "Group ibuffer's list by TRAMP connection" single ((:url . "http://github.com/svend/ibuffer-tramp") (:keywords "convenience"))]) (ibuffer-rcirc . [(20150215 1318) ((cl-lib (0 2))) "Ibuffer integration for rcirc" single ((:url . "https://github.com/fgallina/ibuffer-rcirc") (:keywords "buffer" "convenience" "comm"))]) (ibuffer-projectile . [(20150121 837) ((projectile (0 11 0))) "Group ibuffer's list by projectile root" single ((:url . "http://github.com/purcell/ibuffer-projectile") (:keywords "themes"))]) (ibuffer-git . [(20110508 31) nil "show git status in ibuffer column" single ((:keywords "convenience"))]) (iasm-mode . [(20131004 1644) nil "interactive assembly major mode." single ((:url . "https://github.com/RAttab/iasm-mode") (:keywords ":" "tools"))]) (i2b2-mode . [(20140709 1804) nil "Highlights corresponding PHI data in the text portion of an i2b2 XML Document." single ((:keywords "xml" "phi" "i2b2" "deidi2b2"))]) (hydra . [(20160518 721) ((cl-lib (0 5))) "Make bindings that stick around." tar ((:url . "https://github.com/abo-abo/hydra") (:keywords "bindings"))]) (hyde . [(20160507 2008) nil "Major mode to help create and manage Jekyll blogs" tar nil]) (hydandata-light-theme . [(20160122 1753) nil "A light color theme that is easy on your eyes" single ((:keywords "color-theme" "theme"))]) (hyai . [(20160319 1835) ((cl-lib (0 5)) (emacs (24))) "Haskell Yet Another Indentation" single ((:url . "https://github.com/iquiw/hyai"))]) (hy-mode . [(20151025 543) nil "Major mode for Hy code" single ((:url . "http://github.com/hylang/hy-mode") (:keywords "languages" "lisp"))]) (hungry-delete . [(20151203 1314) nil "hungry delete minor mode" single ((:url . "http://github.com/nflath/hungry-delete"))]) (httprepl . [(20141101 1034) ((s (1 9 0)) (dash (2 5 0)) (emacs (24))) "An HTTP REPL" single ((:url . "https://github.com/gregsexton/httprepl.el") (:keywords "http" "repl"))]) (httpcode . [(20121001 2045) nil "explains the meaning of an HTTP status code" single ((:url . "http://github.com/rspivak/httpcode.el"))]) (http-twiddle . [(20151121 544) nil "send & twiddle & resend HTTP requests" single ((:url . "https://github.com/hassy/http-twiddle/blob/master/http-twiddle.el") (:keywords "http" "rest" "soap"))]) (http-post-simple . [(20131010 2058) nil "HTTP POST requests using the url library" single ((:keywords "comm" "data" "processes" "hypermedia"))]) (http . [(20160126 2025) ((emacs (24 4)) (request (0 2 0))) "Yet another HTTP client" single ((:url . "https://github.com/emacs-pe/http.el") (:keywords "convenience"))]) (htmlize . [(20130207 1202) nil "Convert buffer text and decorations to HTML." single ((:keywords "hypermedia" "extensions"))]) (html-to-markdown . [(20151105 40) ((cl-lib (0 5))) "HTML to Markdown converter written in Emacs-lisp." single ((:url . "http://github.com/Bruce-Connor/html-to-markdown") (:keywords "tools" "wp" "languages"))]) (html-script-src . [(20120403 1115) nil "Insert ") + (js-script + :submode js-mode + :face mmm-code-submode-face + :front "]*>[ \t]*\n?" + :back "[ \t]*" + :insert ((?j js-tag nil @ "" @))))) + +;;}}} +;;{{{ CSS in HTML + +(mmm-add-group + 'html-css + '((css-cdata + :submode css + :face mmm-code-submode-face + :front "]*>[ \t\n]*\\(//\\)?[ \t\n]*") + (css + :submode css + :face mmm-code-submode-face + :front "]*>[ \t]*\n?" + :back "[ \t]*" + :insert ((?c css-tag nil @ "" @))))) + +;;}}} +;;{{{ Here-documents + +;; Here we match the here-document syntax used by Perl and shell +;; scripts. We try to be automagic about recognizing what mode the +;; here-document should be in. To make sure that it is recognized +;; correctly, the name of the mode, perhaps minus `-mode', in upper +;; case, and/or with hyphens converted to underscores, should be +;; separated from the rest of the here-document name by hyphens or +;; underscores. + +(defvar mmm-here-doc-mode-alist '() + "Alist associating here-document name regexps to submodes. +Normally, this variable is unnecessary, as the `here-doc' submode +class tries to automagically recognize the right submode. If you use +here-document names that it doesn't recognize, however, then you can +add elements to this alist. Each element is \(REGEXP . MODE) where +REGEXP is a regular expression matched against the here-document name +and MODE is a major mode function symbol.") + +(defun mmm-here-doc-get-mode (string) + (string-match "[a-zA-Z_-]+" string) + (setq string (match-string 0 string)) + (or (mmm-ensure-modename + ;; First try the user override variable. + (some #'(lambda (pair) + (if (string-match (car pair) string) (cdr pair) nil)) + mmm-here-doc-mode-alist)) + (let ((words (split-string (downcase string) "[_-]+"))) + (or (mmm-ensure-modename + ;; Try the whole name, stopping at "mode" if present. + (intern + (mapconcat #'identity + (nconc (ldiff words (member "mode" words)) + (list "mode")) + "-"))) + ;; Try each word by itself (preference list) + (some #'(lambda (word) + (mmm-ensure-modename (intern word))) + words) + ;; Try each word with -mode tacked on + (some #'(lambda (word) + (mmm-ensure-modename + (intern (concat word "-mode")))) + words) + ;; Try each pair of words with -mode tacked on + (loop for (one two) on words + if (mmm-ensure-modename + (intern (concat one two "-mode"))) + return it) + ;; I'm unaware of any modes whose names, minus `-mode', + ;; are more than two words long, and if the entire mode + ;; name (perhaps minus `-mode') doesn't occur in the + ;; here-document name, we can give up. + (signal 'mmm-no-matching-submode nil))))) + +(mmm-add-classes + '((here-doc + :front "<<[\"\'\`]?\\([a-zA-Z0-9_-]+\\)" + :front-offset (end-of-line 1) + :back "^~1$" + :save-matches 1 + :delimiter-mode nil + :match-submode mmm-here-doc-get-mode + :insert ((?d here-doc "Here-document Name: " @ "<<" str _ "\n" + @ "\n" @ str "\n" @)) + ))) + +;;}}} +;;{{{ Embperl + +(mmm-add-group + 'embperl + '((embperl-perl + :submode perl + :front "\\[\\([-\\+!\\*\\$]\\)" + :back "~1\\]" + :save-matches 1 + :match-name "embperl" + :match-face (("[+" . mmm-output-submode-face) + ("[-" . mmm-code-submode-face) + ("[!" . mmm-init-submode-face) + ("[*" . mmm-code-submode-face) + ("[$" . mmm-special-submode-face)) + :insert ((?p embperl "Region Type (Character): " @ "[" str + @ " " _ " " @ str "]" @) + (?+ embperl+ ?p . "+") + (?- embperl- ?p . "-") + (?! embperl! ?p . "!") + (?* embperl* ?p . "*") + (?$ embperl$ ?p . "$") + ) + ) + (embperl-comment + :submode text-mode + :face mmm-comment-submode-face + :front "\\[#" + :back "#\\]" + :insert ((?# embperl-comment nil @ "[#" @ " " _ " " @ "#]" @)) + ))) + +;;}}} +;;{{{ ePerl + +(mmm-add-group + 'eperl + '((eperl-expr + :submode perl + :face mmm-output-submode-face + :front "<:=" + :back ":>" + :insert ((?= eperl-expr nil @ "<:=" @ " " _ " " @ ":>" @))) + (eperl-code + :submode perl + :face mmm-code-submode-face + :front "<:" + :back "_?:>" + :match-name "eperl" + :insert ((?p eperl-code nil @ "<:" @ " " _ " " @ ":>" @) + (?: eperl-code ?p . nil) + (?_ eperl-code_ nil @ "<:" @ " " _ " " @ "_:>" @))) + (eperl-comment + :submode text + :face mmm-comment-submode-face + :front ":>//" + :back "\n") + )) + +;;}}} +;;{{{ File Variables + +;; This submode class puts file local variable values, specified with +;; a `Local Variables:' line as in (emacs)File Variables, into Emacs +;; Lisp Mode. It is a good candidate to put in `mmm-global-classes'. + +(defun mmm-file-variables-verify () + ;; It would be nice to cache this somehow, which could be done in a + ;; buffer-local variable with markers for positions, but the trick + ;; is knowing when to expire the cache. + (let ((bounds + (save-excursion + (save-match-data + (goto-char (point-max)) + (backward-page) + (and (re-search-forward "^\\(.*\\)Local Variables:" nil t) + (list (match-string 1) + (progn (end-of-line) (point)) + (and (search-forward + (format "%sEnd:" (match-string 1)) + nil t) + (progn (beginning-of-line) + (point))))))))) + (and bounds (caddr bounds) + (save-match-data + (string-match (format "^%s" (regexp-quote (car bounds))) + (match-string 0))) + (> (match-beginning 0) (cadr bounds)) + (< (match-end 0) (caddr bounds))))) + +(defun mmm-file-variables-find-back (bound) + (forward-sexp) + (if (> (point) bound) + nil + (looking-at ""))) + +(mmm-add-classes + '((file-variables + :front ".+:" + :front-verify mmm-file-variables-verify + :back mmm-file-variables-find-back + :submode emacs-lisp-mode + :delimiter-mode nil + ))) + +;;}}} +;;{{{ JSP Pages + +(mmm-add-group 'jsp + `((jsp-comment + :submode text-mode + :face mmm-comment-submode-face + :front "<%--" + :back "--%>" + :insert ((?- jsp-comment nil @ "<%--" @ " " _ " " @ "--%>" @)) + ) + (jsp-code + :submode java + :match-face (("<%!" . mmm-declaration-submode-face) + ("<%=" . mmm-output-submode-face) + ("<%" . mmm-code-submode-face)) + :front "<%[!=]?" + :back "%>" + :match-name "jsp" + :insert ((?% jsp-code nil @ "<%" @ " " _ " " @ "%>" @) + (?! jsp-declaration nil @ "<%!" @ " " _ " " @ "%>" @) + (?= jsp-expression nil @ "<%=" @ " " _ " " @ "%>" @)) + ) + (jsp-directive + :submode text-mode + :face mmm-special-submode-face + :front "<%@" + :back "%>" + :insert ((?@ jsp-directive nil @ "<%@" @ " " _ " " @ "%>" @)) + ))) + +;;}}} +;;{{{ SGML DTD + +;; Thanks to Yann Dirson for writing and +;; contributing this submode class. + +(mmm-add-classes + '((sgml-dtd + :submode dtd-mode + :face mmm-declaration-submode-face + :delimiter-mode nil + :front "[]*\\[" + :back "]>"))) + +;;}}} +;;{{{ PHP in HTML + +(mmm-add-group 'html-php + '((html-php-output + :submode php-mode + :face mmm-output-submode-face + :front "<\\?php *echo " + :back "\\(\\?>\\|\\'\\)" + :include-front t + :front-offset 5 + :insert ((?e php-echo nil @ "" @)) + ) + (html-php-code + :submode php-mode + :face mmm-code-submode-face + :front "<\\?\\(php\\)?" + :back "\\(\\?>\\|\\'\\)" + :insert ((?p php-section nil @ "" @) + (?b php-block nil @ "" @)) + ))) + +;;}}} + +;; NOT YET UPDATED +;;{{{ HTML in PL/SQL;-COM- +;-COM- +;-COM-;; This one is the most complex example. In PL/SQL, HTML is generally +;-COM-;; output as a (single quote delimited) string inside a call to htp.p or +;-COM-;; its brethren. The problem is that there may be strings outside of +;-COM-;; htp.p calls that should not be HTML, so we need to only look inside +;-COM-;; these calls. The situation is complicated by PL/SQL's rule that two +;-COM-;; sequential single quotes in a string mean to put a single quote +;-COM-;; inside the string. +;-COM- +;-COM-;; These functions have not been thoroughly tested, and always search +;-COM-;; the entire buffer, ignoring START and END. +;-COM- +;-COM-(defun mmm-html-in-plsql (start end) +;-COM- (save-match-data +;-COM- (let ((case-fold-search t)) +;-COM- (and (re-search-forward "htp.p\\(\\|rn\\|rint\\)1?(" nil t) +;-COM- (mmm-html-in-plsql-in-htp +;-COM- ;; Find the end of the procedure call +;-COM- (save-excursion (forward-char -1) (forward-sexp) (point)) +;-COM- start end))))) +;-COM- +;-COM-(defun mmm-html-in-plsql-in-htp (htp-end start end) +;-COM- (let (beg end) +;-COM- (or (and (re-search-forward "'" htp-end 'limit) +;-COM- (setf beg (match-end 0)) +;-COM- ;; Find an odd number of 's to end the string. +;-COM- (do ((lgth 0 (length (match-string 0)))) +;-COM- ((oddp lgth) t) +;-COM- (re-search-forward "'+" nil t)) +;-COM- (setf end (1- (match-end 0))) +;-COM- (cons (cons beg end) +;-COM- (mmm-html-in-plsql-in-htp htp-end start end))) +;-COM- ;; No more strings in the procedure call; look for another. +;-COM- (and (eql (point) htp-end) +;-COM- (mmm-html-in-plsql start end))))) +;-COM- +;-COM-(add-to-list 'mmm-classes-alist +;-COM- '(htp-p (:function html-mode mmm-html-in-plsql))) +;-COM- +;;}}} + +(provide 'mmm-sample) + +;;; mmm-sample.el ends here diff --git a/elpa/mmm-mode-20150828.1716/mmm-sample.elc b/elpa/mmm-mode-20150828.1716/mmm-sample.elc new file mode 100644 index 0000000000000000000000000000000000000000..b84ad45b4612055345c856ed9c28994d0cd58d07 GIT binary patch literal 6571 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 V(=>^1aEO=XE_Elu@;|Leybu5Y literal 0 HcmV?d00001 diff --git a/elpa/mmm-mode-20150828.1716/mmm-univ.el b/elpa/mmm-mode-20150828.1716/mmm-univ.el new file mode 100644 index 0000000..ddd5276 --- /dev/null +++ b/elpa/mmm-mode-20150828.1716/mmm-univ.el @@ -0,0 +1,64 @@ +;;; mmm-univ.el --- The "Universal" Submode Class + +;; Copyright (C) 2000 by Free Software Foundation, Inc. + +;; Author: Michael Abraham Shulman + +;;{{{ GPL + +;; This file is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 2, or (at your option) +;; any later version. + +;; This file is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs; see the file COPYING. If not, write to +;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. + +;;}}} + +;;; Commentary: + +;; This file defines the "universal" submode class, the default value +;; of `mmm-global-classes', which specifies a standard way to indicate +;; that part of a buffer should be in a different mode--for example, +;; in an email message. + +;;; Code: + +(require 'mmm-auto) +(require 'mmm-vars) + +(defun mmm-univ-get-mode (string) + (string-match "[a-zA-Z-]+" string) + (setq string (match-string 0 string)) + (let ((modestr (intern (if (string-match "mode\\'" string) + string + (concat string "-mode"))))) + (or (mmm-ensure-modename modestr) + (signal 'mmm-no-matching-submode nil)))) + +(mmm-add-classes + `((universal + :front "{%\\([a-zA-Z-]+\\)%}" + :back "{%/~1%}" + :insert ((?/ universal "Submode: " @ "{%" str "%}" @ "\n" _ "\n" + @ "{%/" str "%}" @)) + :match-submode mmm-univ-get-mode + :save-matches 1 + ))) + +(provide 'mmm-univ) + + +;;; Local Variables: +;;; mmm-global-classes: nil +;;; End: + +;;; mmm-univ.el ends here diff --git a/elpa/mmm-mode-20150828.1716/mmm-univ.elc b/elpa/mmm-mode-20150828.1716/mmm-univ.elc new file mode 100644 index 0000000000000000000000000000000000000000..8c6d68490a5bf080cfce6cd445626e9b4f5bbe6e GIT binary patch literal 1031 zcmbtSO>Yx15Y4gdi4&-|sZrEjQK$QnHYB-FMLksFfK*OoBjl`|#A4SDwl}Cn@Y@-C zw-i)~OD$QR@jTC)d7k<8hsEo`U=Ypcb6DtRFKfYrBNbdXtg>(r#!9UqzZj*XX*SA2 z_`7sFV08_8?_?wInL~^nMIrcUCoOC+6|`1Z;CG5OvI4Fv>x@)edxlYC9Wc%Xhd)%= zbd*n@KGVZiMWm=_%{>hP@P3wZ8|q9|V9IYBGU1(32xQ{34}nP=YcJ4Yv-5Lg=Vt(8VV z(=?Q|P6y+_j9o#VL@^f|R!e5#)B{>24|FRWZG7T4%eecFByi-Iwm2$D&oV~$0^OH* zUV28{lMqgeSA!#@&yVpavh?H0F&^0qU()4pfHq>Y0{6HiNndBj1fCd8=v>+`SM7i- z8NI)vpXur?fpA58c#5-u|Ehrahh=$6fP~@^hy4g;TO+~+PM82Iw~Eyvq;!`Yr;XZn z9U4}$Ucq>UviwKgAj5;YK~>IaRWs`+IgY)AIB3W++ZdcjAU}p>89#PVmdWrZf!Uf> zUw!cWR~CG!tS}BUj3@Azgxq$u&49pr4<}w4ApQyZr6Ta9J3{pQ?{Jd9tXHdV@aZ4V YEIXh;US=#m!zX*A4-$X>0UPGzH@NvOv;Y7A literal 0 HcmV?d00001 diff --git a/elpa/mmm-mode-20150828.1716/mmm-utils.el b/elpa/mmm-mode-20150828.1716/mmm-utils.el new file mode 100644 index 0000000..2f391b7 --- /dev/null +++ b/elpa/mmm-mode-20150828.1716/mmm-utils.el @@ -0,0 +1,159 @@ +;;; mmm-utils.el --- Coding Utilities for MMM Mode + +;; Copyright (C) 2000 by Michael Abraham Shulman + +;; Author: Michael Abraham Shulman + +;;{{{ GPL + +;; This file is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 2, or (at your option) +;; any later version. + +;; This file is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs; see the file COPYING. If not, write to +;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. + +;;}}} + +;;; Commentary: + +;; This file provides a number of macros and other coding utilities +;; for MMM Mode. + +;;; Code: + +(require 'cl) + +;;{{{ Valid Buffer + +;; We used to wrap almost everything in this, but I realized that +;; only `mmm-mode-on' really needs it. Kept it as a macro, though, +;; for modularity and in case we need it somewhere else. +(defmacro mmm-valid-buffer (&rest body) + "Execute BODY if in a valid buffer for MMM Mode to be enabled. This +means not hidden, not a minibuffer, not in batch mode, and not in of +`mmm-never-modes'." + `(unless (or (eq (aref (buffer-name) 0) ?\ ) + (window-minibuffer-p (selected-window)) + (memq major-mode mmm-never-modes) + noninteractive + mmm-in-temp-buffer) + ,@body)) + +;;;(def-edebug-spec mmm-valid-buffer t) + +;;}}} +;;{{{ Save Everything + +;; Never trust callback functions to preserve anything. +(defmacro mmm-save-all (&rest body) + "Execute BODY forms, then restoring point, mark, current buffer, +restrictions, and match data." + `(save-excursion + (save-restriction + (save-match-data + ,@body)))) + +;;;(def-edebug-spec mmm-save-all t) + +;;}}} +;;{{{ String Formatting + +(defun mmm-format-string (string arg-pairs) + "Format STRING by replacing arguments as specified by ARG-PAIRS. +Each element of ARG-PAIRS is \(REGEXP . STR) where each STR is to be +substituted for the corresponding REGEXP wherever it matches." + (let ((case-fold-search nil)) + (save-match-data + (dolist (pair arg-pairs) + (while (string-match (car pair) string) + (setq string (replace-match + (if (fboundp 'format-mode-line) + (format-mode-line (cdr pair)) + (cdr pair)) + t t string)))))) + string) + +(defun mmm-format-matches (string &optional on-string) + "Format STRING by matches from the current match data. +Strings like ~N are replaced by the Nth subexpression from the last +global match. Does nothing if STRING is not a string. + +ON-STRING, if supplied, means to use the match data from a +`string-match' on that string, rather than the global match data." + (when (stringp string) + (let ((old-data (match-data)) + subexp) + (save-match-data + (while (string-match "~\\([0-9]\\)" string) + (setq subexp (string-to-number (match-string-no-properties 1 string)) + string (replace-match + (save-match-data + (set-match-data old-data) + (match-string-no-properties subexp on-string)) + t t string)))))) + string) + +;;}}} +;;{{{ Save Keywords + +(defmacro mmm-save-keyword (param) + "If the value of PARAM as a variable is non-nil, return the list +\(:PARAM (symbol-value PARAM)), otherwise NIL. Best used only when it +is important that nil values disappear." + `(if (and (boundp ',param) ,param) + (list (intern (concat ":" (symbol-name ',param))) ,param) + nil)) + +(defmacro mmm-save-keywords (&rest params) + "Return a list saving the non-nil elements of PARAMS. E.g. +\(let \(\(a 1) \(c 2)) \(mmm-save-keywords a b c)) ==> \(:a 1 :c 2) +Use of this macro can make code more readable when there are a lot of +PARAMS, but less readable when there are only a few. Also best used +only when it is important that nil values disappear." + `(append ,@(mapcar #'(lambda (param) + (macroexpand `(mmm-save-keyword ,param))) + params))) + +;;}}} +;;{{{ Looking Back At + +(defun mmm-looking-back-at (regexp &optional bound) + "Return t if text before point matches REGEXP. +Modifies the match data. If supplied, BOUND means not to look farther +back that that many characters before point. Otherwise, it defaults to +\(length REGEXP), which is good enough when REGEXP is a simple +string." + (eq (point) + (save-excursion + (and (re-search-backward regexp + (- (point) (or bound (length regexp))) + t) + (match-end 0))))) + +;;}}} +;;{{{ Markers + +;; Mostly for remembering interactively made regions +(defun mmm-make-marker (pos beg-p sticky-p) + "Make, and return, a marker at POS that is or isn't sticky. +BEG-P represents whether the marker delimits the beginning of a +region \(or the end of it). STICKY-P is whether it should be sticky, +i.e. whether text inserted at the marker should be inside the region." + (let ((mkr (set-marker (make-marker) pos))) + (set-marker-insertion-type mkr (if beg-p (not sticky-p) sticky-p)) + mkr)) + +;;}}} + +(provide 'mmm-utils) + +;;; mmm-utils.el ends here diff --git a/elpa/mmm-mode-20150828.1716/mmm-utils.elc b/elpa/mmm-mode-20150828.1716/mmm-utils.elc new file mode 100644 index 0000000000000000000000000000000000000000..fa4dcecf49b161a3912b526234e7c346f911a3d1 GIT binary patch literal 4343 zcmcInU2oe)7S*FdBj|R!#csC+dg}x=RfvQ{N&bkDHg>EHjIHg!Zh`Ga1~MW?(yU1i zLk{hDANt$(+!@M};}-jnT?4X2&hXCtIQQJc{qc`4|J-V|y#4)sda1KQr82P>DyMNK z;)*iliu0B}+03Y>Wo(T;$=S{@8(!{qsD}FXg*hm6EpN zwBtQ_(I4&5_`Qs4BkAz$=oeBmPMe@>k*b8I^=yVnX1b)4lM_18i6o;rdYOwUN*WSz zQM^ow+$D3Nko&xA6DufFxpGF_9oU`<6E7%(sV;FwxdOPYXWrW^%Ys}YkpVAPTjAH9 zpU4?p5fyFms&y-9+}iR1q*7BzPu}?7mJ)@Z>g2XVo0CDWk5AM-Je)+molSbf3smQ+ ztSa&mjxXPlFG@Kh-&qTQCE1}~hXzrH{2P@g`X*TU9~9(QGL^tX61de4_GL1AN16DS zc0SVwA#@l{DhGxDBy}zAy2=A1v!V&3b4dg8pFBkv!)Uj2+2OkEjqaBP707^YvyeG) zpqk-Mg@)-ajxVpe6xU@bbELr5tn2Z%QsGqekIQssGoJ_}9wxRD*D~O~`|n9bVh8QR zqoeiA+Q;R4_+We5UamPn_J%z_;PWqO*o3@07&RgH5%b>=rZ9Bz)A{k~E1KRS)*=-# z$12Ksogu!8fQ71%v6?CLIQATzzY1O-9G_o=-dF%yC=zc3qE<@;;_%PMug3p)jXcAC zhi(=UeIWS>T=NEtY_F=Pl~D#Akyzj(=U@orwkmXG9%7qgq zaQwtLZGIt~pb#J{ht}=CAgep{#bnU$O``txB**pkm-yNL3V9yvwI;I{pJBDX@#67h zlW#>WTt@f|@ELx?w|u@e+&JKi=)2a&0WL>u7`fxjSM} z$zZ0_B&fh%$jArv3M_5?gJA%{OdUwz(~B z0DSK69#csZtl&cOS`@kzMxs|Pn?u}sgAmzV&8E7}lY$G!X=fSI>mItm9}w~~(GLG>0RNT;xMs*; zp1NZJ_4YmxHy8n@y%90Qzxb>D`6d4ESm1L50OoB6^5H#@uib|+1fUF4RRe6r7mP?6eLZ5iNvNS{?~5aZ%s7TXxUgh zy=~W6{hc8l&n$*8v1`d({QBVh;DpJW#YL%DJ}~LB+(I$|K56RG;f@)_^PjmV{OUHF z>Xb)64B2~~PM0)8^+o~er^i2rbjZ^mz)t|T^p?pz2QPa#KxLo~BQOvw*12%j6!fF2 zL{Wh79@4fYrYm`Sqs!#}NGzZUvo(nU;DUgA!}ifpd(2qI2Z#ik8zeW2W4qjs4(}w1 zwZtvVDyZSDceRERj~i!PASF`J%9c^k^c7&u^vh=_YsvzG(4@z*fbXw8T z1~|e=n9zfwXB`FY18}V7MabQ|nk#b*&lj$>8wrLb z5H~8DO3%^y!&YWb0snxV4A4nPektcjEv-hB?LIX1TTBc{D!e$neS~ssZ?xL4{>c@6 zf~(PIJhq0DC>nL1H^pi!+2_GvjeN3a-3U;Jq27ug2g6a%@nf_d(FuCO>2k+>_>Bsb zS0HzI`TFd_WfURebwySA7SCxFU)_e@;TVdSSsuc|N@Da8XSJ!KwUNja@6ViARCX%o zD#v@soO@H?)nLwV-uxcKtBg$CSEj?#`1s}De}Q$JyR?cjRSR9GU@6)7(DhU(!@C_8 zXezHTfxy6UpUpPGtRBS%#V?Rpa~?b_783==mW_bBL|5!P-o0GtLE)HpNUS3vZKDAs zb8q_*^fGkCr>%`2@C}{2!SbQsd(>&_#D=n~@&jXVadjLI1}8iDbSPeq25Ab+ZNa*; aVcNm&4!^N@J|^xphhyJMYopSt + +;;{{{ GPL + +;; This file is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 2, or (at your option) +;; any later version. + +;; This file is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs; see the file COPYING. If not, write to +;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. + +;;}}} + +;;; Commentary: + +;; This file provides the definitions for the variables used by MMM +;; Mode, as well as several functions to manipulate them. It also +;; defines the errors that MMM Mode can signal. + +;;; Code: + +(require 'mmm-compat) +(require 'cl) + +;; MISCELLANEOUS +;;{{{ Shut up the Byte Compiler + +;; Otherwise it complains about undefined variables. +(eval-when-compile + (defvar mmm-current-submode) + (defvar mmm-save-local-variables) + (defvar mmm-mode-string) + (defvar mmm-submode-mode-line-format) + (defvar mmm-mode-ext-classes-alist) + (defvar mmm-mode-prefix-key) + (defvar mmm-global-mode) + (defvar mmm-primary-mode) + (defvar mmm-classes-alist)) + +;;}}} +;;{{{ Error Conditions + +;; Most of these should be caught internally and never seen by the +;; user, except when the user is creating submode regions manually. + +;; Signalled when we try to put a submode region inside one where it +;; isn't meant to go. +(put 'mmm-subregion-invalid-parent + 'error-conditions + '(mmm-subregion-invalid-parent mmm-error error)) +(put 'mmm-subregion-invalid-parent + 'error-message + "Invalid submode region parent") + +;; Signalled when we try to put a submode region overlapping others in +;; an invalid way. +(put 'mmm-subregion-invalid-placement + 'error-conditions + '(mmm-subregion-invalid-placement mmm-error error)) +(put 'mmm-subregion-invalid-placement + 'error-message + "Submode region placement invalid") + +;; Signalled when we try to apply a submode class that doesn't exist. +(put 'mmm-invalid-submode-class + 'error-conditions + '(mmm-invalid-submode-class mmm-error error)) +(put 'mmm-invalid-submode-class + 'error-message + "Invalid or undefined submode class") + +;; Signalled by :match-submode functions when they are unable to +;; resolve a submode. This error should *always* be caught internally +;; and never seen by the user. +(put 'mmm-no-matching-submode + 'error-conditions + '(mmm-no-matching-submode mmm-error error)) +(put 'mmm-no-matching-submode + 'error-message + "Internal error: no matching submode.") + +;;}}} + +;; USER VARIABLES +;;{{{ Customization Group + +(defgroup mmm nil + "Multiple Major Modes in one buffer." + :group 'tools) + +;;}}} +;;{{{ Save Local Variables + +(defvar mmm-c-derived-modes + '(c-mode c++-mode objc-mode pike-mode java-mode jde-mode javascript-mode + php-mode)) + +(defvar mmm-save-local-variables + `(;; Don't use `function' (#') here!! We're already inside `quote'! + major-mode + comment-start + comment-end + (comment-line-start-skip buffer (fortran-mode)) + comment-start-skip + (comment-column buffer) + comment-indent-function + comment-line-break-function + sentence-end + ,@(when mmm-xemacs + '(mode-popup-menu + (((lambda () current-menubar) . set-buffer-menubar)) + )) + (font-lock-keywords buffer) + font-lock-set-defaults + font-lock-major-mode + font-lock-keywords-only + font-lock-keywords-case-fold-search + font-lock-syntax-table + font-lock-mark-block-function ; Override this? + font-lock-syntactic-keywords + font-lock-syntactic-face-function + parse-sexp-ignore-comments ; Fixes indentation in PHP-mode? + ;; Can be different in different buffers + (c-basic-offset + buffer (c-mode c++-mode objc-mode pike-mode java-mode jde-mode)) + ;; These are necessary for C syntax parsing + (c-class-key nil ,mmm-c-derived-modes) + (c-extra-toplevel-key nil ,mmm-c-derived-modes) + (c-inexpr-class-key nil ,mmm-c-derived-modes) + (c-conditional-key nil ,mmm-c-derived-modes) + semantic-bovinate-toplevel-override + semantic-toplevel-bovine-table + ;; Indentation style control variables. + ;; These have to be localized in Emacs: see `mmm-mode-on'. + ,@(mapcar + #'(lambda (var) (list var nil mmm-c-derived-modes)) + '(c++-template-syntax-table + c-<-op-cont-regexp + c->-op-cont-regexp + c-after-brace-list-key + c-after-suffixed-type-decl-key + c-after-suffixed-type-maybe-decl-key + c-any-class-key + c-asm-stmt-kwds + c-assignment-op-regexp + c-backslash-column + c-basic-offset + c-before-context-fontification-functions + c-bitfield-kwds + c-block-comment-prefix + c-block-decls-with-vars + c-block-prefix-charset + c-block-stmt-1-2-key + c-block-stmt-1-key + c-block-stmt-1-kwds + c-block-stmt-2-key + c-block-stmt-2-kwds + c-brace-list-key + c-case-kwds-regexp + c-cast-parens + c-class-key + c-class-kwds + c-cleanup-list + c-colon-type-list-re + c-comment-only-line-offset + c-comment-prefix-regexp + c-comment-start-regexp + c-cpp-defined-fns + c-current-comment-prefix + c-decl-block-key + c-decl-hangon-key + c-decl-prefix-or-start-re + c-decl-prefix-re + c-decl-spec-kwds + c-decl-start-kwds + c-decl-start-re + c-doc-comment-start-regexp + c-expr-kwds + c-file-offsets + c-file-style + c-not-primitive-type-keywords-regexp + c-hanging-braces-alist + c-hanging-colons-alist + c-hanging-comment-ender-p + c-hanging-comment-starter-p + c-hanging-semi\&comma-criteria + c-identifier-key + c-identifier-last-sym-match + c-identifier-start + c-identifier-syntax-modifications + c-identifier-syntax-table + c-in-comment-lc-prefix + c-indent-comment-alist + c-indent-comments-syntactically-p + c-indentation-style + c-inexpr-block-kwds + c-inexpr-class-kwds + c-keywords + c-keywords-obarray + c-keywords-regexp + c-known-type-key + c-label-kwds + c-label-kwds-regexp + c-label-minimum-indentation + c-lambda-kwds + c-literal-start-regexp + c-macro-with-semi-re + c-nonlabel-token-key + c-nonlabel-token-2-key + c-nonsymbol-chars + c-nonsymbol-token-regexp + c-not-decl-init-keywords + c-offsets-alist + c-opt-<>-arglist-start + c-opt-<>-arglist-start-in-paren + c-opt-<>-sexp-key + c-opt-access-key + c-opt-asm-stmt-key + c-opt-bitfield-key + c-opt-block-decls-with-vars-key + c-opt-block-stmt-key + c-opt-cpp-prefix + c-opt-cpp-start + c-opt-decl-spec-key + c-opt-friend-key + c-opt-identifier-concat-key + c-opt-inexpr-block-key + c-opt-inexpr-brace-list-key + c-opt-inexpr-class-key + c-opt-lambda-key + c-opt-method-key + c-opt-postfix-decl-spec-key + c-opt-type-component-key + c-opt-type-concat-key + c-opt-type-modifier-key + c-opt-type-suffix-key + c-other-decl-block-key + c-other-decl-block-kwds + c-other-decl-kwds + c-overloadable-operators-regexp + c-paragraph-separate + c-paragraph-start + c-paren-stmt-key + c-primary-expr-regexp + c-primitive-type-key + c-primitive-type-kwds + c-protection-kwds + c-postfix-decl-spec-key + c-recognize-<>-arglists + c-recognize-knr-p + c-recognize-paren-inits + c-recognize-typeless-decls + c-regular-keywords-regexp + c-simple-stmt-key + c-simple-stmt-kwds + c-special-brace-lists + c-specifier-key + c-specifier-kwds + c-stmt-delim-chars + c-stmt-delim-chars-with-comma + c-symbol-key + c-symbol-start + c-syntactic-eol + c-syntactic-ws-end + c-syntactic-ws-start + c-type-decl-prefix-key + c-type-decl-suffix-key + c-type-prefix-key + c-typeof-key + c-prefix-spec-kwds-re + c-typedef-key + c-typedef-decl-key + comment-end + comment-start + comment-start-skip)) + ,@(mapcar + (lambda (var) (list var nil '(js-mode))) + '(js--quick-match-re + js--quick-match-re-func)) + ;; Skeleton insertion + skeleton-transformation + ;; Abbrev mode + abbrev-mode + local-abbrev-table + ;; And finally the syntax table and local map. + ((syntax-table . set-syntax-table) buffer) + ((current-local-map . use-local-map) buffer) + paragraph-separate + paragraph-start + (whitespace-active-style buffer) + (whitespace-display-table buffer) + (whitespace-display-table-was-local buffer) + (whitespace-font-lock buffer) + (whitespace-font-lock-mode buffer) + (whitespace-font-lock-keywords buffer) + (whitespace-mode buffer) + forward-sexp-function + smie-rules-function + smie-grammar + smie-forward-token-function + smie-backward-token-function + ) + "Which local variables to save for major mode regions. +Each element has the form \(VARIABLE [TYPE [MODES]]), causing VARIABLE +to be saved for all major modes in the list MODES. If MODES is t or +absent, the variable is saved for all major modes. MODES can also be +a function of no arguments which returns non-nil whenever the variable +should be saved. + +TYPE should be either the symbol `global', meaning to save the +variable globally, the symbol `buffer', meaning to save it per buffer, +or the symbol `region', meaning to save it for each submode region. +If TYPE has any other value, such as nil, or is absent, the variable +is saved globally. If all optional parameters are omitted, the +element may be simply VARIABLE instead of \(VARIABLE). + +It is possible for VARIABLE to be not a symbol but a cons cell of the +form \(GETTER . SETTER), thus specifying special functions to set and +get the value of the \"variable\". This is used for objects like +local maps, syntax tables, etc. which need to be installed in a +special way. GETTER should be a function of no arguments, and SETTER +a function of one. In this case, even if TYPE and MODES are omitted, +the list cannot be flattened--it must be \((GETTER . SETTER)). +\"Variables\" of this type cannot be seen with `mmm-get-saved-local'. + +A single variable may appear more than once in this list, with +different modes and/or types. If the same mode appears more than once +for the same variable with different types, the behavior is undefined. +Changing the value of this variable after MMM Mode has been activated +in some buffer may produce unpredictable results. + +Globally saved variables are saved in the mmm-local-variables property +of the mode symbol. Buffer saved variables are saved in the alist +`mmm-buffer-saved-locals'. Region saved variables are saved in the +mmm-local-variables property of the overlay.") + +(defvar mmm-buffer-saved-locals () + "Stores saved local variables for this buffer, by mode. +Each element looks like \(MODE \(VAR VALUE) ...).") +(make-variable-buffer-local 'mmm-buffer-saved-locals) + +(defvar mmm-region-saved-locals-defaults () + "Stores saved defaults for region-saved locals, by mode. +Each element looks like \(MODE \(VAR VALUE) ...). Used to initialize +new submode regions.") +(make-variable-buffer-local 'mmm-region-saved-locals-defaults) + +(defvar mmm-region-saved-locals-for-dominant () + "Stores saved region locals for the dominant major mode. +The dominant major mode is considered to be one region for purposes of +saving region variables. Region-saved variables for submode regions +are saved as overlay properties.") +(make-variable-buffer-local 'mmm-region-saved-locals-for-dominant) + +;;}}} +;;{{{ Submode Faces + +(defgroup mmm-faces nil + "Faces and coloring for submode regions. +In general, only background colors should be set, to avoid interfering +with font-lock." + :group 'mmm) + +(defcustom mmm-submode-decoration-level 1 + "*Amount of coloring to use in submode regions. +Should be either 0, 1, or 2, representing None, Low, and High amounts +of coloring respectively. +* None (0) means to use no coloring at all. +* Low (1) means to use `mmm-default-submode-face' for all submode + regions \(except for \"non-submode\" regions, i.e. those that are of + the primary mode) and `mmm-delimiter-face' for region delimiters. +* High (2) means to use different faces for different types of submode + regions and delimiters, such as initialization code, expressions that + are output, declarations, and so on, as specified by the submode + class. The default faces are still used for regions that do not + specify a face." + :group 'mmm-faces + :type '(choice (const :tag "None" 0) + (const :tag "Low" 1) + (const :tag "High" 2))) + +(defface mmm-init-submode-face '((((background light)) (:background "Pink")) + (((background dark)) (:background "MediumOrchid")) + (t (:background "Pink"))) + "Face used for submodes containing initialization code." + :group 'mmm-faces) + +(defface mmm-cleanup-submode-face '((((background light)) (:background "Wheat")) + (((background dark)) (:background "peru")) + (t (:background "Wheat"))) + "Face used for submodes containing cleanup code." + :group 'mmm-faces) + +(defface mmm-declaration-submode-face '((((background light)) (:background "Aquamarine")) + (((background dark)) (:background "DarkTurquoise")) + (t (:background "Aquamarine"))) + "Face used for submodes containing declarations." + :group 'mmm-faces) + +(defface mmm-comment-submode-face '((((background light)) (:background "SkyBlue")) + (((background dark)) (:background "SteelBlue")) + (t (:background "SkyBlue"))) + "Face used for submodes containing comments and documentation." + :group 'mmm-faces) + +(defface mmm-output-submode-face '((((background light)) (:background "Plum")) + (((background dark)) (:background "MediumVioletRed")) + (t (:background "Plum"))) + "Face used for submodes containing expression that are output." + :group 'mmm-faces) + +(defface mmm-special-submode-face '((((background light)) (:background "MediumSpringGreen")) + (((background dark)) (:background "ForestGreen")) + (t (:background "MediumSpringGreen"))) + "Face used for special submodes not fitting any other category." + :group 'mmm-faces) + +(defface mmm-code-submode-face '((((background light)) (:background "LightGray")) + (((background dark)) (:background "DimGray")) + (t (:background "LightGray"))) + "Face used for submodes containing ordinary code." + :group 'mmm-faces) + +(defface mmm-default-submode-face '((((background light)) (:background "gray85")) + (((background dark)) (:background "gray20")) + (t (:background "gray85"))) + "Face used for all submodes at decoration level 1. +Also used at decoration level 2 for submodes not specifying a type." + :group 'mmm-faces) + +(defface mmm-delimiter-face nil + "Face used to mark submode delimiters." + :group 'mmm-faces) + +;;}}} +;;{{{ Mode Line Format + +(defcustom mmm-mode-string " MMM" + "*String to display in mode line as MMM minor mode indicator." + :group 'mmm + :type 'string) + +(defcustom mmm-submode-mode-line-format "~M[~m]" + "*Format of the mode-line display when point is in a submode region. + +~M is replaced by the name of the primary major mode \(which may be +replaced by a combined-mode function, see the info documentation). + +~m is replaced by the submode region overlay's `display-name' +property, if it has one. Otherwise it is replaced by the mode name of +the submode region. + +If `mmm-primary-mode-display-name' is non-nil, then this variable is +used even when point is not in a submode region \(i.e. it is in a +primary mode region), with ~m being replaced by the value of that +variable." + :group 'mmm + :type 'string) + +(defvar mmm-primary-mode-display-name nil + "If non-nil, displayed as the primary mode name in the mode line. +See also `mmm-buffer-mode-display-name'.") +(make-variable-buffer-local 'mmm-primary-mode-display-name) + +(defvar mmm-buffer-mode-display-name nil + "If non-nil, displayed in the mode line instead of the primary mode +name, which is then shown next to it as if it were a submode when in a +primary mode region, i.e. outside all submode regions.") +(make-variable-buffer-local 'mmm-buffer-mode-display-name) + +(defun mmm-set-mode-line () + "Set the mode line display correctly for the current submode, +according to `mmm-submode-mode-line-format'." + (let ((primary (or mmm-primary-mode-display-name + (get mmm-primary-mode 'mmm-mode-name))) + (submode (and mmm-current-overlay + (or (overlay-get mmm-current-overlay 'display-name) + (get mmm-current-submode 'mmm-mode-name))))) + (if mmm-buffer-mode-display-name + (setq mode-name + (mmm-format-string mmm-submode-mode-line-format + `(("~M" . ,mmm-buffer-mode-display-name) + ("~m" . ,(or submode primary))))) + (if submode + (setq mode-name + (mmm-format-string mmm-submode-mode-line-format + `(("~M" . ,primary) + ("~m" . ,submode)))) + (setq mode-name primary)))) + (force-mode-line-update)) + +;;}}} +;;{{{ Submode Classes + +(defvar mmm-classes nil + "*List of submode classes that apply to a buffer. +Generally set in a file local variables list. Can either be one +symbol, or a list of symbols. Automatically buffer-local.") +(make-variable-buffer-local 'mmm-classes) + +(defvar mmm-global-classes '(universal) + "*List of submode classes that apply to all buffers. +Can be overridden in a file local variables list.") + +;;}}} +;;{{{ Modes and Extensions + +(defcustom mmm-mode-ext-classes-alist nil + "Alist of submode classes for major modes and/or file extensions. +This variable can now be directly modified. + +Elements look like \(MODE EXT CLASS), where MODE is a major mode, EXT +is a regexp to match a filename such as in `auto-mode-alist', and +CLASS is a submode class. CLASS is activated in all buffers in mode +MODE \(if non-nil) and whose filenames match EXT \(if non-nil). If +both MODE and EXT are nil, CLASS is activated in all buffers. If CLASS +is the symbol t, MMM Mode is turned on in all buffers matching MODE +and EXT, but no classes are activated. + +See `mmm-global-mode'." + :group 'mmm + :type '(repeat (list (symbol :tag "Major Mode") + (string :tag "Filename Regexp") + (symbol :tag "Class"))) + :require 'mmm-mode) + +(defun mmm-add-mode-ext-class (mode ext class) + "Add an element to `mmm-mode-ext-classes-alist', which see. +That variable can now be directly modified, so this function is +unnecessary. It probably won't go away, though." + (add-to-list 'mmm-mode-ext-classes-alist (list mode ext class))) + +;;}}} +;;{{{ Preferred Major Modes + +(defcustom mmm-major-mode-preferences + '((perl cperl-mode perl-mode) + (python python-mode python-mode) + (javascript javascript-mode c++-mode) + (java jde-mode java-mode c++-mode) + (css css-mode c++-mode)) + "User preferences about what major modes to use. +Each element has the form \(LANGUAGE . MODES) where LANGUAGE is the +name of a programming language such as `perl' as a symbol, and MODES +is a list of possible major modes to use, such as `cperl-mode' or +`perl-mode'. The first element of MODES which is `fboundp' is used +for submodes of LANGUAGE. The last element of MODES should be a mode +which will always be available." + :group 'mmm + :type '(repeat (cons symbol + (repeat + (restricted-sexp :match-alternatives + (fboundp)))))) + +(defun mmm-add-to-major-mode-preferences (language mode &optional default) + "Add major mode MODE as acceptable for LANGUAGE. +This sets the value of `mmm-major-mode-preferences'. If DEFAULT +is non-nil, MODE is added at the front of the list of modes for +LANGUAGE. Otherwise, it is added at the end. This may be used by +packages to ensure that some mode is present, but not override +any user-specified mode." + (let ((pair (assq language mmm-major-mode-preferences))) + (if pair + ;; Existing mode preferences + (if default + (setcdr pair (cons mode (cdr pair))) + (setcdr pair (append (cdr pair) (list mode)))) + ;; No existing mode preference + (add-to-list 'mmm-major-mode-preferences (list language mode))))) + +(defun mmm-ensure-modename (symbol) + "Return SYMBOL if it is a valid submode name, else nil. +Valid submode names are either `fboundp' or present as the `car' of an +element in `mmm-major-mode-preferences'." + (if (or (fboundp symbol) + (assq symbol mmm-major-mode-preferences)) + symbol + nil)) + +(defun mmm-modename->function (mode) + "Convert MODE to a mode function, nil if impossible. +Valid submode names are either `fboundp' or present as the `car' of an +element in `mmm-major-mode-preferences'. In the latter case, the +first `fboundp' element of the `cdr' is returned, or nil if none." + (if (fboundp mode) + mode + (car (remove-if-not + #'fboundp + (cdr (assq mode mmm-major-mode-preferences)))))) + +;;}}} +;;{{{ Delimiter Regions + +(defcustom mmm-delimiter-mode 'fundamental-mode + "Major mode used by default for delimiter regions. +Classes are encouraged to override this by providing a delimiter-mode +parameter-- see `mmm-classes-alist'." + :group 'mmm + :type 'function) + +;;}}} +;;{{{ Key Bindings + +(defcustom mmm-mode-prefix-key [(control ?c) ?%] + "Prefix key for the MMM Minor Mode Keymap." + :group 'mmm + :type 'vector) + +(defcustom mmm-command-modifiers '(control) + "List of key modifiers for MMM command keys. +The MMM commands in the MMM Mode map, after `mmm-mode-prefix-key', +are bound to default keys with these modifiers added. This variable +must be set before MMM Mode is loaded to have an effect. + +It is suggested that the value of this variable be either nil or +\(control), as the default keys are either plain keys or have only a +meta modifier. The shift modifier is not particularly portable between +Emacsen. The values of this variable and `mmm-insert-modifiers' should +be disjoint." + :group 'mmm + :type '(repeat (symbol :tag "Modifier"))) + +(defcustom mmm-insert-modifiers '() + "List of key modifiers for MMM submode insertion keys. +When a key pressed after `mmm-mode-prefix-key' has no MMM Mode command +binding, and its modifiers include these, then its basic type, plus any +modifiers in addition to these, is looked up in classes' :insert +specifications. + +It is suggested that the value of this variable be either nil or +\(control), allowing submode classes to specify the presence or +absence of the meta modifier. The shift modifier is not particularly +portable between Emacsen. The values of `mmm-command-modifiers' and +this variable should be disjoint." + :group 'mmm + :type '(repeat (symbol :tag "Modifier"))) + +(defcustom mmm-use-old-command-keys nil + "Non-nil means to Use the old command keys for MMM Mode. +MMM Mode commands then have no modifier while insertion commands have +a control modifier, i.e. `mmm-command-modifiers' is set to nil and +`mmm-insert-modifiers' is set to \(control). If nil, the values of +these variables are as the default, or whatever the user has set them +to. This variable must be set before MMM Mode is loaded." + :group 'mmm + :type 'boolean) + +(defun mmm-use-old-command-keys () + "Use the old command keys \(no control modifer) in MMM Mode." + (setq mmm-command-modifiers '() + mmm-insert-modifiers '(control))) + +;;}}} +;;{{{ MMM Hooks + +(defcustom mmm-mode-hook () + "Hook run when MMM Mode is enabled in a buffer. + +A hook named mmm--hook is also run, if it exists. For +example, `mmm-html-mode-hook' is run whenever MMM Mode is entered with +HTML mode the dominant mode. + +A hook named mmm--submode-hook is run when a submode region +of a given mode is created. For example, `mmm-cperl-mode-submode-hook' +is run whenever a CPerl mode submode region is created, in any buffer. +When this hooks are run, point is guaranteed to be at the start of +the newly created submode region. + +Finally, a hook named mmm--class-hook is run whenever a buffer +is first mmm-ified with a given submode class. For example, +`mmm-mason-class-hook' is run whenever the `mason' class is first +applied in a buffer." + :group 'mmm + :type 'hook) + +(defun mmm-run-constructed-hook (body &optional suffix) + "Run the hook named `mmm---hook', if it exists. +If SUFFIX is nil or unsupplied, run `mmm--hook' instead." + (let ((hook (intern-soft (if suffix + (format "mmm-%s-%s-hook" body suffix) + (format "mmm-%s-hook" body))))) + (if hook (run-hooks hook)))) + +(defun mmm-run-major-hook () + (mmm-run-constructed-hook mmm-primary-mode)) + +(defun mmm-run-submode-hook (submode) + (mmm-run-constructed-hook submode "submode")) + +(defvar mmm-class-hooks-run () + "List of submode classes for which hooks have already been run in +the current buffer.") +(make-variable-buffer-local 'mmm-class-hooks-run) + +(defun mmm-run-class-hook (class) + (unless (member class mmm-class-hooks-run) + (mmm-run-constructed-hook class "class") + (add-to-list 'mmm-class-hooks-run class))) + +(defvar mmm-primary-mode-entry-hook nil + "Hook run when point moves into a region of the primary mode. +Each submode region can have an `entry-hook' property which is run +when they are entered, but since primary mode regions have no overlay +to store properties, this is a buffer-local variable. + +N.B. This variable is not a standard Emacs hook. Unlike Emacs' +\"local hooks\" it has *no* global value, only a local one. Its value +should always be a list of functions \(possibly empty) and never a +single function. It may be used with `add-hook', however.") +(make-variable-buffer-local 'mmm-primary-mode-entry-hook) + +;;}}} +;;{{{ Major Mode Hook + +(defcustom mmm-major-mode-hook () + "Hook run whenever a new major mode is finished starting up. +MMM Mode implements this with a hack \(see comments in the source) so +that `mmm-global-mode' will function correctly, but makes this hook +available so that others can take advantage of the hack as well. + +Note that file local variables have *not* been processed by the time +this hook is run. If a function needs to inspect them, it should also +be added to `find-file-hooks'. However, `find-file-hooks' is not run +when creating a non-file-based buffer, or when changing major modes in +an existing buffer." + :group 'mmm + :type 'hook) + +(defun mmm-run-major-mode-hook () + (dolist (func mmm-major-mode-hook) + (ignore-errors (funcall func)))) + +;;}}} +;;{{{ MMM Global Mode + +;;; There's a point to be made that this variable should default to +;;; `maybe' (i.e. not nil and not t), because that's what practically +;;; everyone wants. I subscribe, however, to the view that simply +;;; *loading* a lisp extension should not change the (user-visible) +;;; behavior of Emacs, until it is configured or turned on in some +;;; way, which dictates that the default for this must be nil. +(defcustom mmm-global-mode nil + "*Specify in which buffers to turn on MMM Mode automatically. + +- If nil, MMM Mode is never enabled automatically. +- If t, MMM Mode is enabled automatically in all buffers. +- If any other symbol, MMM mode is enabled only in those buffers that + have submode classes associated with them. See `mmm-classes' and + `mmm-mode-ext-classes-alist' for more information." + :group 'mmm + :type '(choice (const :tag "Always" t) + (const :tag "Never" nil) + (other :tag "Maybe" maybe)) + :require 'mmm-mode) + +;; These are not traditional editing modes, so mmm makes no sense, and +;; can mess things up seriously if it doesn't know not to try. +(defcustom mmm-never-modes + '( + help-mode + Info-mode + dired-mode + comint-mode + telnet-mode + shell-mode + eshell-mode + forms-mode + ) + "List of modes in which MMM Mode is never activated." + :group 'mmm + :type '(repeat (symbol :tag "Mode"))) + +;;}}} +;;{{{ Buffer File Name + +(defvar mmm-set-file-name-for-modes '(mew-draft-mode) + "List of modes for which the temporary buffers MMM creates have a +file name. In these modes, this file name is the same as that of the +parent buffer. In general, this has been found to cause more problems +than it solves, but some modes require it.") + +;;}}} +;;{{{ Idle Parsing + +(defcustom mmm-parse-when-idle nil + "Non-nil to automatically reparse the buffer when it has some + modifications and Emacs has been idle for `mmm-idle-timer-delay'." + :type 'boolean + :group 'mmm) + +(defcustom mmm-idle-timer-delay 0.2 + "Delay in secs before re-parsing after user makes changes." + :type 'number + :group 'mmm) +(make-variable-buffer-local 'mmm-idle-timer-delay) + +(defvar mmm-mode-parse-timer nil "Private variable.") +(make-variable-buffer-local 'mmm-mode-parse-timer) +(defvar mmm-mode-buffer-dirty nil "Private variable.") +(make-variable-buffer-local 'mmm-mode-buffer-dirty) + +(defun mmm-mode-edit (beg end len) + (setq mmm-mode-buffer-dirty t) + (mmm-mode-reset-timer)) + +(defun mmm-mode-reset-timer () + (when mmm-mode-parse-timer + (cancel-timer mmm-mode-parse-timer)) + (setq mmm-mode-parse-timer + (run-with-idle-timer mmm-idle-timer-delay nil + #'mmm-mode-idle-reparse (current-buffer)))) + +(defun mmm-mode-idle-reparse (buffer) + (when (buffer-live-p buffer) + (with-current-buffer buffer + (when mmm-mode-buffer-dirty + (mmm-apply-all) + (setq mmm-mode-buffer-dirty nil) + (setq mmm-mode-parse-timer nil))))) + +;;}}} + +;; NON-USER VARIABLES +;;{{{ Mode Variable + +(defvar mmm-mode nil + "Non-nil means MMM Mode is turned on in this buffer. +Do not set this variable directly; use the function `mmm-mode'.") +(make-variable-buffer-local 'mmm-mode) + +;;}}} +;;{{{ Primary Mode + +(defvar mmm-primary-mode nil + "The primary major mode in the current buffer.") +(make-variable-buffer-local 'mmm-primary-mode) + +;;}}} +;;{{{ Classes Alist + +;; Notes: +;; 1. :parent could be an all-class argument. Same with :keymap. +;; 2. :match-submode really does have to be distinct from :submode, +;; because 'functionp' isn't enough to distinguish which is meant. +(defvar mmm-classes-alist nil + "Alist containing all defined mmm submode classes. +A submode class is a named recipe for parsing a document into submode +regions, and sometimes for inserting new ones while editing. + +Each element of this alist looks like \(CLASS . ARGS) where CLASS is a +symbol naming the submode class and ARGS is a list of keyword +arguments, called a \"class specifier\". There are a large number of +accepted keyword arguments in the class specifier. + +The argument CLASSES, if supplied, must be a list of other submode +class names, or class specifiers, representing other classes to call +recursively. The FACE arguments of these classes are overridden by +the FACE argument of this class. If the argument CLASSES is supplied, +all other arguments to this class are ignored. That is, \"grouping\" +classes can do nothing but group other classes. + +The argument HANDLER, if supplied, also overrides any other processing. +It must be a function, and all the arguments are passed to it as +keywords, and it must do everything. See `mmm-ify' for what sorts of +things it must do. This back-door interface should be cleaned up. + +The optional argument FACE gives the display face of the submode +regions under high decoration (see `mmm-submode-decoration-level'). +It must be a valid face. The standard faces used for submode regions +are `mmm-*-submode-face' where * is one of `init', `cleanup', +`declaration', `comment', `output', `special', or `code'. A more +flexible alternative is the argument MATCH-FACE. MATCH-FACE can be a +function, which is called with one argument, the form of the front +delimiter \(found from FRONT-FORM, below), and should return the face +to use. It can also be an alist, with each element of the form +\(DELIM . FACE). + +If neither CLASSES nor HANDLER are supplied, either SUBMODE or +MATCH-SUBMODE must be. SUBMODE specifies the submode to use for the +submode regions, a symbol such as `cperl-mode' or `emacs-lisp-mode', +while MATCH-SUBMODE must be a function to be called immediately after +a match is found for FRONT, which is passed one argument, the form of +the front delimiter \(found from FRONT-FORM, below), and return a +symbol such as SUBMODE would be set to. If MATCH-SUBMODE detects an +invalid match--for example a specified mode which is not `fboundp'--it +should \(signal 'mmm-no-matching-submode nil). + +FRONT and BACK are the means to find the submode regions, and can be +either buffer positions \(number-or-markers), regular expressions, or +functions. If they are absolute buffer positions, only one submode +region is created, from FRONT to BACK. This is generally not used in +named classes. \(Unnamed classes are created by interactive commands +in `mmm-interactive-history'). + +If FRONT is a regexp, then that regexp is searched for, and the end of +its FRONT-MATCH'th match \(or the beginning thereof, if INCLUDE-FRONT +is non-nil), plus FRONT-OFFSET, becomes the beginning of the submode +region. If FRONT is a function, that function is called instead, and +must act somewhat like a search, in that it should start at point, +take one argument as a search bound, and set the match data. A +similar pattern is followed for BACK \(the search starts at the +beginning of the submode region), save that the beginning of its +BACK-MATCH'th match \(or the end, if INCLUDE-BACK is non-nil) becomes +the end of the submode region, plus BACK-OFFSET. + +If SAVE-MATCHES is non-nil, then BACK, if it is a regexp, is formatted +by replacing strings of the form \"~N\" by the corresponding value of +\(match-string n) after matching FRONT. + +FRONT-MATCH and BACK-MATCH default to zero. They specify which +sub-match of the FRONT and BACK regexps to treat as the delimiter. +This number will be passed to any calls to `match-beginning' and +company. + +FRONT- and BACK-OFFSET default to 0. In addition to numbers, they can +also be functions to call which should move point to the correct +position for the beginning or end of the submode region. Common +choices include `beginning-of-line' and `end-of-line', and new +functions can of course be written. They can also be lists which will +be applied in sequence, such as \(end-of-line 1) meaning move to end +of line and then forward one character. + +FRONT-VERIFY and BACK-VERIFY, if supplied, must be functions that +inspect the match data to see if a match found by FRONT or BACK +respectively is valid. + +FRONT-DELIM \(resp. BACK-DELIM), if supplied, can take values like +those of FRONT-OFFSET \(resp. BACK-OFFSET), specifying the offset from +the start \(resp. end) of the match for FRONT \(resp. BACK) to use as +the starting \(resp. ending) point for the front \(resp. back) +delimiter. If nil, it means not to make a region for the respective +delimiter at all. + +DELIMITER-MODE, if supplied, specifies what submode to use for the +delimiter regions, if any. If `nil', the primary mode is used. If +not supplied, `mmm-delimiter-mode' is used. + +FRONT-FACE and BACK-FACE specify faces to use for displaying the +delimiter regions, under high decoration. + +FRONT-FORM and BACK-FORM, if given, must supply a regexp used to match +the *actual* delimiter. If they are strings, they are used as-is. If +they are functions, they are called and must inspect the match data. +If they are lists, their `car' is taken as the delimiter. The default +for both is \(regexp-quote \(match-string 0)). + +The last case--them being a list--is usually used to set the delimiter +to a function. Such a function must take 1-2 arguments, the first +being the overlay in question, and the second meaning to insert the +delimiter and adjust the overlay rather than just matching the +delimiter. See `mmm-match-front', `mmm-match-back', and +`mmm-end-current-region'. + +CASE-FOLD-SEARCH, if specified, controls whether the search is +case-insensitive. See `case-fold-search'. It defaults to `t'. + +CREATION-HOOK, if specified, should be a function which is run +whenever a submode region is created, with point at the beginning of +the new region. One use for it is to set region-saved local variables +\(see `mmm-save-local-variables'). + +INSERT specifies the keypress insertion spec for such submode regions. +INSERT's value should be list of elements of the form \(KEY NAME . +SPEC). Each KEY should be either a character, a function key symbol, +or a dotted list \(MOD . KEY) where MOD is a symbol for a modifier +key. The use of any other modifier than meta is discouraged, as +`mmm-insert-modifiers' is sometimes set to \(control), and other +modifiers are not very portable. Each NAME should be a symbol +representing the insertion for that key. Each SPEC can be either a +skeleton, suitable for passing to `skeleton-insert' to create a +submode region, or a dotted pair \(OTHER-KEY . ARG) meaning to use the +skeleton defined for OTHER-KEY but pass it the argument ARG as the +`str' variable, possible replacing a prompt string. Skeletons for +insertion should have the symbol `_' where point \(or wrapped text) +should go, and the symbol `@' in four different places: at the +beginning of the front delimiter, the beginning of the submode region, +the end of the submode region, and the end of the back delimiter. + +If END-NOT-BEGIN is non-nil, it specifies that a BACK delimiter cannot +begin a new submode region. + +MATCH-NAME, if supplied, specifies how to determine the \"name\" for +each submode region. It must be a string or a function. If it is a +function, it is passed the value of FRONT-FORM and must return the +name to use. If it is a string, it is used as-is unless SAVE-NAME has +a non-nil value, in which case, the string is interpreted the same as +BACK when SAVE-MATCHES is non-nil. If MATCH-NAME is not specified, +the regions are unnamed. Regions with the same name are considered +part of the same chunk of code, and formatted as such, while unnamed +regions are not grouped with any others. + +As a special optimization for insertion, if SKEL-NAME is non-nil, the +insertion code will use the user-prompted string value as the region +name, instead of going through the normal matching procedure. + +PRIVATE, if supplied and non-nil, means that this class is a private +or internal class, usually one invoked by another class via :classes, +and is not for the user to see.") + +;;;###autoload +(defun mmm-add-classes (classes) + "Add the submode classes CLASSES to `mmm-classes-alist'." + (dolist (class classes) + (add-to-list 'mmm-classes-alist class))) + +(defun mmm-add-group (group classes) + "Add CLASSES and a \"grouping class\" named GROUP which calls them all. +The CLASSES are all made private, i.e. non-user-visible." + (mmm-add-classes (mapcar #'(lambda (class) + (append class + '(:private t))) + classes)) + (add-to-list 'mmm-classes-alist + (list group :classes (mapcar #'first classes)))) + +(defun mmm-add-to-group (group classes) + "Add CLASSES to the \"grouping class\" named GROUP. +The CLASSES are all made private, i.e. non-user-visible." + (mmm-add-classes (mapcar #'(lambda (class) + (append class + '(:private t))) + classes)) + (mmm-set-class-parameter group :classes + (append (mmm-get-class-parameter group :classes) + (mapcar #'first classes)))) + +;;}}} +;;{{{ Version Number + +(defconst mmm-version "0.5.4" + "Current version of MMM Mode.") + +(defun mmm-version () + (interactive) + (message "MMM Mode version %s by Michael Abraham Shulman" mmm-version)) + +;;}}} +;;{{{ Temp Buffer Name + +(defvar mmm-temp-buffer-name "mmm-temp-buffer" + "Name for temporary buffers created by MMM Mode. +Using non-special name, so that font-lock-mode will be enabled +automatically when appropriate, and will set all related vars.") + +(defvar mmm-in-temp-buffer nil + "Bound to t when working in the temp buffer.") + +;;}}} +;;{{{ Interactive History + +(defvar mmm-interactive-history nil + "History of interactive mmm-ification in the current buffer. +Elements are either submode class symbols or class specifications. See +`mmm-classes-alist' for more information.") +(make-variable-buffer-local 'mmm-interactive-history) + +(defun mmm-add-to-history (class) + (add-to-list 'mmm-interactive-history class)) + +(defun mmm-clear-history () + "Clears history of interactive mmm-ification in current buffer." + (interactive) + (setq mmm-interactive-history nil)) + +;;}}} +;;{{{ Mode/Ext Manipulation + +(defvar mmm-mode-ext-classes () + "List of classes associated with current buffer by mode and filename. +Set automatically from `mmm-mode-ext-classes-alist'.") +(make-variable-buffer-local 'mmm-mode-ext-classes) + +(defun mmm-get-mode-ext-classes () + "Return classes for current buffer from major mode and filename. +Uses `mmm-mode-ext-classes-alist' to find submode classes." + (or mmm-mode-ext-classes + (setq mmm-mode-ext-classes + (mapcar #'third + (remove-if-not #'mmm-mode-ext-applies + mmm-mode-ext-classes-alist))))) + +(defun mmm-clear-mode-ext-classes () + "Clear classes added by major mode and filename." + (setq mmm-mode-ext-classes nil)) + +(defun mmm-mode-ext-applies (element) + (destructuring-bind (mode ext class) element + (and (if mode + (eq mode + ;; If MMM is on in this buffer, use the primary mode, + ;; otherwise use the normal indicator. + (or mmm-primary-mode major-mode)) + t) + (if ext + (and (buffer-file-name) + (save-match-data + (string-match ext (buffer-file-name)))) + t)))) + +(defun mmm-get-all-classes (global) + "Return a list of all classes applicable to the current buffer. +These come from mode/ext associations, `mmm-classes', and interactive +history, as well as `mmm-global-classes' if GLOBAL is non-nil." + (append mmm-interactive-history + (if (listp mmm-classes) mmm-classes (list mmm-classes)) + (if global mmm-global-classes ()) + (mmm-get-mode-ext-classes))) + +;;}}} + +(provide 'mmm-vars) + +;;; mmm-vars.el ends here diff --git a/elpa/mmm-mode-20150828.1716/mmm-vars.elc b/elpa/mmm-mode-20150828.1716/mmm-vars.elc new file mode 100644 index 0000000000000000000000000000000000000000..f873ed9654a1089de8cb22d1f5475658b5da5bca GIT binary patch literal 37756 zcmchgX>%OMndkX#q@IwEiSW$YJG)!c8XJHHjX^g69>Rii;t_QWVGtC5wJ$8%qq_3MMD5B}-aty`^M|N7V2gX#EU zI4TDA$8eGzjPrh(y(?zra5~9)dt2LE_qtnMdwe;ZpJ(}Klua+@!}0LX`J6uGR?8l~ zIv8zY*`Cw2CvNToq-d6A4wJ`=$#+Xd! zS${g2=X74oPdj&MnRNCKA3S-I_0RKJ-k-D1O`ATS46<^X_47$~Qe>lP-k2opr_73c zHX0VQY<^D1-j2@;9R8+%w1B_$pH{22esVQ0I{oRO$l6Cc+uQux{gF*koIzfl z;pAOD8V))a`K*}Cvtl-z&Uj%m7#j6u>l)z3?s{mi_=_9i{c%y2`5AD2;-hB_Fc#o_ z(#$7o-?Wrb-Y>>l%}tZ14%g;yA1=+5x`vJVq;c0_U7h|YFH4_p^`q+(#jQPnG%(>LA30>dghjJBT%2vIo%I*xd^+w7 z3MQTvowM0=aUtktli?_9KU<9E!wW>mv-~@j`wUE!k`U8Lk)13~Pm38teCaREr_)jS zCcC}ST4z)5@|jZ*L(hiqia|%~FSE7vzWvJj|MqYGV|wykXu24_Exhf!{9PV?4Qfqg ze>S|B`-6+~3;VIL(fa(i-Mf2tv)`W&`{ziQK6_^RVSX}V!ud2S^LIsd%KFE)iyA#4 zBM)+3Dn?E==Q%H&Tjz1M{_XzDC;RuG9%O%f^@nfx|7R~A9vr@Tv$2UZTa=(Bi#=M* zf^^eF1Di?0xSGvirg29@G(E{jYn$1)$R~nN1U@}mX-D2`bmbe3?>afHcy~C@ zE||xkZ?-_AAQ@kCxv=^*p}Y`!Blmdctrn2C%?RE3|E308!F zRfuUN#KiqLN~0Q{iuDjz`M8iW1Petr9S`U8VqhC@MVcGuR|e(b_+oUGC<-ns=S4mc z4ih16fQ2V>t>|J}mP6>02fBi+7Zuf;9<50%f<3= zzJS?_K9o3u)mzT0q`bnM_&%E(({5(PyuTI5byD!I?@TZOzWj|0%3E=9m-!WQ zh0Rn1dNU(zYWZQ)OZTs*|06Xx^L`ajs08AP*KZUch zXV0FQV#>tLCxQ~@=kQ$)qqW#(Ic32vJPaNev*};~1QwHvSuq&)jp8sbN>rUp=Eo+( z;6#_YaWZFMZ!_Szfn>n%RGkp zAK&69=4O{}UCd1xsy({(=(gG%J=)pf`A+xK1OA_Z!Y`%^zZfn2+PmNUhX+it!xX#Q zM_BCoYnO?3d-`j4=a;E_FnI-~?+bIV^s~QYvzQ`xs{?~rs62zU;>1fa? zk!C39s*h`qj`MNVJkDotJ14ft1hDFy`2EzKC-*l!I@*C$J%rkbw*1x*mWU{__2v@d8-9*^Af*xK4ywb2)o|_w4hsf*0RzfPxAiT z61bnUcw^Tk65!7Qo)?k8ir>Sx{C9Xd>|1muQI%#m8O~3K1;ia@bh3>C1wF;?)Xk__ zu3FiVLY3aJ*R9>VbrgRQ1;*~SlWwOMAmU?$MiJLizs3rz+ln`7a?o7Ehw-T%R&b(e z?m+^rwLz&)wLVmTgwKFrawAGG#XT{68oIGwcsa;hNeMb4X9K%cj{+1Dmf|ZeW~=6l z3kfH=-knp~#+@kr;tL7tf_DJD!^;|Ep0L1LOPHA;NSupNt#4XWY>?p^L1;bvjR4eI zi|v|7UD|mZIxvbce|SwHz5oyH$NntmSJ;F74mM=xVn%2X!w8-hm#}h^+!dmN#pO&^ zcFYLj-PmjxS=F3$U@_~6d#e}xiLH6*8S-ZMD}g%i;L~Hq4RKOBNFrkqIy+!%4bTc| z_iF4hk!EL`VX4Xd2`Ssea)L^2z$Gy>oFpKR`T#5NT+q3ZDk4yt&85pU=@Zq*}=1(&9LWdO^KS{PNtWESsZSo{6s3kN2~s*aP4j5 z;bb^ojL{+jysee--6TkF3p=QiCCbBCnoV5_373q_n?w|R;Q91z5t(DDF^UtK-7a>C z&FtBQ5)+5#rq~^RYRUV3 zf{}p`ts&_J6Ps$P1b5Z6N=Vm6sR`g}u0G-@k(>rrLw)%!6HIKRnNDXzth(CJHR49+ zpl9mO+)xOlm&S+`xvW>Uh9+gES0Z_&1_B)C)A~9HPN2`ecbvJbOPx*jz)cr8+9=ct z1mVHbvaQvbI0*%<&Dve<$1(6uXFg?Plh>M^DJDgrX=c2|1l6qD9+lkBQs)ZfEs^Y9>PeGXYX=yO>M`sIS!~*w{;wTlmlFuWX z$@bi6@m+*qP0fVUpw^1*69s%i9TcM>Zka3_y|dKhQpl8vo?0w2uEYO`oK#u; z1>s8dMe3Osa9MWbAuTn<_l(+%1%oR0T~^HvO0?!{9jB*ZP2q|21)Frysh2QFLZA4T z&1sVb%f}WOeuvf7|1v*vqiLoq&D5(~>WcZUe^h?K*b;$bQ&{>K=OS;}m3He5Jnh_oXqxac8CZi2jgKg!)1!zDJGyuApt$#_GWf+ zW%07DW=>`_oxb&eakj3&tA)dflRtfZK!{>%Yhx*J<)bwsX68Zr^6uQdx6Sg_$2qyC z7`KZt4qxG#Vn8cKu|(7E?dGOx5sq0%Qu@@Mh$6E6*X}CIUMp%&FX=EsolV zr6S6SWh&J`&NJpKK zNWu*xBdG|f1hKO2@l`}@m98z6LMH9|ZaP$=4EK$^4uc;}EDMtqN|m~2N6Uo(k&P^_ z7gi)waEjq8`C>uHtedsJ*dMbF^4F);E|?uZ$p^ecM(E7sO%+|LFTM|>Ul%&yh%dUvU>BJy#p1IaTz)iBDh1#iI=;fAFt!&0z-<%!o85d@wY$9h!Sb_`7Gy`}wB zsW+!T$TFKCvi&XQ6cBAPkjhN# z4K$;Mre# z7PW{hWUb^~)@v+0Vu-o&Dqq$b+usZ)Z`*2Z^c|4axYqRKmlXv~TrECKkf3rY11{3N(E~D&`}1 zq0}FYDqrd$%3*T$ct(xGM{e1{ z#xmMgjeC8sDhHwlC~6fA~(HN)|pQ(EX7+d^jAZ z-pjkIk9B=lj)aEjBa@AnG9$=dmm20f{S{lmt-iXu_mTTh=iat;UfxC;=h_}>W(ce_ zmwFBMSr+UwOoDyY1)9WP)uUH8IlZzwC`!YwmHz~cCM&>YOih(w?;#rBMhdCf3*l8O zJn(Y!tgVWjHiqM&m7mL04Ivj9j26dGYELGCN_+4du~n>@G=;LKQx%;I0m(}*0m!_pS(;7YxFduI8CKfm^@fmFPL?9iN;d%ip?4#!j6w7 zH8U+3xVAd#E6r*R#;gUmI*lc0XxYd3$yNpy%F&Y7F~r0-nzh=yCUzu#R$wSwH_O_W zt>@aNh2EWd9FNpEniuq!F|}eM@j5=Vomw%Y?AN%Wt@fMju0?>h@2GM&Ek0}uasY-J zpfRaIipA(bBJHi#A?USwT?12yH5vUjptKZqxDlMS_*S=fr~6TXof`+UP2StRVUx>y z0TZcCb$RzK?H+g={ey6x;}M>dtIWtoQ9DX#3;zdxGa|es+*9K_L%Q(TYCzP{7~Ck# z1ciz0>`RmQmm@Ye!MFjsd%M{2AC8ILG*%>!!%!ES5T3*g;+f3L+-jV>Ofm$zqqNy< zk#;mSWX01)9yiIiwLl(327#ePEmd=6WMmTb^FJyKMXgS6`}W`6`c$!w=ZG=N@qR`* z9zl-@!4Xx+@%(4E{@$Md^Z)wMXZ*d>Rl#2OM?d2Kdq4W@KL6P{I#tJwTc6#3c+~#K zAM;1=>s!{ib5QFYJJ)-C_K!dQf+2P@UeXy8iR~K+(0q;hQ)`GBff$=Jha^<2MbyXt zCW2ua1BVMNuX9xCY(z-M9%v|68Kea)41?xCYy4&0mUbj*kYL(bTnv=?(F#ddlZg2Iw|jTH*}ed}3Q-VEEzoUVj!LQR5FUcBAhu1gK>={2 zV$?8ph=W27ZDGIxEE5wD9`!55fWqVhKchk_goKC{(1(1;!GFHW9z5MYJd|!jdvjVx zX%dFcYpdAI=%+&qximGtif9O|>ac^Y%vd2Fet?LMbI|UTZ&fdxvA|nv*-SooWVaBV zsh%hn2bXx6euW{SL!8v|G!9ZfXi*PzU0O^`K+;kuEVspJck8vTTPUX13F&*^r5s3g zQ5?vOi4U$q130_{4e2bW^o;maswLMG4#}_uj?svtYP+y?$#l>*T44d?c{pjI5My9g zEhrVDgFdPJV~LGGW&(ss@TIU(A_o)bCU{gl7={g1Sz@rYkZ;?S@Q8=7^il|Ht*v9) z5O&GdjZDeD+94eea6L=sx!MqSkb3^;Q9wZU(#XV~*I#|04dSRUXFMvHmg*v`m+cQQ zhmbPiSQV6JTVK5!2+K_bj9&2sOHM%G`~yH;%@bJ3Q}73>QkHU9wic5~p~4;9I55rG zp&6A^C&11u5ogp|mFCwFJx;Q((u0lBl>qMWRu5`LqPIOa8A=y2S7|K#9hTTs- zJ(?Vt3N^jf=%y33)Y^JUqfozk|20Lhx4pORieR_bRsN4m7nNu_mZ7XceuBXRuz*mN zM}tz$zgtS1HjlDB-GBc0_5R}n611Y)!;K&*QoFN)S!|MMx!{K5ImZ1u%SIGCE_5t2 ziicx@bfYzyZt(&17(~Ceb9%!49GX31zYExYaNqc;wJ(AkZ{kl}15!N>n*zUMj$xk02Z! zF(I{*4=HpT6(XPa^RM{K@m@#d+S>ZMcAQoF)*&~C01SC?1$p9-+JEfz`fobufTW*> z%&MQ>F&?Z8y|VA>Cn&FV>2rFOf0x=fl62Wq`trTfMRD^eLX*f**lEV$8a!JSA!J{g z&_sHXr=SEKy-KzupbSyMKj>6We3;~@C?&{v$c$pVi&)}6%MvbKg<|%&Bu~zpi<_0e z=lBc?;Niie{nt-TAtqN&BxRb-4#LA^QVypx%C@6>ABkF|VFe7Ww35nm#y2t7+0WC5 zVJO_$^5byfyq|fuCs!?sQr^N^#>E&03)F_$d3J8e#0~@9oH#ww(KY=z-a zOHIbs1nKSWPA^#0x9_6Kq|CF!KRmnt;%V?Ufod*ipB!nlV`O%a!x|}9I2>)YzPUg8;{zmOzprNGIu_r)(__oV^h0jn>D_avVN-Ae#RMwz^UCgU7~G?>-89!3 z%Z%#3a2oZ$9c1C8CPy!I)N&TiYr?iI*B2FvYLZ@DecT^_A85c2L+eZ~NR(OSrlv`D zkz3_kYx6=w=c@>TXc*MdvGa*zAlL^zN6r3G`?mov2Ez|yg@uh_^3L#7#rtov-H4+* z+dGD%RRtwXy0Vre);{RAiu&Qa>aq&?_l;iEOvJN#jb3-^z3M0U>b-i6vFg`MG~&Q1O}N(y;mX#hDs=6D@V%!rjmC3c?l zrweL(5uI34QL?&a$xs+V?}p?B$aPdh8B-EqjOV*M9ShkSe>Y6^HDcA_f&?}bO!GuQ zMhDPUDE_wU&p#@?JfBgZdhgywwsYrA*8av%Bd8Em8xjGVr(&V;XS|>NuDGHolDXdD zHwqX4&MIOl5C?2h4AjnY`GOA(#Xb$bs|KxlXm|}B-pzQbvVvD(#?YMZGf4gtlVbte zd0dxq%}uRs9+6j}K+#H8fO5o-#`l0Mn?mkZD>3aERAzJsjwbOGwE`V}ysF`|h3jRQ zfJ4RDX}BO9YVOZHDs5W1T%4h8<(!(D6)cn0V9rFGOom>N^pXqH+0i6{kG;CV(bz{# zH;^Gf+}rMes4d0{cL+*TE^oG_;Y1t6tUe!}+OcbElUP!W8{#77qMB>GmkUmh%Hm{I z^GgzdcpW;gT1|)B&7V5 zNNahtY)v5g08K?T>o3EIk-C1bxNxq&OpU6J<2|Hg$qF3pM0f z({R!sE#MQQvXF654?DDJNv_T8V#M7C*i)b=ag1F5f!}B&;SgR2K?=gKPA*HKOW^pm z>`UL<(Ii-7e%4PML=o42Dfx{?(@V*u2-L6yEi&ZqOiZ|0Ldl27*RHY9Z_iczRfLGl zTcSk2nd&+r8rfZwK{$<*ff7f+FmYPtb&>w~VU&pN+tIP$IFYfO5#w`DFI6>QudU*W z?Q^Y3=k7b(&8q-01=5b zFsSt#m~LR*s%Mf&=G5?>(Y8x8i33Z~vF`|K*LY3gWu}jU3h5FUITXfbwx081%rMg> zS)4Akc&{i%qMUFq5M_8FeRg|WVGX0rYj{|<3cVW43XU4XUJ)VJotl-{4`~k>Lq9Py z42R{X(fV4c7gvfjAt8acW+dOcefN$V$#*CQ|60M=*@CM%B*fxMCBiWlk=GsrO`&=& z={VOLG9>ZTSj}%Lhv%z~J>y-=4KgYeW2v#?d$cv7_(#M>itlqBx7l>Lem)<&8D#Ie zNgGyU=xnYC8<}a90BwE!>e*A#vg0BZE~~}v5?Nkm5Hw$PbJ&*h?7=sRo!H`|{BzSza1T=eI%GHAv8M;N zTBc=8?r7!C2nOPm_9w>0i5BXdV$pf<-Tj~qmF6-QsK7@Zhe?w7_2~iJBML}30*Vg0 zhG-MfUxgFU%g_ru^Tle*?!XvjnpbaG>j=)cYa6l&Ousf{oR^3{dwc_7XfMasZO!$U zU}uxI@T|FuuSvNd40OrhbDDu~Vr=@}UD74d{;kKR)zgB-y}j%u^s3eP+r}6s_kMH# z#lt^*)%nfg>qn2C{HHSqvEl|t=qe|FZdMahV{R=7qxcr6C}!~bXqp5r@uc;2fkJmw z2~TGW3trip@Vif@gR88HiTHUh_xtRElbz3$QN?N6-uv_uuG!n}{WLb*{`9D=3j!@@ zviA!$lX?A@82s>|kdjPbvsuM9mBUj^LNpVBv#c#L_+_d8sSBye(BOY*(fXy^*Mgf! z44`LHN_Vl38qF7dGfb^#yPltj(B13ymUNnnM+GC~_Fs)0aC==(HKYsYPHQhH?8HdPj0xvfUVCM zoqC@D3qlS&=l66aA6FYPK$wJ6JTi`ua{MnQ&%?>RXdWTJpKsk?wshz(e+>OL$13As zUAT-@dmx+edZOFRylt)3_N==RU^~`UeKDDSk$K|JZ8K~xo#Po7PX8&TI_h}*k%r0$2FaEh@gMU=cMcfP|)YZ^U0`^?Ug@Zk1<4~ z-%6rPeeTjJr?Scs>!z3L>0rhn&lGXS0HIpQXPU70yMAmIcLjR9q(Fo!g9%oaV^w4|H9=byrkqRPzi@LxNo=! z?wl4S-hzeA8>!vDH^HW2={m|N@6<9YV^sM(o?DW^YoQ1W`>5wJm$Ps;i!L?Mz`FJ9 zYo|~w-{ohf{9#e1=9H7fhZ$%>8h2Y^3E4O}`&zi&R27^a^$how)X*5ha&=%ro-&cT@LI@m;R6ta$;6;K&FKh zN+#G$S(qKLs|R+wdx@pr$D1|Ex3y6bY&onepdS>1gWV{{GB_xm?x8l8lx+ zR%G`%1fl z?Q}B9m@KMHQ_YG@m*teQdj%>@vLHdmTUn|i3Ee_CC39J#X?0Invs%QDtl0&SDkl!d z_3_NF#iduCh1$2YcRQPtP&U&zo{C%5M$n4)P8G^;d+BACaIY%ZtbSV zbqcA9b>0&NEr@`=$-3L}U3z=l$rAO^nK%%xeY~QdiLc zX=u|E5QvQyjFr?uGS1Wpojv?4f$!J35-LX1L@8w>r30hx@*?xi06vWocwJ$vncP4k zQZX(ui;;N}%F_|nUa+`yf2MCQmir9nOGW}AAeXS(h)O9FV#md0XD}n0Yb_9p+t54r zh@t#20aVXBE$6T#g!~+D>}AKJx0N52lkq+&1n3AMN@s966c&?N2r+gjYqu_DFgC5f zA;Pf=!cigsO$9ef+KZ!s7oq$R{Z%M0T8t45HkHW5Yykb$ktWpzHrTF~G_uo)A$V42 zRdLVq3)%KoFKa*4yOL97!KVU3dV~w;v}99-mY=cUp4$?p`Z(MU7ca&q#QbhP^&G3; z?`7X`oi}1Bg%p=)L8M|ch8?-uakTH=`M3h>UGZ7M&z>ZC<-}8F5WTJBUY}v)An+$ z6LT7YD$7r*S#!y8H;ufb3U3QRT>PtSg`d<7gk`L(q$2D_E{XQ#$d>Y(bt+;rfTp!u zdteAkFK$?Ty_Z2OToh^*bQW~j`=?v8PyVD$U|VeO{iAlJN^#rNo_0d?7Skt2OakAf zb=0v{LDu=&ARFW&b$BGy?RNW)LR?prBaO7B==*lNcXV{zE=Bi~<8>|3s0THn>Jx9Z z9ul#~`1D{oQaXB*sf_p6%1fKfNVdK4y|5eWKBB{=wmRYN?fU%@H?yXf{_8#Q$?hFX zDJB=W%8i@-fm`B5^HEte;~sS%tFa17Lq3Lm>hEhccd7plb<)a)gd@g+J8>x;d=kP^ z6g3z%Te`|R#D%QMJ$5OV0TQ@BDHCApudrTXx6C$kaA<+oDy|w6@zr?&HvuE;eUU;Lb_BRu zS~QJF4hc5D>%m{PPM`uDYP%p1VlClX?sf1o&`0|Z4${&>zFTzz@lC-XRB)*NpZYq1 zyz!RXOyJVqk=fvdvt|~-gp>Mk(p~?u`L4MXk@Wlx;6(+_dJ9?F8asxRWp|fiqV%#H= zWe^GW;T2Mxx>BTeXx73uCYeM3Yd4;(aan%@n#Aj-zg{Byx+G<}u2qVUDrCm5= zQ+<)rU3z0p_9PhiLga^B(gu!oB?Fm{<8Z0L+Ggvxb`yX-@mQ07`q6p)G7(|l8?YT+? zY6|wEVp$}}5qlY1XodQT$Yy=|MwWdIWT_NTD{8GjJb3!#8P)OHt9@pJ!zrQqCkQ}v z{45Jh$fi^bACpX>836 zrmCCIj_neA9XN1z8cOjhg_Y|;TSWYc)d5$)-H^cLK(PmfsO2>9kqj%~7J&pLF`MD2 zhWQ{hZbZ7tVy~zEVMq_yCaUcRQR4O^G%wSqYOH=jWWWIdqutnLz*kuG;SuU_!*`l| zM;*DVF%u0yB4WIZI(YN!S_WRKChhP+j~Jt0*X7`pN!uBi$&^ss(kGiRFhx)XEFauq^rpvYiZi5gP2z2aKYlJ*$HJDox-f0t*vtB42ROb|_gH5wWi>39N9{ksCJ40>=;BlO6(Lv^WC%q5ah)f%G2`C%R6Q9t~^ z;lw|AB=J2xH8uU@`GcpgA0BkW_f#xJ)TWkvKfMlD< zaqI+nxc}{e&wOBJe;|rLmg;Vk1A3;ch}Hn4;4LBH7W{zy%rz7;ApQ7Ww1!2%V-7Dr zr}WA%(y}~K$&Jfa#T=_$bV zo*Y9CaeNE4N{zWxjC$YcR@&SE>pbY@w911#xXB?{-TJGG&B8(1;L})+3|&>(s4{v* zSBa0A2Qm++-x6ow|(u$?XZzL+#_5fRNI%)a6WeRC~Y3p$sfUf}9 z?IyN$Yy$FVvBg;upSRKirdwbN6~W_40ohA#4K6mx<*< zCEt$JQN`+H-+FC!-JKS{3}=7=Bs^A~nBVx~8gL?z=$ctmIlA>3No9Vi%gb*MUOsvB zhYExKxA9D6l0|hfaC`gg1aVZ_MQ+5}J&pT>&eV`zROAfWI~2C}S=-CLmJ2pjk;K6&&{l&;+QU--*Z}#2uhn&AVlM&I0YZTX%*Pv1 z42La+32LJz(@F?OD%etwSu0+XcAtW0ip7CtSuED6r5#j=G}9xADNAvr^QVa@lY_qgj^We-gSNDT{ce8osu zr1Bz33w0PcUKHe!E=+&X1MtC`jj;2`Z*2+kM=R$Fm>k+iC6l)BjhhVM(>%#Vb_Elv zF#UQW?JQI@$tXj-QjlObX1cIMZV^}ol9X5**;tK*j_vVgjerF0eDIwppgtsbabmC1 zgh;Z7N&7cm*AC+S1+HI>^%Z2WFuWNO5&*O?lh>e1^2b|Soa6MB!Uy|@7{o80KI|MG z?7w{QwX?EGG-^(Xb9&LdSefri*xHf_$nkzdi=wyOp`l~MA?#$$weN!w=pYghNWgUS z@!V#Ad9eTL$&2TmuV1`yGb_ptrmlic749kzFjl5nIRS=l2;=(BBqfq7WT6Hxn{#Uw zr5fFXs){&Rs(|(do)x5IlF+R_$VW8gW7qE!Pq~G%RSQJKhF;jUcO2`t@8=7 zJo5)3CyRk2f&~Mc-5l%Y&bX%Ji4DUwVs1KCU=mkKxrB&H(*j-p-N7HS=ljpNbD(wj z&B23>t;|B|YOaO|9&KKIHyjG8_=LrVn1_A&l@oYV*}q;5r|aMe*)U+d&Oi-d0_=F8 zK%&1oY^5-!11GGvMVeoj12A(f+Bpk z!ZJXz1eF02_4|#~R)wSa0_`0CzZi>kR+g)O$@gFQP6wqO-_JK<1n6w)IIh3@Th*A$ zh^$|;Y}W>sU*71#x;d5X3AaV+qQk(kgacFAh}vl6Ej>1CKr5?tk)WE0J%Rug%tKAW8-)Ov1fhuZK zsBT8O%rmBK1%=v@PA!YxE)9&iQBQ8TX(A7*5+Y`jh?pc9lHX%yDJ{{B1Vqs@4koyQ z&jvoTQmTlvUy|bV+!#AhS{%7Dibyx;Q#zS>{>I)Eix5){F!qUgEtb7Wn>qHwepshP zxDWu6enx44MKZ};XsbcFA+F#{tibQct&ln(mc!;<*8m}za~_G~&6j>+I+dUiRbg78 z#5$@T%sJr>v;$kep9{`q3^RxL_AIER2ltOxBtwKAAQ7Ca^g5he_AMPG!(qou{@ zZW=X7Ykj77-=w_E24b&D35|z;whM$^i$>-)T08vR!BeBW23@nznh?+;&7+M{O8@0s zNjOy(T5v#wlSr^Q9c1B_L*z;PUiTSiY2})c(<8qmfRH*Ev(98(S#oZ`T_5b^o0m_% z-G9~O3M0G3fgwgL*0Z_;&o_#i<*BF`M_)xZ0#PK|9&fUKH&PX&BjjzzRqMzs#@CrkxFSPBH82Qjg^tySUVes zwEwOwnAODfE1Vh&t*&L@OT&Cm#m=X21E*~}ZqY37Dh=#_r{W488f1@OzIgpjurWgj zOCE>$yssdfGzeU&;L-s!Ual zqu|@kU{4h5p3`e2mdCBLp47b z=ype^16|cnDryWjjdktBPg_UJtfJAgCZTTNzaIV?5lc3lAVju9t!U*6^0I@F7V4)@ z(Hk~Z_80ouK|*Q<6Jm5m#Mpy7o*sk>B#d8WrKBTbp;aJW=@ryEgU3GY?XA77T`F^} zoR5#c?A}#9l03XhO2p2!V{O2Y<5TghRDDEJEu~IIwBy_|#%(>nq%1~)Bip-WT##NPa zyvo${x}7bowN^0i?Fr_TnC)fvV;Qloqay}GwbENDJxmy}nOk8z);TXsa&D6blE}Ct8gzb=<(A4;bI974wf2ss(NLXU{dGNrDD|;s}cySGx$4u_wMd)Sep?{ zZzp>iLJ3OVqA1zakgT~DAJ(yUUk&p z?s8G*N1%Rr4Bz4|wz!>vi93|IS=yDYwswk5rbo5A*SbU4tgYo4B6*`Etqh^TE$QQD zHB?IEFAq{LO}=f%p_5$!DVi-NYwUVia_zv1G5GSp!NLqi1r{)wp~mf4&9^)q#aZZh zz4Fd&?jUyMvwP2p+O>c84X7)14&mS}0?bj*=|0&md)3Q&c^lp!a9)_@g)=cNLx}QGgy1if2y8O>i zfBVl|O2eC6^gYpy-?uxre)Qx2(5pROjN4rYQX-sc=f)Ap!L2^Xpw2GL#=uUxsx z+sQ&*%_a9Qo^@h<%V{S@gK$$g%NftSRL4);$?B-ippKNL@u}JX&q-THVqF+F@||S! zc!1jmDBk5d!ZR<-D0Lq&c)?C> zGPYT!1kY3-;^lDy-@gldQO;pUkv%Z(4x@S~zOFu7L6R$$X(vGSUwb7S#fxt$UHSOw zi~IXeYaa7;zd}-gZPXnzAILQjcjNvBGT8Zh(dKsVvs<4&Fp}H*2fJ&2FXNPgpZmqm vTP5>ltwj*|z(yy{#YPt*TB3<>!kaZYa0f3, from which MMM Mode was adapted. + + +File: mmm.info, Node: Basic Concepts, Next: Installation, Prev: Overview, Up: Overview + +1.1 Basic Concepts +================== + +The way MMM Mode works is as follows. Each buffer has a "dominant" or +"default" major mode, which is chosen as major modes normally are: the +user can set it interactively, or it can be chosen automatically with +'auto-mode-alist' (*note (emacs)Choosing Modes::). Within the file, MMM +Mode creates "submode regions" within which other major modes are in +effect. While the point is in a submode region, the following changes +occur: + + 1. The local keymap is that of the submode. This means the key + bindings for the submode are available, while those of the dominant + mode are not. + 2. The mode line (*note (emacs)Mode Line::) changes to show which + submode region is active. This can be configured; see *note Mode + Line::. + 3. The major mode menu, both on the menu bar and the mouse popup, are + that of the submode. + 4. Some local variables of the submode shadow those of the default + mode (*note Local Variables::). For the user, this serves to help + make Emacs behave as if the submode were the major mode. + 5. The syntax table and indentation are those of the submode. + 6. Font-lock (*note (emacs)Font Lock::) fontifies correctly for the + submode. + 7. The submode regions are highlighted by a background color; see + *note Region Coloring::. + + The submode regions are represented internally by Emacs Lisp objects +known as "overlays". Some of the above are implemented by overlay +properties, and others are updated by an MMM Mode function in +'post-command-hook'. You don't need to know this to use MMM Mode, but +it may make any error messages you come across more understandable. +*Note (elisp)Overlays::, for more information on overlays. + + Because overlays are not saved with a file, every time a file is +opened, they must be created. Creating submode regions is occasionally +referred to as "mmm-ification". (I've never had occasion to pronounce +this, but if I did I would probably say 'mummification'. Like what they +did in ancient Egypt.) You can mmm-ify a buffer interactively, but most +often MMM Mode will find and create submode regions automatically based +on a buffer's file extension, dominant mode, or local variables. + + +File: mmm.info, Node: Installation, Next: Quick Start, Prev: Basic Concepts, Up: Overview + +1.2 Installing MMM Mode +======================= + +MMM Mode has a standard installation process. See the file INSTALL for +generic information on this process. To summarize, unpack the archive, +'cd' to the created MMM Mode directory, type './configure', then 'make', +then 'make install'. If all goes correctly, this will compile the MMM +Mode elisp files, install them in your local site-lisp directory, and +install the MMM Mode info file 'mmm.info' in your local info directory. + + Now you need to configure your Emacs initialization file (usually +'~/.emacs') to use MMM Mode. First, Emacs has to know where to find MMM +Mode. In other words, the MMM Mode directory has to be in 'load-path'. +This can be done in the parent directory's 'subdirs.el' file, or in the +init file with a line such as: + + (add-to-list 'load-path "/path/to/site-lisp/mmm/") + + Once 'load-path' is configured, MMM Mode must be loaded. You can +load all of MMM Mode with the line + + (require 'mmm-mode) + +but if you use MMM Mode only rarely, it may not be desirable to load all +of it at the beginning of every editing session. You can load just +enough of MMM Mode so it will turn itself on when necessary and load the +rest of itself, by using instead the line + + (require 'mmm-auto) + +in your initialization file. + + One more thing you may want to do right now is to set the variable +'mmm-global-mode'. If this variable is 'nil' (the default), MMM Mode +will never turn itself on. If it is 't', MMM Mode will turn itself on +in every buffer. Probably the most useful value for it, however, is the +symbol 'maybe' (actually, anything that is not 'nil' and not 't'), which +causes MMM Mode to turn itself on in precisely those buffers where it +would be useful. You can do this with a line such as: + + (setq mmm-global-mode 'maybe) + +in your initialization file. *Note Global Mode::, for more detailed +information. + + +File: mmm.info, Node: Quick Start, Prev: Installation, Up: Overview + +1.3 Getting Started Quickly +=========================== + +Perhaps the simplest way to create submode regions is to do it +interactively by specifying a region. First you must turn MMM Mode +on--say, with 'M-x mmm-mode'--then place point and mark around the area +you want to make into a submode region, type 'C-c % C-r', and enter the +desired major mode. *Note Interactive::, for more details. + + A better way to add submode regions is by using submode classes, +which store a lot of useful information for MMM Mode about how to add +and manipulate the regions created. *Note Submode Classes::, for more +details. There are several sample submode classes that come with MMM +Mode, which are documented later in this manual. Look through these and +determine if one of them fits your needs. If so, I suggest reading the +comments on that mode. Then come back here to find out to use it. + + To apply a submode class to a buffer interactively, turn MMM Mode on +as above, then type 'C-c % C-c' and enter the name of the class. +Submode regions should be added automatically, if there are any regions +in the buffer appropriate to the submode class. + + If you want a given file to always use a given submode class, you can +express this in a file variable: add a line containing the string '-*- +mmm-classes: CLASS -*-' at the top of the file. *Note (emacs)File +Variables::, for more information and other methods. Now whenever MMM +Mode is turned on in that file, it will be mmm-ified according to CLASS. +If 'mmm-global-mode' is non-nil, then MMM Mode will turn itself on +whenever a file with a 'mmm-classes' local variable is opened. *Note +Global Mode::, for more information. + + If you want a submode class to apply to _all_ files in a certain +major mode or with a certain extension, add a line such as this to your +initialization file: + + (mmm-add-mode-ext-class MODE EXTENSION CLASS) + +After this call, any file opened whose name matches the regular +expression EXTENSION _and_ whose default mode is MODE will be +automatically mmm-ified according to CLASS (assuming 'mmm-global-mode' +is non-nil). If one of EXTENSION or MODE is 'nil', a file need only +satisfy the other one to be mmm-ified. + + You can now read the rest of this manual to learn more about how MMM +Mode works and how to configure it to your preferences. If none of the +supplied submode classes fit your needs, then you can try to write your +own. *Note Writing Classes::, for more information. + + +File: mmm.info, Node: Basics, Next: Customizing, Prev: Overview, Up: Top + +2 MMM Mode Basics +***************** + +This chapter explains the most important parts of how to use MMM Mode. + +* Menu: + +* MMM Minor Mode:: The Emacs minor mode that manages it all. +* Submode Classes:: What they are and how to use them. +* Selecting Classes:: How MMM Mode knows what classes to use. +* Insertion:: Inserting new submode regions automatically. +* Re-parsing:: Re-scanning for submode regions. +* Interactive:: Adding submode regions manually. +* Global Mode:: Turning MMM Mode on automatically. + + +File: mmm.info, Node: MMM Minor Mode, Next: Submode Classes, Prev: Basics, Up: Basics + +2.1 The MMM Minor Mode +====================== + +An Emacs minor mode is an optional feature which can be turned on or off +in a given buffer, independently of the major mode. *Note (emacs)Minor +Modes::. MMM Mode is implemented as a minor mode which manages the +submode regions. This minor mode must be turned on in a buffer for +submode regions to be effective. When activated, the MMM Minor mode is +denoted by 'MMM' in the mode line (*note Mode Line::). + +* Menu: + +* Enabling MMM Mode:: Turning MMM Mode on and off. +* MMM Mode Keys:: Default key bindings in MMM Mode. + + +File: mmm.info, Node: Enabling MMM Mode, Next: MMM Mode Keys, Prev: MMM Minor Mode, Up: MMM Minor Mode + +2.1.1 Enabling MMM Mode +----------------------- + +If 'mmm-global-mode' is non-'nil' (*note Global Mode::), then the MMM +minor mode will be turned on automatically whenever a file with +associated submode classes is opened (*note Selecting Classes::). It is +also turned on by interactive mmm-ification (*note Interactive::), +although the interactive commands do not have key bindings when it is +not on and must be invoked via 'M-x'. You can also turn it on (or off) +manually with 'M-x mmm-mode', in which case it applies all submode +classes associated with the buffer. Turning MMM Mode off automatically +removes all submode regions from the buffer. + + -- Command: mmm-mode ARG + Toggle the state of MMM Mode in the current buffer. If ARG is + supplied, turn MMM Mode on if and only if ARG is positive. + + -- Function: mmm-mode-on + Turn MMM Mode on unconditionally in the current buffer. + + -- Function: mmm-mode-off + Turn MMM Mode off unconditionally in the current buffer. + + -- Variable: mmm-mode + This variable represents whether MMM Mode is on in the current + buffer. Do not set this variable directly; use one of the above + functions. + + +File: mmm.info, Node: MMM Mode Keys, Prev: Enabling MMM Mode, Up: MMM Minor Mode + +2.1.2 Key Bindings in MMM Mode +------------------------------ + +When MMM Mode is on, it defines a number of key bindings. By default, +these are bound after the prefix sequence 'C-c %'. Minor mode keymaps +are supposed to use 'C-c PUNCTUATION' sequences, and I find this one to +be a good mnemonic because '%' is used by Mason to denote special tags. +This prefix key can be customized; *note Key Bindings::. + + There are two types of key bindings in MMM Mode: "commands" and +"insertions". Command bindings run MMM Mode interactive functions to do +things like re-parse the buffer or end the current submode region, and +are defined statically as normal Emacs key-bindings. Insertion bindings +insert submode region skeletons with delimiters into the buffer, and are +defined dynamically, according to which submode classes (*note Submode +Classes::) are in effect, via a keymap default binding. + + To distinguish between the two, MMM Mode uses distinct modifier keys +for each. By default, command bindings use the control key (e.g. 'C-c +% C-b' re-parses the buffer), and insertion bindings do not (e.g. 'C-c +% p', when the Mason class is in effect, inserts a '<%perl>...' +region). This makes the command bindings different from in previous +versions, however, so the variable 'mmm-use-old-bindings' is provided. +If this variable is set to 't' before MMM Mode is loaded, the bindings +will be reversed: insertion bindings will use the control key and +command bindings will not. + + Normally, Emacs gives help on a prefix command if you type 'C-h' +after that command (e.g. 'C-x C-h' displays all key bindings starting +with 'C-x'). Because of how insertion bindings are implemented +dynamically with a default binding, they do not show up when you hit +'C-c % C-h'. For this reason, MMM Mode defines the command 'C-c % h' +which displays a list of all currently valid insertion key sequences. +If you use the defaults for command and insertion bindings, the 'C-h' +and 'h' should be mnemonic. + + In the rest of this manual, I will assume you are using the defaults +for the mode prefix ('C-c %') and the command and insertion modifiers. +You can customize them, however; *note Key Bindings::. + + +File: mmm.info, Node: Submode Classes, Next: Selecting Classes, Prev: MMM Minor Mode, Up: Basics + +2.2 Understanding Submode Classes +================================= + +A submode class represents a "type" of submode region. It specifies how +to find the regions, what their delimiters look like, what submode they +should be, how to insert them, and how they behave in other ways. It is +represented by a symbol, such as 'mason' or 'eval-elisp'. + + For example, in the Mason set of classes, there is one class +representing all '<%...%>' inline Perl regions, and one representing +regions such as '<%perl>...', '<%init>...', and so on. +These are different to Mason, but to Emacs they are all just Perl +sections, so they are covered by the same submode class. + + But it would be tedious if whenever we wanted to use the Mason +classes, we had to specify both of these. (Actually, this is a +simplification: there are some half a dozen Mason submode classes.) So +submode classes can also "group" others together, and we can refer to +the 'mason' class and mean all of them. + + The way a submode class is used is to "apply" it to a buffer. This +scans the buffer for regions which should be submode regions according +to that class, and also remembers the class for later, so that new +submode regions can be inserted and scanned for later. + + +File: mmm.info, Node: Selecting Classes, Next: Insertion, Prev: Submode Classes, Up: Basics + +2.3 How MMM Mode selects submode classes +======================================== + +Submode classes that apply to a buffer come from three sources: +mode/extension-associated classes, file-local classes, and interactive +MMM-ification (*note Interactive::). Whenever MMM Mode is turned on in +a buffer (*note MMM Minor Mode::, and *note Global Mode::), it inspects +the value of two variables to determine which classes to automatically +apply to the buffer. This covers the first two sources; the latter is +covered in a later chapter. + +* Menu: + +* File Classes:: Classes for a single file. +* Mode-Ext Classes:: Classes for a given mode or extension. +* Global Classes:: Classes for all MMM Mode buffers. + + +File: mmm.info, Node: File Classes, Next: Mode-Ext Classes, Prev: Selecting Classes, Up: Selecting Classes + +2.3.1 File-Local Submode Classes +-------------------------------- + + -- Variable: mmm-classes + This variable is always buffer-local when set. Its value should be + either a single symbol or a list of symbols. Each symbol + represents a submode class that is applied to the buffer. + + 'mmm-classes' is usually set in a file local variables list. *Note +(emacs)File Variables::. The easiest way to do this is for the first +line of the file to contain the string '-*- mmm-classes: CLASSES -*-', +where CLASSES is the desired value of 'mmm-classes' for the file in +question. It can also be done with a local variables list at the end of +the file. + + +File: mmm.info, Node: Mode-Ext Classes, Next: Global Classes, Prev: File Classes, Up: Selecting Classes + +2.3.2 Submode Classes Associated with Modes and Extensions +---------------------------------------------------------- + + -- User Option: mmm-mode-ext-classes-alist + This global variable associates certain submode classes with major + modes and/or file extensions. Its value is a list of elements of + the form '(MODE EXT CLASS)'. Any buffer whose major mode is MODE + (a symbol) _and_ whose file name matches EXT (a regular expression) + will automatically have the submode class CLASS applied to it. + + If MODE is 'nil', then only EXT is considered to determine if a + buffer fits the criteria, and vice versa. Thus if both MODE and + EXT are nil, then CLASS is applied to _all_ buffers in which MMM + Mode is on. Note that EXT can be any regular expression, although + its name indicates that it most often refers to the file extension. + + If CLASS is the symbol 't', then no submode class is actually + applied for this association. However, if 'mmm-global-mode' is + non-'nil' and non-'t', MMM Mode will be turned on in matching + buffers even if there are no actual submode classes being applied. + *Note Global Mode::. + + -- Function: mmm-add-mode-ext-class MODE EXT CLASS + This function adds an element to 'mmm-mode-ext-classes-alist', + associating the submode class CLASS with the major mode MODE and + extension EXT. + + Older versions of MMM Mode required this function to be used to + control the value of 'mmm-mode-ext-classes-alist', rather than + setting it directly. In this version it is provided purely for + convenience and backward compatibility. + + +File: mmm.info, Node: Global Classes, Prev: Mode-Ext Classes, Up: Selecting Classes + +2.3.3 Globally Applied Classes and the Universal Class +------------------------------------------------------ + +In addition to file-local and mode-ext-associated submode classes, MMM +Mode also allows you to specify that certain submode classes apply to +_all_ buffers in which MMM Mode is enabled. + + -- User Option: mmm-global-classes + This variable's value should be a list of submode classes that + apply to all buffers with MMM Mode on. It can be overriden in a + file local variables list, such as to disable global class for a + specific file. Its default value is '(universal)'. + + The default global class is the "universal class", which is defined +in the file 'mmm-univ.el' (loaded automatically), and allows the author +of text to specify that a certain section of it be in a specific major +mode. Thus, for example, when writing an email message that includes +sample code, the author can allow readers of the message (who use emacs +and MMM) to view the code in the appropriate major mode. The syntax +used is '{%MODE%} ... {%/MODE%}', where MODE should be the name of the +major mode, with or without the customary '-mode' suffix: for example, +both 'cperl' and 'cperl-mode' are acceptable. + + The universal class also defines an insertion key, '/', which prompts +for the submode to use. *Note Insertion::. The universal class is most +useful when 'mmm-global-mode' is set to 't'; *note Global Mode::. + + +File: mmm.info, Node: Insertion, Next: Re-parsing, Prev: Selecting Classes, Up: Basics + +2.4 Inserting new submode regions +================================= + +So much for noticing submode regions already present when you open a +file. When editing a file with MMM Mode on, you will often want to add +a new submode region. MMM Mode provides several facilities to help you. +The simplest is to just hit a few keys and have the region and its +delimiters inserted for you. + + Each submode class can define an association of keystrokes with +"skeletons" to insert a submode region. If there are several submode +classes enabled in a buffer, it is conceivable that the keys they use +for insertion might conflict, but unlikely as most buffers will not use +more than one or two submode classes groups. + + As an example of how insertion works, consider the Mason classes. In +a buffer with MMM Mode enabled and Mason associated, the key sequence +'C-c % p' inserts the following perl section (the semicolon is to +prevent CPerl Mode from getting confused--*note Mason::): + + <%perl>-<-; + -!- + ->- + + In this schematic representation, the string '-!-' represents the +position of point (the cursor), '-<-' represents the beginning of the +submode region, and '->-' its end. + + All insertion keys come after the MMM Mode prefix keys (by default +'C-c %'; *note Key Bindings::) and are by default single characters such +as 'p', '%', and 'i'. To avoid confusion, all the MMM Mode commands are +bound by default to control characters (after the same prefix keys), +such as 'C-b', 'C-%' and 'C-r'. This is a change from earlier versions +of MMM Mode, and can be customized; see *note Key Bindings::. + + To find out what insertion keys are available, consult the +documentation for the submode class you are using. If it is one of the +classes supplied with MMM Mode, you can find it in this Info file. + + Because insertion keys are implemented with a "default binding" for +flexibility, they do not show up in the output of 'C-h m' and cannot be +found with 'C-h k'. For this reason, MMM Mode supplies the command 'C-c +% h' ('mmm-insertion-help' to view the available insertion keys. + + +File: mmm.info, Node: Re-parsing, Next: Interactive, Prev: Insertion, Up: Basics + +2.5 Re-Parsing Submode Regions +============================== + +Describe 'mmm-parse-buffer', 'mmm-parse-region', 'mmm-parse-block', and +'mmm-clear-current-region'. + + +File: mmm.info, Node: Interactive, Next: Global Mode, Prev: Re-parsing, Up: Basics + +2.6 Interactive MMM-ification Functions +======================================= + +There are several commands you can use to create submode regions +interactively, rather than by applying a submode class to a buffer. +These commands (in particular, 'mmm-ify-region'), can be useful when +editing a file or email message containing a snippet of code in some +other language. Also see *note Global Classes::, for an alternate +approach to the same problem. + +'C-c % C-r' + Creates a submode region between point and mark. Prompts for the + submode to use, which must be a valid Emacs major mode name, such + as 'emacs-lisp-mode' or 'cperl-mode'. Adds markers to the + interactive history. ('mmm-ify-region') + +'C-c % C-c' + Applies an already-defined submode class to the buffer, which it + prompts for. Adds this class to the interactive history. + ('mmm-ify-by-class') + +'C-c % C-x' + Scans the buffer for submode regions (prompts for the submode) + using front and back regular expressions that it also prompts for. + Briefly, it starts at the beginning of the buffer and searches for + the front regexp. If it finds a match, it searches for the back + regexp. If it finds a match for that as well, it makes a submode + region between the two matches and continues searching until no + more matches are found. Adds the regexps to the interactive + history. ('mmm-ify-by-regexp') + + These commands are also useful when designing a new submode class +(*note Submode Classes::). Working with the regexps interactively can +make it easier to debug and tune the class before starting to use it on +automatic. All these commands also add to value of the following +variable. + + -- Variable: mmm-interactive-history + Stores a history of all interactive mmm-ification that has been + performed in the current buffer. This way, for example, the + re-parsing functions (*note Re-parsing::) will respect + interactively added regions, and the insertion keys for classes + that were added interactively are available. + + If for any reason you want to "wipe the slate clean", this command +should help you. By default, it has no key binding, so you must invoke +it with 'M-x mmm-clear-history '. + + -- Command: mmm-clear-history + Clears all history of interactive mmm-ification in the current + buffer. This command does not affect existing submode regions; to + remove them, you may want to re-parse the buffer with 'C-c % C-b' + ('mmm-parse-buffer'). + + +File: mmm.info, Node: Global Mode, Prev: Interactive, Up: Basics + +2.7 MMM Global Mode +=================== + +When a file has associated submode classes (*note Selecting Classes::), +you may want MMM Mode to turn itself on and parse that file for submode +regions automatically whenever it is opened in an Emacs buffer. The +value of the following variable controls when MMM Mode turns itself on +automatically. + + -- User Option: mmm-global-mode + Do not be misled by the fact that this variable's name ends in + '-mode': it is not a simple on/off switch. There are three + possible (meanings of) values for it: 't', 'nil', and anything + else. + + When this variable is 'nil', MMM Mode is never enabled + automatically. If it is enabled manually, such as by typing 'M-x + mmm-mode', any submode classes associated with the buffer will + still be used, however. + + When this variable is 't', MMM Mode is enabled automatically in + _all_ buffers, including those not visiting files, except those + whose major mode is an element of 'mmm-never-modes'. The default + value of this variable contains modes such as 'help-mode' and + 'dired-mode' in which most users would never want MMM Mode, and in + which MMM might cause problems. + + When this variable is neither 'nil' nor 't', MMM Mode is enabled + automatically in all buffers that would have associated submode + classes; i.e. only if there would be something for it to do. The + value of 'mmm-never-modes' is still respected, however. Note that + this can include buffers not visiting files, if that buffer's major + mode is present in 'mmm-mode-ext-classes-alist' with a 'nil' value + for EXT (*note Mode-Ext Classes::). Submode class values of 't' in + 'mmm-mode-ext-classes-alist' cause MMM Mode to be enabled in + matching buffers, but supply no submode classes to be applied. + +* Menu: + +* Major Mode Hook:: Using MMM's Major Mode Hook + + +File: mmm.info, Node: Major Mode Hook, Prev: Global Mode, Up: Global Mode + +2.7.1 The Major Mode Hook +------------------------- + +This section is intended for users who understand Emacs Lisp and want to +know how MMM Global Mode is implemented, and perhaps use the same +technique. In fact, MMM Mode exports a hook variable that you can use +easily, without understanding any of the details--see below. + + In order to enable itself in _all_ buffers, however, MMM Mode has to +hook itself into all major modes. Global Font Lock Mode from the +standard Emacs distribution (*note (emacs)Font Lock::) has a similar +problem, and solves it by adding a function to 'change-major-mode-hook', +which is run by 'kill-all-local-variables', which is run in turn by all +major mode functions at the _beginning_. This function stores a list of +which buffers need fontification. It then adds a different function to +'post-command-hook', which checks if the current buffer needs +fontification, and if so performs it. MMM Global Mode uses the same +technique. + + In the interests of generality, and for your use, the function that +MMM Mode runs in 'post-command-hook' ('mmm-run-major-mode-hook') is not +specific to MMM Mode, but rather runs the hook variable +'mmm-major-mode-hook', which by default contains a function +('mmm-mode-on-maybe') which possibly turns MMM Mode on, depending on the +value of 'mmm-global-mode'. Thus, to run another function in all major +modes, all you need to do is add it to this hook. For example, the +following line in an initialization file will turn on Auto Fill Mode +(*note (emacs)Auto Fill::) in all buffers: + + (add-hook 'mmm-major-mode-hook 'turn-on-auto-fill) + + +File: mmm.info, Node: Customizing, Next: Supplied Classes, Prev: Basics, Up: Top + +3 Customizing MMM Mode +********************** + +This chapter explains how to customize the appearance and functioning of +MMM Mode however you want. + +* Menu: + +* Region Coloring:: Changing or removing background colors. +* Preferred Modes:: Choosing which major modes to use. +* Mode Line:: What is displayed in the mode line. +* Key Bindings:: Customizing the MMM Mode key bindings. +* Local Variables:: What local variables are saved for submodes. +* Changing Classes:: Changing the supplied submode classes. +* Hooks:: How to make MMM Mode run your code. + + +File: mmm.info, Node: Region Coloring, Next: Preferred Modes, Prev: Customizing, Up: Customizing + +3.1 Customizing Region Coloring +=============================== + +By default, MMM Mode highlights all submode regions with a background +color. There are three levels of this decoration, controlled by the +following variable: + + -- User Option: mmm-submode-decoration-level + This variable controls the level of coloring of submode regions. + It should be one of the integers 0, 1, or 2, representing + (respectively) none, low, and high coloring. + + No coloring means exactly that. Submode regions have the same +background as the rest of the text. This produces the minimal +interference with font-lock coloration. In particular, if you want to +use background colors for font-lock, this may be a good idea, because +the submode highlight, if present, overrides any font-lock background +coloring. + + Low coloring uses the same background color for all submode regions. +This color is specified with the face 'mmm-default-submode-face' (*note +(emacs)Faces::) which can be customized, either through the Emacs +"customize" interface or using direct Lisp commands such as +'set-face-background'. Of course, other aspects of the face can also be +set, such as the foreground color, bold, underline, etc. These are more +likely to conflict with font-lock, however, so only a background color +is recommended. + + High coloring uses multiple background colors, depending on the +function of the submode region. The recognized functions and their +meanings are as follows: + +'init' + Code that is executed at the beginning of (something), as + initialization of some sort. + +'cleanup' + Code that is executed at the end of (something), as some sort of + clean up facility. + +'declaration' + Code that provides declarations of some sort, perhaps global or + local arguments, variables, or methods. + +'comment' + Text that is not executed as code, but instead serves to document + the code around it. Submode regions of this function often use a + mode such as Text Mode rather than a programming language mode. + +'output' + An expression that is evaluated and its value interpolated into the + output produced. + +'code' + Executed code not falling under any other category. + +'special' + Submode regions not falling under any other category, such as + component calls. + + The different background colors are provided by the faces +'mmm-FUNCTION-submode-face', which can be customized in the same way as +'mmm-default-submode-face'. + + +File: mmm.info, Node: Preferred Modes, Next: Mode Line, Prev: Region Coloring, Up: Customizing + +3.2 Preferred Major Modes +========================= + +Certain of the supplied submode classes know only the language that +certain sections are written in, but not what major mode you prefer to +use to edit such code. For example, many people prefer CPerl mode over +Perl mode; you may have a special mode for Javascript or just use C++ +mode. This variable allows you to tell submodes such as Mason (*note +Mason::) and Embedded Javascript (*note Javascript::) what major mode to +use for the submodes: + + -- User Option: mmm-major-mode-preferences + The elements of this list are cons cells of the form '(LANGUAGE . + MODE)'. LANGUAGE should be a symbol such as 'perl', 'html-js', or + 'java', while MODE should be the name of a major mode such as + 'perl-mode', 'cperl-mode', 'javascript-mode', or 'c++-mode'. + + You probably won't have to set this variable at all; MMM tries to + make intelligent guesses about what modes you prefer. For example, + if a function called 'javascript-mode' exists, it is chosen, + otherwise 'c++-mode' is used. Similarly for 'jde-mode' and + 'java-mode'. + + If you do need to change the defaults, you may find the following +function convenient. + + -- Function: mmm-set-major-mode-preferences LANGUAGE MODE &optional + DEFAULT + Set the preferred major mode for LANGUAGE to MODE. If there is + already a mode specified for LANGUAGE, and DEFAULT is nil or + unsupplied, then it is changed. If DEFAULT is non-nil, then any + existing mode is unchanged. This is used by packages to ensure + that some mode is present, but not override any user-specified + mode. If you are not writing a submode class, you should ignore + the third argument. + + Thus, for example, to use 'my-java-mode' for Java code, you would use +the following line: + + (mmm-set-major-mode-preferences 'java 'my-java-mode) + + +File: mmm.info, Node: Mode Line, Next: Key Bindings, Prev: Preferred Modes, Up: Customizing + +3.3 Customizing the Mode Line Display +===================================== + +By default, when in a submode region, MMM Mode changes the section of +the mode line (*note (emacs)Mode Line::) that normally displays the +major mode name--for example, 'HTML'--to instead show both the dominant +major mode and the currently active submode--for example, 'HTML[CPerl]'. +You can change this format, however. + + -- User Option: mmm-submode-mode-line-format + The value of this variable should be a string containing one or + both of the escape sequences '~M' and '~m'. The string displayed + in the major mode section of the mode line when in a submode is + obtained by replacing all occurrences of '~M' with the dominant + major mode name and '~m' with the currently active submode name. + For example, to display only the currently active submode, set this + variable to '~m'. The default value is '~M[~m]'. + + The MMM minor mode also normally displays the string 'MMM' in the +minor mode section of the mode line to indicate when it is active. You +can customize or disable this as well. + + -- User Option: mmm-mode-string + This string is displayed in the minor mode section of the mode line + when the MMM minor mode is active. If nonempty, it should begin + with a space to separate the MMM indicator from that of other minor + modes. To eliminate the indicator entirely, set this variable to + the empty string. + + +File: mmm.info, Node: Key Bindings, Next: Local Variables, Prev: Mode Line, Up: Customizing + +3.4 Customizing the MMM Mode Key Bindings +========================================= + +The default MMM Mode key bindings are explained in *note MMM Mode +Keys::, and in *note Insertion::. There are a couple of ways to +customize these bindings. + + -- User Option: mmm-mode-prefix-key + The value of this variable (default is 'C-c %') should be a key + sequence to use as the prefix for the MMM Mode keymap. Minor modes + typically use 'C-c' followed by a punctuation character, but you + can change it to any user-available key sequence. To have an + effect, this variable should be set before MMM Mode is loaded. + + -- User Option: mmm-use-old-command-keys + When this variable is 'nil', MMM Mode commands use the control + modifier and insertion keys no modifier. Any other value switches + the two, so that 'mmm-parse-buffer', for example, is bound to 'C-c + % b', while perl-section insertion in the Mason class is bound to + 'C-c % C-p'. This variable should be set before MMM Mode is loaded + to have an effect. + + When MMM is loaded, it uses the value of 'mmm-use-old-command-keys' +to set the values of the variables 'mmm-command-modifiers' and +'mmm-insert-modifiers', so if you prefer you can set these variables +instead. They should each be a list of key modifiers, such as +'(control)' or '()'. The Meta modifier is used in some of the command +and insertion keys, so it should not be used, and the Shift modifier is +not particularly portable between Emacsen--if it works for you, feel +free to use it. Other modifiers, such as Hyper and Super, are not +universally available, but are valid when present. + + +File: mmm.info, Node: Local Variables, Next: Changing Classes, Prev: Key Bindings, Up: Customizing + +3.5 Changing Saved Local Variables +================================== + +A lot of the functionality of MMM Mode--that which makes the major mode +appear to change--is implemented by saving and restoring the values of +local variables, or pseudo-variables. You can customize what variables +are saved, and how, with the following variable. + + -- Variable: mmm-save-local-variables + At its simplest, this is a list each of whose elements is a + buffer-local variable whose value is saved and restored for each + major mode. Each elements can also, however, be a list whose first + element is the variable symbol and whose subsequent elements + specify how and where the variable is to be saved. The second + element of the list, if present, should be one of the symbols + 'global', 'buffer', or 'region'. If not present, the default value + is 'global'. The third element, if present, should be a list of + major mode symbols in which to save the variable. In the list + form, the variable symbol itself can be replaced with a cons cell + of two functions, one to get the value and one to set the value. + This is called a "pseudo-variable". + + Globally saved variables are the same in all (MMM-controlled) buffers +and submode regions of each major mode listed in the third argument, or +all major modes if it is 't' or not present. Buffer-saved variables are +the same in all submode regions of a given major mode in each buffer, +and region-saved variables can be different for each submode region. + + Pseudo-variables are used, for example, to save and restore the +syntax table (*note (emacs)Syntax::) and mode keymaps (*note +(emacs)Keymaps::). + + +File: mmm.info, Node: Changing Classes, Next: Hooks, Prev: Local Variables, Up: Customizing + +3.6 Changing the Supplied Submode Classes +========================================= + +If you need to use MMM with a syntax for which a submode class is not +supplied, and you have some facility with Emacs Lisp, you can write your +own; see *note Writing Classes::. However, sometimes you will only want +to make a slight change to one of the supplied submode classes. You can +do this, after that class is loaded, with the following functions. + + -- Function: mmm-set-class-parameter CLASS PARAM VALUE + Set the value of the keyword parameter PARAM of the submode class + CLASS to VALUE. *Note Writing Classes::, for an explanation of the + meaning of each keyword parameter. This creates a new parameter if + one is not already present in the class. + + -- Function: mmm-get-class-parameter CLASS PARAM + Get the value of the keyword parameter PARAM for the submode class + CLASS. Returns 'nil' if there is no such parameter. + + +File: mmm.info, Node: Hooks, Prev: Changing Classes, Up: Customizing + +3.7 Hooks Provided by MMM Mode +============================== + +MMM Mode defines several hook variables (*note (emacs)Hooks::) which are +run at different times. The most often used is 'mmm-major-mode-hook' +which is described in *note Major Mode Hook::, but there are a couple +others. + + -- Variable: mmm-mode-hook + This normal hook is run whenever MMM Mode is enabled in a buffer. + + -- Variable: mmm- MAJOR-MODE-hook + This is actually a whole set of hook variables, a different one for + every major mode. Whenever MMM Mode is enabled in a buffer, the + corresponding hook variable for the dominant major mode is run. + + -- Variable: mmm- SUBMODE-submode-hook + Again, this is a set of one hook variable per major mode. These + hooks are run whenever a submode region of the corresponding major + mode is created in any buffer, with point at the start of the new + submode region. + + -- Variable: mmm- CLASS-class-hook + This is a set of one hook variable per submode class. These hooks + are run when a submode class is first applied to a given buffer. + + Submode classes also have a ':creation-hook' parameter which should +be a function to run whenever a submode region is created with that +class, with point at the beginning of the submode region. This can be +set for supplied submode classes with 'mmm-set-class-parameter'; *note +Changing Classes::. + + +File: mmm.info, Node: Supplied Classes, Next: Writing Classes, Prev: Customizing, Up: Top + +4 Supplied Submode Classes +************************** + +This chapter describes the submode classes that are supplied with MMM +Mode. + +* Menu: + +* Mason:: Mason server-side Perl in HTML. +* File Variables:: Elisp code in File Variables. +* Here-documents:: Code in shell and Perl here-documents. +* Javascript:: Javascript embedded in HTML. +* Embedded CSS:: CSS Styles embedded in HTML. +* Embperl:: Another syntax for Perl in HTML. +* ePerl:: A general Perl-embedding syntax. +* JSP:: Java code embedded in HTML. +* RPM:: Shell scripts in RPM Spec Files. +* Noweb:: Noweb literate programs. + + +File: mmm.info, Node: Mason, Next: File Variables, Prev: Supplied Classes, Up: Supplied Classes + +4.1 Mason: Perl in HTML +======================= + +Mason is a syntax to embed Perl code in HTML and other documents. See + for more information. The submode class for +Mason components is called 'mason' and is loaded on demand from +'mmm-mason.el'. The current Mason class is intended to correctly +recognize all syntax valid in Mason 0.896. There are insertion keys for +most of the available syntax; use 'mmm-insertion-help' ('C-c % h' by +default) with Mason on to get a list. + + If you want to have mason submodes automatically in all Mason files, +you can use automatic mode and filename associations; the details depend +on what you call your Mason components and what major mode you use. +*Note Mode-Ext Classes::. If you use an extension for your Mason files +that emacs does not automatically place in your preferred HTML Mode, you +will probably want to associate that extension with your HTML Mode as +well; *note (emacs)Choosing Modes::. This also goes for "special" Mason +files such as autohandlers and dhandlers. + + The Perl mode used is controlled by the user: *Note Preferred +Modes::. The default is to use CPerl mode, if present. Unfortunately, +there are also certain problems with CPerl mode in submode regions. +(Not to say that the original perl-mode would do any better--it hasn't +been much tried.) First of all, the first line of a Perl section is +usually indented as if it were a continuation line. A fix for this is +to start with a semicolon on the first line. The insertion key commands +do this whenever the Mason syntax allows it. + + <%perl>; + print $var; + + + In addition, some users have reported that the CPerl indentation +sometimes does not work. This problem has not yet been tracked down, +however, and more data about when it happens would be helpful. + + Some people have reported problems using PSGML with Mason. Adding +the following line to a '.emacs' file should suffice to turn PSGML off +and cause emacs to use a simpler HTML mode: + + (autoload 'html-mode "sgml-mode" "HTML Mode" t) + + Earlier versions of PSGML may require instead the following fix: + + (delete '("\\.html$" . sgml-html-mode) auto-mode-alist) + (delete '("\\.shtml$" . sgml-html-mode) auto-mode-alist) + + Other users report using PSGML with Mason and MMM Mode without +difficulty. If you don't have problems and want to use PSGML, you may +need to replace 'html-mode' in the suggested code with 'sgml-html-mode'. +(Depending on your version of PSGML, this may not be necessary.) +Similarly, if you are using XEmacs and want to use the alternate HTML +mode 'hm--html-mode', replace 'html-mode' with that symbol. + + One problem that crops up when using PSGML with Mason is that even +ignoring the special tags and Perl code (which, as I've said, haven't +caused me any problems), Mason components often are not a complete SGML +document. For instance, my autohandlers often say + + + <% $m->call_next %> + + + in which case the actual components contain no doctype declaration, +'', '', or '', confusing PSGML. One solution I've +found is to use the variable 'sgml-parent-document' in such incomplete +components; try, for example, these lines at the end of a component. + + %# Local Variables: + %# sgml-parent-document: ("autohandler" "body" nil ("body")) + %# sgml-doctype: "/top/level/autohandler" + %# End: + + This tells PSGML that the current file is a sub-document of the file +'autohandler' and is included inside a '' tag, thus alleviating +its confusion. + + +File: mmm.info, Node: File Variables, Next: Here-documents, Prev: Mason, Up: Supplied Classes + +4.2 Elisp in a Local Variables List +=================================== + +Emacs allows the author of a file to specify major and minor modes to be +used while editing that file, as well as specifying values for other +local Elisp variables, with a File Variables list. *Note (emacs)File +Variables::. Since file variables values are Elisp objects (and with +the 'eval' special "variable", they are forms to be evaluated), one +might want to edit them in 'emacs-lisp-mode'. The submode class +'file-variables' allows this, and is suitable for turning on in a given +file with 'mmm-classes', or in all files with 'mmm-global-classes'. + + +File: mmm.info, Node: Here-documents, Next: Javascript, Prev: File Variables, Up: Supplied Classes + +4.3 Here-documents +================== + +One of the long-time standard syntaxes for outputting large amounts of +code (or text, or HTML, or whatever) from a script (notably shell +scripts and Perl scripts) is the here-document syntax: + + print < + + Test Page + + + END_HTML + + The 'here-doc' submode class recognizes this syntax, and can even +guess the correct submode to use in many cases. For instance, it would +put the above example in 'html-mode', noticing the string 'HTML' in the +name of the here-document. If you use less than evocative here-document +names, or if the submode is recognized incorrectly for any other reason, +you can tell it explicitly what submode to use. + + -- User Option: mmm-here-doc-mode-alist + The value of this variable should be an alist, each element a cons + pair associating a regular expression to a submode symbol. + Whenever a here-document name matches one of these regexps, the + corresponding submode is applied. For example, if this variable + contains the element '("CODE" . cc-mode)', then any here-document + whose name contains the string 'CODE' will be put in 'cc-mode'. + The value of this variable overrides any guessing that the + 'here-doc' submode class would do otherwise. + + +File: mmm.info, Node: Javascript, Next: Embedded CSS, Prev: Here-documents, Up: Supplied Classes + +4.4 Javascript in HTML +====================== + +The submode class 'html-js' allows for embedding Javascript code in HTML +documents. It recognizes both this syntax: + + + + and this syntax: + + + + The mode used for Javascript regions is controlled by the user; *Note +Preferred Modes::. + + +File: mmm.info, Node: Embedded CSS, Next: Embperl, Prev: Javascript, Up: Supplied Classes + +4.5 CSS embedded in HTML +======================== + +CSS (Cascading Style Sheets) can also be embedded in HTML. The +'embedded-css' submode class recognizes this syntax: + + + + It uses 'css-mode' if present, 'c++-mode' otherwise. This can be +customized: *Note Preferred Modes::. + + +File: mmm.info, Node: Embperl, Next: ePerl, Prev: Embedded CSS, Up: Supplied Classes + +4.6 Embperl: More Perl in HTML +============================== + +Embperl is another syntax for embedding Perl in HTML. See + for more information. The 'embperl' +submode class recognizes most if not all of the Embperl embedding +syntax. Its Perl mode is also controllable by the user; *Note Preferred +Modes::. + + +File: mmm.info, Node: ePerl, Next: JSP, Prev: Embperl, Up: Supplied Classes + +4.7 ePerl: General Perl Embedding +================================= + +Yet another syntax for embedding Perl is called ePerl. See + for more information. The +'eperl' submode class handles this syntax, using the Perl mode specified +by the user; *Note Preferred Modes::. + + +File: mmm.info, Node: JSP, Next: RPM, Prev: ePerl, Up: Supplied Classes + +4.8 JSP: Java Embedded in HTML +============================== + +JSP (Java Server Pages) is a syntax for embedding Java code in HTML. The +submode class 'jsp' handles this syntax, using a Java mode specified by +the user; *Note Preferred Modes::. The default is 'jde-mode' if +present, otherwise 'java-mode'. + + +File: mmm.info, Node: RPM, Next: Noweb, Prev: JSP, Up: Supplied Classes + +4.9 RPM Spec Files +================== + +'mmm-rpm.el' contains the definition of an MMM Mode submode class for +editing shell script sections within RPM (Redhat Package Manager) spec +files. It is recommended for use in combination with 'rpm-spec-mode.el' +by Stig Bjørlykke and Steve Sanbeg + (). + + Suggested setup code: + + (add-to-list 'mmm-mode-ext-classes-alist + '(rpm-spec-mode "\\.spec\\'" rpm-sh)) + + Thanks to Marcus Harnisch for contributing +this submode class. + + +File: mmm.info, Node: Noweb, Prev: RPM, Up: Supplied Classes + +4.10 Noweb literate programming +=============================== + +'mmm-noweb.el' contains the definition of an MMM Mode submode class for +editing Noweb documents. Most Noweb documents use \LaTeX for the +documentation chunks. Code chunks in Noweb are document-specific, and +the mode may be set with a local variable setting in the document. The +variable MMM-NOWEB-CODE-MODE controls the global code chunk mode. Since +Noweb files may have many languages in their code chunks, this mode also +allows setting the mode by specifying a mode in the first line or two of +a code chunk, using the normal Emacs first-line mode setting syntax. +Note that this first-line mode setting only matches a single word for +the mode name, and does not support the variable name setting of the +generalized first file line syntax. + +% -*- mode: latex; mmm-noweb-code-mode: c++; -*- +% First chunk delimiter! +@ +\noweboptions{smallcode} + +\title{Sample Noweb File} +\author{Joe Kelsey\\ +\nwanchorto{mailto:bozo@bozo.bozo}{\tt bozo@bozo.bozo}} +\maketitle + +@ +\section{Introduction} +Normal noweb documentation for the required [[*]] chunk. +<<*>>= +// C++ mode here! +// We might list the program here, or simply included chunks. +<> +@ %def myfile.cc + +@ +\section{[[myfile.cc]]} +This is [[myfile.cc]]. MMM noweb-mode understands code quotes in +documentation. +<>= +// This section is indented separately from previous. +@ + +@ +\section{A Perl Chunk} +We need a Perl chunk. +<>= +#!/usr/bin/perl +# -*- perl -*- +# Each differently named chunk is flowed separately. +@ + +\section{Finish [[myfile.cc]]} +When we resume a previously defined chunk, they are indented together. +<>= +// Pick up where we left off... +@ + + + The quoted code chunks inside documentation chunks are given the mode +found in the variable MMM-NOWEB-QUOTE-MODE, if set, or the value in +MMM-NOWEB-CODE-MODE otherwise. Also, each quoted chunk is set to have a +unique name to prevent them from being indented as a unit. + + Suggested setup code: + (mmm-add-mode-ext-class 'latex-mode "\\.nw\\'" 'noweb) + (add-to-list 'auto-mode-alist '("\\.nw\\'" . latex-mode)) + + In mmm-noweb buffers, each differently-named code chunk has a +different ':name', allowing all chunks with the same name to get +indented together. + + This mode also supplies special paragraph filling operations for use +in documentation areas of the buffer. From a primary-mode ('latex-mode, +, emacs') region, pressing 'C-c % C-q' will mark all submode regions +with word syntax ('mmm-word-other-regions'), fill the current paragraph +('(fill-paragraph justify)'), and remove the syntax markings +('mmm-undo-syntax-other-regions'). + + Thanks to Joe Kelsey for contributing this +class. + + +File: mmm.info, Node: Writing Classes, Next: Indices, Prev: Supplied Classes, Up: Top + +5 Writing Submode Classes +************************* + +Sometimes (perhaps often) you may want to use MMM with a syntax for +which it is suited, but for which no submode is supplied. In such cases +you may have to write your own submode class. This chapter briefly +describes how to write a submode class, from the basic to the advanced, +with examples. + +* Menu: + +* Basic Classes:: Writing a simple submode class. +* Paired Delimiters:: Matching paired delimiters. +* Region Placement:: Placing the region more accurately. +* Submode Groups:: Grouping several classes together. +* Calculated Submodes:: Deciding the submode at run-time. +* Calculated Faces:: Deciding the display face at run-time. +* Insertion Commands:: Inserting regions automatically. +* Region Names:: Naming regions for syntax grouping. +* Other Hooks:: Running code at arbitrary points. +* Delimiters:: Controlling delimiter overlays. +* Misc Keywords:: Other miscellaneous options. + + +File: mmm.info, Node: Basic Classes, Next: Paired Delimiters, Prev: Writing Classes, Up: Writing Classes + +5.1 Writing Basic Submode Classes +================================= + +Writing a submode class can become rather complex, if the syntax to +match is complicated and you want to take advantage of some of MMM +Mode's extra features. But a simple submode class is not particularly +difficult to write. This section describes the basics of writing +submode classes. + + Submode classes are stored in the variable 'mmm-classes-alist'. Each +element of this list represents a single submode class. For +convenience, the function 'mmm-add-classes' takes a list of submode +classes and adds them all to this alist. Each class is represented by a +list containing the class name--a symbol such as 'mason' or +'html-js'--followed by pairs of keywords and arguments called a "class +specifier". For example, consider the specifier for the submode class +'embedded-css': + + (mmm-add-classes + '((embedded-css + :submode css + :face mmm-declaration-submode-face + :front "]*>" + :back ""))) + + The name of the submode is 'embedded-css', the first element of the +list. The rest of the list consists of pairs of keywords (symbols +beginning with a colon) such as ':submode' and ':front', and arguments, +such as 'css' and '"]*>"'. It is the keywords and arguments +that specify how the submode works. The order of keywords is not +important; all that matters is the arguments that follow them. + + The three most important keywords are ':submode', ':front', and +':back'. The argument following ':submode' names the major mode to use +in submode regions. It can be either a symbol naming a major mode, such +as 'text-mode' or 'c++-mode', or a symbol to look up in +'mmm-major-mode-preferences' (*note Preferred Modes::) such as 'css', as +in this case. + + The arguments following ':front' and ':back' are regular expressions +(*note (emacs)Regexps::) that should match the delimiter strings which +begin and end the submode regions. In our example, CSS regions begin +with a '' tag. + + The argument following ':face' specifies the face (background color) +to use when 'mmm-submode-decoration-level' is 2 (high coloring). *Note +Region Coloring::, for a list of canonical available faces. + + There are many more possible keywords arguments. In the following +sections, we will examine each of them and their uses in writing submode +classes. + + +File: mmm.info, Node: Paired Delimiters, Next: Region Placement, Prev: Basic Classes, Up: Writing Classes + +5.2 Matching Paired Delimiters +============================== + +A simple pair of regular expressions does not always suffice to exactly +specify the beginning and end of submode regions correctly. For this +reason, there are several other possible keyword/argument pairs which +influence the matching process. + + Many submode regions are marked by paired delimiters. For example, +the tags used by Mason (*note Mason::) include '<%init>...' and +'<%args>...'. It would be possible to write a separate submode +class for each type of region, but there is an easier way: the keyword +argument ':save-matches'. If supplied and non-nil, it causes the +regular expression ':back', before being searched for, to be formatted +by replacing all strings of the form '~N' (where N is an integer) with +the corresponding numbered subexpression of the match for ':front'. As +an example, here is an excerpt from the 'here-doc' submode class. *Note +Here-documents::, for more information about this submode. + + :front "<<\\([a-zA-Z0-9_-]+\\)" + :back "^~1$" + :save-matches 1 + + The regular expression for ':front' matches '<<' followed by a string +of one or more alphanumeric characters, underscores, and dashes. The +latter string, which happens to be the name of the here-document, is +saved as the first subexpression, since it is surrounded by '\(...\)'. +Then, because the value of ':save-matches' is present and non-nil, the +string '~1' is replaced in the value of ':back' by the name of the +here-document, thus creating a regular expression to match the correct +ending delimiter. + + +File: mmm.info, Node: Region Placement, Next: Submode Groups, Prev: Paired Delimiters, Up: Writing Classes + +5.3 Placing Submode Regions Precisely +===================================== + +Normally, a submode region begins immediately after the end of the +string matching the ':front' regular expression and ends immediately +before the beginning of the string matching the ':back' regular +expression. This can be changed with the keywords ':include-front' and +':include-back'. If their arguments are 'nil', or they do not appear, +the default behavior is unchanged. But if the argument of +':include-front' (respectively, ':include-back') is non-nil, the submode +region will begin (respectively, end) immediately before (respectively, +after) the string matching the ':front' (respectively, ':back') regular +expression. In other words, these keywords specify whether or not the +delimiter strings are _included_ in the submode region. + + When ':front' and ':back' are regexps, the delimiter is normally +considered to be the entire matched region. This can be changed using +the ':front-match' and ':back-match' keywords. The values of the +keywords is a number specifying the submatch. This defaults to zero +(specifying the whole regexp). + + Two more keywords which affect the placement of the region +':front-offset' and ':back-offset', which both take integers as +arguments. The argument of ':front-offset' (respectively, +':back-offset') gives the distance in characters from the beginning +(respectively, ending) location specified so far, to the actual point +where the submode region begins (respectively, ends). For example, if +':include-front' is nil or unsupplied and ':front-offset' is 2, the +submode region will begin two characters after the end of the match for +':front', and if ':include-back' is non-nil and ':back-offset' is -1, +the region will end one character before the end of the match for +':back'. + + In addition to integers, the arguments of ':front-offset' and +':back-offset' can be functions which are invoked to move the point from +the position specified by the matches and inclusions to the correct +beginning or end of the submode region, or lists whose elements are +either functions or numbers and whose effects are applied in sequence. +To help disentangle these options, here is another excerpt from the +'here-doc' submode class: + + :front "<<\\([a-zA-Z0-9_-]+\\)" + :front-offset (end-of-line 1) + :back "^~1$" + :save-matches 1 + + Here the value of ':front-offset' is the list '(end-of-line 1)', +meaning that from the end of the match for ':front', go to the end of +the line, and then one more character forward (thus to the beginning of +the next line), and begin the submode region there. This coincides with +the normal behavior of here-documents: they begin on the following line +and go until the ending flag. + + If the ':back' should not be able to start a new submode region, set +the ':end-not-begin' keyword to non-nil. + + +File: mmm.info, Node: Submode Groups, Next: Calculated Submodes, Prev: Region Placement, Up: Writing Classes + +5.4 Defining Groups of Submodes +=============================== + +Sometimes more than one submode class is required to accurately reflect +the behavior of a single type of syntax. For example, Mason has three +very different types of Perl regions: blocks bounded by matched tags +such as '<%perl>...', inline output expressions bounded by +'<%...%>', and single lines of code which simply begin with a '%' +character. In cases like these, it is possible to specify an "umbrella" +class, to turn all these classes on or off together. + + -- Function: mmm-add-group GROUP CLASSES + The submode classes CLASSES, which should be a list of lists, + similar to what might be passed to 'mmm-add-classes', are added + just as by that function. Furthermore, another class named GROUP + is added, which encompasses all the classes in CLASSES. + + Technically, an group class is specified with a ':classes' keyword +argument, and the subsidiary classes are given a non-nil ':private' +keyword argument to make them invisible. But in general, all you should +ever need to know is how to invoke the function above. + + -- Function: mmm-add-to-group GROUP CLASSES + Adds a list of classes to an already existing group. This can be + used, for instance, to add a new quoting definition to HTML-JS + using this example to add the quote characters "%=%": + + (mmm-add-to-group 'html-js '((js-html + :submode javascript + :face mmm-code-submode-face + :front "%=%" + :back "%=%" + :end-not-begin t))) + + +File: mmm.info, Node: Calculated Submodes, Next: Calculated Faces, Prev: Submode Groups, Up: Writing Classes + +5.5 Calculating the Correct Submode +=================================== + +In most cases, the author of a submode class will know in advance what +major mode to use, such as 'text-mode' or 'c++-mode'. If there are +multiple possible modes that the user might desire, then +'mmm-major-mode-preferences' should be used (*note Preferred Modes::). +The function 'mmm-set-major-mode-preferences' can be used, with a third +argument, to ensure than the mode is present. + + In some cases, however, the author has no way of knowing in advance +even what language the submode region will be in. The 'here-doc' class +is one of these. In such cases, instead of the ':submode' keyword, the +':match-submode' keyword must be used. Its argument should be a +function, probably written by the author of the submode class, which +calculates what major mode each region should use. + + It is invoked immediately after a match is found for ':front', and is +passed one argument: a string representing the front delimiter. +Normally this string is simply whatever was matched by ':front', but +this can be changed with the keyword ':front-form' (*note Delimiters::). +The function should then return a symbol that would be a valid argument +to ':submode': either the name of a mode, or that of a language to look +up a preferred mode. If it detects an invalid match--for example, the +user has specified a mode which is not available--it should '(signal +'mmm-no-matching-submode nil)'. + + Since here-documents can contain code in any language, the 'here-doc' +submode class uses ':match-submode' rather than ':submode'. The +function it uses is 'mmm-here-doc-get-mode', defined in 'mmm-sample.el', +which inspects the name of the here-document for flags indicating the +proper mode. For example, this code should probably be in 'perl-mode' +(or 'cperl-mode'): + + print <' and ' + + + + diff --git a/elpa/skewer-mode-20150914.1304/skewer-bower.el b/elpa/skewer-mode-20150914.1304/skewer-bower.el new file mode 100644 index 0000000..69bfbe6 --- /dev/null +++ b/elpa/skewer-mode-20150914.1304/skewer-bower.el @@ -0,0 +1,217 @@ +;;; skewer-bower.el --- dynamic library loading -*- lexical-binding: t; -*- + +;; This is free and unencumbered software released into the public domain. + +;;; Commentary: + +;; This package loads libraries into the current page using the bower +;; infrastructure. Note: bower is not actually used by this package +;; and so does *not* need to be installed. Only git is required (see +;; `skewer-bower-git-executable'). It will try to learn how to run git +;; from Magit if available. + +;; The interactive command for loading libraries is +;; `skewer-bower-load'. It will prompt for a library and a version, +;; automatically fetching it from the bower infrastructure if needed. +;; For example, I often find it handy to load some version of jQuery +;; when poking around at a page that doesn't already have it loaded. + +;; Caveat: unfortunately the bower infrastructure is a mess; many +;; packages are in some sort of broken state -- missing dependencies, +;; missing metadata, broken metadata, or an invalid repository URL. +;; Some of this is due to under-specification of the metadata by the +;; bower project. Broken packages are unlikely to be loadable by +;; skewer-bower. + +;;; Code: + +(require 'cl-lib) +(require 'skewer-mode) +(require 'simple-httpd) +(require 'magit nil t) ; optional + +(defcustom skewer-bower-cache-dir (locate-user-emacs-file "skewer-cache") + "Location of library cache (git repositories)." + :type 'string + :group 'skewer) + +(defcustom skewer-bower-endpoint "https://bower.herokuapp.com" + "Endpoint for accessing package information." + :type 'string + :group 'skewer) + +(defcustom skewer-bower-json '("bower.json" "package.json" "component.json") + "Files to search for package metadata." + :type 'list + :group 'skewer) + +; Try to match Magit's configuration if available +(defcustom skewer-bower-git-executable "git" + "Name of the git executable." + :type 'string + :group 'skewer) + +(defvar skewer-bower-packages nil + "Alist of all packages known to bower.") + +(defvar skewer-bower-refreshed nil + "List of packages that have been refreshed recently. This keeps +them from hitting the network frequently.") + +;;;###autoload +(defun skewer-bower-refresh () + "Update the package listing and packages synchronously." + (interactive) + (cl-declare (special url-http-end-of-headers)) + (setf skewer-bower-refreshed nil) + (with-current-buffer + (url-retrieve-synchronously (concat skewer-bower-endpoint "/packages")) + (setf (point) url-http-end-of-headers) + (setf skewer-bower-packages + (cl-sort + (cl-loop for package across (json-read) + collect (cons (cdr (assoc 'name package)) + (cdr (assoc 'url package)))) + #'string< :key #'car)))) + +;; Git functions + +(defun skewer-bower-cache (package) + "Return the cache repository directory for PACKAGE." + (unless (file-exists-p skewer-bower-cache-dir) + (make-directory skewer-bower-cache-dir t)) + (expand-file-name package skewer-bower-cache-dir)) + +(defun skewer-bower-git (package &rest args) + "Run git for PACKAGE's repository with ARGS." + (with-temp-buffer + (when (zerop (apply #'call-process skewer-bower-git-executable nil t nil + (format "--git-dir=%s" (skewer-bower-cache package)) + args)) + (buffer-string)))) + +(defun skewer-bower-git-clone (url package) + "Clone or fetch PACKAGE's repository from URL if needed." + (if (member package skewer-bower-refreshed) + t + (let* ((cache (skewer-bower-cache package)) + (status + (if (file-exists-p cache) + (when (skewer-bower-git package "fetch") + (push package skewer-bower-refreshed)) + (skewer-bower-git package "clone" "--bare" url cache)))) + (not (null status))))) + +(defun skewer-bower-git-show (package version file) + "Grab FILE from PACKAGE at version VERSION." + (when (string-match-p "^\\./" file) ; avoid relative paths + (setf file (substring file 2))) + (skewer-bower-git package "show" (format "%s:%s" version file))) + +(defun skewer-bower-git-tag (package) + "List all the tags in PACKAGE's repository." + (split-string (skewer-bower-git package "tag"))) + +;; Bower functions + +(defun skewer-bower-package-ensure (package) + "Ensure a package is installed in the cache and up to date. +Emit an error if the package could not be ensured." + (when (null skewer-bower-packages) (skewer-bower-refresh)) + (let ((url (cdr (assoc package skewer-bower-packages)))) + (when (null url) + (error "Unknown package: %s" package)) + (when (null (skewer-bower-git-clone url package)) + (error "Failed to fetch: %s" url)) + t)) + +(defun skewer-bower-package-versions (package) + "List the available versions for a package. Always returns at +least one version." + (skewer-bower-package-ensure package) + (or (sort (skewer-bower-git-tag package) #'string<) + (list "master"))) + +(defun skewer-bower-get-config (package &optional version) + "Get the configuration alist for PACKAGE at VERSION. Return nil +if no configuration could be found." + (skewer-bower-package-ensure package) + (unless version (setf version "master")) + (json-read-from-string + (cl-loop for file in skewer-bower-json + for config = (skewer-bower-git-show package version file) + when config return it + finally (return "null")))) + +;; Serving the library + +(defvar skewer-bower-history () + "Library selection history for `completing-read'.") + +(defun skewer-bowser--path (package version main) + "Return the simple-httpd hosted path for PACKAGE." + (format "/skewer/bower/%s/%s/%s" package (or version "master") main)) + +(defun skewer-bower-prompt-package () + "Prompt for a package and version from the user." + (when (null skewer-bower-packages) (skewer-bower-refresh)) + ;; ido-completing-read bug workaround: + (when (> (length skewer-bower-history) 32) + (setf skewer-bower-history (cl-subseq skewer-bower-history 0 16))) + (let* ((packages (mapcar #'car skewer-bower-packages)) + (selection (nconc skewer-bower-history packages)) + (package (completing-read "Library: " selection nil t nil + 'skewer-bower-history)) + (versions (reverse (skewer-bower-package-versions package))) + (version (completing-read "Version: " versions + nil t nil nil (car versions)))) + (list package version))) + +(defun skewer-bower--js-p (filename) + "Return non-nil if FILENAME looks like JavaScript." + (string-match "\\.js$" filename)) + +(defun skewer-bower-guess-main (package version config) + "Attempt to determine the main entrypoints from a potentially +incomplete or incorrect bower configuration. Returns nil if +guessing failed." + (let ((check (apply-partially #'skewer-bower-git-show package version)) + (main (cdr (assoc 'main config)))) + (cond ((and (vectorp main) (cl-some check main)) + (cl-coerce (cl-remove-if-not #'skewer-bower--js-p main) 'list)) + ((and (stringp main) (funcall check main)) + (list main)) + ((funcall check (concat package ".js")) + (list (concat package ".js"))) + ((funcall check package) + (list package))))) + +;;;###autoload +(defun skewer-bower-load (package &optional version) + "Dynamically load a library from bower into the current page." + (interactive (skewer-bower-prompt-package)) + (let* ((config (skewer-bower-get-config package version)) + (deps (cdr (assoc 'dependencies config))) + (main (skewer-bower-guess-main package version config))) + (when (null main) + (error "Could not load %s (%s): no \"main\" entrypoint specified" + package version)) + (cl-loop for (dep . version) in deps + do (skewer-bower-load (format "%s" dep) version)) + (cl-loop for entrypoint in main + for path = (skewer-bowser--path package version entrypoint) + do (skewer-eval path nil :type "script")))) + +(defservlet skewer/bower "application/javascript; charset=utf-8" (path) + "Serve a script from the local bower repository cache." + (cl-destructuring-bind (_ _skewer _bower package version . parts) + (split-string path "/") + (let* ((file (mapconcat #'identity parts "/")) + (contents (skewer-bower-git-show package version file))) + (if contents + (insert contents) + (httpd-error t 404))))) + +(provide 'skewer-bower) + +;;; skewer-bower.el ends here diff --git a/elpa/skewer-mode-20150914.1304/skewer-bower.elc b/elpa/skewer-mode-20150914.1304/skewer-bower.elc new file mode 100644 index 0000000000000000000000000000000000000000..26b7cd70054594cb463430b6a3a105aef53e64fb GIT binary patch literal 7538 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 literal 0 HcmV?d00001 diff --git a/elpa/skewer-mode-20150914.1304/skewer-everything.user.js b/elpa/skewer-mode-20150914.1304/skewer-everything.user.js new file mode 100644 index 0000000..6a2d9cd --- /dev/null +++ b/elpa/skewer-mode-20150914.1304/skewer-everything.user.js @@ -0,0 +1,48 @@ +// ==UserScript== +// @name Skewer Everything +// @description Add a toggle button to run Skewer on the current page +// @lastupdated 2015-09-14 +// @version 1.2 +// @license Public Domain +// @include /^https?:/// +// @grant none +// ==/UserScript== + +var host = 'http://localhost:8080'; + +var toggle = document.createElement('div'); +toggle.onclick = inject; +toggle.style.width = '0px'; +toggle.style.height = '0px'; +toggle.style.borderStyle = 'solid'; +toggle.style.borderWidth = '0 12px 12px 0'; +toggle.style.borderColor = 'transparent #F00 transparent transparent'; +toggle.style.position = 'absolute'; +toggle.style.right = 0; +toggle.style.top = 0; +toggle.style.zIndex = 214748364; + +var injected = false; + +function inject() { + if (!injected) { + var script = document.createElement('script'); + script.src = host + '/skewer'; + document.body.appendChild(script); + toggle.style.borderRightColor = '#0F0'; + } else { + /* break skewer to disable it */ + skewer.fn = null; + toggle.style.borderRightColor = '#F00'; + } + injected = !injected; + localStorage._autoskewered = JSON.stringify(injected); +} + +/* Don't use on iframes. */ +if (window.top === window.self) { + document.body.appendChild(toggle); + if (JSON.parse(localStorage._autoskewered || 'false')) { + inject(); + } +} diff --git a/elpa/skewer-mode-20150914.1304/skewer-html.el b/elpa/skewer-mode-20150914.1304/skewer-html.el new file mode 100644 index 0000000..e8fecbe --- /dev/null +++ b/elpa/skewer-mode-20150914.1304/skewer-html.el @@ -0,0 +1,126 @@ +;;; skewer-html.el --- skewer support for live-interaction HTML -*- lexical-binding: t; -*- + +;; This is free and unencumbered software released into the public domain. + +;;; Commentary: + +;; This minor mode provides functionality for HTML like plain Skewer +;; does for JavaScript. There's no clean way to replace the body and +;; head elements of a live document, so "evaluating" these elements is +;; not supported. + +;; * C-M-x -- `skewer-html-eval-tag' + +;; See also `skewer-html-fetch-selector-into-buffer' for grabbing the +;; page as it current exists. + +;;; Code: + +(require 'cl-lib) +(require 'sgml-mode) +(require 'skewer-mode) + +;; Selector computation + +(defun skewer-html--cleanup (name) + "Cleanup tag names provided by sgml-mode." + (replace-regexp-in-string "/$" "" name)) + +(defun skewer-html--tag-after-point () + "Return the tag struct for the tag immediately following point." + (save-excursion + (forward-char 1) + (sgml-parse-tag-backward))) + +(defun skewer-html-compute-tag-nth () + "Compute the position of this tag within its parent." + (save-excursion + (let ((tag (car (last (sgml-get-context))))) + (if (null tag) + 1 + (cl-loop with start = (sgml-tag-name tag) + with stop = (save-excursion (sgml-get-context) (point)) + with n = 1 + do (sgml-skip-tag-backward 1) + while (> (point) stop) + when (equal start (sgml-tag-name + (skewer-html--tag-after-point))) + do (cl-incf n) + finally (return n)))))) + +(defun skewer-html-compute-tag-ancestry () + "Compute the ancestry chain at point." + (save-excursion + (nreverse + (cl-loop for nth = (skewer-html-compute-tag-nth) + for tag = (car (last (sgml-get-context))) + while tag + for name = (skewer-html--cleanup (sgml-tag-name tag)) + for type = (sgml-tag-type tag) + when (not (or (string= name "html") + (eq type 'close))) + collect (list name nth))))) + +(defun skewer-html-compute-selector () + "Compute the selector for exactly the tag around point." + (let ((ancestry (skewer-html-compute-tag-ancestry))) + (mapconcat (lambda (tag) + (format "%s:nth-of-type(%d)" (cl-first tag) (cl-second tag))) + ancestry " > "))) + +;; Fetching + +(defun skewer-html-fetch-selector (selector) + "Fetch the innerHTML of a selector." + (let ((result (skewer-eval-synchronously selector :type "fetchselector"))) + (if (skewer-success-p result) + (cdr (assoc 'value result)) + ""))) + +(defun skewer-html-fetch-selector-into-buffer (selector) + "Fetch the innerHTML of a selector and insert it into the active buffer." + (interactive "sSelector: ") + (insert (skewer-html-fetch-selector selector))) + +;; Evaluation + +(defun skewer-html-eval (string ancestry &optional append) + "Load HTML into a selector, optionally appending." + (let ((ancestry* (cl-coerce ancestry 'vector))) ; for JSON + (skewer-eval string nil :type "html" :extra `((ancestry . ,ancestry*) + (append . ,append))))) + +(defun skewer-html-eval-tag () + "Load HTML from the immediately surrounding tag." + (interactive) + (let ((ancestry (skewer-html-compute-tag-ancestry))) + (save-excursion + ;; Move to beginning of opening tag + (cl-loop for tag = (car (last (sgml-get-context))) + while (and tag (eq 'close (sgml-tag-type tag)))) + (let* ((beg (progn (point))) + (end (progn (sgml-skip-tag-forward 1) (point))) + (region (buffer-substring-no-properties beg end))) + (skewer-flash-region beg end) + (if (= (length ancestry) 1) + (error "Error: cannot eval body and head tags.") + (skewer-html-eval region ancestry nil)))))) + +;; Minor mode definition + +(defvar skewer-html-mode-map + (let ((map (make-sparse-keymap))) + (prog1 map + (define-key map (kbd "C-M-x") 'skewer-html-eval-tag))) + "Keymap for skewer-html-mode") + +;;;###autoload +(define-minor-mode skewer-html-mode + "Minor mode for interactively loading new HTML." + :lighter " skewer-html" + :keymap skewer-html-mode-map + :group 'skewer) + +(provide 'skewer-html) + +;;; skewer-html.el ends here diff --git a/elpa/skewer-mode-20150914.1304/skewer-html.elc b/elpa/skewer-mode-20150914.1304/skewer-html.elc new file mode 100644 index 0000000000000000000000000000000000000000..e4a5f567a639a0becf1c90f549641d046a91c842 GIT binary patch literal 4812 zcmbtY{cqdI5%ovnO9iwj+5-Kl?SwujHV~>@QeSp@X&lFmgC_35cJ6S94R}SZB*N5E z<&t*PzrJsFNkwv;`p`2#i`*~H&U^D_md_909sF@+Wu@`_`ExqRCetKU1N)F@I-JPZ z(6!13`l1cI(SzwH5Hf-nFI59NDQdAmcXfV@qlEgH~ zVpHUa9+_w8%}qgaFi-=Uze?;j!`&~|7-U#OX9dNXE+ht*#nA7eMf>}w2XEg}JeIkP z3)uP0zFz79nT%qosjn!_F~-0!a_@y7e$gKr@Js(1jmCC=RwzHt z28z7%CLrur~?+`i?MBA4#67Vj-<_x z0qhP%$Sy7`Uklo)j2F%$Q<)p(^W46SuWn>MxFAtk-RZWS)$ClvQdz)0*f`Bh!r?*L z5YGq=_BaO+xSSMlyUf-9GBtK<*|%zh-J+#}Jxq^Z!d?MOTfbRBLxj8V!-{Q-g4WTa z7u@wH?rP)e;OefwKIh#AZjcC$aKl>p+fr zOCU=fE0{ZDH3F`(xQ~E~sLm%ZLu)Z*T&v5W(+M9saDtWvz7sxJXSe=nA$WkkPKEdr zZs`IpNQMv_-&BxehzO4WYA0M@Ul{(k<>4FEa10R<=+Oz+82T1q1Z#rU#>y%l+uynS zwTG`)Us?PZ$PGunFzTX-p>1PU_daBGk}kop=prWm-N@gmLqC@cf;>jtgJxz%E#NGo zR#-)IX9;MdQWY1FAC@5X35f@?Q%jM|vl7|o9_^|3HDAiX4&5QZVM7|84x(B(7k60C zwG6E}H<44sK@8H}(%-e0>-#V3Wnl0GL%c1s2XFe>(8kF2)?mjPuyT~Tme7uwj>k}ftTX^{r88*ufI+J1`8YMb~*hb z1eo~(xd~#&T81R#0LQOQTpQoKg6sqvzk2oh$wswhq>4CGd8|;a+Sptm0(Fj3`eT@96UX_5g2R-#jd?CP5R+doI4mhS1J%JUIMdpc zTW_SG-+}Fwp#RyCy%P0XDO?=EFQJv=2Rt#j#Iw!e2p#v-f`Y@dq7B`* z*?;{Fp2P>ZG2#p^;9=3_NDGhf7zV4HYC;Hz74hgk0l!zM7>m1A{O1X_a5{Y}heO!7 z5~~8sH)Y=ymcGt>)U;E?VS@6uvTg_i#$1GQNv42aPTnE^?D3I-4;q$|{cHf5Bap`m z0RiAlb1oP*ws_P9_3DV~wZ#r|&Bjrv50IQ*Iak z%oApT;Lu>gaAM%f&1&96UMb(Wy7bDu6E%9Gm5(R-$aze3yY28|>18z=FQ~Iq?I3E2 z-5nMI5ePcQ>59QhhIHx<4@XFoWKR>QV3n4AoD`dl560EFNJ|rT*5&QJJ|&1BY9c-2 zftZSICp@`|l)JoOL)M)HqE5g@ZQEVeQ!DxN(=3K|EFDDHKznfL(fdRLT5B<xbXszpcC(Y9-T z$4$0|e!+KLK6G_DYnCU7W2R8R0~fO7oOBdJ!%!sqI0G8VIAx;|4)4<(Jo@BoRM2@6 z`z|X6l$Y8cXW7*}pymtN<|Uf3qkK?_$KTO09J(IB2sUwQ`wS6hV?9F^f@-=lunKUG zYD2v*xVdF4F}Dm3luF~@Ai*v0$GOuQlX7H~(*cf)7u2n(-$Qy|iaYjI=b=U6pmJO7 zrOGWhT2zig=5X0U^aLI8PT?Z5#|H!ow!}mO193#Y=G!l0q}e#m`1Fmim>9~HDN~dU z)oHP2Jt25lo%&p2HXE1tcw)Wxlw?_CsO%DUi4C5BI&ISLw%0{&!U z!Kha?&5GuC1)@WTb-+bqs};348kfIL*n*YW{)oxWVzuRX=Qz)VzKeEN>v$6r4%DR& X6>~-b{slqttT0qxDHc0e#Tx$wg<7r{ literal 0 HcmV?d00001 diff --git a/elpa/skewer-mode-20150914.1304/skewer-mode-autoloads.el b/elpa/skewer-mode-20150914.1304/skewer-mode-autoloads.el new file mode 100644 index 0000000..2e609f2 --- /dev/null +++ b/elpa/skewer-mode-20150914.1304/skewer-mode-autoloads.el @@ -0,0 +1,110 @@ +;;; skewer-mode-autoloads.el --- automatically extracted autoloads +;; +;;; Code: +(add-to-list 'load-path (directory-file-name (or (file-name-directory #$) (car load-path)))) + +;;;### (autoloads nil "skewer-bower" "skewer-bower.el" (22215 23004 +;;;;;; 0 0)) +;;; Generated autoloads from skewer-bower.el + +(autoload 'skewer-bower-refresh "skewer-bower" "\ +Update the package listing and packages synchronously. + +\(fn)" t nil) + +(autoload 'skewer-bower-load "skewer-bower" "\ +Dynamically load a library from bower into the current page. + +\(fn PACKAGE &optional VERSION)" t nil) + +;;;*** + +;;;### (autoloads nil "skewer-css" "skewer-css.el" (22215 23004 0 +;;;;;; 0)) +;;; Generated autoloads from skewer-css.el + +(autoload 'skewer-css-mode "skewer-css" "\ +Minor mode for interactively loading new CSS rules. + +\(fn &optional ARG)" t nil) + +;;;*** + +;;;### (autoloads nil "skewer-html" "skewer-html.el" (22215 23003 +;;;;;; 0 0)) +;;; Generated autoloads from skewer-html.el + +(autoload 'skewer-html-mode "skewer-html" "\ +Minor mode for interactively loading new HTML. + +\(fn &optional ARG)" t nil) + +;;;*** + +;;;### (autoloads nil "skewer-mode" "skewer-mode.el" (22215 23004 +;;;;;; 0 0)) +;;; Generated autoloads from skewer-mode.el + +(autoload 'list-skewer-clients "skewer-mode" "\ +List the attached browsers in a buffer. + +\(fn)" t nil) + +(autoload 'skewer-mode "skewer-mode" "\ +Minor mode for interacting with a browser. + +\(fn &optional ARG)" t nil) + +(autoload 'run-skewer "skewer-mode" "\ +Attach a browser to Emacs for a skewer JavaScript REPL. Uses +`browse-url' to launch a browser. + +\(fn)" t nil) + +(autoload 'skewer-run-phantomjs "skewer-mode" "\ +Connect an inferior PhantomJS process to Skewer, returning the process. + +\(fn)" t nil) + +;;;*** + +;;;### (autoloads nil "skewer-repl" "skewer-repl.el" (22215 23004 +;;;;;; 0 0)) +;;; Generated autoloads from skewer-repl.el + +(autoload 'skewer-repl--response-hook "skewer-repl" "\ +Catches all browser messages logging some to the REPL. + +\(fn RESPONSE)" nil nil) + +(autoload 'skewer-repl "skewer-repl" "\ +Start a JavaScript REPL to be evaluated in the visiting browser. + +\(fn)" t nil) + +(eval-after-load 'skewer-mode '(progn (add-hook 'skewer-response-hook #'skewer-repl--response-hook) (add-hook 'skewer-repl-mode-hook #'skewer-repl-mode-compilation-shell-hook) (define-key skewer-mode-map (kbd "C-c C-z") #'skewer-repl))) + +;;;*** + +;;;### (autoloads nil "skewer-setup" "skewer-setup.el" (22215 23004 +;;;;;; 0 0)) +;;; Generated autoloads from skewer-setup.el + +(autoload 'skewer-setup "skewer-setup" "\ +Fully integrate Skewer into js2-mode, css-mode, and html-mode buffers. + +\(fn)" nil nil) + +;;;*** + +;;;### (autoloads nil nil ("cache-table.el" "skewer-mode-pkg.el") +;;;;;; (22215 23004 0 0)) + +;;;*** + +;; Local Variables: +;; version-control: never +;; no-byte-compile: t +;; no-update-autoloads: t +;; End: +;;; skewer-mode-autoloads.el ends here diff --git a/elpa/skewer-mode-20150914.1304/skewer-mode-pkg.el b/elpa/skewer-mode-20150914.1304/skewer-mode-pkg.el new file mode 100644 index 0000000..daba75d --- /dev/null +++ b/elpa/skewer-mode-20150914.1304/skewer-mode-pkg.el @@ -0,0 +1,7 @@ +(define-package "skewer-mode" "20150914.1304" "live browser JavaScript, CSS, and HTML interaction" + '((simple-httpd "1.4.0") + (js2-mode "20090723") + (emacs "24"))) +;; Local Variables: +;; no-byte-compile: t +;; End: diff --git a/elpa/skewer-mode-20150914.1304/skewer-mode.el b/elpa/skewer-mode-20150914.1304/skewer-mode.el new file mode 100644 index 0000000..69ffc74 --- /dev/null +++ b/elpa/skewer-mode-20150914.1304/skewer-mode.el @@ -0,0 +1,599 @@ +;;; skewer-mode.el --- live browser JavaScript, CSS, and HTML interaction -*- lexical-binding: t; -*- + +;; This is free and unencumbered software released into the public domain. + +;; Author: Christopher Wellons +;; URL: https://github.com/skeeto/skewer-mode + +;;; Commentary: + +;; Quick start (without package.el): + +;; 1. Put this directory in your `load-path' +;; 2. Load skewer-mode.el +;; 3. M-x `run-skewer' to attach a browser to Emacs +;; 4. From a `js2-mode' buffer with `skewer-mode' minor mode enabled, +;; send forms to the browser to evaluate + +;; The function `skewer-setup' can be used to configure all of mode +;; hooks (previously this was the default). This can also be done +;; manually like so, + +;; (add-hook 'js2-mode-hook 'skewer-mode) +;; (add-hook 'css-mode-hook 'skewer-css-mode) +;; (add-hook 'html-mode-hook 'skewer-html-mode) + +;; The keybindings for evaluating expressions in the browser are just +;; like the Lisp modes. These are provided by the minor mode +;; `skewer-mode'. + +;; * C-x C-e -- `skewer-eval-last-expression' +;; * C-M-x -- `skewer-eval-defun' +;; * C-c C-k -- `skewer-load-buffer' + +;; The result of the expression is echoed in the minibuffer. + +;; Additionally, `css-mode' and `html-mode' get a similar set of +;; bindings for modifying the CSS rules and updating HTML on the +;; current page. + +;; Note: `run-skewer' uses `browse-url' to launch the browser. This +;; may require further setup depending on your operating system and +;; personal preferences. + +;; Multiple browsers and browser tabs can be attached to Emacs at +;; once. JavaScript forms are sent to all attached clients +;; simultaneously, and each will echo back the result +;; individually. Use `list-skewer-clients' to see a list of all +;; currently attached clients. + +;; Sometimes Skewer's long polls from the browser will timeout after a +;; number of hours of inactivity. If you find the browser disconnected +;; from Emacs for any reason, use the browser's console to call +;; skewer() to reconnect. This avoids a page reload, which would lose +;; any fragile browser state you might care about. + +;; To skewer your own document rather than the provided blank page, + +;; 1. Load the dependencies +;; 2. Load skewer-mode.el +;; 3. Start the HTTP server (`httpd-start') +;; 4. Include "http://localhost:8080/skewer" as a script +;; (see `example.html' and check your `httpd-port') +;; 5. Visit the document from your browser + +;; Skewer fully supports CORS, so the document need not be hosted by +;; Emacs itself. A Greasemonkey userscript and a bookmarklet are +;; provided for injecting Skewer into any arbitrary page you're +;; visiting without needing to modify the page on the host. + +;; With skewer-repl.el loaded, a REPL into the browser can be created +;; with M-x `skewer-repl', or C-c C-z. This should work like a console +;; within the browser. Messages can be logged to this REPL with +;; skewer.log() (just like console.log()). + +;; Extending Skewer: + +;; Skewer is flexible and open to extension. The REPL and the CSS and +;; HTML minor modes are a partial examples of this. You can extend +;; skewer.js with your own request handlers and talk to them from +;; Emacs using `skewer-eval' (or `skewer-eval-synchronously') with +;; your own custom :type. The :type string chooses the dispatch +;; function under the skewer.fn object. To inject your own JavaScript +;; into skewer.js, use `skewer-js-hook'. + +;; You can also catch messages sent from the browser not in response +;; to an explicit request. Use `skewer-response-hook' to see all +;; incoming objects. + +;;; History: + +;; Version 1.6.2: fixes +;; * skewer.log() takes multiple arguments +;; * comint and encoding fixes +;; Version 1.6.1: fixes +;; * Add `skewer-css-clear-all' +;; * Better IE8 compatibility +;; * User interface tweaks +;; Version 1.6.0: fixes +;; * Bring up to speed with Emacs 24.3 +;; * Switch to cl-lib from cl +;; Version 1.5.3: features +;; * Add `skewer-run-phantomjs' +;; Version 1.5.2: small cleanup +;; * Add `skewer-apply' and `skewer-funall' +;; * Improved safeStringify +;; Version 1.5.1: features +;; * No more automatic hook setup (see `skewer-setup') +;; * Support for HTML interaction +;; * Support for loading Bower packages +;; * Drop jQuery dependency +;; * Many small improvements +;; Version 1.4: features +;; * Full CSS interaction +;; * Greasemonkey userscript for injection +;; * Full, working CORS support +;; * Better browser presence detection +;; Version 1.3: features and fixes +;; * Full offline support +;; * No more callback registering +;; * Fix 64-bit support +;; * Two new hooks for improved extension support +;; * More uniform keybindings with other interactive modes +;; Version 1.2: features +;; * Add a skewer-eval-print-last-expression +;; * Display evaluation time when it's long +;; * Flash the region on eval +;; * Improve JS stringification +;; Version 1.1: features and fixes +;; * Added `list-skewer-clients' +;; * Reduce the number of HTTP requests needed +;; * Fix stringification issues +;; Version 1.0: initial release + +;;; Code: + +(require 'cl-lib) +(require 'json) +(require 'url-util) +(require 'simple-httpd) +(require 'js2-mode) +(require 'cache-table) + +(defgroup skewer nil + "Live browser JavaScript interaction." + :group 'languages) + +(defvar skewer-mode-map + (let ((map (make-sparse-keymap))) + (prog1 map + (define-key map (kbd "C-x C-e") 'skewer-eval-last-expression) + (define-key map (kbd "C-M-x") 'skewer-eval-defun) + (define-key map (kbd "C-c C-k") 'skewer-load-buffer))) + "Keymap for skewer-mode.") + +(defvar skewer-data-root (file-name-directory load-file-name) + "Location of data files needed by impatient-mode.") + +(defvar skewer-js-hook () + "Hook to run when skewer.js is being served to the browser. + +When hook functions are called, the current buffer is the buffer +to be served to the client (a defservlet), with skewer.js script +already inserted. This is the chance for other packages to insert +their own JavaScript to extend skewer in the browser, such as +adding a new type handler.") + +(defvar skewer-response-hook () + "Hook to run when a response arrives from the browser. Used for +catching messages from the browser with no associated +callback. The response object is passed to the hook function.") + +(defvar skewer-timeout 3600 + "Maximum time to wait on the browser to respond, in seconds.") + +(defvar skewer-clients () + "Browsers awaiting JavaScript snippets.") + +(defvar skewer-callbacks (cache-table-create skewer-timeout :test 'equal) + "Maps evaluation IDs to local callbacks.") + +(defvar skewer-queue () + "Queued messages for the browser.") + +(defvar skewer--last-timestamp 0 + "Timestamp of the last browser response. Use +`skewer-last-seen-seconds' to access this.") + +(cl-defstruct skewer-client + "A client connection awaiting a response." + proc agent) + +(defun skewer-process-queue () + "Send all queued messages to clients." + (when (and skewer-queue skewer-clients) + (let ((message (pop skewer-queue)) + (sent nil)) + (while skewer-clients + (ignore-errors + (progn + (let ((proc (skewer-client-proc (pop skewer-clients)))) + (with-temp-buffer + (insert (json-encode message)) + (httpd-send-header proc "text/plain" 200 + :Cache-Control "no-cache" + :Access-Control-Allow-Origin "*"))) + (setq skewer--last-timestamp (float-time)) + (setq sent t)))) + (if (not sent) (push message skewer-queue))) + (skewer-process-queue))) + +(defun skewer-clients-tabulate () + "Prepare client list for tabulated-list-mode." + (cl-loop for client in skewer-clients collect + (let ((proc (skewer-client-proc client)) + (agent (skewer-client-agent client))) + (cl-destructuring-bind (host port) (process-contact proc) + `(,client [,host ,(format "%d" port) ,agent]))))) + +(define-derived-mode skewer-clients-mode tabulated-list-mode "skewer-clients" + "Mode for listing browsers attached to Emacs for skewer-mode." + (setq tabulated-list-format [("Host" 12 t) + ("Port" 5 t) + ("User Agent" 0 t)]) + (setq tabulated-list-entries #'skewer-clients-tabulate) + (tabulated-list-init-header)) + +(define-key skewer-clients-mode-map (kbd "g") + (lambda () + (interactive) + (skewer-ping) + (revert-buffer))) + +(defun skewer-update-list-buffer () + "Revert the client list, due to an update." + (save-window-excursion + (let ((list-buffer (get-buffer "*skewer-clients*"))) + (when list-buffer + (with-current-buffer list-buffer + (revert-buffer)))))) + +;;;###autoload +(defun list-skewer-clients () + "List the attached browsers in a buffer." + (interactive) + (pop-to-buffer (get-buffer-create "*skewer-clients*")) + (skewer-clients-mode) + (tabulated-list-print)) + +(defun skewer-queue-client (proc req) + "Add a client to the queue, given the HTTP header." + (let ((agent (cl-second (assoc "User-Agent" req)))) + (push (make-skewer-client :proc proc :agent agent) skewer-clients)) + (skewer-update-list-buffer) + (skewer-process-queue)) + +;; Servlets + +(defservlet skewer text/javascript () + (insert-file-contents (expand-file-name "skewer.js" skewer-data-root)) + (goto-char (point-max)) + (run-hooks 'skewer-js-hook)) + +(defun httpd/skewer/get (proc _path _query req &rest _args) + (skewer-queue-client proc req)) + +(defun httpd/skewer/post (proc _path _query req &rest _args) + (let* ((result (json-read-from-string (cadr (assoc "Content" req)))) + (id (cdr (assoc 'id result))) + (callback (cache-table-get id skewer-callbacks))) + (setq skewer--last-timestamp (float-time)) + (when callback + (funcall callback result)) + (if id + (skewer-queue-client proc req) + (with-temp-buffer + (httpd-send-header proc "text/plain" 200 + :Access-Control-Allow-Origin "*"))) + (dolist (hook skewer-response-hook) + (funcall hook result)))) + +(defservlet skewer/demo text/html () + (insert-file-contents (expand-file-name "example.html" skewer-data-root))) + +;; Minibuffer display + +(defun skewer-success-p (result) + "Return T if result was a success." + (equal "success" (cdr (assoc 'status result)))) + +(define-derived-mode skewer-error-mode special-mode "skewer-error" + :group 'skewer + "Mode for displaying JavaScript errors returned by skewer-mode." + (setq truncate-lines t)) + +(defface skewer-error-face + '((((class color) (background light)) + :foreground "red" :underline t) + (((class color) (background dark)) + :foreground "red" :underline t)) + "Face for JavaScript errors." + :group 'skewer) + +(defun skewer--error (string) + "Return STRING propertized as an error message." + (propertize (or string "") 'font-lock-face 'skewer-error-face)) + +(defun skewer-post-minibuffer (result) + "Report results in the minibuffer or the error buffer." + (if (skewer-success-p result) + (let ((value (cdr (assoc 'value result))) + (time (cdr (assoc 'time result)))) + (if (and time (> time 1.0)) + (message "%s (%.3f seconds)" value time) + (message "%s" value))) + (with-current-buffer (pop-to-buffer (get-buffer-create "*skewer-error*")) + (let ((inhibit-read-only t) + (error (cdr (assoc 'error result)))) + (erase-buffer) + (skewer-error-mode) + (insert (skewer--error (cdr (assoc 'name error))) ": ") + (insert (or (cdr (assoc 'message error)) "") "\n\n") + (insert (or (cdr (assoc 'stack error)) "") "\n\n") + (insert (format "Expression: %s\n\n" + (if (cdr (assoc 'strict result)) "(strict)" "")) + (cdr (assoc 'eval error))) + (goto-char (point-min)))))) + +;; Evaluation functions + +(cl-defun skewer-eval (string &optional callback + &key verbose strict (type "eval") extra) + "Evaluate STRING in the waiting browsers, giving the result to CALLBACK. + +:VERBOSE -- if T, the return will try to be JSON encoded +:STRICT -- if T, expression is evaluated with 'use strict' +:TYPE -- chooses the JavaScript handler (default: eval) +:EXTRA -- additional alist keys to append to the request object" + (let* ((id (format "%x" (random most-positive-fixnum))) + (request `((type . ,type) + (eval . ,string) + (id . ,id) + (verbose . ,verbose) + (strict . ,strict) + ,@extra))) + (prog1 request + (setf (cache-table-get id skewer-callbacks) callback) + (setq skewer-queue (append skewer-queue (list request))) + (skewer-process-queue)))) + +(defun skewer-eval-synchronously (string &rest args) + "Just like `skewer-eval' but synchronously, so don't provide a +callback. Use with caution." + (let ((result nil)) + (apply #'skewer-eval string (lambda (v) (setq result v)) args) + (cl-loop until result + do (accept-process-output nil 0.01) + finally (return result)))) + +(defun skewer-apply (function args) + "Synchronously apply FUNCTION in the browser with the supplied +arguments, returning the result. All ARGS must be printable by +`json-encode'. For example, + + (skewer-apply \"Math.atan2\" '(1 -2)) ; => 2.677945044588987 + +Uncaught exceptions propagate to Emacs as an error." + (let ((specials '(("undefined" . nil) + ("NaN" . 0.0e+NaN) + ("Infinity" . 1.0e+INF) + ("-Infinity" . -1.0e+INF)))) + (let* ((expr (concat function "(" (mapconcat #'json-encode args ", ") ")")) + (result (skewer-eval-synchronously expr :verbose t)) + (value (cdr (assoc 'value result)))) + (if (skewer-success-p result) + (if (assoc value specials) + (cdr (assoc value specials)) + (condition-case _ + (json-read-from-string value) + (json-readtable-error value))) + (signal 'javascript + (list (cdr (assoc 'message (cdr (assoc'error result)))))))))) + +(defun skewer-funcall (function &rest args) + "Synchronously call FUNCTION with the supplied ARGS. All ARGS +must be printable by `json-read-from-string. For example, + + (skewer-funcall \"Math.sin\" 0.5) ; => 0.479425538604203 + +Uncaught exceptions propagate to Emacs as an error." + (skewer-apply function args)) + +(defun skewer--save-point (f &rest args) + "Return a function that calls F with point at the current point." + (let ((saved-point (point))) + (lambda (&rest more) + (save-excursion + (goto-char saved-point) + (apply f (append args more)))))) + +(defun skewer-ping () + "Ping the browser to test that it's still alive." + (unless (null skewer-clients) ; don't queue pings + (skewer-eval (prin1-to-string (float-time)) nil :type "ping"))) + +(defun skewer-last-seen-seconds () + "Return the number of seconds since the browser was last seen." + (skewer-ping) ; make sure it's still alive next request + (- (float-time) skewer--last-timestamp)) + +(defun skewer-mode-strict-p () + "Return T if buffer contents indicates strict mode." + (save-excursion + (save-restriction + (widen) + (goto-char (point-min)) + (js2-forward-sws) + (forward-char 1) + (let* ((stricts '("\"use strict\"" "'use strict'")) + (node (js2-node-at-point)) + (code (buffer-substring-no-properties (js2-node-abs-pos node) + (js2-node-abs-end node)))) + (and (member code stricts) t))))) + +(defun skewer-flash-region (start end &optional timeout) + "Temporarily highlight region from START to END." + (let ((overlay (make-overlay start end))) + (overlay-put overlay 'face 'secondary-selection) + (run-with-timer (or timeout 0.2) nil 'delete-overlay overlay))) + +(defun skewer-get-last-expression () + "Return the JavaScript expression before the point as a +list: (string start end)." + (save-excursion + (js2-backward-sws) + (backward-char) + (let ((node (js2-node-at-point nil t))) + (when (eq js2-FUNCTION (js2-node-type (js2-node-parent node))) + (setq node (js2-node-parent node))) + (when (js2-ast-root-p node) + (error "no expression found")) + (let ((start (js2-node-abs-pos node)) + (end (js2-node-abs-end node))) + (list (buffer-substring-no-properties start end) start end))))) + +(defun skewer-eval-last-expression (&optional prefix) + "Evaluate the JavaScript expression before the point in the +waiting browser. If invoked with a prefix argument, insert the +result into the current buffer." + (interactive "P") + (if prefix + (skewer-eval-print-last-expression) + (if js2-mode-buffer-dirty-p + (js2-mode-wait-for-parse + (skewer--save-point #'skewer-eval-last-expression)) + (cl-destructuring-bind (string start end) (skewer-get-last-expression) + (skewer-flash-region start end) + (skewer-eval string #'skewer-post-minibuffer))))) + +(defun skewer-get-defun () + "Return the toplevel JavaScript expression around the point as +a list: (string start end)." + (save-excursion + (js2-backward-sws) + (backward-char) + (let ((node (js2-node-at-point nil t))) + (when (js2-ast-root-p node) + (error "no expression found")) + (while (and (js2-node-parent node) + (not (js2-ast-root-p (js2-node-parent node)))) + (setf node (js2-node-parent node))) + (let ((start (js2-node-abs-pos node)) + (end (js2-node-abs-end node))) + (list (buffer-substring-no-properties start end) start end))))) + +(defun skewer-eval-defun () + "Evaluate the JavaScript expression before the point in the +waiting browser." + (interactive) + (if js2-mode-buffer-dirty-p + (js2-mode-wait-for-parse (skewer--save-point #'skewer-eval-defun)) + (cl-destructuring-bind (string start end) (skewer-get-defun) + (skewer-flash-region start end) + (skewer-eval string #'skewer-post-minibuffer)))) + +;; Print last expression + +(defvar skewer-eval-print-map (cache-table-create skewer-timeout :test 'equal) + "A mapping of evaluation IDs to insertion points.") + +(defun skewer-post-print (result) + "Insert the result after its source expression." + (if (not (skewer-success-p result)) + (skewer-post-minibuffer result) + (let* ((id (cdr (assoc 'id result))) + (pos (cache-table-get id skewer-eval-print-map))) + (when pos + (with-current-buffer (car pos) + (goto-char (cdr pos)) + (insert (cdr (assoc 'value result)) "\n")))))) + +(defun skewer-eval-print-last-expression () + "Evaluate the JavaScript expression before the point in the +waiting browser and insert the result in the buffer at point." + (interactive) + (if js2-mode-buffer-dirty-p + (js2-mode-wait-for-parse + (skewer--save-point #'skewer-eval-print-last-expression)) + (cl-destructuring-bind (string start end) (skewer-get-defun) + (skewer-flash-region start end) + (insert "\n") + (let* ((request (skewer-eval string #'skewer-post-print :verbose t)) + (id (cdr (assoc 'id request))) + (pos (cons (current-buffer) (point)))) + (setf (cache-table-get id skewer-eval-print-map) pos))))) + +;; Script loading + +(defvar skewer-hosted-scripts (cache-table-create skewer-timeout) + "Map of hosted scripts to IDs.") + +(defun skewer-host-script (string) + "Host script STRING from the script servlet, returning the script ID." + (let ((id (random most-positive-fixnum))) + (prog1 id + (setf (cache-table-get id skewer-hosted-scripts) string)))) + +(defun skewer-load-buffer () + "Load the entire current buffer into the browser. A snapshot of +the buffer is hosted so that browsers visiting late won't see an +inconsistent buffer." + (interactive) + (let ((id (skewer-host-script (buffer-string))) + (buffer-name (buffer-name))) + (skewer-eval (format "/skewer/script/%d/%s" + id (url-hexify-string buffer-name)) + (lambda (_) (message "%s loaded" buffer-name)) + :type "script"))) + +(defservlet skewer/script text/javascript (path) + (let ((id (string-to-number (nth 3 (split-string path "/"))))) + (insert (cache-table-get id skewer-hosted-scripts "")))) + +;; Define the minor mode + +;;;###autoload +(define-minor-mode skewer-mode + "Minor mode for interacting with a browser." + :lighter " skewer" + :keymap skewer-mode-map + :group 'skewer) + +;;;###autoload +(defun run-skewer () + "Attach a browser to Emacs for a skewer JavaScript REPL. Uses +`browse-url' to launch a browser." + (interactive) + (httpd-start) + (browse-url (format "http://127.0.0.1:%d/skewer/demo" httpd-port))) + +;; PhantomJS + +(defvar phantomjs-program-name "/usr/bin/phantomjs" + "Path to the phantomjs executable.") + +(defvar skewer-phantomjs-processes () + "List of phantomjs processes connected to Skewer.") + +(defun skewer-phantomjs-sentinel (proc event) + "Cleanup after phantomjs exits." + (when (cl-some (lambda (s) (string-match-p s event)) + '("finished" "abnormal" "killed")) + (delete-file (process-get proc 'tempfile)))) + +;;;###autoload +(defun skewer-run-phantomjs () + "Connect an inferior PhantomJS process to Skewer, returning the process." + (interactive) + (httpd-start) + (let ((script (make-temp-file "phantomjs-")) + (url (format "http://0:%d/skewer/demo" httpd-port))) + (with-temp-buffer + (insert (format "require('webpage').create().open('%s')" url)) + (write-region nil nil script nil 0) + (let ((proc (start-process "phantomjs" nil + phantomjs-program-name script))) + (prog1 proc + (push proc skewer-phantomjs-processes) + (process-put proc 'tempfile script) + (set-process-sentinel proc 'skewer-phantomjs-sentinel)))))) + +(defun skewer-phantomjs-kill () + "Kill all inferior phantomjs processes connected to Skewer." + (interactive) + (mapc #'delete-process skewer-phantomjs-processes) + (setf skewer-phantomjs-processes nil)) + +(provide 'skewer-mode) + +;;; skewer-mode.el ends here diff --git a/elpa/skewer-mode-20150914.1304/skewer-mode.elc b/elpa/skewer-mode-20150914.1304/skewer-mode.elc new file mode 100644 index 0000000000000000000000000000000000000000..8d15a49ff1f127d09ace094849359458f05496a5 GIT binary patch literal 29201 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 literal 0 HcmV?d00001 diff --git a/elpa/skewer-mode-20150914.1304/skewer-repl.el b/elpa/skewer-mode-20150914.1304/skewer-repl.el new file mode 100644 index 0000000..b2d786f --- /dev/null +++ b/elpa/skewer-mode-20150914.1304/skewer-repl.el @@ -0,0 +1,156 @@ +;;; skewer-repl.el --- create a REPL in a visiting browser -*- lexical-binding: t; -*- + +;; This is free and unencumbered software released into the public domain. + +;;; Commentary: + +;; This is largely based on of IELM's code. Run `skewer-repl' to +;; switch to the REPL buffer and evaluate code. Use +;; `skewer-repl-toggle-strict-mode' to turn strict mode on and off. + +;; If `compilation-search-path' is set up properly, along with +;; `skewer-path-strip-level', asynchronous errors will provide +;; clickable error messages that will take you to the source file of +;; the error. This is done using `compilation-shell-minor-mode'. + +;;; Code: + +(require 'comint) +(require 'compile) +(require 'skewer-mode) + +(defcustom skewer-repl-strict-p nil + "When non-NIL, all REPL evaluations are done in strict mode." + :type 'boolean + :group 'skewer) + +(defcustom skewer-repl-prompt "js> " + "Prompt string for JavaScript REPL." + :type 'string + :group 'skewer) + +(defvar skewer-repl-welcome + (propertize "*** Welcome to Skewer ***\n" + 'font-lock-face 'font-lock-comment-face) + "Header line to show at the top of the REPL buffer. Hack +notice: this allows log messages to appear before anything is +evaluated because it provides insertable space at the top of the +buffer.") + +(defun skewer-repl-process () + "Return the process for the skewer REPL." + (get-buffer-process (current-buffer))) + +(defface skewer-repl-log-face + '((((class color) (background light)) + :foreground "#77F") + (((class color) (background dark)) + :foreground "#77F")) + "Face for skewer.log() messages." + :group 'skewer) + +(define-derived-mode skewer-repl-mode comint-mode "js-REPL" + "Provide a REPL into the visiting browser." + :group 'skewer + :syntax-table emacs-lisp-mode-syntax-table + (setq comint-prompt-regexp (concat "^" (regexp-quote skewer-repl-prompt)) + comint-input-sender 'skewer-input-sender + comint-process-echoes nil) + (unless (comint-check-proc (current-buffer)) + (insert skewer-repl-welcome) + (start-process "skewer-repl" (current-buffer) nil) + (set-process-query-on-exit-flag (skewer-repl-process) nil) + (goto-char (point-max)) + (set (make-local-variable 'comint-inhibit-carriage-motion) t) + (comint-output-filter (skewer-repl-process) skewer-repl-prompt) + (set-process-filter (skewer-repl-process) 'comint-output-filter))) + +(defun skewer-repl-toggle-strict-mode () + "Toggle strict mode for expressions evaluated by the REPL." + (interactive) + (setq skewer-repl-strict-p (not skewer-repl-strict-p)) + (message "REPL strict mode %s" + (if skewer-repl-strict-p "enabled" "disabled"))) + +(defun skewer-input-sender (_ input) + "REPL comint handler." + (skewer-eval input 'skewer-post-repl + :verbose t :strict skewer-repl-strict-p)) + +(defun skewer-post-repl (result) + "Callback for reporting results in the REPL." + (let ((buffer (get-buffer "*skewer-repl*")) + (output (cdr (assoc 'value result)))) + (when buffer + (with-current-buffer buffer + (comint-output-filter (skewer-repl-process) + (concat output "\n" skewer-repl-prompt)))))) + +(defvar skewer-repl-types + '(("log" . skewer-repl-log-face) + ("error" . skewer-error-face)) + "Faces to use for different types of log messages.") + +(defun skewer-log-filename (log) + "Create a log string for the source file in LOG if present." + (let ((name (cdr (assoc 'filename log))) + (line (cdr (assoc 'line log))) + (column (cdr (assoc 'column log)))) + (when name + (concat (format "\n at %s:%s" name line) + (if column (format ":%s" column)))))) + +(defun skewer-post-log (log) + "Callback for logging messages to the REPL." + (let* ((buffer (get-buffer "*skewer-repl*")) + (face (cdr (assoc (cdr (assoc 'type log)) skewer-repl-types))) + (value (or (cdr (assoc 'value log)) "")) + (output (propertize value 'font-lock-face face))) + (when buffer + (with-current-buffer buffer + (save-excursion + (goto-char (point-max)) + (forward-line 0) + (backward-char) + (insert (concat "\n" output (skewer-log-filename log)))))))) + +(defcustom skewer-path-strip-level 1 + "Number of folders which will be stripped from url when discovering paths. +Use this to limit path matching to files in your filesystem. You +may want to add some folders to `compilation-search-path', so +matched files can be found." + :type 'number + :group 'skewer) + +(defun skewer-repl-mode-compilation-shell-hook () + "Setup compilation shell minor mode for highlighting files" + (let ((error-re (format "^[ ]*at https?://[^/]+/\\(?:[^/]+/\\)\\{%d\\}\\([^:?#]+\\)\\(?:[?#][^:]*\\)?:\\([[:digit:]]+\\)\\(?::\\([[:digit:]]+\\)\\)?$" skewer-path-strip-level))) + (setq-local compilation-error-regexp-alist `((,error-re 1 2 3 2)))) + (compilation-shell-minor-mode 1)) + +;;;###autoload +(defun skewer-repl--response-hook (response) + "Catches all browser messages logging some to the REPL." + (let ((type (cdr (assoc 'type response)))) + (when (member type '("log" "error")) + (skewer-post-log response)))) + +;;;###autoload +(defun skewer-repl () + "Start a JavaScript REPL to be evaluated in the visiting browser." + (interactive) + (when (not (get-buffer "*skewer-repl*")) + (with-current-buffer (get-buffer-create "*skewer-repl*") + (skewer-repl-mode))) + (pop-to-buffer (get-buffer "*skewer-repl*"))) + +;;;###autoload +(eval-after-load 'skewer-mode + '(progn + (add-hook 'skewer-response-hook #'skewer-repl--response-hook) + (add-hook 'skewer-repl-mode-hook #'skewer-repl-mode-compilation-shell-hook) + (define-key skewer-mode-map (kbd "C-c C-z") #'skewer-repl))) + +(provide 'skewer-repl) + +;;; skewer-repl.el ends here diff --git a/elpa/skewer-mode-20150914.1304/skewer-repl.elc b/elpa/skewer-mode-20150914.1304/skewer-repl.elc new file mode 100644 index 0000000000000000000000000000000000000000..a2bf94d098036dafc0ab3973efd09e063c10b9c9 GIT binary patch literal 7076 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 literal 0 HcmV?d00001 diff --git a/elpa/skewer-mode-20150914.1304/skewer-setup.el b/elpa/skewer-mode-20150914.1304/skewer-setup.el new file mode 100644 index 0000000..77aea1b --- /dev/null +++ b/elpa/skewer-mode-20150914.1304/skewer-setup.el @@ -0,0 +1,21 @@ +;;; skewer-setup.el --- automatic setup for the Skewer minor modes -*- lexical-binding: t; -*- + +;; This is free and unencumbered software released into the public domain. + +;;; Commentary: + +;; This exists as a separate file so that Skewer need not be fully +;; loaded just to use this setup function. + +;;; Code: + +;;;###autoload +(defun skewer-setup () + "Fully integrate Skewer into js2-mode, css-mode, and html-mode buffers." + (add-hook 'js2-mode-hook 'skewer-mode) + (add-hook 'css-mode-hook 'skewer-css-mode) + (add-hook 'html-mode-hook 'skewer-html-mode)) + +(provide 'skewer-setup) + +;;; skewer-setup.el ends here diff --git a/elpa/skewer-mode-20150914.1304/skewer-setup.elc b/elpa/skewer-mode-20150914.1304/skewer-setup.elc new file mode 100644 index 0000000000000000000000000000000000000000..49f4ca82fc742d9782cced3ac5fade88b0486178 GIT binary patch literal 708 zcmbtRO-sW-5bZgCz@v{=u!Sb%L#?G3r6>sA>aF##W;bT-X18QEivD^hX{`j0E(~Pe z8{T^}S=>D?PX>cQuvjdxbk$B9CA&sj+*KkcysMhDvq&$aIGQI>($OE!IDuNkr7?P~e(fV>p7$UWzrcJ{(bkV7skUKETIJ(I&e1SM*tRSjSAV4CfH`40bj zZGiv2AP7b`vlRD@F`s-LuU>266;@mI!Fd^Qc%w9|oK#cfM2D|-@6uPMYw^+)1)n53 z4aQOx!e~J_r%oay<(nNw>lnjL7ROu(SGpN)(xmO$%D66i$R#6JEfUX$So6ONOXs%7 tDEsc<&}KVE>oGrhf1~#3;{wmfFdm&D!bOrzo+rV0SG#x3vb`-P!8g1T)gS-> literal 0 HcmV?d00001 diff --git a/elpa/skewer-mode-20150914.1304/skewer.js b/elpa/skewer-mode-20150914.1304/skewer.js new file mode 100644 index 0000000..07b9c0b --- /dev/null +++ b/elpa/skewer-mode-20150914.1304/skewer.js @@ -0,0 +1,413 @@ +/** + * @fileOverview Live browser interaction with Emacs + * @version 1.4 + */ + +/** + * Connects to Emacs and waits for a request. After handling the + * request it sends back the results and queues itself for another + * request. + * @namespace Holds all of Skewer's functionality. + */ +function skewer() { + function callback(request) { + var result = skewer.fn[request.type](request); + if (result) { + result = skewer.extend({ + id: request.id, + type: request.type, + status: 'success', + value: '' + }, result); + skewer.postJSON(skewer.host + "/skewer/post", result, callback); + } else { + skewer.getJSON(skewer.host + "/skewer/get", callback); + } + }; + skewer.getJSON(skewer.host + "/skewer/get", callback); +} + +/** + * Get a JSON-encoded object from a server. + * @param {String} url The location of the remote server + * @param {Function} [callback] The callback to receive a response object + */ +skewer.getJSON = function(url, callback) { + var xhr = new XMLHttpRequest(); + xhr.onreadystatechange = function() { + if (xhr.readyState === 4 && xhr.status === 200) { + callback(JSON.parse(xhr.responseText)); + } + }; + xhr.open('GET', url, true); + xhr.send(); +}; + +/** + * Send a JSON-encoded object to a server. + * @param {String} url The location of the remote server + * @param {Object} object The object to transmit to the server + * @param {Function} [callback] The callback to receive a response object + */ +skewer.postJSON = function(url, object, callback) { + var xhr = new XMLHttpRequest(); + xhr.onreadystatechange = function() { + if (callback && xhr.readyState === 4 && xhr.status === 200) { + callback(JSON.parse(xhr.responseText)); + } + }; + xhr.open('POST', url, true); + xhr.setRequestHeader("Content-Type", "text/plain"); // CORS + xhr.send(JSON.stringify(object)); +}; + +/** + * Add the properties other objects to a target object (jQuery.extend). + * @param {Object} target The object to receive new properties + * @param {...Object} objects Source objects for properties + * @returns The target object + */ +skewer.extend = function(target) { + for (var i = 1; i < arguments.length; i++) { + var object = arguments[i]; + for (var key in object) { + if (object.hasOwnProperty(key)) { + target[key] = object[key]; + } + } + } + return target; +}; + +/** + * Globally evaluate an expression and return the result. This + * only works when the implementation's indirect eval performs + * a global eval. If not, there's no alternative, since a return value + * is essential. + * + * @see http://perfectionkills.com/global-eval-what-are-the-options/ + * + * @param expression A string containing an expression to evaluate + * @returns The result of the evaluation + */ +skewer.globalEval = (function() { + var eval0 = (function(original, Object) { + try { + return [eval][0]('Object') === original; + } catch (e) { + return false; + } + }(Object, false)); + if (eval0) { + return function(expression) { + return [eval][0](expression); + }; + } else { + return function(expression) { // Safari + return eval.call(window, expression); + }; + } +}()); + +/** + * Same as Date.now(), supplied for pre-ES5 JS (<=IE8). + * @returns {number} The epoch time in milliseconds + */ +skewer.now = function() { + return new Date().valueOf(); +}; + +/** + * Handlers accept a request object from Emacs and return either a + * logical false (no response) or an object to return to Emacs. + * @namespace Request handlers. + */ +skewer.fn = {}; + +/** + * Handles an code evaluation request from Emacs. + * @param request The request object sent by Emacs + * @returns The result object to be returned to Emacs + */ +skewer.fn.eval = function(request) { + var result = { + strict: request.strict + }; + var start = skewer.now(); + try { + var prefix = request.strict ? '"use strict";\n' : ""; + var value = skewer.globalEval(prefix + request.eval); + result.value = skewer.safeStringify(value, request.verbose); + } catch (error) { + result = skewer.errorResult(error, result, request); + } + result.time = (skewer.now() - start) / 1000; + return result; +}; + +/** + * Load a hosted script named by the request. + * @param request The request object sent by Emacs + * @returns The result object to be returned to Emacs + */ +skewer.fn.script = function(request) { + var script = document.createElement('script'); + script.src = skewer.host + request.eval; + document.body.appendChild(script); + return {value: JSON.stringify(request.eval)}; +}; + +/** + * A keep-alive and connecton testing handler. + * @param request The request object sent by Emacs + * @returns The result object to be returned to Emacs + */ +skewer.fn.ping = function(request) { + return { + type: 'pong', + date: skewer.now() / 1000, + value: request.eval + }; +}; + +/** + * Establish a new stylesheet with the provided value. + */ +skewer.fn.css = function(request) { + var style = document.createElement('style'); + style.type = 'text/css'; + style.className = 'skewer'; + if (style.styleSheet) { // < IE9 + style.styleSheet.cssText = request.eval; + } else { + style.appendChild(document.createTextNode(request.eval)); + } + document.body.appendChild(style); + return {}; +}; + +/** + * Remove all of Skewer's style tags from the document. + */ +skewer.fn.cssClearAll = function(request) { + var styles = document.body.querySelectorAll('style.skewer'); + for (var i = 0; i < styles.length; i++) { + styles[i].parentNode.removeChild(styles[i]); + } + return {}; +}; + +/** + * HTML evaluator, appends or replaces a selection with given HTML. + */ +skewer.fn.html = function(request) { + function buildSelector(ancestry) { + return ancestry.map(function(tag) { + return tag[0] + ':nth-of-type(' + tag[1] + ')'; + }).join(' > '); + } + function query(ancestry) { + return document.querySelector(buildSelector(ancestry)); + } + function htmlToNode(html) { + var wrapper = document.createElement('div'); + wrapper.innerHTML = html; + return wrapper.firstChild; + } + + var target = query(request.ancestry); + + if (target == null) { + /* Determine missing part of the ancestry. */ + var path = request.ancestry.slice(0); // copy + var missing = []; + while (query(path) == null) { + missing.push(path.pop()); + } + + /* Build up the missing elements. */ + target = query(path); + while (missing.length > 0) { + var tag = missing.pop(), + name = tag[0], + nth = tag[1]; + var empty = null; + var count = target.querySelectorAll(name).length; + for (; count < nth; count++) { + empty = document.createElement(tag[0]); + target.appendChild(empty); + } + target = empty; + } + } + + target.parentNode.replaceChild(htmlToNode(request.eval), target); + return {}; +}; + +/** + * Fetch the HTML contents of selector. + */ +skewer.fn.fetchselector = function(request) { + var element = document.querySelector(request.eval); + return { value: element.innerHTML }; +}; + +/** + * Host of the skewer script (CORS support). + * @type string + */ +(function() { + var script = document.querySelector('script[src$="/skewer"]'); + if (script) { + skewer.host = script.src.match(/\w+:\/\/[^/]+/)[0]; + } else { + skewer.host = ''; // default to the current host + } +}()); + +/** + * Stringify a potentially circular object without throwing an exception. + * @param object The object to be printed. + * @param {boolean} verbose Enable more verbose output. + * @returns {string} The printed object. + */ +skewer.safeStringify = function (object, verbose) { + "use strict"; + var circular = "#"; + var seen = []; + + var stringify = function(obj) { + if (obj === true) { + return "true"; + } else if (obj === false) { + return "false"; + } else if (obj === undefined) { + return "undefined"; + } else if (obj === null) { + return "null"; + } else if (typeof obj === "number") { + return obj.toString(); + } else if (obj instanceof Array) { + if (seen.indexOf(obj) >= 0) { + return circular; + } else { + seen.push(obj); + return "[" + obj.map(function(e) { + return stringify(e); + }).join(", ") + "]"; + } + } else if (typeof obj === "string") { + return JSON.stringify(obj); + } else if (window.Node != null && obj instanceof Node) { + return obj.toString(); // DOM elements can't stringify + } else if (typeof obj === "function") { + if (verbose) + return obj.toString(); + else + return "Function"; + } else if (Object.prototype.toString.call(obj) === '[object Date]') { + if (verbose) + return JSON.stringify(obj); + else + return obj.toString(); + } else { + if (verbose) { + if (seen.indexOf(obj) >= 0) + return circular; + else + seen.push(obj); + var pairs = []; + for (var key in obj) { + if (obj.hasOwnProperty(key)) { + var pair = JSON.stringify(key) + ":"; + pair += stringify(obj[key]); + pairs.push(pair); + } + } + return "{" + pairs.join(',') + "}"; + } else { + try { + return obj.toString(); + } catch (error) { + return ({}).toString(); + } + } + } + }; + + try { + return stringify(object); + } catch (error) { + return skewer.safeStringify(object, false); + } +}; + +/** + * Log an object to the Skewer REPL in Emacs (console.log). + * @param message The object to be logged. + */ +skewer.log = function() { + "use strict"; + for (var i = 0; i < arguments.length; i++) { + var log = { + type: "log", + value: skewer.safeStringify(arguments[i], true) + }; + skewer.postJSON(skewer.host + "/skewer/post", log); + } +}; + +/** + * Report an error event to the REPL. + * @param event An error event object. + */ +skewer.error = function(event) { + "use strict"; + var log = { + type: "error", + value: event.message, + filename: event.filename, + line: event.lineno, + column: event.column + }; + skewer.postJSON(skewer.host + "/skewer/post", log); +}; + +/** + * Prepare a result when an error occurs evaluating Javascript code. + * @param error The error object given by catch. + * @param result The resutl object to return to Emacs. + * @param request The request object from Emacs. + * @return The result object to send back to Emacs. + */ +skewer.errorResult = function(error, result, request) { + "use strict"; + return skewer.extend({}, result, { + value: error.toString(), + status: 'error', + error: { + name: error.name, + stack: error.stack, + type: error.type, + message: error.message, + eval: request.eval + } + }); +}; + +if (window.addEventListener) { + window.addEventListener('error', skewer.error); + if (document.readyState === 'complete') { + skewer(); + } else { + window.addEventListener('load', skewer); + } +} else { // < IE9 + window.attachEvent('onerror', skewer.error); + if (document.readyState === 'complete') { + skewer(); + } else { + window.attachEvent('onload', skewer); + } +} diff --git a/elpa/swiper-20160219.536/colir.el b/elpa/swiper-20160219.536/colir.el new file mode 100644 index 0000000..792033f --- /dev/null +++ b/elpa/swiper-20160219.536/colir.el @@ -0,0 +1,102 @@ +;;; colir.el --- Color blending library -*- lexical-binding: t -*- + +;; Copyright (C) 2015 Free Software Foundation, Inc. + +;; Author: Oleh Krehel + +;; This file is part of GNU Emacs. + +;; This file is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 3, or (at your option) +;; any later version. + +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; For a full copy of the GNU General Public License +;; see . + +;;; Commentary: +;; +;; This package solves the problem of adding a face with a background +;; to text which may already have a background. In all conflicting +;; areas, instead of choosing either the original or the new +;; background face, their blended sum is used. +;; +;; The blend mode functions are taken from http://en.wikipedia.org/wiki/Blend_modes. + +;;; Code: + +(require 'color) + +(defcustom colir-compose-method 'colir-compose-alpha + "Select a method to compose two color channels." + :type '(choice + (const colir-compose-alpha) + (const colir-compose-overlay) + (const colir-compose-soft-light)) + :group 'ivy) + +(defun colir-compose-soft-light (a b) + "Compose A and B channels." + (if (< b 0.5) + (+ (* 2 a b) (* a a (- 1 b b))) + (+ (* 2 a (- 1 b)) (* (sqrt a) (- (* 2 b) 1))))) + +(defun colir-compose-overlay (a b) + "Compose A and B channels." + (if (< a 0.5) + (* 2 a b) + (- 1 (* 2 (- 1 a) (- 1 b))))) + +(defun colir-compose-alpha (a b &optional alpha gamma) + "Compose A and B channels." + (setq alpha (or alpha 0.5)) + (setq gamma (or gamma 2.2)) + (+ (* (expt a gamma) alpha) (* (expt b gamma) (- 1 alpha)))) + +(defun colir-blend (c1 c2) + "Blend the two colors C1 and C2 using `colir-compose-method'. +C1 and C2 are triples of floats in [0.0 1.0] range." + (apply #'color-rgb-to-hex + (cl-mapcar + (if (eq (frame-parameter nil 'background-mode) 'dark) + ;; this method works nicely for dark themes + 'colir-compose-soft-light + colir-compose-method) + c1 c2))) + +(defun colir-blend-face-background (start end face &optional object) + "Append to the face property of the text from START to END the face FACE. +When the text already has a face with a non-plain background, +blend it with the background of FACE. +Optional argument OBJECT is the string or buffer containing the text. +See also `font-lock-append-text-property'." + (let (next prev) + (while (/= start end) + (setq next (next-single-property-change start 'face object end)) + (setq prev (get-text-property start 'face object)) + (when (listp prev) + (setq prev (cl-find-if #'atom prev))) + (if (facep prev) + (let ((background-prev (face-background prev))) + (progn + (put-text-property + start next 'face + (if background-prev + (cons `(background-color + . ,(colir-blend + (color-name-to-rgb background-prev) + (color-name-to-rgb (face-background face nil t)))) + prev) + (list face prev)) + object))) + (put-text-property start next 'face face object)) + (setq start next)))) + +(provide 'colir) + +;;; colir.el ends here diff --git a/elpa/swiper-20160219.536/colir.elc b/elpa/swiper-20160219.536/colir.elc new file mode 100644 index 0000000000000000000000000000000000000000..21ef27907257a0f61433b33d08e9219b9f4a3dc7 GIT binary patch literal 2513 zcmb_e`)}Je5O(uW0s{lKpZepjcGt#3B}jB^*Ug5_ak8yLAH$NNKli>gGY z_5S*ON6B^E$1tEXK$<3x$9sJDosUi*jc+y@jpotO5smdcPf``xA4x{1a~YO&rHV4q z8Ht|fd&9sB?D5;g%t)pw>D(mq}2lfZ2a&cg)>>m(7?`n_Ia5_ zRB8%kMwg0GEjJ#i{V7SwB2835W(Gmgt=>f(zUadSeCemzY#v-LjdDXBDQZo+zK;>y znuvfG0;7v@h|$C7pPXPGOuBp;1Q?JAx_9;_!XLEgMWNm-l0qSTsV*p7lt$0pNQJ2^ zlzSzML|!6OI86$?IL~#d+_^F{9Z|fIvsj2E%YL%3c5ENSO!~Lm_?hH+x4+cqT}$dc6&16bXiGEhuhCr;=S!# z_Ug;Cmz4}s>U%xoRQ2C}Xh`CP(?c3zhV9@Ja{4Z|RFhx&cG_yKJ{V5q+^`Q-H177v5tB#m?5Gwe`}jwkKSA@MJUY!V{$4<%VH?zxE{v zdc(?@0FND~3Meu&wT600K%otJC}JV3yKRlS8fi9#tqPImZWqk!`EDfS>(={<04tS z{-D~|MRhIA-Tn&PqDP}Vw{g}s)UgC_vVU`>(8-MlAzyLj`v-8oP=L8lyeR8sv z|7A2j^_tISDqD-ov`{iy(hP+z$*QfIo$WYz${lEJ|Gj1v-o%iV;#b$FY)AFR(-nGU zFcA2fXRzua}pGAwyZoAj~uw^t@QGXEZ?*8=?P|-^*6M(}|I=jyP z?W(p=HT71zDl9PE4-Bn4EN=T2%4}70{Tt|Pe)k2R4X_6IoV^{^xWoHT7>@6|nzP3O zOg01OE6m*T4%@dTtz*YIhPXIuIQx!s;_QD1{e9HAFPN^N)7fU7&YrV}qre9v^aaS* z7h4U?+$kBF8OM<;GzDmDIJw*prm6zNRGH0SGuGn-DM(_H=&e>PxAXN7=8F&St>cTn qYx|+?cNL)Qj*CA|ic1QWMa=TU72yoTArsC4OuR}^K~+oYH2(qK3EpM^ literal 0 HcmV?d00001 diff --git a/elpa/swiper-20160219.536/dir b/elpa/swiper-20160219.536/dir new file mode 100644 index 0000000..2347cbc --- /dev/null +++ b/elpa/swiper-20160219.536/dir @@ -0,0 +1,18 @@ +This is the file .../info/dir, which contains the +topmost node of the Info hierarchy, called (dir)Top. +The first time you invoke Info you start off looking at this node. + +File: dir, Node: Top This is the top of the INFO tree + + This (the Directory node) gives a menu of major topics. + Typing "q" exits, "?" lists all Info commands, "d" returns here, + "h" gives a primer for first-timers, + "mEmacs" visits the Emacs manual, etc. + + In Emacs, you can click mouse button 2 on a menu item or cross reference + to select it. + +* Menu: + +Emacs +* Ivy: (ivy). Using Ivy for completion. diff --git a/elpa/swiper-20160219.536/ivy-help.org b/elpa/swiper-20160219.536/ivy-help.org new file mode 100644 index 0000000..989c0e4 --- /dev/null +++ b/elpa/swiper-20160219.536/ivy-help.org @@ -0,0 +1,138 @@ +* Ivy Generic Help + +=ivy= is an Emacs incremental completion framework. + +- Narrow the list by typing some pattern, +- Multiple patterns are allowed by separating with a space, +- Select with ~C-n~ and ~C-p~, choose with ~RET~. + +** Help + +- ~C-h m~ :: Pop to this generic help buffer. + +** Basic Operations +*** Key bindings for navigation + +- ~C-n~ (=ivy-next-line=) :: next candidate. +- ~C-p~ (=ivy-previous-line=) :: previous candidate. +- ~C-v~ (=ivy-scroll-up-command=) :: next page. +- ~M-v~ (=ivy-scroll-down-command=) :: previous page. +- ~M-<~ (=ivy-beginning-of-buffer=) :: first candidate. +- ~M->~ (=ivy-end-of-buffer=) :: last candidate. + +*** Key bindings for single selection + +When selecting a candidate, an action is called on it. You can think +of an action as a function that takes the selected candidate as an +argument and does something with it. + +Ivy can offer several actions from which to choose. This can be +independently composed with whether you want to end completion when +the action is called. Depending on this, the short term is either +"calling an action" or "exiting with action". + +~C-m~ or ~RET~ (=ivy-done=) - exit with the current action. + +~M-o~ (=ivy-dispatching-done=) - select an action and exit with it. + +~C-j~ (=ivy-alt-done=) - when the candidate is a directory, enter +it. Otherwise, exit with the current action. + +~TAB~ (=ivy-partial-or-done=) - attempt partial completion, extending +the current input as much as possible. ~TAB TAB~ is the same as ~C-j~. + +~C-M-j~ (=ivy-immediate-done=) - exit with the current action, calling +it on the /current input/ instead of the current candidate. This is +useful especially when creating new files or directories - often the +input will match an existing file, which you don't want to select. + +~C-'~ (=ivy-avy=) - select a candidate from the current page with avy +and exit with the current action. + +** Advanced Operations +*** Key bindings for multiple selection + +For repeatedly applying multiple actions or acting on multiple +candidates, Ivy does not close the minibuffer between commands. It +keeps the minibuffer open for applying subsequent actions. + +Adding an extra meta key to the normal key chord invokes the special +version of the regular commands that enables applying multiple +actions. + +~C-M-m~ (=ivy-call=) is the non-exiting version of ~C-m~ (=ivy-done=). + +~C-M-n~ (=ivy-next-line-and-call=) combines ~C-n~ and ~C-M-m~. + +~C-M-p~ (=ivy-previous-line-and-call=) combines ~C-p~ and ~C-M-m~. + +~C-M-o~ (=ivy-dispatching-call=) is a non-exiting version of ~M-o~ +(=ivy-dispatching-done=). + +*** Key bindings that alter the minibuffer input + +~M-n~ (=ivy-next-history-element=) select the next history element or +symbol/URL at point. + +~M-p~ (=ivy-previous-history-element=) select the previous history +element. + +~C-r~ (=ivy-reverse-i-search=) start a recursive completion session to +select a history element. + +~M-i~ (=ivy-insert-current=) insert the current candidate into the +minibuffer. Useful for copying and renaming files, for example: ~M-i~ +to insert the original file name string, edit it, and then ~C-m~ to +complete the renaming. + +~M-j~ (=ivy-yank-word=) insert the sub-word at point into the +minibuffer. + +~S-SPC~ (=ivy-restrict-to-matches=) deletes the current input, and +resets the candidates list to the currently restricted matches. This +is how Ivy provides narrowing in successive tiers. + +*** Other key bindings + +~M-w~ (=ivy-kill-ring-save=) copies the selected candidates to the +kill ring; when the region is active, copies the active region. + +*** Saving the current completion session to a buffer + +~C-c C-o~ (=ivy-occur=) saves the current candidates to a new buffer; +the list is active in the new buffer. + +~RET~ or ~mouse-1~ in the new buffer calls the appropriate action on +the selected candidate. + +Ivy has no limit on the number of active buffers like these. + +Ivy takes care of making these buffer names unique. It applies +descriptive names, for example: =*ivy-occur counsel-describe-variable +"function$*=. + +*** Global key bindings + +=ivy-resume= recalls the state of the completion session just before +its last exit. Useful after an accidental ~C-m~ (=ivy-done=). +Recommended global binding: ~C-c C-r~. + +*** Hydra in the minibuffer + +~C-o~ (=hydra-ivy/body=) invokes Hydra menus with key shortcuts. + +When in Hydra, ~C-o~ or ~i~ resumes editing. + +Hydra reduces key strokes, for example: ~C-n C-n C-n C-n~ is ~C-o +jjjj~ in Hydra. Besides certain shorter keys, Hydra shows useful info +such as case folding and the current action. + +Additionally, here are the keys that are otherwise not bound: + +- ~<~ and ~>~ adjust the height of the minibuffer. +- ~c~ (=ivy-toggle-calling=) - toggle calling the current action each + time a different candidate is selected. +- ~m~ (=ivy-toggle-fuzzy=) - toggle regex matcher. +- ~w~ and ~s~ scroll the actions list. + +Minibuffer editing is disabled when Hydra is active. diff --git a/elpa/swiper-20160219.536/ivy-hydra.el b/elpa/swiper-20160219.536/ivy-hydra.el new file mode 100644 index 0000000..44f8754 --- /dev/null +++ b/elpa/swiper-20160219.536/ivy-hydra.el @@ -0,0 +1,93 @@ +;;; ivy-hydra.el --- Additional key bindings for Ivy -*- lexical-binding: t -*- + +;; Copyright (C) 2015 Free Software Foundation, Inc. + +;; Author: Oleh Krehel + +;; This file is part of GNU Emacs. + +;; This file is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 3, or (at your option) +;; any later version. + +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; For a full copy of the GNU General Public License +;; see . + +;;; Commentary: +;; +;; This package provides the `hydra-ivy/body' command, which is a +;; quasi-prefix map, with many useful bindings. These bindings are +;; shorter than usual, using mostly unprefixed keys. + +;;; Code: +(require 'hydra nil t) +(require 'ivy) + +(eval-when-compile + (unless (or (featurep 'hydra) (package-installed-p 'hydra)) + (defmacro defhydra (name &rest _) + "This is a stub for the uninstalled `hydra' package." + `(defun ,(intern (format "%S/body" name)) () + (interactive) + (let ((enable-recursive-minibuffers t)) + (if (yes-or-no-p "Package `hydra' not installed. Install?") + (progn + (package-install 'hydra) + (save-window-excursion + (find-library "ivy-hydra") + (byte-compile-file (buffer-file-name) t))) + (error "Please install `hydra' and recompile/reinstall `ivy-hydra'"))))))) + +(defun ivy--matcher-desc () + (if (eq ivy--regex-function + 'ivy--regex-fuzzy) + "fuzzy" + "ivy")) + +(defhydra hydra-ivy (:hint nil + :color pink) + " +^ ^ ^ ^ ^ ^ | ^Call^ ^ ^ | ^Cancel^ | ^Options^ | Action _w_/_s_/_a_: %-14s(ivy-action-name) +^-^-^-^-^-^-+-^-^---------^-^--+-^-^------+-^-^-------+-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^--------------------------- +^ ^ _k_ ^ ^ | _f_ollow occ_u_r | _i_nsert | _c_: calling %-5s(if ivy-calling \"on\" \"off\") _C_ase-fold: %-10`ivy-case-fold-search +_h_ ^+^ _l_ | _d_one ^ ^ | _o_ops | _m_: matcher %-5s(ivy--matcher-desc)^^^^^^^^^^^^ _t_runcate: %-11`truncate-lines +^ ^ _j_ ^ ^ | _g_o ^ ^ | ^ ^ | _<_/_>_: shrink/grow^^^^^^^^^^^^^^^^^^^^^^^^^^^^ _D_efinition of this menu +" + ;; arrows + ("h" ivy-beginning-of-buffer) + ("j" ivy-next-line) + ("k" ivy-previous-line) + ("l" ivy-end-of-buffer) + ;; actions + ("o" keyboard-escape-quit :exit t) + ("C-g" keyboard-escape-quit :exit t) + ("i" nil) + ("C-o" nil) + ("f" ivy-alt-done :exit nil) + ("C-j" ivy-alt-done :exit nil) + ("d" ivy-done :exit t) + ("g" ivy-call) + ("C-m" ivy-done :exit t) + ("c" ivy-toggle-calling) + ("m" ivy-toggle-fuzzy) + (">" ivy-minibuffer-grow) + ("<" ivy-minibuffer-shrink) + ("w" ivy-prev-action) + ("s" ivy-next-action) + ("a" ivy-read-action) + ("t" (setq truncate-lines (not truncate-lines))) + ("C" ivy-toggle-case-fold) + ("u" ivy-occur :exit t) + ("D" (ivy-exit-with-action + (lambda (_) (find-function 'hydra-ivy/body))) + :exit t)) + +(provide 'ivy-hydra) + +;;; ivy-hydra.el ends here diff --git a/elpa/swiper-20160219.536/ivy-hydra.elc b/elpa/swiper-20160219.536/ivy-hydra.elc new file mode 100644 index 0000000000000000000000000000000000000000..4ff7b384dd71a358c99758e42d5078c1f9512098 GIT binary patch literal 1143 zcmbtUO=}x55OoiQ;6KnFC!0cIh#arhNg7NkCFBt3A<*99K;_k}EwYweN$b@4^?j0E zm(bp_FuRgw^xk~#1L_wKx_8FI7{+;I2vA+!!oO% zOk9v^TXL&tmgZSS*o0v}E59#HpaxLX1rDS)RxM3U+SMU?W9Q)%S|1`Qty$Bas=OM? ztA8-G1BP{xYGIKOzohcU5P!~|pEp!A9Xv8Yu~Y7f0tU}EiYH^WdqQz-W9FUDlS51O$l`C&QIqUEs+btB7%|qw{nh`2R@AJci3^(VCf89(75T${rWABgkVe@_=qb&1-=vWn%9EU);5< t0%J6Dc>9pkXdzeIAH|vHy?#$}jM`u321FC49$0y|Ht6Hrd)bdc|2JEuTzvol literal 0 HcmV?d00001 diff --git a/elpa/swiper-20160219.536/ivy.el b/elpa/swiper-20160219.536/ivy.el new file mode 100644 index 0000000..26f6167 --- /dev/null +++ b/elpa/swiper-20160219.536/ivy.el @@ -0,0 +1,2789 @@ +;;; ivy.el --- Incremental Vertical completYon -*- lexical-binding: t -*- + +;; Copyright (C) 2015 Free Software Foundation, Inc. + +;; Author: Oleh Krehel +;; URL: https://github.com/abo-abo/swiper +;; Package-Requires: ((emacs "24.1")) +;; Keywords: matching + +;; This file is part of GNU Emacs. + +;; This file is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 3, or (at your option) +;; any later version. + +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; For a full copy of the GNU General Public License +;; see . + +;;; Commentary: +;; +;; This package provides `ivy-read' as an alternative to +;; `completing-read' and similar functions. +;; +;; There's no intricate code to determine the best candidate. +;; Instead, the user can navigate to it with `ivy-next-line' and +;; `ivy-previous-line'. +;; +;; The matching is done by splitting the input text by spaces and +;; re-building it into a regex. +;; So "for example" is transformed into "\\(for\\).*\\(example\\)". + +;;; Code: +(require 'cl-lib) +(require 'ffap) + +;;* Customization +(defgroup ivy nil + "Incremental vertical completion." + :group 'convenience) + +(defgroup ivy-faces nil + "Font-lock faces for `ivy'." + :group 'ivy) + +(defface ivy-current-match + '((((class color) (background light)) + :background "#1a4b77" :foreground "white") + (((class color) (background dark)) + :background "#65a7e2" :foreground "black")) + "Face used by Ivy for highlighting the current match.") + +(defface ivy-minibuffer-match-face-1 + '((((class color) (background light)) + :background "#d3d3d3") + (((class color) (background dark)) + :background "#555555")) + "The background face for `ivy' minibuffer matches.") + +(defface ivy-minibuffer-match-face-2 + '((((class color) (background light)) + :background "#e99ce8" :weight bold) + (((class color) (background dark)) + :background "#777777" :weight bold)) + "Face for `ivy' minibuffer matches numbered 1 modulo 3.") + +(defface ivy-minibuffer-match-face-3 + '((((class color) (background light)) + :background "#bbbbff" :weight bold) + (((class color) (background dark)) + :background "#7777ff" :weight bold)) + "Face for `ivy' minibuffer matches numbered 2 modulo 3.") + +(defface ivy-minibuffer-match-face-4 + '((((class color) (background light)) + :background "#ffbbff" :weight bold) + (((class color) (background dark)) + :background "#8a498a" :weight bold)) + "Face for `ivy' minibuffer matches numbered 3 modulo 3.") + +(defface ivy-confirm-face + '((t :foreground "ForestGreen" :inherit minibuffer-prompt)) + "Face used by Ivy for a confirmation prompt.") + +(defface ivy-match-required-face + '((t :foreground "red" :inherit minibuffer-prompt)) + "Face used by Ivy for a match required prompt.") + +(setcdr (assoc load-file-name custom-current-group-alist) 'ivy) + +(defface ivy-subdir + '((t (:inherit 'dired-directory))) + "Face used by Ivy for highlighting subdirs in the alternatives.") + +(defface ivy-modified-buffer + '((t :inherit 'default)) + "Face used by Ivy for highlighting modified file visiting buffers.") + +(defface ivy-remote + '((t (:foreground "#110099"))) + "Face used by Ivy for highlighting remotes in the alternatives.") + +(defface ivy-virtual + '((t :inherit font-lock-builtin-face)) + "Face used by Ivy for matching virtual buffer names.") + +(defcustom ivy-height 10 + "Number of lines for the minibuffer window." + :type 'integer) + +(defcustom ivy-count-format "%-4d " + "The style to use for displaying the current candidate count for `ivy-read'. +Set this to \"\" to suppress the count visibility. +Set this to \"(%d/%d) \" to display both the index and the count." + :type '(choice + (const :tag "Count disabled" "") + (const :tag "Count matches" "%-4d ") + (const :tag "Count matches and show current match" "(%d/%d) ") + string)) + +(defcustom ivy-wrap nil + "When non-nil, wrap around after the first and the last candidate." + :type 'boolean) + +(defcustom ivy-display-style (unless (version< emacs-version "24.5") 'fancy) + "The style for formatting the minibuffer. + +By default, the matched strings are copied as is. + +The fancy display style highlights matching parts of the regexp, +a behavior similar to `swiper'. + +This setting depends on `add-face-text-property' - a C function +available as of Emacs 24.5. Fancy style will render poorly in +earlier versions of Emacs." + :type '(choice + (const :tag "Plain" nil) + (const :tag "Fancy" fancy))) + +(defcustom ivy-on-del-error-function 'minibuffer-keyboard-quit + "The handler for when `ivy-backward-delete-char' throws. +Usually a quick exit out of the minibuffer." + :type 'function) + +(defcustom ivy-extra-directories '("../" "./") + "Add this to the front of the list when completing file names. +Only \"./\" and \"../\" apply here. They appear in reverse order." + :type '(repeat :tag "Dirs" + (choice + (const :tag "Parent Directory" "../") + (const :tag "Current Directory" "./")))) + +(defcustom ivy-use-virtual-buffers nil + "When non-nil, add `recentf-mode' and bookmarks to `ivy-switch-buffer'." + :type 'boolean) + +(defvar ivy--actions-list nil + "A list of extra actions per command.") + +(defun ivy-set-actions (cmd actions) + "Set CMD extra exit points to ACTIONS." + (setq ivy--actions-list + (plist-put ivy--actions-list cmd actions))) + +(defvar ivy--sources-list nil + "A list of extra sources per command.") + +(defun ivy-set-sources (cmd sources) + "Attach to CMD a list of extra SOURCES. + +Each static source is a function that takes no argument and +returns a list of strings. + +The '(original-source) determines the position of the original +dynamic source. + +Extra dynamic sources aren't supported yet. + +Example: + + (defun small-recentf () + (cl-subseq recentf-list 0 20)) + + (ivy-set-sources + 'counsel-locate + '((small-recentf) + (original-source))) +" + (setq ivy--sources-list + (plist-put ivy--sources-list cmd sources))) + +;;* Keymap +(require 'delsel) +(defvar ivy-minibuffer-map + (let ((map (make-sparse-keymap))) + (define-key map (kbd "C-m") 'ivy-done) + (define-key map (kbd "C-M-m") 'ivy-call) + (define-key map (kbd "C-j") 'ivy-alt-done) + (define-key map (kbd "C-M-j") 'ivy-immediate-done) + (define-key map (kbd "TAB") 'ivy-partial-or-done) + (define-key map (kbd "C-n") 'ivy-next-line) + (define-key map (kbd "C-p") 'ivy-previous-line) + (define-key map (kbd "") 'ivy-next-line) + (define-key map (kbd "") 'ivy-previous-line) + (define-key map (kbd "C-s") 'ivy-next-line-or-history) + (define-key map (kbd "C-r") 'ivy-reverse-i-search) + (define-key map (kbd "SPC") 'self-insert-command) + (define-key map (kbd "DEL") 'ivy-backward-delete-char) + (define-key map (kbd "M-DEL") 'ivy-backward-kill-word) + (define-key map (kbd "C-d") 'ivy-delete-char) + (define-key map (kbd "C-f") 'ivy-forward-char) + (define-key map (kbd "M-d") 'ivy-kill-word) + (define-key map (kbd "M-<") 'ivy-beginning-of-buffer) + (define-key map (kbd "M->") 'ivy-end-of-buffer) + (define-key map (kbd "M-n") 'ivy-next-history-element) + (define-key map (kbd "M-p") 'ivy-previous-history-element) + (define-key map (kbd "C-g") 'minibuffer-keyboard-quit) + (define-key map (kbd "C-v") 'ivy-scroll-up-command) + (define-key map (kbd "M-v") 'ivy-scroll-down-command) + (define-key map (kbd "C-M-n") 'ivy-next-line-and-call) + (define-key map (kbd "C-M-p") 'ivy-previous-line-and-call) + (define-key map (kbd "M-q") 'ivy-toggle-regexp-quote) + (define-key map (kbd "M-j") 'ivy-yank-word) + (define-key map (kbd "M-i") 'ivy-insert-current) + (define-key map (kbd "C-o") 'hydra-ivy/body) + (define-key map (kbd "M-o") 'ivy-dispatching-done) + (define-key map (kbd "C-M-o") 'ivy-dispatching-call) + (define-key map (kbd "C-k") 'ivy-kill-line) + (define-key map (kbd "S-SPC") 'ivy-restrict-to-matches) + (define-key map (kbd "M-w") 'ivy-kill-ring-save) + (define-key map (kbd "C-'") 'ivy-avy) + (define-key map (kbd "C-M-a") 'ivy-read-action) + (define-key map (kbd "C-c C-o") 'ivy-occur) + (define-key map (kbd "C-c C-a") 'ivy-toggle-ignore) + (define-key map (kbd "C-h m") 'ivy-help) + map) + "Keymap used in the minibuffer.") +(autoload 'hydra-ivy/body "ivy-hydra" "" t) + +(defvar ivy-mode-map + (let ((map (make-sparse-keymap))) + (define-key map [remap switch-to-buffer] + 'ivy-switch-buffer) + (define-key map [remap switch-to-buffer-other-window] + 'ivy-switch-buffer-other-window) + map) + "Keymap for `ivy-mode'.") + +;;* Globals +(cl-defstruct ivy-state + prompt collection + predicate require-match initial-input + history preselect keymap update-fn sort + ;; The window in which `ivy-read' was called + window + ;; The buffer in which `ivy-read' was called + buffer + ;; The value of `ivy-text' to be used by `ivy-occur' + text + action + unwind + re-builder + matcher + ;; When this is non-nil, call it for each input change to get new candidates + dynamic-collection + caller) + +(defvar ivy-last (make-ivy-state) + "The last parameters passed to `ivy-read'. + +This should eventually become a stack so that you could use +`ivy-read' recursively.") + +(defsubst ivy-set-action (action) + (setf (ivy-state-action ivy-last) action)) + +(defvar ivy-history nil + "History list of candidates entered in the minibuffer. + +Maximum length of the history list is determined by the value +of `history-length'.") + +(defvar ivy--directory nil + "Current directory when completing file names.") + +(defvar ivy--length 0 + "Store the amount of viable candidates.") + +(defvar ivy-text "" + "Store the user's string as it is typed in.") + +(defvar ivy--current "" + "Current candidate.") + +(defvar ivy--index 0 + "Store the index of the current candidate.") + +(defvar ivy-exit nil + "Store 'done if the completion was successfully selected. +Otherwise, store nil.") + +(defvar ivy--all-candidates nil + "Store the candidates passed to `ivy-read'.") + +(defvar ivy--extra-candidates '((original-source)) + "Store candidates added by the extra sources. + +This is an internal-use alist. Each key is a function name, or +original-source (which represents where the current dynamic +candidates should go). + +Each value is an evaluation of the function, in case of static +sources. These values will subsequently be filtered on `ivy-text'. + +This variable is set by `ivy-read' and used by `ivy--set-candidates'.") + +(defvar ivy-use-ignore t + "Store policy for user-configured candidate filtering.") + +(defvar ivy--default nil + "Default initial input.") + +(defvar ivy--prompt nil + "Store the format-style prompt. +When non-nil, it should contain at least one %d.") + +(defvar ivy--prompt-extra "" + "Temporary modifications to the prompt.") + +(defvar ivy--old-re nil + "Store the old regexp.") + +(defvar ivy--old-cands nil + "Store the candidates matched by `ivy--old-re'.") + +(defvar ivy--regex-function 'ivy--regex + "Current function for building a regex.") + +(defvar ivy--subexps 0 + "Number of groups in the current `ivy--regex'.") + +(defvar ivy--full-length nil + "When :dynamic-collection is non-nil, this can be the total amount of candidates.") + +(defvar ivy--old-text "" + "Store old `ivy-text' for dynamic completion.") + +(defvar ivy-case-fold-search 'auto + "Store the current overriding `case-fold-search'.") + +(defvar Info-current-file) + +(defmacro ivy-quit-and-run (&rest body) + "Quit the minibuffer and run BODY afterwards." + `(progn + (put 'quit 'error-message "") + (run-at-time nil nil + (lambda () + (put 'quit 'error-message "Quit") + ,@body)) + (minibuffer-keyboard-quit))) + +(defun ivy-exit-with-action (action) + "Quit the minibuffer and call ACTION afterwards." + (ivy-set-action + `(lambda (x) + (funcall ',action x) + (ivy-set-action ',(ivy-state-action ivy-last)))) + (setq ivy-exit 'done) + (exit-minibuffer)) + +(defmacro with-ivy-window (&rest body) + "Execute BODY in the window from which `ivy-read' was called." + (declare (indent 0) + (debug t)) + `(with-selected-window (ivy--get-window ivy-last) + ,@body)) + +(defun ivy--done (text) + "Insert TEXT and exit minibuffer." + (if (and ivy--directory + (not (eq (ivy-state-history ivy-last) 'grep-files-history))) + (insert (setq ivy--current (expand-file-name + text ivy--directory))) + (insert (setq ivy--current text))) + (setq ivy-exit 'done) + (exit-minibuffer)) + +;;* Commands +(defun ivy-done () + "Exit the minibuffer with the selected candidate." + (interactive) + (delete-minibuffer-contents) + (cond ((> ivy--length 0) + (ivy--done ivy--current)) + ((memq (ivy-state-collection ivy-last) + '(read-file-name-internal internal-complete-buffer)) + (if (or (not (eq confirm-nonexistent-file-or-buffer t)) + (equal " (confirm)" ivy--prompt-extra)) + (ivy--done ivy-text) + (setq ivy--prompt-extra " (confirm)") + (insert ivy-text) + (ivy--exhibit))) + ((memq (ivy-state-require-match ivy-last) + '(nil confirm confirm-after-completion)) + (ivy--done ivy-text)) + (t + (setq ivy--prompt-extra " (match required)") + (insert ivy-text) + (ivy--exhibit)))) + +(defun ivy-read-action () + "Change the action to one of the available ones." + (interactive) + (let ((actions (ivy-state-action ivy-last))) + (unless (null (ivy--actionp actions)) + (let* ((hint (concat (if (eq this-command 'ivy-read-action) + "Select action: " + ivy--current) + "\n" + (mapconcat + (lambda (x) + (format "%s: %s" + (propertize + (car x) + 'face 'font-lock-builtin-face) + (nth 2 x))) + (cdr actions) + "\n") + "\n")) + (key (string (read-key hint))) + (action-idx (cl-position-if + (lambda (x) (equal (car x) key)) + (cdr actions)))) + (cond ((string= key "")) + ((null action-idx) + (error "%s is not bound" key)) + (t + (message "") + (setcar actions (1+ action-idx)) + (ivy-set-action actions))))))) + +(defun ivy-dispatching-done () + "Select one of the available actions and call `ivy-done'." + (interactive) + (ivy-read-action) + (ivy-done)) + +(defun ivy-dispatching-call () + "Select one of the available actions and call `ivy-call'." + (interactive) + (let ((actions (copy-sequence (ivy-state-action ivy-last)))) + (unwind-protect + (when (ivy-read-action) + (ivy-call)) + (ivy-set-action actions)))) + +(defun ivy-build-tramp-name (x) + "Reconstruct X into a path. +Is is a cons cell, related to `tramp-get-completion-function'." + (let ((user (car x)) + (domain (cadr x))) + (if user + (concat user "@" domain) + domain))) + +(declare-function tramp-get-completion-function "tramp") +(declare-function Info-find-node "info") + +(defun ivy-alt-done (&optional arg) + "Exit the minibuffer with the selected candidate. +When ARG is t, exit with current text, ignoring the candidates." + (interactive "P") + (cond (arg + (ivy-immediate-done)) + (ivy--directory + (ivy--directory-done)) + ((eq (ivy-state-collection ivy-last) 'Info-read-node-name-1) + (if (or (equal ivy--current "(./)") + (equal ivy--current "(../)")) + (ivy-quit-and-run + (ivy-read "Go to file: " 'read-file-name-internal + :action (lambda (x) + (Info-find-node + (expand-file-name x ivy--directory) + "Top")))) + (ivy-done))) + (t + (ivy-done)))) + +(defun ivy--directory-done () + "Handle exit from the minibuffer when completing file names." + (let (dir) + (cond + ((equal ivy-text "/sudo::") + (setq dir (concat ivy-text ivy--directory)) + (ivy--cd dir) + (ivy--exhibit)) + ((or + (and + (not (equal ivy-text "")) + (ignore-errors + (file-directory-p + (setq dir + (file-name-as-directory + (expand-file-name + ivy-text ivy--directory)))))) + (and + (not (string= ivy--current "./")) + (cl-plusp ivy--length) + (ignore-errors + (file-directory-p + (setq dir (file-name-as-directory + (expand-file-name + ivy--current ivy--directory))))))) + (ivy--cd dir) + (ivy--exhibit)) + ((or (and (equal ivy--directory "/") + (string-match "\\`[^/]+:.*:.*\\'" ivy-text)) + (string-match "\\`/[^/]+:.*:.*\\'" ivy-text)) + (ivy-done)) + ((or (and (equal ivy--directory "/") + (cond ((string-match + "\\`\\([^/]+?\\):\\(?:\\(.*\\)@\\)?\\(.*\\)\\'" + ivy-text)) + ((string-match + "\\`\\([^/]+?\\):\\(?:\\(.*\\)@\\)?\\(.*\\)\\'" + ivy--current) + (setq ivy-text ivy--current)))) + (string-match + "\\`/\\([^/]+?\\):\\(?:\\(.*\\)@\\)?\\(.*\\)\\'" + ivy-text)) + (let ((method (match-string 1 ivy-text)) + (user (match-string 2 ivy-text)) + (rest (match-string 3 ivy-text)) + res) + (require 'tramp) + (dolist (x (tramp-get-completion-function method)) + (setq res (append res (funcall (car x) (cadr x))))) + (setq res (delq nil res)) + (when user + (dolist (x res) + (setcar x user))) + (setq res (cl-delete-duplicates res :test #'equal)) + (let* ((old-ivy-last ivy-last) + (enable-recursive-minibuffers t) + (host (ivy-read "user@host: " + (mapcar #'ivy-build-tramp-name res) + :initial-input rest))) + (setq ivy-last old-ivy-last) + (when host + (setq ivy--directory "/") + (ivy--cd (concat "/" method ":" host ":")))))) + (t + (ivy-done))))) + +(defcustom ivy-tab-space nil + "When non-nil, `ivy-partial-or-done' should insert a space." + :type 'boolean) + +(defun ivy-partial-or-done () + "Complete the minibuffer text as much as possible. +If the text hasn't changed as a result, forward to `ivy-alt-done'." + (interactive) + (if (and (eq (ivy-state-collection ivy-last) #'read-file-name-internal) + (or (and (equal ivy--directory "/") + (string-match "\\`[^/]+:.*\\'" ivy-text)) + (string-match "\\`/" ivy-text))) + (let ((default-directory ivy--directory)) + (minibuffer-complete) + (setq ivy-text (ivy--input)) + (when (file-directory-p + (expand-file-name ivy-text ivy--directory)) + (ivy--cd (file-name-as-directory + (expand-file-name ivy-text ivy--directory))))) + (or (ivy-partial) + (when (or (eq this-command last-command) + (eq ivy--length 1)) + (ivy-alt-done))))) + +(defun ivy-partial () + "Complete the minibuffer text as much as possible." + (interactive) + (let* ((parts (or (split-string ivy-text " " t) (list ""))) + (postfix (car (last parts))) + (completion-ignore-case t) + (startp (string-match "^\\^" postfix)) + (new (try-completion (if startp + (substring postfix 1) + postfix) + (mapcar (lambda (str) + (let ((i (string-match postfix str))) + (when i + (substring str i)))) + ivy--old-cands)))) + (cond ((eq new t) nil) + ((string= new ivy-text) nil) + (new + (delete-region (minibuffer-prompt-end) (point-max)) + (setcar (last parts) + (if startp + (concat "^" new) + new)) + (insert (mapconcat #'identity parts " ") + (if ivy-tab-space " " "")) + t)))) + +(defun ivy-immediate-done () + "Exit the minibuffer with the current input." + (interactive) + (delete-minibuffer-contents) + (insert (setq ivy--current + (if ivy--directory + (expand-file-name ivy-text ivy--directory) + ivy-text))) + (setq ivy-exit 'done) + (exit-minibuffer)) + +;;;###autoload +(defun ivy-resume () + "Resume the last completion session." + (interactive) + (when (eq (ivy-state-caller ivy-last) 'swiper) + (switch-to-buffer (ivy-state-buffer ivy-last))) + (with-current-buffer (ivy-state-buffer ivy-last) + (ivy-read + (ivy-state-prompt ivy-last) + (ivy-state-collection ivy-last) + :predicate (ivy-state-predicate ivy-last) + :require-match (ivy-state-require-match ivy-last) + :initial-input ivy-text + :history (ivy-state-history ivy-last) + :preselect (unless (eq (ivy-state-collection ivy-last) + 'read-file-name-internal) + ivy--current) + :keymap (ivy-state-keymap ivy-last) + :update-fn (ivy-state-update-fn ivy-last) + :sort (ivy-state-sort ivy-last) + :action (ivy-state-action ivy-last) + :unwind (ivy-state-unwind ivy-last) + :re-builder (ivy-state-re-builder ivy-last) + :matcher (ivy-state-matcher ivy-last) + :dynamic-collection (ivy-state-dynamic-collection ivy-last) + :caller (ivy-state-caller ivy-last)))) + +(defvar ivy-calling nil + "When non-nil, call the current action when `ivy--index' changes.") + +(defun ivy-set-index (index) + "Set `ivy--index' to INDEX." + (setq ivy--index index) + (when ivy-calling + (ivy--exhibit) + (ivy-call))) + +(defun ivy-beginning-of-buffer () + "Select the first completion candidate." + (interactive) + (ivy-set-index 0)) + +(defun ivy-end-of-buffer () + "Select the last completion candidate." + (interactive) + (ivy-set-index (1- ivy--length))) + +(defun ivy-scroll-up-command () + "Scroll the candidates upward by the minibuffer height." + (interactive) + (ivy-set-index (min (1- (+ ivy--index ivy-height)) + (1- ivy--length)))) + +(defun ivy-scroll-down-command () + "Scroll the candidates downward by the minibuffer height." + (interactive) + (ivy-set-index (max (1+ (- ivy--index ivy-height)) + 0))) + +(defun ivy-minibuffer-grow () + "Grow the minibuffer window by 1 line." + (interactive) + (setq-local max-mini-window-height + (cl-incf ivy-height))) + +(defun ivy-minibuffer-shrink () + "Shrink the minibuffer window by 1 line." + (interactive) + (unless (<= ivy-height 2) + (setq-local max-mini-window-height + (cl-decf ivy-height)) + (window-resize (selected-window) -1))) + +(defun ivy-next-line (&optional arg) + "Move cursor vertically down ARG candidates." + (interactive "p") + (setq arg (or arg 1)) + (let ((index (+ ivy--index arg))) + (if (> index (1- ivy--length)) + (if ivy-wrap + (ivy-beginning-of-buffer) + (ivy-set-index (1- ivy--length))) + (ivy-set-index index)))) + +(defun ivy-next-line-or-history (&optional arg) + "Move cursor vertically down ARG candidates. +If the input is empty, select the previous history element instead." + (interactive "p") + (if (string= ivy-text "") + (ivy-previous-history-element 1) + (ivy-next-line arg))) + +(defun ivy-previous-line (&optional arg) + "Move cursor vertically up ARG candidates." + (interactive "p") + (setq arg (or arg 1)) + (let ((index (- ivy--index arg))) + (if (< index 0) + (if ivy-wrap + (ivy-end-of-buffer) + (ivy-set-index 0)) + (ivy-set-index index)))) + +(defun ivy-previous-line-or-history (arg) + "Move cursor vertically up ARG candidates. +If the input is empty, select the previous history element instead." + (interactive "p") + (when (string= ivy-text "") + (ivy-previous-history-element 1)) + (ivy-previous-line arg)) + +(defun ivy-toggle-calling () + "Flip `ivy-calling'." + (interactive) + (when (setq ivy-calling (not ivy-calling)) + (ivy-call))) + +(defun ivy-toggle-ignore () + "Toggle user-configured candidate filtering." + (interactive) + (setq ivy-use-ignore (null ivy-use-ignore)) + ;; invalidate cache + (setq ivy--old-cands nil)) + +(defun ivy--get-action (state) + "Get the action function from STATE." + (let ((action (ivy-state-action state))) + (when action + (if (functionp action) + action + (cadr (nth (car action) action)))))) + +(defun ivy--get-window (state) + "Get the window from STATE." + (if (ivy-state-p state) + (let ((window (ivy-state-window state))) + (if (window-live-p window) + window + (if (= (length (window-list)) 1) + (selected-window) + (next-window)))) + (selected-window))) + +(defun ivy--actionp (x) + "Return non-nil when X is a list of actions." + (and x (listp x) (not (eq (car x) 'closure)))) + +(defun ivy-next-action () + "When the current action is a list, scroll it forwards." + (interactive) + (let ((action (ivy-state-action ivy-last))) + (when (ivy--actionp action) + (unless (>= (car action) (1- (length action))) + (cl-incf (car action)))))) + +(defun ivy-prev-action () + "When the current action is a list, scroll it backwards." + (interactive) + (let ((action (ivy-state-action ivy-last))) + (when (ivy--actionp action) + (unless (<= (car action) 1) + (cl-decf (car action)))))) + +(defun ivy-action-name () + "Return the name associated with the current action." + (let ((action (ivy-state-action ivy-last))) + (if (ivy--actionp action) + (format "[%d/%d] %s" + (car action) + (1- (length action)) + (nth 2 (nth (car action) action))) + "[1/1] default"))) + +(defvar ivy-inhibit-action nil + "When non-nil, `ivy-call' does nothing. + +Example use: + + (let* ((ivy-inhibit-action t) + (str (counsel-locate \"lispy.el\"))) + ;; do whatever with str - the corresponding file will not be opened + )") + +(defun ivy-call () + "Call the current action without exiting completion." + (interactive) + (unless ivy-inhibit-action + (let ((action (ivy--get-action ivy-last))) + (when action + (let* ((collection (ivy-state-collection ivy-last)) + (x (if (and (consp collection) + (consp (car collection))) + (cdr (assoc ivy--current collection)) + (if (equal ivy--current "") + ivy-text + ivy--current)))) + (prog1 (funcall action x) + (unless (or (eq ivy-exit 'done) + (equal (selected-window) + (active-minibuffer-window)) + (null (active-minibuffer-window))) + (select-window (active-minibuffer-window))))))))) + +(defun ivy-next-line-and-call (&optional arg) + "Move cursor vertically down ARG candidates. +Call the permanent action if possible." + (interactive "p") + (ivy-next-line arg) + (ivy--exhibit) + (ivy-call)) + +(defun ivy-previous-line-and-call (&optional arg) + "Move cursor vertically down ARG candidates. +Call the permanent action if possible." + (interactive "p") + (ivy-previous-line arg) + (ivy--exhibit) + (ivy-call)) + +(defun ivy-previous-history-element (arg) + "Forward to `previous-history-element' with ARG." + (interactive "p") + (previous-history-element arg) + (ivy--cd-maybe) + (move-end-of-line 1) + (ivy--maybe-scroll-history)) + +(defun ivy-next-history-element (arg) + "Forward to `next-history-element' with ARG." + (interactive "p") + (if (and (= minibuffer-history-position 0) + (equal ivy-text "")) + (progn + (insert ivy--default) + (when (and (with-ivy-window (derived-mode-p 'prog-mode)) + (> (point) (minibuffer-prompt-end))) + (undo-boundary) + (insert "\\_>") + (goto-char (minibuffer-prompt-end)) + (insert "\\_<") + (forward-char (+ 2 (length ivy--default))))) + (next-history-element arg)) + (ivy--cd-maybe) + (move-end-of-line 1) + (ivy--maybe-scroll-history)) + +(defvar ivy-ffap-url-functions nil + "List of functions that check if the point is on a URL.") + +(defun ivy--cd-maybe () + "Check if the current input points to a different directory. +If so, move to that directory, while keeping only the file name." + (when ivy--directory + (let ((input (ivy--input)) + url) + (if (setq url (or (ffap-url-p input) + (with-ivy-window + (cl-reduce + (lambda (a b) + (or a (funcall b))) + ivy-ffap-url-functions + :initial-value nil)))) + (ivy-exit-with-action + (lambda (_) + (funcall ffap-url-fetcher url))) + (setq input (expand-file-name input)) + (let ((file (file-name-nondirectory input)) + (dir (expand-file-name (file-name-directory input)))) + (if (string= dir ivy--directory) + (progn + (delete-minibuffer-contents) + (insert file)) + (ivy--cd dir) + (insert file))))))) + +(defun ivy--maybe-scroll-history () + "If the selected history element has an index, scroll there." + (let ((idx (ignore-errors + (get-text-property + (minibuffer-prompt-end) + 'ivy-index)))) + (when idx + (ivy--exhibit) + (setq ivy--index idx)))) + +(defun ivy--cd (dir) + "When completing file names, move to directory DIR." + (if (null ivy--directory) + (error "Unexpected") + (setq ivy--old-cands nil) + (setq ivy--old-re nil) + (setq ivy--index 0) + (setq ivy--all-candidates + (ivy--sorted-files (setq ivy--directory dir))) + (setq ivy-text "") + (delete-minibuffer-contents))) + +(defun ivy-backward-delete-char () + "Forward to `backward-delete-char'. +On error (read-only), call `ivy-on-del-error-function'." + (interactive) + (if (and ivy--directory (= (minibuffer-prompt-end) (point))) + (progn + (ivy--cd (file-name-directory + (directory-file-name + (expand-file-name + ivy--directory)))) + (ivy--exhibit)) + (condition-case nil + (backward-delete-char 1) + (error + (when ivy-on-del-error-function + (funcall ivy-on-del-error-function)))))) + +(defun ivy-delete-char (arg) + "Forward to `delete-char' ARG." + (interactive "p") + (unless (= (point) (line-end-position)) + (delete-char arg))) + +(defun ivy-forward-char (arg) + "Forward to `forward-char' ARG." + (interactive "p") + (unless (= (point) (line-end-position)) + (forward-char arg))) + +(defun ivy-kill-word (arg) + "Forward to `kill-word' ARG." + (interactive "p") + (unless (= (point) (line-end-position)) + (kill-word arg))) + +(defun ivy-kill-line () + "Forward to `kill-line'." + (interactive) + (if (eolp) + (kill-region (minibuffer-prompt-end) (point)) + (kill-line))) + +(defun ivy-backward-kill-word () + "Forward to `backward-kill-word'." + (interactive) + (if (and ivy--directory (= (minibuffer-prompt-end) (point))) + (progn + (ivy--cd (file-name-directory + (directory-file-name + (expand-file-name + ivy--directory)))) + (ivy--exhibit)) + (ignore-errors + (let ((pt (point))) + (forward-word -1) + (delete-region (point) pt))))) + +(defvar ivy--regexp-quote 'regexp-quote + "Store the regexp quoting state.") + +(defun ivy-toggle-regexp-quote () + "Toggle the regexp quoting." + (interactive) + (setq ivy--old-re nil) + (cl-rotatef ivy--regex-function ivy--regexp-quote)) + +(defvar avy-all-windows) +(defvar avy-action) +(defvar avy-keys) +(defvar avy-keys-alist) +(defvar avy-style) +(defvar avy-styles-alist) +(declare-function avy--process "ext:avy") +(declare-function avy--style-fn "ext:avy") + +(eval-after-load 'avy + '(add-to-list 'avy-styles-alist '(ivy-avy . pre))) + +(defun ivy-avy () + "Jump to one of the current ivy candidates." + (interactive) + (unless (require 'avy nil 'noerror) + (error "Package avy isn't installed")) + (let* ((avy-all-windows nil) + (avy-keys (or (cdr (assq 'ivy-avy avy-keys-alist)) + avy-keys)) + (avy-style (or (cdr (assq 'ivy-avy + avy-styles-alist)) + avy-style)) + (candidate + (let ((candidates)) + (save-excursion + (save-restriction + (narrow-to-region + (window-start) + (window-end)) + (goto-char (point-min)) + (forward-line) + (while (< (point) (point-max)) + (push + (cons (point) + (selected-window)) + candidates) + (forward-line)))) + (setq avy-action #'identity) + (avy--process + (nreverse candidates) + (avy--style-fn avy-style))))) + (ivy-set-index (- (line-number-at-pos candidate) 2)) + (ivy--exhibit) + (ivy-done))) + +(defun ivy-sort-file-function-default (x y) + "Compare two files X and Y. +Prioritize directories." + (if (get-text-property 0 'dirp x) + (if (get-text-property 0 'dirp y) + (string< x y) + t) + (if (get-text-property 0 'dirp y) + nil + (string< x y)))) + +(defcustom ivy-sort-functions-alist + '((read-file-name-internal . ivy-sort-file-function-default) + (internal-complete-buffer . nil) + (counsel-git-grep-function . nil) + (Man-goto-section . nil) + (org-refile . nil) + (t . string-lessp)) + "An alist of sorting functions for each collection function. +Interactive functions that call completion fit in here as well. + +Nil means no sorting, which is useful to turn off the sorting for +functions that have candidates in the natural buffer order, like +`org-refile' or `Man-goto-section'. + +The entry associated with t is used for all fall-through cases. + +See also `ivy-sort-max-size'." + :type + '(alist + :key-type (choice + (const :tag "All other functions" t) + (symbol :tag "Function")) + :value-type (choice + (const :tag "plain sort" string-lessp) + (const :tag "file sort" ivy-sort-file-function-default) + (const :tag "no sort" nil))) + :group 'ivy) + +(defvar ivy-index-functions-alist + '((swiper . ivy-recompute-index-swiper) + (swiper-multi . ivy-recompute-index-swiper) + (counsel-git-grep . ivy-recompute-index-swiper) + (counsel-grep . ivy-recompute-index-swiper-async) + (t . ivy-recompute-index-zero)) + "An alist of index recomputing functions for each collection function. +When the input changes, the appropriate function returns an +integer - the index of the matched candidate that should be +selected.") + +(defvar ivy-re-builders-alist + '((t . ivy--regex-plus)) + "An alist of regex building functions for each collection function. + +Each key is (in order of priority): +1. The actual collection function, e.g. `read-file-name-internal'. +2. The symbol passed by :caller into `ivy-read'. +3. `this-command'. +4. t. + +Each value is a function that should take a string and return a +valid regex or a regex sequence (see below). + +Possible choices: `ivy--regex', `regexp-quote', +`ivy--regex-plus', `ivy--regex-fuzzy'. + +If a function returns a list, it should format like this: +'((\"matching-regexp\" . t) (\"non-matching-regexp\") ...). + +The matches will be filtered in a sequence, you can mix the +regexps that should match and that should not match as you +like.") + +(defvar ivy-initial-inputs-alist + '((org-refile . "^") + (org-agenda-refile . "^") + (org-capture-refile . "^") + (counsel-M-x . "^") + (counsel-describe-function . "^") + (counsel-describe-variable . "^") + (man . "^") + (woman . "^")) + "Command to initial input table.") + +(defcustom ivy-sort-max-size 30000 + "Sorting won't be done for collections larger than this." + :type 'integer) + +(defun ivy--sorted-files (dir) + "Return the list of files in DIR. +Directories come first." + (let* ((default-directory dir) + (seq (all-completions "" 'read-file-name-internal)) + sort-fn) + (if (equal dir "/") + seq + (setq seq (delete "./" (delete "../" seq))) + (when (eq (setq sort-fn (cdr (assoc 'read-file-name-internal + ivy-sort-functions-alist))) + #'ivy-sort-file-function-default) + (setq seq (mapcar (lambda (x) + (propertize x 'dirp (string-match-p "/\\'" x))) + seq))) + (when sort-fn + (setq seq (cl-sort seq sort-fn))) + (dolist (dir ivy-extra-directories) + (push dir seq)) + seq))) + +(defvar ivy-recursive-restore t + "When non-nil, restore the above state when exiting the minibuffer. +This variable is let-bound to nil by functions that take care of +the restoring themselves.") + +;;** Entry Point +(cl-defun ivy-read (prompt collection + &key + predicate require-match initial-input + history preselect keymap update-fn sort + action unwind re-builder matcher dynamic-collection caller) + "Read a string in the minibuffer, with completion. + +PROMPT is a format string, normally ending in a colon and a +space; %d anywhere in the string is replaced by the current +number of matching candidates. For the literal % character, +escape it with %%. See also `ivy-count-format'. + +COLLECTION is either a list of strings, a function, an alist, or +a hash table. + +If INITIAL-INPUT is not nil, then insert that input in the +minibuffer initially. + +KEYMAP is composed with `ivy-minibuffer-map'. + +If PRESELECT is not nil, then select the corresponding candidate +out of the ones that match the INITIAL-INPUT. + +UPDATE-FN is called each time the current candidate(s) is changed. + +When SORT is t, use `ivy-sort-functions-alist' for sorting. + +ACTION is a lambda function to call after selecting a result. It +takes a single string argument. + +UNWIND is a lambda function to call before exiting. + +RE-BUILDER is a lambda function to call to transform text into a +regex pattern. + +MATCHER is to override matching. + +DYNAMIC-COLLECTION is a boolean to specify if the list of +candidates is updated after each input by calling COLLECTION. + +CALLER is a symbol to uniquely identify the caller to `ivy-read'. +It is used, along with COLLECTION, to determine which +customizations apply to the current completion session." + (let ((extra-actions (delete-dups + (append (plist-get ivy--actions-list t) + (plist-get ivy--actions-list this-command) + (plist-get ivy--actions-list caller))))) + (when extra-actions + (setq action + (cond ((functionp action) + `(1 + ("o" ,action "default") + ,@extra-actions)) + ((null action) + `(1 + ("o" identity "default") + ,@extra-actions)) + (t + (delete-dups (append action extra-actions))))))) + (let ((extra-sources (plist-get ivy--sources-list caller))) + (if extra-sources + (progn + (setq ivy--extra-candidates nil) + (dolist (source extra-sources) + (cond ((equal source '(original-source)) + (setq ivy--extra-candidates + (cons source ivy--extra-candidates))) + ((null (cdr source)) + (setq ivy--extra-candidates + (cons + (list (car source) (funcall (car source))) + ivy--extra-candidates)))))) + (setq ivy--extra-candidates '((original-source))))) + (let ((recursive-ivy-last (and (active-minibuffer-window) ivy-last))) + (setq ivy-last + (make-ivy-state + :prompt prompt + :collection collection + :predicate predicate + :require-match require-match + :initial-input initial-input + :history history + :preselect preselect + :keymap keymap + :update-fn update-fn + :sort sort + :action action + :window (selected-window) + :buffer (current-buffer) + :unwind unwind + :re-builder re-builder + :matcher matcher + :dynamic-collection dynamic-collection + :caller caller)) + (ivy--reset-state ivy-last) + (prog1 + (unwind-protect + (minibuffer-with-setup-hook + #'ivy--minibuffer-setup + (let* ((hist (or history 'ivy-history)) + (minibuffer-completion-table collection) + (minibuffer-completion-predicate predicate) + (resize-mini-windows (cond + ((display-graphic-p) nil) + ((null resize-mini-windows) 'grow-only) + (t resize-mini-windows)))) + (read-from-minibuffer + prompt + (ivy-state-initial-input ivy-last) + (make-composed-keymap keymap ivy-minibuffer-map) + nil + hist) + (when (eq ivy-exit 'done) + (let ((item (if ivy--directory + ivy--current + ivy-text))) + (unless (equal item "") + (set hist (cons (propertize item 'ivy-index ivy--index) + (delete item + (cdr (symbol-value hist)))))))) + ivy--current)) + (remove-hook 'post-command-hook #'ivy--exhibit) + (when (setq unwind (ivy-state-unwind ivy-last)) + (funcall unwind)) + (unless (eq ivy-exit 'done) + (when recursive-ivy-last + (ivy--reset-state (setq ivy-last recursive-ivy-last))))) + (ivy-call) + (when (and recursive-ivy-last + ivy-recursive-restore) + (ivy--reset-state (setq ivy-last recursive-ivy-last)))))) + +(defun ivy--reset-state (state) + "Reset the ivy to STATE. +This is useful for recursive `ivy-read'." + (let ((prompt (or (ivy-state-prompt state) "")) + (collection (ivy-state-collection state)) + (predicate (ivy-state-predicate state)) + (history (ivy-state-history state)) + (preselect (ivy-state-preselect state)) + (sort (ivy-state-sort state)) + (re-builder (ivy-state-re-builder state)) + (dynamic-collection (ivy-state-dynamic-collection state)) + (initial-input (ivy-state-initial-input state)) + (require-match (ivy-state-require-match state)) + (caller (ivy-state-caller state))) + (unless initial-input + (setq initial-input (cdr (assoc this-command + ivy-initial-inputs-alist)))) + (setq ivy--directory nil) + (setq ivy-case-fold-search 'auto) + (setq ivy--regex-function + (or re-builder + (and (functionp collection) + (cdr (assoc collection ivy-re-builders-alist))) + (and caller + (cdr (assoc caller ivy-re-builders-alist))) + (cdr (assoc this-command ivy-re-builders-alist)) + (cdr (assoc t ivy-re-builders-alist)) + 'ivy--regex)) + (setq ivy--subexps 0) + (setq ivy--regexp-quote 'regexp-quote) + (setq ivy--old-text "") + (setq ivy--full-length nil) + (setq ivy-text "") + (setq ivy-calling nil) + (setq ivy-use-ignore t) + (let (coll sort-fn) + (cond ((eq collection 'Info-read-node-name-1) + (if (equal Info-current-file "dir") + (setq coll + (mapcar (lambda (x) (format "(%s)" x)) + (cl-delete-duplicates + (all-completions "(" collection predicate) + :test #'equal))) + (setq coll (all-completions "" collection predicate)))) + ((eq collection 'read-file-name-internal) + (setq ivy--directory default-directory) + (require 'dired) + (when preselect + (let ((preselect-directory (file-name-directory preselect))) + (unless (or (null preselect-directory) + (string= preselect-directory + default-directory)) + (setq ivy--directory preselect-directory)) + (setf + (ivy-state-preselect state) + (setq preselect (file-name-nondirectory preselect))))) + (setq coll (ivy--sorted-files ivy--directory)) + (when initial-input + (unless (or require-match + (equal initial-input default-directory) + (equal initial-input "")) + (setq coll (cons initial-input coll))) + (unless (and (ivy-state-action ivy-last) + (not (equal (ivy--get-action ivy-last) 'identity))) + (setq initial-input nil)))) + ((eq collection 'internal-complete-buffer) + (setq coll (ivy--buffer-list "" ivy-use-virtual-buffers))) + (dynamic-collection + (setq coll (funcall collection ivy-text))) + ((or (functionp collection) + (byte-code-function-p collection) + (vectorp collection) + (and (consp collection) (listp (car collection))) + (hash-table-p collection) + (and (listp collection) (symbolp (car collection)))) + (setq coll (all-completions "" collection predicate))) + (t + (setq coll collection))) + (when sort + (if (and (functionp collection) + (setq sort-fn (assoc collection ivy-sort-functions-alist))) + (when (and (setq sort-fn (cdr sort-fn)) + (not (eq collection 'read-file-name-internal))) + (setq coll (cl-sort coll sort-fn))) + (unless (eq history 'org-refile-history) + (if (and (setq sort-fn (cdr (assoc t ivy-sort-functions-alist))) + (<= (length coll) ivy-sort-max-size)) + (setq coll (cl-sort (copy-sequence coll) sort-fn)))))) + (when preselect + (unless (or (and require-match + (not (eq collection 'internal-complete-buffer))) + dynamic-collection + (let ((re (regexp-quote preselect))) + (cl-find-if (lambda (x) (string-match re x)) + coll))) + (setq coll (cons preselect coll)))) + (setq ivy--old-re nil) + (setq ivy--old-cands nil) + (when (integerp preselect) + (setq ivy--old-re "") + (setq ivy--index preselect)) + (when initial-input + ;; Needed for anchor to work + (setq ivy--old-cands coll) + (setq ivy--old-cands (ivy--filter initial-input coll))) + (setq ivy--all-candidates coll) + (unless (integerp preselect) + (setq ivy--index (or + (and dynamic-collection + ivy--index) + (and preselect + (ivy--preselect-index + preselect + (if initial-input + ivy--old-cands + coll))) + 0)))) + (setq ivy-exit nil) + (setq ivy--default + (if (region-active-p) + (buffer-substring + (region-beginning) + (region-end)) + (or + (thing-at-point 'url) + (thing-at-point 'symbol) + ""))) + (setq ivy--prompt + (cond ((string-match "%.*d" prompt) + prompt) + ((null ivy-count-format) + (error + "`ivy-count-format' can't be nil. Set it to an empty string instead")) + ((string-match "%d.*%d" ivy-count-format) + (let ((w (length (number-to-string + (length ivy--all-candidates)))) + (s (copy-sequence ivy-count-format))) + (string-match "%d" s) + (match-end 0) + (string-match "%d" s (match-end 0)) + (setq s (replace-match (format "%%-%dd" w) nil nil s)) + (string-match "%d" s) + (concat (replace-match (format "%%%dd" w) nil nil s) + prompt))) + ((string-match "%.*d" ivy-count-format) + (concat ivy-count-format prompt)) + (ivy--directory + prompt) + (t + nil))) + (setf (ivy-state-initial-input ivy-last) initial-input))) + +;;;###autoload +(defun ivy-completing-read (prompt collection + &optional predicate require-match initial-input + history def inherit-input-method) + "Read a string in the minibuffer, with completion. + +This interface conforms to `completing-read' and can be used for +`completing-read-function'. + +PROMPT is a string that normally ends in a colon and a space. +COLLECTION is either a list of strings, an alist, an obarray, or a hash table. +PREDICATE limits completion to a subset of COLLECTION. +REQUIRE-MATCH is a boolean value. See `completing-read'. +INITIAL-INPUT is a string inserted into the minibuffer initially. +HISTORY is a list of previously selected inputs. +DEF is the default value. +INHERIT-INPUT-METHOD is currently ignored." + (if (memq this-command '(tmm-menubar tmm-shortcut)) + (completing-read-default prompt collection + predicate require-match + initial-input history + def inherit-input-method) + ;; See the doc of `completing-read'. + (when (consp history) + (when (numberp (cdr history)) + (setq initial-input (nth (1- (cdr history)) + (symbol-value (car history))))) + (setq history (car history))) + (ivy-read (replace-regexp-in-string "%" "%%" prompt) + collection + :predicate predicate + :require-match require-match + :initial-input (if (consp initial-input) + (car initial-input) + (if (and (stringp initial-input) + (string-match "\\+" initial-input)) + (replace-regexp-in-string + "\\+" "\\\\+" initial-input) + initial-input)) + :preselect (if (listp def) (car def) def) + :history history + :keymap nil + :sort + (let ((sort (assoc this-command ivy-sort-functions-alist))) + (if sort + (cdr sort) + t))))) + +(defvar ivy-completion-beg nil + "Completion bounds start.") + +(defvar ivy-completion-end nil + "Completion bounds end.") + +(defun ivy-completion-in-region-action (str) + "Insert STR, erasing the previous one. +The previous string is between `ivy-completion-beg' and `ivy-completion-end'." + (when (stringp str) + (with-ivy-window + (when ivy-completion-beg + (delete-region + ivy-completion-beg + ivy-completion-end)) + (setq ivy-completion-beg + (move-marker (make-marker) (point))) + (insert str) + (setq ivy-completion-end + (move-marker (make-marker) (point)))))) + +(defun ivy-completion-common-length (str) + "Return the length of the first 'completions-common-part face in STR." + (let ((pos 0) + (len (length str))) + (while (and (<= pos len) + (let ((prop (get-text-property pos 'face str))) + (not (eq 'completions-common-part + (if (listp prop) (car prop) prop))))) + (setq pos (1+ pos))) + (if (< pos len) + (or (next-single-property-change pos 'face str) len) + 0))) + +(defun ivy-completion-in-region (start end collection &optional predicate) + "An Ivy function suitable for `completion-in-region-function'." + (let* ((enable-recursive-minibuffers t) + (str (buffer-substring-no-properties start end)) + (completion-ignore-case case-fold-search) + (comps + (completion-all-completions str collection predicate (- end start)))) + (if (null comps) + (message "No matches") + (nconc comps nil) + (setq ivy-completion-beg (- end (ivy-completion-common-length (car comps)))) + (setq ivy-completion-end end) + (if (null (cdr comps)) + (if (string= str (car comps)) + (message "Sole match") + (setf (ivy-state-window ivy-last) (selected-window)) + (ivy-completion-in-region-action + (substring-no-properties + (car comps)))) + (let* ((w (1+ (floor (log (length comps) 10)))) + (ivy-count-format (if (string= ivy-count-format "") + ivy-count-format + (format "%%-%dd " w))) + (prompt (format "(%s): " str))) + (and + (ivy-read (if (string= ivy-count-format "") + prompt + (replace-regexp-in-string "%" "%%" prompt)) + ;; remove 'completions-first-difference face + (mapcar #'substring-no-properties comps) + :predicate predicate + :action #'ivy-completion-in-region-action + :require-match t) + t)))))) + +(defcustom ivy-do-completion-in-region t + "When non-nil `ivy-mode' will set `completion-in-region-function'." + :type 'boolean) + +;;;###autoload +(define-minor-mode ivy-mode + "Toggle Ivy mode on or off. +Turn Ivy mode on if ARG is positive, off otherwise. +Turning on Ivy mode sets `completing-read-function' to +`ivy-completing-read'. + +Global bindings: +\\{ivy-mode-map} + +Minibuffer bindings: +\\{ivy-minibuffer-map}" + :group 'ivy + :global t + :keymap ivy-mode-map + :lighter " ivy" + (if ivy-mode + (progn + (setq completing-read-function 'ivy-completing-read) + (when ivy-do-completion-in-region + (setq completion-in-region-function 'ivy-completion-in-region))) + (setq completing-read-function 'completing-read-default) + (setq completion-in-region-function 'completion--in-region))) + +(defun ivy--preselect-index (preselect candidates) + "Return the index of PRESELECT in CANDIDATES." + (cond ((integerp preselect) + preselect) + ((cl-position preselect candidates :test #'equal)) + ((stringp preselect) + (let ((re (regexp-quote preselect))) + (cl-position-if + (lambda (x) + (string-match re x)) + candidates))))) + +;;* Implementation +;;** Regex +(defvar ivy--regex-hash + (make-hash-table :test #'equal) + "Store pre-computed regex.") + +(defun ivy--split (str) + "Split STR into a list by single spaces. +The remaining spaces stick to their left. +This allows to \"quote\" N spaces by inputting N+1 spaces." + (let ((len (length str)) + start0 + (start1 0) + res s + match-len) + (while (and (string-match " +" str start1) + (< start1 len)) + (setq match-len (- (match-end 0) (match-beginning 0))) + (if (= match-len 1) + (progn + (when start0 + (setq start1 start0) + (setq start0 nil)) + (push (substring str start1 (match-beginning 0)) res) + (setq start1 (match-end 0))) + (setq str (replace-match + (make-string (1- match-len) ?\ ) + nil nil str)) + (setq start0 (or start0 start1)) + (setq start1 (1- (match-end 0))))) + (if start0 + (push (substring str start0) res) + (setq s (substring str start1)) + (unless (= (length s) 0) + (push s res))) + (nreverse res))) + +(defun ivy--regex (str &optional greedy) + "Re-build regex pattern from STR in case it has a space. +When GREEDY is non-nil, join words in a greedy way." + (let ((hashed (unless greedy + (gethash str ivy--regex-hash)))) + (if hashed + (prog1 (cdr hashed) + (setq ivy--subexps (car hashed))) + (when (string-match "\\([^\\]\\|^\\)\\\\$" str) + (setq str (substring str 0 -1))) + (cdr (puthash str + (let ((subs (ivy--split str))) + (if (= (length subs) 1) + (cons + (setq ivy--subexps 0) + (car subs)) + (cons + (setq ivy--subexps (length subs)) + (mapconcat + (lambda (x) + (if (string-match "\\`\\\\(.*\\\\)\\'" x) + x + (format "\\(%s\\)" x))) + subs + (if greedy + ".*" + ".*?"))))) + ivy--regex-hash))))) + +(defun ivy--regex-ignore-order--part (str &optional discard) + "Re-build regex from STR by splitting at spaces. +Ignore the order of each group." + (let* ((subs (split-string str " +" t)) + (len (length subs))) + (cl-case len + (0 + "") + (t + (mapcar (lambda (x) (cons x (not discard))) + subs))))) + +(defun ivy--regex-ignore-order (str) + "Re-build regex from STR by splitting at spaces. +Ignore the order of each group. Everything before \"!\" should +match. Everything after \"!\" should not match." + (let ((parts (split-string str "!" t))) + (cl-case (length parts) + (0 + "") + (1 + (if (string= (substring str 0 1) "!") + (list (cons "" t) + (ivy--regex-ignore-order--part (car parts) t)) + (ivy--regex-ignore-order--part (car parts)))) + (2 + (append + (ivy--regex-ignore-order--part (car parts)) + (ivy--regex-ignore-order--part (cadr parts) t))) + (t (error "Unexpected: use only one !"))))) + +(defun ivy--regex-plus (str) + "Build a regex sequence from STR. +Spaces are wild card characters, everything before \"!\" should +match. Everything after \"!\" should not match." + (let ((parts (split-string str "!" t))) + (cl-case (length parts) + (0 + "") + (1 + (if (string= (substring str 0 1) "!") + (list (cons "" t) + (list (ivy--regex (car parts)))) + (ivy--regex (car parts)))) + (2 + (cons + (cons (ivy--regex (car parts)) t) + (mapcar #'list (split-string (cadr parts) " " t)))) + (t (error "Unexpected: use only one !"))))) + +(defun ivy--regex-fuzzy (str) + "Build a regex sequence from STR. +Insert .* between each char." + (if (string-match "\\`\\(\\^?\\)\\(.*?\\)\\(\\$?\\)\\'" str) + (prog1 + (concat (match-string 1 str) + (mapconcat + (lambda (x) + (format "\\(%c\\)" x)) + (string-to-list (match-string 2 str)) ".*") + (match-string 3 str)) + (setq ivy--subexps (length (match-string 2 str)))) + str)) + +;;** Rest +(defun ivy--minibuffer-setup () + "Setup ivy completion in the minibuffer." + (set (make-local-variable 'completion-show-inline-help) nil) + (set (make-local-variable 'minibuffer-default-add-function) + (lambda () + (list ivy--default))) + (when (display-graphic-p) + (setq truncate-lines t)) + (setq-local max-mini-window-height ivy-height) + (add-hook 'post-command-hook #'ivy--exhibit nil t) + ;; show completions with empty input + (ivy--exhibit)) + +(defun ivy--input () + "Return the current minibuffer input." + ;; assume one-line minibuffer input + (buffer-substring-no-properties + (minibuffer-prompt-end) + (line-end-position))) + +(defun ivy--cleanup () + "Delete the displayed completion candidates." + (save-excursion + (goto-char (minibuffer-prompt-end)) + (delete-region (line-end-position) (point-max)))) + +(defun ivy--insert-prompt () + "Update the prompt according to `ivy--prompt'." + (when ivy--prompt + (unless (memq this-command '(ivy-done ivy-alt-done ivy-partial-or-done + counsel-find-symbol)) + (setq ivy--prompt-extra "")) + (let (head tail) + (if (string-match "\\(.*\\): \\'" ivy--prompt) + (progn + (setq head (match-string 1 ivy--prompt)) + (setq tail ": ")) + (setq head (substring ivy--prompt 0 -1)) + (setq tail " ")) + (let ((inhibit-read-only t) + (std-props '(front-sticky t rear-nonsticky t field t read-only t)) + (n-str + (concat + (if (and (bound-and-true-p minibuffer-depth-indicate-mode) + (> (minibuffer-depth) 1)) + (format "[%d] " (minibuffer-depth)) + "") + (concat + (if (string-match "%d.*%d" ivy-count-format) + (format head + (1+ ivy--index) + (or (and (ivy-state-dynamic-collection ivy-last) + ivy--full-length) + ivy--length)) + (format head + (or (and (ivy-state-dynamic-collection ivy-last) + ivy--full-length) + ivy--length))) + ivy--prompt-extra + tail))) + (d-str (if ivy--directory + (abbreviate-file-name ivy--directory) + ""))) + (save-excursion + (goto-char (point-min)) + (delete-region (point-min) (minibuffer-prompt-end)) + (if (> (+ (mod (+ (length n-str) (length d-str)) (window-width)) + (length ivy-text)) + (window-width)) + (setq n-str (concat n-str "\n" d-str)) + (setq n-str (concat n-str d-str))) + (let ((regex (format "\\([^\n]\\{%d\\}\\)[^\n]" (window-width)))) + (while (string-match regex n-str) + (setq n-str (replace-match (concat (match-string 1 n-str) "\n") nil t n-str 1)))) + (set-text-properties 0 (length n-str) + `(face minibuffer-prompt ,@std-props) + n-str) + (ivy--set-match-props n-str "confirm" + `(face ivy-confirm-face ,@std-props)) + (ivy--set-match-props n-str "match required" + `(face ivy-match-required-face ,@std-props)) + (insert n-str)) + ;; get out of the prompt area + (constrain-to-field nil (point-max)))))) + +(defun ivy--set-match-props (str match props) + "Set STR text properties that match MATCH to PROPS." + (when (string-match match str) + (set-text-properties + (match-beginning 0) + (match-end 0) + props + str))) + +(defvar inhibit-message) + +(defun ivy--sort-maybe (collection) + "Sort COLLECTION if needed." + (let ((sort (ivy-state-sort ivy-last)) + entry) + (if (null sort) + collection + (let ((sort-fn (cond ((functionp sort) + sort) + ((setq entry (assoc (ivy-state-collection ivy-last) + ivy-sort-functions-alist)) + (cdr entry)) + (t + (cdr (assoc t ivy-sort-functions-alist)))))) + (if (functionp sort-fn) + (cl-sort (copy-sequence collection) sort-fn) + collection))))) + +(defun ivy--exhibit () + "Insert Ivy completions display. +Should be run via minibuffer `post-command-hook'." + (when (memq 'ivy--exhibit post-command-hook) + (let ((inhibit-field-text-motion nil)) + (constrain-to-field nil (point-max))) + (setq ivy-text (ivy--input)) + (if (ivy-state-dynamic-collection ivy-last) + ;; while-no-input would cause annoying + ;; "Waiting for process to die...done" message interruptions + (let ((inhibit-message t)) + (unless (equal ivy--old-text ivy-text) + (while-no-input + (setq ivy--all-candidates + (ivy--sort-maybe + (funcall (ivy-state-collection ivy-last) ivy-text))) + (setq ivy--old-text ivy-text))) + (when ivy--all-candidates + (ivy--insert-minibuffer + (ivy--format ivy--all-candidates)))) + (cond (ivy--directory + (if (string-match "/\\'" ivy-text) + (if (member ivy-text ivy--all-candidates) + (ivy--cd (expand-file-name ivy-text ivy--directory)) + (when (string-match "//\\'" ivy-text) + (if (and default-directory + (string-match "\\`[[:alpha:]]:/" default-directory)) + (ivy--cd (match-string 0 default-directory)) + (ivy--cd "/"))) + (when (string-match "[[:alpha:]]:/$" ivy-text) + (let ((drive-root (match-string 0 ivy-text))) + (when (file-exists-p drive-root) + (ivy--cd drive-root))))) + (if (string-match "\\`~\\'" ivy-text) + (ivy--cd (expand-file-name "~/"))))) + ((eq (ivy-state-collection ivy-last) 'internal-complete-buffer) + (when (or (and (string-match "\\` " ivy-text) + (not (string-match "\\` " ivy--old-text))) + (and (string-match "\\` " ivy--old-text) + (not (string-match "\\` " ivy-text)))) + (setq ivy--all-candidates + (if (and (> (length ivy-text) 0) + (eq (aref ivy-text 0) + ?\ )) + (ivy--buffer-list " ") + (ivy--buffer-list "" ivy-use-virtual-buffers))) + (setq ivy--old-re nil)))) + (ivy--insert-minibuffer + (with-current-buffer (ivy-state-buffer ivy-last) + (ivy--format + (ivy--filter ivy-text ivy--all-candidates)))) + (setq ivy--old-text ivy-text)))) + +(defun ivy--insert-minibuffer (text) + "Insert TEXT into minibuffer with appropriate cleanup." + (let ((resize-mini-windows nil) + (update-fn (ivy-state-update-fn ivy-last)) + deactivate-mark) + (ivy--cleanup) + (when update-fn + (funcall update-fn)) + (ivy--insert-prompt) + ;; Do nothing if while-no-input was aborted. + (when (stringp text) + (let ((buffer-undo-list t)) + (save-excursion + (forward-line 1) + (insert text)))) + (when (display-graphic-p) + (ivy--resize-minibuffer-to-fit)))) + +(defun ivy--resize-minibuffer-to-fit () + "Resize the minibuffer window size to fit the text in the minibuffer." + (unless (frame-root-window-p (minibuffer-window)) + (with-selected-window (minibuffer-window) + (if (fboundp 'window-text-pixel-size) + (let ((text-height (cdr (window-text-pixel-size))) + (body-height (window-body-height nil t))) + (when (> text-height body-height) + ;; Note: the size increment needs to be at least frame-char-height, + ;; otherwise resizing won't do anything. + (let ((delta (max (- text-height body-height) (frame-char-height)))) + (window-resize nil delta nil t t)))) + (let ((text-height (count-screen-lines)) + (body-height (window-body-height))) + (when (> text-height body-height) + (window-resize nil (- text-height body-height) nil t))))))) + +(declare-function colir-blend-face-background "ext:colir") + +(defun ivy--add-face (str face) + "Propertize STR with FACE. +`font-lock-append-text-property' is used, since it's better than +`propertize' or `add-face-text-property' in this case." + (require 'colir) + (condition-case nil + (progn + (colir-blend-face-background 0 (length str) face str) + (let ((foreground (face-foreground face))) + (when foreground + (add-face-text-property + 0 (length str) + `(:foreground ,foreground) + nil + str)))) + (error + (ignore-errors + (font-lock-append-text-property 0 (length str) 'face face str)))) + str) + +(declare-function flx-make-string-cache "ext:flx") +(declare-function flx-score "ext:flx") + +(defvar ivy--flx-cache nil) + +(eval-after-load 'flx + '(setq ivy--flx-cache (flx-make-string-cache))) + +(defun ivy-toggle-case-fold () + "Toggle the case folding between nil and auto. +In any completion session, the case folding starts in auto: + +- when the input is all lower case, `case-fold-search' is t +- otherwise nil. + +You can toggle this to make `case-fold-search' nil regardless of input." + (interactive) + (setq ivy-case-fold-search + (if ivy-case-fold-search + nil + 'auto)) + ;; reset cache so that the candidate list updates + (setq ivy--old-re nil)) + +(defun ivy--re-filter (re candidates) + "Return all RE matching CANDIDATES. +RE is a list of cons cells, with a regexp car and a boolean cdr. +When the cdr is t, the car must match. +Otherwise, the car must not match." + (let ((re-list (if (stringp re) (list (cons re t)) re)) + (res candidates)) + (dolist (re re-list) + (setq res + (ignore-errors + (funcall + (if (cdr re) + #'cl-remove-if-not + #'cl-remove-if) + (let ((re-str (car re))) + (lambda (x) (string-match re-str x))) + res)))) + res)) + +(defun ivy--filter (name candidates) + "Return all items that match NAME in CANDIDATES. +CANDIDATES are assumed to be static." + (let ((re (funcall ivy--regex-function name))) + (if (and (equal re ivy--old-re) + ivy--old-cands) + ;; quick caching for "C-n", "C-p" etc. + ivy--old-cands + (let* ((re-str (if (listp re) (caar re) re)) + (matcher (ivy-state-matcher ivy-last)) + (case-fold-search + (and ivy-case-fold-search + (string= name (downcase name)))) + (cands (cond + (matcher + (funcall matcher re candidates)) + ((and ivy--old-re + (stringp re) + (stringp ivy--old-re) + (not (string-match "\\\\" ivy--old-re)) + (not (equal ivy--old-re "")) + (memq (cl-search + (if (string-match "\\\\)\\'" ivy--old-re) + (substring ivy--old-re 0 -2) + ivy--old-re) + re) + '(0 2))) + (ignore-errors + (cl-remove-if-not + (lambda (x) (string-match re x)) + ivy--old-cands))) + (t + (ivy--re-filter re candidates))))) + (ivy--recompute-index name re-str cands) + (setq ivy--old-re + (if (eq ivy--regex-function 'ivy--regex-ignore-order) + re + (if cands + re-str + ""))) + (setq ivy--old-cands (ivy--sort name cands)))))) + +(defun ivy--set-candidates (x) + "Update `ivy--all-candidates' with X." + (let (res) + (dolist (source ivy--extra-candidates) + (if (equal source '(original-source)) + (if (null res) + (setq res x) + (setq res (append x res))) + (setq ivy--old-re nil) + (setq res (append + (ivy--filter ivy-text (cadr source)) + res)))) + (setq ivy--all-candidates res))) + +(defcustom ivy-sort-matches-functions-alist '((t . nil)) + "An alist of functions for sorting matching candidates. + +Unlike `ivy-sort-functions-alist', which is used to sort the +whole collection only once, this alist of functions are used to +sort only matching candidates after each change in input. + +The alist KEY is either a collection function or t to match +previously unmatched collection functions. + +The alist VAL is a sorting function with the signature of +`ivy--prefix-sort'.") + +(defun ivy--sort-files-by-date (_name candidates) + "Re-soft CANDIDATES according to file modification date." + (let ((default-directory ivy--directory)) + (cl-sort (copy-sequence candidates) + (lambda (f1 f2) + (time-less-p + (nth 5 (file-attributes f2)) + (nth 5 (file-attributes f1))))))) + +(defun ivy--sort (name candidates) + "Re-sort CANDIDATES by NAME. +All CANDIDATES are assumed to match NAME." + (let ((key (or (ivy-state-caller ivy-last) + (when (functionp (ivy-state-collection ivy-last)) + (ivy-state-collection ivy-last)))) + fun) + (cond ((and (require 'flx nil 'noerror) + (eq ivy--regex-function 'ivy--regex-fuzzy)) + (ivy--flx-sort name candidates)) + ((setq fun (cdr (or (assoc key ivy-sort-matches-functions-alist) + (assoc t ivy-sort-matches-functions-alist)))) + (funcall fun name candidates)) + (t + candidates)))) + +(defun ivy--prefix-sort (name candidates) + "Re-sort CANDIDATES. +Prefix matches to NAME are put ahead of the list." + (if (or (string-match "^\\^" name) (string= name "")) + candidates + (let ((re-prefix (concat "^" (funcall ivy--regex-function name))) + res-prefix + res-noprefix) + (dolist (s candidates) + (if (string-match re-prefix s) + (push s res-prefix) + (push s res-noprefix))) + (nconc + (nreverse res-prefix) + (nreverse res-noprefix))))) + +(defun ivy--recompute-index (name re-str cands) + (let* ((caller (ivy-state-caller ivy-last)) + (func (or (and caller (cdr (assoc caller ivy-index-functions-alist))) + (cdr (assoc t ivy-index-functions-alist)) + #'ivy-recompute-index-zero))) + (unless (eq this-command 'ivy-resume) + (setq ivy--index + (or + (cl-position (if (and (> (length name) 0) + (eq ?^ (aref name 0))) + (substring name 1) + name) cands + :test #'equal) + (and ivy--directory + (cl-position + (concat re-str "/") cands + :test #'equal)) + (and (not (string= name "")) + (not (and (require 'flx nil 'noerror) + (eq ivy--regex-function 'ivy--regex-fuzzy) + (< (length cands) 200))) + + (cl-position (nth ivy--index ivy--old-cands) + cands)) + (funcall func re-str cands)))) + (when (and (or (string= name "") + (string= name "^")) + (not (equal ivy--old-re ""))) + (setq ivy--index + (or (ivy--preselect-index + (ivy-state-preselect ivy-last) + cands) + ivy--index))))) + +(defun ivy-recompute-index-swiper (_re-str cands) + (let ((tail (nthcdr ivy--index ivy--old-cands)) + idx) + (if (and tail ivy--old-cands (not (equal "^" ivy--old-re))) + (progn + (while (and tail (null idx)) + ;; Compare with eq to handle equal duplicates in cands + (setq idx (cl-position (pop tail) cands))) + (or + idx + (1- (length cands)))) + (if ivy--old-cands + ivy--index + ;; already in ivy-state-buffer + (let ((n (line-number-at-pos)) + (res 0) + (i 0)) + (dolist (c cands) + (when (eq n (read (get-text-property 0 'display c))) + (setq res i)) + (cl-incf i)) + res))))) + +(defun ivy-recompute-index-swiper-async (_re-str cands) + (let ((tail (nthcdr ivy--index ivy--old-cands)) + idx) + (if (and tail ivy--old-cands (not (equal "^" ivy--old-re))) + (progn + (while (and tail (null idx)) + ;; Compare with `equal', since the collection is re-created + ;; each time with `split-string' + (setq idx (cl-position (pop tail) cands :test #'equal))) + (or idx 0)) + ivy--index))) + +(defun ivy-recompute-index-zero (_re-str _cands) + 0) + +(defcustom ivy-minibuffer-faces + '(ivy-minibuffer-match-face-1 + ivy-minibuffer-match-face-2 + ivy-minibuffer-match-face-3 + ivy-minibuffer-match-face-4) + "List of `ivy' faces for minibuffer group matches.") + +(defvar ivy-flx-limit 200 + "Used to conditionally turn off flx sorting. + +When the amount of matching candidates exceeds this limit, then +no sorting is done.") + +(defun ivy--flx-sort (name cands) + "Sort according to closeness to string NAME the string list CANDS." + (condition-case nil + (if (and cands + (< (length cands) ivy-flx-limit)) + (let* ((flx-name (if (string-match "^\\^" name) + (substring name 1) + name)) + (cands-with-score + (delq nil + (mapcar + (lambda (x) + (let ((score (flx-score x flx-name ivy--flx-cache))) + (and score + (cons score x)))) + cands)))) + (if cands-with-score + (mapcar (lambda (x) + (let ((str (copy-sequence (cdr x))) + (i 0) + (last-j -2)) + (dolist (j (cdar x)) + (unless (eq j (1+ last-j)) + (cl-incf i)) + (setq last-j j) + (ivy-add-face-text-property + j (1+ j) + (nth (1+ (mod (+ i 2) (1- (length ivy-minibuffer-faces)))) + ivy-minibuffer-faces) + str)) + str)) + (sort cands-with-score + (lambda (x y) + (> (caar x) (caar y))))) + cands)) + cands) + (error + cands))) + +(defcustom ivy-format-function 'ivy-format-function-default + "Function to transform the list of candidates into a string. +This string is inserted into the minibuffer." + :type '(choice + (const :tag "Default" ivy-format-function-default) + (const :tag "Arrow prefix" ivy-format-function-arrow) + (const :tag "Full line" ivy-format-function-line))) + +(defun ivy--truncate-string (str width) + "Truncate STR to WIDTH." + (if (> (string-width str) width) + (concat (substring str 0 (min (- width 3) + (- (length str) 3))) "...") + str)) + +(defun ivy--format-function-generic (selected-fn other-fn cand-pairs separator) + "Transform CAND-PAIRS into a string for minibuffer. +SELECTED-FN and OTHER-FN each take two string arguments. +SEPARATOR is used to join the candidates." + (let ((i -1)) + (mapconcat + (lambda (pair) + (let ((str (car pair)) + (extra (cdr pair)) + (curr (eq (cl-incf i) ivy--index))) + (if curr + (funcall selected-fn str extra) + (funcall other-fn str extra)))) + cand-pairs + separator))) + +(defun ivy-format-function-default (cand-pairs) + "Transform CAND-PAIRS into a string for minibuffer." + (ivy--format-function-generic + (lambda (str extra) + (concat (ivy--add-face str 'ivy-current-match) extra)) + #'concat + cand-pairs + "\n")) + +(defun ivy-format-function-arrow (cand-pairs) + "Transform CAND-PAIRS into a string for minibuffer." + (ivy--format-function-generic + (lambda (str extra) + (concat "> " (ivy--add-face str 'ivy-current-match) extra)) + (lambda (str extra) + (concat " " str extra)) + cand-pairs + "\n")) + +(defun ivy-format-function-line (cand-pairs) + "Transform CAND-PAIRS into a string for minibuffer." + (ivy--format-function-generic + (lambda (str extra) + (ivy--add-face (concat str extra "\n") 'ivy-current-match)) + (lambda (str extra) + (concat str extra "\n")) + cand-pairs + "")) + +(defun ivy-add-face-text-property (start end face str) + (if (fboundp 'add-face-text-property) + (add-face-text-property + start end face nil str) + (font-lock-append-text-property + start end 'face face str))) + +(defun ivy--format-minibuffer-line (str) + (let ((start 0) + (str (copy-sequence str))) + (cond ((eq ivy--regex-function 'ivy--regex-ignore-order) + (when (consp ivy--old-re) + (let ((i 1)) + (dolist (re ivy--old-re) + (when (string-match (car re) str) + (ivy-add-face-text-property + (match-beginning 0) (match-end 0) + (nth (1+ (mod (+ i 2) (1- (length ivy-minibuffer-faces)))) + ivy-minibuffer-faces) + str)) + (cl-incf i))))) + ((and (eq ivy-display-style 'fancy) + (not (eq ivy--regex-function 'ivy--regex-fuzzy))) + (unless ivy--old-re + (setq ivy--old-re (funcall ivy--regex-function ivy-text))) + (while (and (string-match ivy--old-re str start) + (> (- (match-end 0) (match-beginning 0)) 0)) + (setq start (match-end 0)) + (let ((i 0)) + (while (<= i ivy--subexps) + (let ((face + (cond ((zerop ivy--subexps) + (cadr ivy-minibuffer-faces)) + ((zerop i) + (car ivy-minibuffer-faces)) + (t + (nth (1+ (mod (+ i 2) (1- (length ivy-minibuffer-faces)))) + ivy-minibuffer-faces))))) + (ivy-add-face-text-property + (match-beginning i) (match-end i) + face str)) + (cl-incf i)))))) + str)) + +(defun ivy--format (cands) + "Return a string for CANDS suitable for display in the minibuffer. +CANDS is a list of strings." + (setq ivy--length (length cands)) + (when (>= ivy--index ivy--length) + (setq ivy--index (max (1- ivy--length) 0))) + (if (null cands) + (setq ivy--current "") + (let* ((half-height (/ ivy-height 2)) + (start (max 0 (- ivy--index half-height))) + (end (min (+ start (1- ivy-height)) ivy--length)) + (start (max 0 (min start (- end (1- ivy-height))))) + (cands (cl-subseq cands start end)) + (index (- ivy--index start))) + (cond (ivy--directory + (setq cands (mapcar (lambda (x) + (if (string-match-p "/\\'" x) + (propertize x 'face 'ivy-subdir) + x)) + cands))) + ((eq (ivy-state-collection ivy-last) 'internal-complete-buffer) + (setq cands (mapcar (lambda (x) + (let ((b (get-buffer x))) + (if (and b + (buffer-file-name b) + (buffer-modified-p b)) + (propertize x 'face 'ivy-modified-buffer) + x))) + cands)))) + (setq ivy--current (copy-sequence (nth index cands))) + (let* ((ivy--index index) + (cand-pairs (mapcar + (lambda (cand) + (cons (ivy--format-minibuffer-line cand) nil)) cands)) + (res (concat "\n" (funcall ivy-format-function cand-pairs)))) + (put-text-property 0 (length res) 'read-only nil res) + res)))) + +(defvar ivy--virtual-buffers nil + "Store the virtual buffers alist.") + +(defvar recentf-list) + +(defcustom ivy-virtual-abbreviate 'name + "The mode of abbreviation for virtual buffer names." + :type '(choice + (const :tag "Only name" name) + (const :tag "Full path" full) + ;; eventually, uniquify + )) + +(defun ivy--virtual-buffers () + "Adapted from `ido-add-virtual-buffers-to-list'." + (unless recentf-mode + (recentf-mode 1)) + (let ((bookmarks (and (boundp 'bookmark-alist) + bookmark-alist)) + virtual-buffers name) + (dolist (head (append + recentf-list + (delete " - no file -" + (delq nil (mapcar (lambda (bookmark) + (cdr (assoc 'filename bookmark))) + bookmarks))))) + (setq name + (if (eq ivy-virtual-abbreviate 'name) + (file-name-nondirectory head) + (expand-file-name head))) + (when (equal name "") + (setq name (file-name-nondirectory (directory-file-name head)))) + (when (equal name "") + (setq name head)) + (and (not (equal name "")) + (null (get-file-buffer head)) + (not (assoc name virtual-buffers)) + (push (cons name head) virtual-buffers))) + (when virtual-buffers + (dolist (comp virtual-buffers) + (put-text-property 0 (length (car comp)) + 'face 'ivy-virtual + (car comp))) + (setq ivy--virtual-buffers (nreverse virtual-buffers)) + (mapcar #'car ivy--virtual-buffers)))) + +(defcustom ivy-ignore-buffers nil + "List of regexps matching buffer names to ignore." + :type '(repeat regexp)) + +(defun ivy--buffer-list (str &optional virtual) + "Return the buffers that match STR. +When VIRTUAL is non-nil, add virtual buffers." + (delete-dups + (append + (mapcar + (lambda (x) + (if (with-current-buffer x + (file-remote-p + (abbreviate-file-name default-directory))) + (propertize x 'face 'ivy-remote) + x)) + (all-completions str 'internal-complete-buffer)) + (and virtual + (ivy--virtual-buffers))))) + +(defun ivy--switch-buffer-action (buffer) + "Switch to BUFFER. +BUFFER may be a string or nil." + (with-ivy-window + (if (zerop (length buffer)) + (switch-to-buffer + ivy-text nil 'force-same-window) + (let ((virtual (assoc buffer ivy--virtual-buffers))) + (if (and virtual + (not (get-buffer buffer))) + (find-file (cdr virtual)) + (switch-to-buffer + buffer nil 'force-same-window)))))) + +(defun ivy--switch-buffer-other-window-action (buffer) + "Switch to BUFFER in other window. +BUFFER may be a string or nil." + (if (zerop (length buffer)) + (switch-to-buffer-other-window ivy-text) + (let ((virtual (assoc buffer ivy--virtual-buffers))) + (if (and virtual + (not (get-buffer buffer))) + (find-file-other-window (cdr virtual)) + (switch-to-buffer-other-window buffer))))) + +(defun ivy--rename-buffer-action (buffer) + "Rename BUFFER." + (let ((new-name (read-string "Rename buffer (to new name): "))) + (with-current-buffer buffer + (rename-buffer new-name)))) + +(defvar ivy-switch-buffer-map (make-sparse-keymap)) + +(ivy-set-actions + 'ivy-switch-buffer + '(("k" + (lambda (x) + (kill-buffer x) + (ivy--reset-state ivy-last)) + "kill") + ("j" + ivy--switch-buffer-other-window-action + "other") + ("r" + ivy--rename-buffer-action + "rename"))) + +(defun ivy--switch-buffer-matcher (regexp candidates) + "Return REGEXP-matching CANDIDATES. +Skip buffers that match `ivy-ignore-buffers'." + (let ((res (ivy--re-filter regexp candidates))) + (if (or (null ivy-use-ignore) + (null ivy-ignore-buffers)) + res + (or (cl-remove-if + (lambda (buf) + (cl-find-if + (lambda (regexp) + (string-match regexp buf)) + ivy-ignore-buffers)) + res) + res)))) + +;;;###autoload +(defun ivy-switch-buffer () + "Switch to another buffer." + (interactive) + (if (not ivy-mode) + (call-interactively 'switch-to-buffer) + (let ((this-command 'ivy-switch-buffer)) + (ivy-read "Switch to buffer: " 'internal-complete-buffer + :matcher #'ivy--switch-buffer-matcher + :preselect (buffer-name (other-buffer (current-buffer))) + :action #'ivy--switch-buffer-action + :keymap ivy-switch-buffer-map + :caller 'ivy-switch-buffer)))) + +;;;###autoload +(defun ivy-switch-buffer-other-window () + "Switch to another buffer in another window." + (interactive) + (ivy-read "Switch to buffer in other window: " 'internal-complete-buffer + :preselect (buffer-name (other-buffer (current-buffer))) + :action #'ivy--switch-buffer-other-window-action + :keymap ivy-switch-buffer-map + :caller 'ivy-switch-buffer-other-window)) + +;;;###autoload +(defun ivy-recentf () + "Find a file on `recentf-list'." + (interactive) + (ivy-read "Recentf: " recentf-list + :action + (lambda (f) + (with-ivy-window + (find-file f))) + :caller 'ivy-recentf)) + +(defun ivy-yank-word () + "Pull next word from buffer into search string." + (interactive) + (let (amend) + (with-ivy-window + (let ((pt (point)) + (le (line-end-position))) + (forward-word 1) + (if (> (point) le) + (goto-char pt) + (setq amend (buffer-substring-no-properties pt (point)))))) + (when amend + (insert (replace-regexp-in-string " +" " " amend))))) + +(defun ivy-kill-ring-save () + "Store the current candidates into the kill ring. +If the region is active, forward to `kill-ring-save' instead." + (interactive) + (if (region-active-p) + (call-interactively 'kill-ring-save) + (kill-new + (mapconcat + #'identity + ivy--old-cands + "\n")))) + +(defun ivy-insert-current () + "Make the current candidate into current input. +Don't finish completion." + (interactive) + (delete-minibuffer-contents) + (if (and ivy--directory + (string-match "/$" ivy--current)) + (insert (substring ivy--current 0 -1)) + (insert ivy--current))) + +(defun ivy-toggle-fuzzy () + "Toggle the re builder between `ivy--regex-fuzzy' and `ivy--regex-plus'." + (interactive) + (setq ivy--old-re nil) + (if (eq ivy--regex-function 'ivy--regex-fuzzy) + (setq ivy--regex-function 'ivy--regex-plus) + (setq ivy--regex-function 'ivy--regex-fuzzy))) + +(defun ivy-reverse-i-search () + "Enter a recursive `ivy-read' session using the current history. +The selected history element will be inserted into the minibuffer." + (interactive) + (let ((enable-recursive-minibuffers t) + (history (symbol-value (ivy-state-history ivy-last))) + (old-last ivy-last) + (ivy-recursive-restore nil)) + (ivy-read "Reverse-i-search: " + history + :action (lambda (x) + (ivy--reset-state + (setq ivy-last old-last)) + (delete-minibuffer-contents) + (insert (substring-no-properties x)) + (ivy--cd-maybe))))) + +(defun ivy-restrict-to-matches () + "Restrict candidates to current matches and erase input." + (interactive) + (delete-minibuffer-contents) + (setq ivy--all-candidates + (ivy--filter ivy-text ivy--all-candidates))) + +;;* Occur +(defvar-local ivy-occur-last nil + "Buffer-local value of `ivy-last'. +Can't re-use `ivy-last' because using e.g. `swiper' in the same +buffer would modify `ivy-last'.") + +(defvar ivy-occur-mode-map + (let ((map (make-sparse-keymap))) + (define-key map [mouse-1] 'ivy-occur-click) + (define-key map (kbd "RET") 'ivy-occur-press) + (define-key map (kbd "j") 'next-line) + (define-key map (kbd "k") 'previous-line) + (define-key map (kbd "h") 'backward-char) + (define-key map (kbd "l") 'forward-char) + (define-key map (kbd "g") 'ivy-occur-press) + (define-key map (kbd "a") 'ivy-occur-read-action) + (define-key map (kbd "o") 'ivy-occur-dispatch) + (define-key map (kbd "q") 'quit-window) + map) + "Keymap for Ivy Occur mode.") + +(define-derived-mode ivy-occur-mode fundamental-mode "Ivy-Occur" + "Major mode for output from \\[ivy-occur]. + +\\{ivy-occur-mode-map}") + +(defvar ivy-occur-grep-mode-map + (let ((map (copy-keymap ivy-occur-mode-map))) + (define-key map (kbd "C-x C-q") 'ivy-wgrep-change-to-wgrep-mode) + map) + "Keymap for Ivy Occur Grep mode.") + +(define-derived-mode ivy-occur-grep-mode grep-mode "Ivy-Occur" + "Major mode for output from \\[ivy-occur]. + +\\{ivy-occur-grep-mode-map}") + +(defvar ivy--occurs-list nil + "A list of custom occur generators per command.") + +(defun ivy-set-occur (cmd occur) + "Assign CMD a custom OCCUR function." + (setq ivy--occurs-list + (plist-put ivy--occurs-list cmd occur))) + +(defun ivy--occur-insert-lines (cands) + (dolist (str cands) + (add-text-properties + 0 (length str) + `(mouse-face + highlight + help-echo "mouse-1: call ivy-action") + str) + (insert str "\n"))) + +(defun ivy-occur () + "Stop completion and put the current matches into a new buffer. + +The new buffer remembers current action(s). + +While in the *ivy-occur* buffer, selecting a candidate with RET or +a mouse click will call the appropriate action for that candidate. + +There is no limit on the number of *ivy-occur* buffers." + (interactive) + (let* ((caller (ivy-state-caller ivy-last)) + (occur-fn (plist-get ivy--occurs-list caller)) + (buffer + (generate-new-buffer + (format "*ivy-occur%s \"%s\"*" + (if caller + (concat " " (prin1-to-string caller)) + "") + ivy-text)))) + (with-current-buffer buffer + (let ((inhibit-read-only t)) + (erase-buffer) + (if occur-fn + (funcall occur-fn) + (ivy-occur-mode) + (insert (format "%d candidates:\n" (length ivy--old-cands))) + (ivy--occur-insert-lines + (mapcar + (lambda (cand) (concat " " cand)) + ivy--old-cands)))) + (setf (ivy-state-text ivy-last) ivy-text) + (setq ivy-occur-last ivy-last) + (setq-local ivy--directory ivy--directory)) + (ivy-exit-with-action + `(lambda (_) (pop-to-buffer ,buffer))))) + +(declare-function wgrep-change-to-wgrep-mode "ext:wgrep") + +(defun ivy-wgrep-change-to-wgrep-mode () + "Forward to `wgrep-change-to-wgrep-mode'." + (interactive) + (if (require 'wgrep nil 'noerror) + (wgrep-change-to-wgrep-mode) + (error "Package wgrep isn't installed"))) + +(defun ivy-occur-read-action () + "Select one of the available actions as the current one." + (interactive) + (let ((ivy-last ivy-occur-last)) + (ivy-read-action))) + +(defun ivy-occur-dispatch () + "Call one of the available actions on the current item." + (interactive) + (let* ((state-action (ivy-state-action ivy-occur-last)) + (actions (if (symbolp state-action) + state-action + (copy-sequence state-action)))) + (unwind-protect + (progn + (ivy-occur-read-action) + (ivy-occur-press)) + (setf (ivy-state-action ivy-occur-last) actions)))) + +(defun ivy-occur-click (event) + "Execute action for the current candidate. +EVENT gives the mouse position." + (interactive "e") + (let ((window (posn-window (event-end event))) + (pos (posn-point (event-end event)))) + (with-current-buffer (window-buffer window) + (goto-char pos) + (ivy-occur-press)))) + +(declare-function swiper--cleanup "swiper") +(declare-function swiper--add-overlays "swiper") + +(defun ivy-occur-press () + "Execute action for the current candidate." + (interactive) + (require 'pulse) + (when (save-excursion + (beginning-of-line) + (looking-at "\\(?:./\\| \\)\\(.*\\)$")) + (let* ((ivy-last ivy-occur-last) + (ivy-text (ivy-state-text ivy-last)) + (str (buffer-substring + (match-beginning 1) + (match-end 1))) + (coll (ivy-state-collection ivy-last)) + (action (ivy--get-action ivy-last)) + (ivy-exit 'done)) + (with-ivy-window + (funcall action + (if (and (consp coll) + (consp (car coll))) + (cdr (assoc str coll)) + str)) + (if (memq (ivy-state-caller ivy-last) + '(swiper counsel-git-grep)) + (with-current-buffer (window-buffer (selected-window)) + (swiper--cleanup) + (swiper--add-overlays + (ivy--regex ivy-text) + (line-beginning-position) + (line-end-position) + (selected-window)) + (run-at-time 0.5 nil 'swiper--cleanup)) + (pulse-momentary-highlight-one-line (point))))))) + +(defvar ivy-help-file (let ((default-directory + (if load-file-name + (file-name-directory load-file-name) + default-directory))) + (if (file-exists-p "ivy-help.org") + (expand-file-name "ivy-help.org") + (if (file-exists-p "doc/ivy-help.org") + (expand-file-name "doc/ivy-help.org")))) + "The file for `ivy-help'.") + +(defun ivy-help () + "Help for `ivy'." + (interactive) + (let ((buf (get-buffer "*Ivy Help*"))) + (unless buf + (setq buf (get-buffer-create "*Ivy Help*")) + (with-current-buffer buf + (insert-file-contents ivy-help-file) + (org-mode) + (view-mode) + (goto-char (point-min)))) + (if (eq this-command 'ivy-help) + (switch-to-buffer buf) + (with-ivy-window + (pop-to-buffer buf))) + (view-mode) + (goto-char (point-min)))) + +(provide 'ivy) + +;;; ivy.el ends here diff --git a/elpa/swiper-20160219.536/ivy.elc b/elpa/swiper-20160219.536/ivy.elc new file mode 100644 index 0000000000000000000000000000000000000000..eaebe3e13440affdc0d9d3d908e28657db76a57c GIT binary patch literal 103314 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 lg-@!K9’, instead of highlighting the selected candidate + with the ‘ivy-current-match’ face. Or take the customization of + actions, say after the candidate function is selected. ‘RET’ uses + ‘counsel-describe-function’ to describe the function, whereas ‘M-o + d’ jumps to that function’s definition in the code. The ‘M-o’ + prefix can be uniformly used with characters like ‘d’ to group + similar actions. + +Discoverability +............... + + Ivy displays easily discoverable commands through the hydra + facility. ‘C-o’ in the minibuffer displays a hydra menu. It opens + up within an expanded minibuffer area. Each menu item comes with + short documentation strings and highlighted one-key completions. + So discovering even seldom used keys is simply a matter of ‘C-o’ in + the minibuffer while in the midst of the Ivy interaction. This + discoverability minimizes exiting Ivy interface for documentation + look-ups. + + +File: ivy.info, Node: Installation, Next: Getting started, Prev: Introduction, Up: Top + +2 Installation +************** + +Install Ivy automatically through Emacs’s package manager, or manually +from Ivy’s development repository. + + Emacs 24.3.1 is the oldest version to run Ivy. Emacs 24.5.1 is the +oldest version that runs Ivy with fancy faces display. +* Menu: + +* Installing from Emacs Package Manager:: +* Installing from the Git repository:: + + +File: ivy.info, Node: Installing from Emacs Package Manager, Next: Installing from the Git repository, Up: Installation + +2.1 Installing from Emacs Package Manager +========================================= + +‘M-x’ ‘package-install’ ‘RET’ ‘swiper’ ‘RET’ + + Ivy is installed as part of ‘swiper’ package. ‘swiper’ is available +from two different package archives, GNU ELPA and MELPA. For the latest +stable version, use the GNU ELPA archives using the above M-x command. + + For current hourly builds, use the MELPA archives. See the code +below for adding MELPA to the list of package archives: + + (require 'package) + (add-to-list 'package-archives + '("melpa" . "http://melpa.org/packages/")) + + After this do ‘M-x’ ‘package-refresh-contents’ ‘RET’, followed by +‘M-x’ ‘package-install’ ‘RET’ ‘swiper’ ‘RET’. + + For package manager details, see *note (emacs)Packages::. + + +File: ivy.info, Node: Installing from the Git repository, Prev: Installing from Emacs Package Manager, Up: Installation + +2.2 Installing from the Git repository +====================================== + +Why install from Git? +..................... + + • No need to wait for MELPA’s hourly builds + • Easy to revert to previous versions + • Contribute to Ivy’s development; send patches; pull requests + +Configuration steps +................... + + First clone the Swiper repository with: + + cd ~/git && git clone https://github.com/abo-abo/swiper + cd swiper && make compile + + Second, add these lines to the Emacs init file: + + (add-to-list 'load-path "~/git/swiper/") + (require 'ivy) + + Then, update the code with: + + git pull + make + + +File: ivy.info, Node: Getting started, Next: Key bindings, Prev: Installation, Up: Top + +3 Getting started +***************** + +First enable Ivy completion everywhere: + + (ivy-mode 1) + + Note: ‘ivy-mode’ can be toggled on and off with ‘M-x’ ‘ivy-mode’. +* Menu: + +* Basic customization:: + + +File: ivy.info, Node: Basic customization, Up: Getting started + +3.1 Basic customization +======================= + +Here are some basic settings particularly useful for new Ivy users: + + (setq ivy-use-virtual-buffers t) + (setq ivy-height 10) + (setq ivy-count-format "(%d/%d) ") + + If you want, you can go without any customizations at all. The above +settings are the most bang for the buck in terms of customization. So +users that typically don’t like customize a lot are advised to look at +these settings first. + + For more advanced customizations, refer to ‘M-x describe-variable’ +documentation. + + +File: ivy.info, Node: Key bindings, Next: Completion Styles, Prev: Getting started, Up: Top + +4 Key bindings +************** + +* Menu: + +* Global key bindings:: +* Minibuffer key bindings:: + + +File: ivy.info, Node: Global key bindings, Next: Minibuffer key bindings, Up: Key bindings + +4.1 Global key bindings +======================= + +The recommended key bindings are: + +Ivy-based interface to standard commands +........................................ + + (global-set-key (kbd "C-s") 'swiper) + (global-set-key (kbd "M-x") 'counsel-M-x) + (global-set-key (kbd "C-x C-f") 'counsel-find-file) + (global-set-key (kbd " f") 'counsel-describe-function) + (global-set-key (kbd " v") 'counsel-describe-variable) + (global-set-key (kbd " l") 'counsel-load-library) + (global-set-key (kbd " i") 'counsel-info-lookup-symbol) + (global-set-key (kbd " u") 'counsel-unicode-char) + +Ivy-based interface to shell and system tools +............................................. + + (global-set-key (kbd "C-c g") 'counsel-git) + (global-set-key (kbd "C-c j") 'counsel-git-grep) + (global-set-key (kbd "C-c k") 'counsel-ag) + (global-set-key (kbd "C-x l") 'counsel-locate) + (global-set-key (kbd "C-S-o") 'counsel-rhythmbox) + +Ivy-resume and other commands +............................. + + ‘ivy-resume’ resumes the last Ivy-based completion. + + (global-set-key (kbd "C-c C-r") 'ivy-resume) + + +File: ivy.info, Node: Minibuffer key bindings, Prev: Global key bindings, Up: Key bindings + +4.2 Minibuffer key bindings +=========================== + +Ivy includes several minibuffer bindings, which are defined in the +‘ivy-minibuffer-map’ keymap variable. The most frequently used ones are +described here. + + ‘swiper’ or ‘counsel-M-x’ add more key bindings through the ‘keymap’ +argument to ‘ivy-read’. These keys, also active in the minibuffer, are +described under their respective commands. + + A key feature of ‘ivy-minibuffer-map’ is its full editing capability +where the familiar ‘C-a’, ‘C-f’, ‘M-d’, ‘M-DEL’, ‘M-b’, ‘M-w’, ‘C-k’, +‘C-y’ key bindings work the same as in ‘fundamental-mode’. +* Menu: + +* Key bindings for navigation:: +* Key bindings for single selection, action, then exit minibuffer: Key bindings for single selection action then exit minibuffer. +* Key bindings for multiple selections and actions, keep minibuffer open: Key bindings for multiple selections and actions keep minibuffer open. +* Key bindings that alter the minibuffer input:: +* Other key bindings:: +* Hydra in the minibuffer:: +* Saving the current completion session to a buffer:: + + +File: ivy.info, Node: Key bindings for navigation, Next: Key bindings for single selection action then exit minibuffer, Up: Minibuffer key bindings + +4.2.1 Key bindings for navigation +--------------------------------- + + • ‘C-n’ (‘ivy-next-line’) selects the next candidate + • ‘C-p’ (‘ivy-previous-line’) selects the previous candidate + • ‘M-<’ (‘ivy-beginning-of-buffer’) selects the first candidate + • ‘M->’ (‘ivy-end-of-buffer’) selects the last candidate + • ‘C-v’ (‘ivy-scroll-up-command’) scrolls up by ‘ivy-height’ lines + • ‘M-v’ (‘ivy-scroll-down-command’) scrolls down by ‘ivy-height’ + lines + + -- User Option: ivy-wrap + Specifies the wrap-around behavior for ‘C-n’ and ‘C-p’. When + ‘ivy-wrap’ is set to ‘t’, ‘ivy-next-line’ and ‘ivy-previous-line’ + will cycle past the last and the first candidates respectively. + + Warp-around behavior is off by default. + + -- User Option: ivy-height + Use this option to adjust the minibuffer height, which also affects + scroll size when using ‘C-v’ and ‘M-v’ key bindings. + + ‘ivy-height’ is 10 lines by default. + + +File: ivy.info, Node: Key bindings for single selection action then exit minibuffer, Next: Key bindings for multiple selections and actions keep minibuffer open, Prev: Key bindings for navigation, Up: Minibuffer key bindings + +4.2.2 Key bindings for single selection, action, then exit minibuffer +--------------------------------------------------------------------- + +Ivy can offer several actions from which to choose which action to run. +This "calling an action" operates on the selected candidate. For +example, when viewing a list of files, one action could open it for +editing, one to view it, another to invoke a special function, and so +on. Custom actions can be added to this interface. The precise action +to call on the selected candidate can be delayed until after the +narrowing is completed. No need to exit the interface if unsure which +action to run. This delayed flexibility and customization of actions +extends usability of lists in Emacs. + +‘C-m’ or ‘RET’ (‘ivy-done’) +........................... + + Calls the default action and then exits the minibuffer. + +‘M-o’ (‘ivy-dispatching-done’) +.............................. + + Presents valid actions from which to choose. When only one action + is available, there is no difference between ‘M-o’ and ‘C-m’. + +‘C-j’ (‘ivy-alt-done’) +...................... + + When completing file names, selects the current directory candidate + and starts a new completion session there. Otherwise, it is the + same as ‘ivy-done’. + +‘TAB’ (‘ivy-partial-or-done’) +............................. + + Attempts partial completion, extending current input as much as + possible. ‘TAB TAB’ is the same as ‘C-j’ (‘ivy-alt-done’). + + Example ERT test: + + (should + (equal (ivy-with + '(progn + (ivy-read "Test: " '("can do" "can't, sorry" "other")) + ivy-text) + "c ") + "can")) + +‘C-M-j’ (‘ivy-immediate-done’) +.............................. + + Exits with _the current input_ instead of _the current candidate_ + (like other commands). + + This is useful e.g. when you call ‘find-file’ to create a new + file, but the desired name matches an existing file. In that case, + using ‘C-j’ would select that existing file, which isn’t what you + want - use this command instead. + +‘C-'’ (‘ivy-avy’) +................. + + Uses avy to select one of the candidates on the current candidate + page. This can often be faster than multiple ‘C-n’ or ‘C-p’ + keystrokes followed by ‘C-m’. + + +File: ivy.info, Node: Key bindings for multiple selections and actions keep minibuffer open, Next: Key bindings that alter the minibuffer input, Prev: Key bindings for single selection action then exit minibuffer, Up: Minibuffer key bindings + +4.2.3 Key bindings for multiple selections and actions, keep minibuffer open +---------------------------------------------------------------------------- + +For repeatedly applying multiple actions or acting on multiple +candidates, Ivy does not close the minibuffer between commands. It +keeps the minibuffer open for applying subsequent actions. + + Adding an extra meta key to the normal key chord invokes the special +version of the regular commands that enables applying multiple actions. + +‘C-M-m’ (‘ivy-call’) +.................... + + Is the non-exiting version of ‘C-m’ (‘ivy-done’). + + Instead of closing the minibuffer, ‘C-M-m’ allows selecting another + candidate or another action. For example, ‘C-M-m’ on functions + list invokes ‘describe-function’. When combined with ‘C-n’, + function descriptions can be invoked quickly in succession. + +‘C-M-o’ (‘ivy-dispatching-call’) +................................ + + Is the non-exiting version of ‘M-o’ (‘ivy-dispatching-done’). + + For example, during the ‘counsel-rhythmbox’ completion, press + ‘C-M-o e’ to en-queue the selected candidate, followed by ‘C-n C-m’ + to play the next candidate - the current action reverts to the + default one after ‘C-M-o’. + +‘C-M-n’ (‘ivy-next-line-and-call’) +.................................. + + Combines ‘C-n’ and ‘C-M-m’. Applies an action and moves to next + line. + + Comes in handy when opening multiple files from + ‘counsel-find-file’, ‘counsel-git-grep’, ‘counsel-ag’, or + ‘counsel-locate’ lists. Just hold ‘C-M-n’ for rapid-fire default + action on each successive element of the list. + +‘C-M-p’ (‘ivy-previous-line-and-call’) +...................................... + + Combines ‘C-p’ and ‘C-M-m’. + + Similar to the above except it moves through the list in the other + direction. + +‘ivy-resume’ +............ + + Recalls the state of the completion session just before its last + exit. + + Useful after an accidental ‘C-m’ (‘ivy-done’). + + +File: ivy.info, Node: Key bindings that alter the minibuffer input, Next: Other key bindings, Prev: Key bindings for multiple selections and actions keep minibuffer open, Up: Minibuffer key bindings + +4.2.4 Key bindings that alter the minibuffer input +-------------------------------------------------- + +‘M-n’ (‘ivy-next-history-element’) +.................................. + + Cycles forward through the Ivy command history. + + Ivy updates an internal history list after each action. When this + history list is empty, ‘M-n’ inserts symbol (or URL) at point into + the minibuffer. + +‘M-p’ (‘ivy-previous-history-element’) +...................................... + + Cycles forward through the Ivy command history. + +‘M-i’ (‘ivy-insert-current’) +............................ + + Inserts the current candidate into the minibuffer. + + Useful for copying and renaming files, for example: ‘M-i’ to insert + the original file name string, edit it, and then ‘C-m’ to complete + the renaming. + +‘M-j’ (‘ivy-yank-word’) +....................... + + Inserts the sub-word at point into the minibuffer. + + This is similar to ‘C-s C-w’ with ‘isearch’. Ivy reserves ‘C-w’ + for ‘kill-region’. + +‘S-SPC’ (‘ivy-restrict-to-matches’) +................................... + + Deletes the current input, and resets the candidates list to the + currently restricted matches. + + This is how Ivy provides narrowing in successive tiers. + +‘C-r’ (‘ivy-reverse-i-search’) +.............................. + + Starts a recursive completion session through the command’s + history. + + This works just like ‘C-r’ at the bash command prompt, where the + completion candidates are the history items. Upon completion, the + selected candidate string is inserted into the minibuffer. + + +File: ivy.info, Node: Other key bindings, Next: Hydra in the minibuffer, Prev: Key bindings that alter the minibuffer input, Up: Minibuffer key bindings + +4.2.5 Other key bindings +------------------------ + +‘M-w’ (‘ivy-kill-ring-save’) +............................ + + Copies selected candidates to the kill ring. + + Copies the region if the region is active. + + +File: ivy.info, Node: Hydra in the minibuffer, Next: Saving the current completion session to a buffer, Prev: Other key bindings, Up: Minibuffer key bindings + +4.2.6 Hydra in the minibuffer +----------------------------- + +‘C-o’ (‘hydra-ivy/body’) +........................ + + Invokes the hydra menu with short key bindings. + + When Hydra is active, minibuffer editing is disabled and menus +display short aliases: + +Short Normal Command name +------------------------------------------------ +‘o’ ‘C-g’ ‘keyboard-escape-quit’ +‘j’ ‘C-n’ ‘ivy-next-line’ +‘k’ ‘C-p’ ‘ivy-previous-line’ +‘h’ ‘M-<’ ‘ivy-beginning-of-buffer’ +‘l’ ‘M->’ ‘ivy-end-of-buffer’ +‘d’ ‘C-m’ ‘ivy-done’ +‘f’ ‘C-j’ ‘ivy-alt-done’ +‘g’ ‘C-M-m’ ‘ivy-call’ +‘u’ ‘C-c C-o’ ‘ivy-occur’ + + Hydra reduces key strokes, for example: ‘C-n C-n C-n C-n’ is ‘C-o +jjjj’ in Hydra. + + Hydra menu offers these additioanl bindings: + +‘c’ (‘ivy-toggle-calling’) +.......................... + + Toggle calling the action after each candidate change. It modifies + ‘j’ to ‘jg’, ‘k’ to ‘kg’ etc. + +‘m’ (‘ivy-toggle-fuzzy’) +........................ + + Toggle the current regexp matcher. + +‘>’ (‘ivy-minibuffer-grow’) +........................... + + Increase ‘ivy-height’ for the current minibuffer. + +‘<’ (‘ivy-minibuffer-shrink’) +............................. + + Decrease ‘ivy-height’ for the current minibuffer. + +‘w’ (‘ivy-prev-action’) +....................... + + Select the previous action. + +‘s’ (‘ivy-next-action’) +....................... + + Select the next action. + +‘a’ (‘ivy-read-action’) +....................... + + Use a menu to select an action. + +‘C’ (‘ivy-toggle-case-fold’) +............................ + + Toggle case folding (match both upper and lower case characters for + lower case input). + + +File: ivy.info, Node: Saving the current completion session to a buffer, Prev: Hydra in the minibuffer, Up: Minibuffer key bindings + +4.2.7 Saving the current completion session to a buffer +------------------------------------------------------- + +‘C-c C-o’ (‘ivy-occur’) +....................... + + Saves the current candidates to a new buffer and exits completion. + + The new buffer is read-only and has a few useful bindings defined. + +‘RET’ or ‘j’ (‘ivy-occur-press’) +................................ + + Call the current action on the selected candidate. + +‘mouse-1’ (‘ivy-occur-click’) +............................. + + Call the current action on the selected candidate. + +‘j’ (‘next-line’) +................. + + Move to next line. + +‘k’ (‘previous-line’) +..................... + + Move to previous line. + +‘a’ (‘ivy-occur-read-action’) +............................. + + Read an action and make it current for this buffer. + +‘o’ (‘ivy-occur-dispatch’) +.......................... + + Read an action and call it on the selected candidate. + +‘q’ (‘quit-window’) +................... + + Bury the current buffer. + + Ivy has no limit on the number of active buffers like these. + + Ivy takes care of naming buffers uniquely by constructing descriptive +names. For example: ‘*ivy-occur counsel-describe-variable "function$*’. + + +File: ivy.info, Node: Completion Styles, Next: Customization, Prev: Key bindings, Up: Top + +5 Completion Styles +******************* + +Ivy’s completion functions rely on a regex builder - a function that +transforms a string input to a string regex. All current candidates +simply have to match this regex. Each collection can be assigned its +own regex builder by customizing ‘ivy-re-builders-alist’. + + The keys of this alist are collection names, and the values are one +of the following: + • ‘ivy--regex’ + • ‘ivy--regex-plus’ + • ‘ivy--regex-ignore-order’ + • ‘ivy--regex-fuzzy’ + • ‘regexp-quote’ + + A catch-all key, ‘t’, applies to all collections that don’t have +their own key. + + The default is: + + (setq ivy-re-builders-alist + '((t . ivy--regex-plus))) + + This example shows a custom regex builder assigned to file name +completion: + + (setq ivy-re-builders-alist + '((read-file-name-internal . ivy--regex-fuzzy) + (t . ivy--regex-plus))) + + Here, ‘read-file-name-internal’ is a function that is passed as the +second argument to ‘completing-read’ for file name completion. + + The regex builder resolves as follows (in order of priority): + 1. ‘re-builder’ argument passed to ‘ivy-read’. + 2. ‘collection’ argument passed to ‘ivy-read’ is a function and has an + entry on ‘ivy-re-builders-alist’. + 3. ‘caller’ argument passed to ‘ivy-read’ has an entry on + ‘ivy-re-builders-alist’. + 4. ‘this-command’ has an entry on ‘ivy-re-builders-alist’. + 5. ‘t’ has an entry on ‘ivy-re-builders-alist’. + 6. ‘ivy--regex’. +* Menu: + +* ivy--regex-plus:: +* ivy--regex-ignore-order:: +* ivy--regex-fuzzy:: + + +File: ivy.info, Node: ivy--regex-plus, Next: ivy--regex-ignore-order, Up: Completion Styles + +5.1 ivy–regex-plus +================== + +‘ivy--regex-plus’ is Ivy’s default completion method. + + ‘ivy--regex-plus’ matches by splitting the input by spaces and +rebuilding it into a regex. + + As the search string is typed in Ivy’s minibuffer, it is transformed +into valid regex syntax. If the string is ‘"for example"’, it is +transformed into + + "\\(for\\).*\\(example\\)" + + which in regex terminology matches ‘"for"’ followed by a wild card +and then ‘"example"’. Note how Ivy uses the space character to build +wild cards. To match a literal white space, use an extra space. So to +match one space type two spaces, to match two spaces type three spaces, +and so on. + + As Ivy transforms typed characters into regex strings, it provides an +intuitive feedback through font highlights. + + Ivy supports regexp negation with ‘"!"’. For example, ‘"define key ! +ivy quit"’ first selects everything matching ‘"define.*key"’, then +removes everything matching ‘"ivy"’, and finally removes everything +matching ‘"quit"’. What remains is the final result set of the negation +regexp. + + Since Ivy treats minibuffer input as a regexp, the standard regexp +identifiers work: ‘"^"’, ‘"$"’, ‘"\b"’ or ‘"[a-z]"’. The exceptions are +spaces, which translate to ‘".*"’, and ‘"!"’ that signal the beginning +of a negation group. + + +File: ivy.info, Node: ivy--regex-ignore-order, Next: ivy--regex-fuzzy, Prev: ivy--regex-plus, Up: Completion Styles + +5.2 ivy–regex-ignore-order +========================== + +‘ivy--regex-ignore-order’ ignores the order of regexp tokens when +searching for matching candidates. For instance, the input ‘"for +example"’ will match ‘"example test for"’. + + +File: ivy.info, Node: ivy--regex-fuzzy, Prev: ivy--regex-ignore-order, Up: Completion Styles + +5.3 ivy–regex-fuzzy +=================== + +‘ivy--regex-fuzzy’ splits each character with a wild card. Searching +for ‘"for"’ returns all ‘"f.*o.*r"’ matches, resulting in a large number +of hits. Yet some searches need these extra hits. Ivy sorts such large +lists using ‘flx’ package’s scoring mechanism, if it’s installed. + + ‘C-o m’ toggles the current regexp builder. + + +File: ivy.info, Node: Customization, Next: Commands, Prev: Completion Styles, Up: Top + +6 Customization +*************** + +* Menu: + +* Faces:: +* Defcustoms:: +* Actions:: +* Packages:: + + +File: ivy.info, Node: Faces, Next: Defcustoms, Up: Customization + +6.1 Faces +========= + +‘ivy-current-match’ +................... + + Highlights the currently selected candidate. + +‘ivy-minibuffer-match-face-1’ +............................. + + Highlights the background of the match. + +‘ivy-minibuffer-match-face-2’ +............................. + + Highlights the first (modulo 3) matched group. + +‘ivy-minibuffer-match-face-3’ +............................. + + Highlights the second (modulo 3) matched group. + +‘ivy-minibuffer-match-face-4’ +............................. + + Highlights the third (modulo 3) matched group. + +‘ivy-confirm-face’ +.................. + + Highlights the "(confirm)" part of the prompt. + + When ‘confirm-nonexistent-file-or-buffer’ set to ‘t’, then + confirming non-existent files in ‘ivy-mode’ requires an additional + ‘RET’. + + The confirmation prompt will use this face. + + For example: + + (setq confirm-nonexistent-file-or-buffer t) + + Then call ‘find-file’, enter "eldorado" and press ‘RET’ - the + prompt will be appended with "(confirm)". Press ‘RET’ once more to + confirm, or any key to continue the completion. + +‘ivy-match-required-face’ +......................... + + Highlights the "(match required)" part of the prompt. + + When completions have to match available candidates and cannot take + random input, the "(match required)" prompt signals this + constraint. + + For example, call ‘describe-variable’, enter "waldo" and press + ‘RET’ - "(match required)" is prompted. Press any key for the + prompt to disappear. + +‘ivy-subdir’ +............ + + Highlights directories when completing file names. + +‘ivy-remote’ +............ + + Highlights remote files when completing file names. + +‘ivy-virtual’ +............. + + Highlights virtual buffers when completing buffer names. + + Virtual buffers correspond to bookmarks and recent files list, + ‘recentf’. + + Enable virtual buffers with: + + (setq ivy-use-virtual-buffers t) + + +File: ivy.info, Node: Defcustoms, Next: Actions, Prev: Faces, Up: Customization + +6.2 Defcustoms +============== + + -- User Option: ivy-count-format + A string that specifies display of number of candidates and current + candidate, if one exists. + + The number of matching candidates by default is shown as a right- + padded integer value. + + To disable showing the number of candidates: + + (setq ivy-count-format "") + + To also display the current candidate: + + (setq ivy-count-format "(%d/%d) ") + + The ‘format’-style switches this variable uses are described in the + ‘format’ documentation. + + -- User Option: ivy-display-style + Specifies highlighting candidates in the minibuffer. + + The default setting is ‘'fancy’ and valid only in Emacs versions + 24.5 or newer. + + Set ‘ivy-display-style’ to ‘nil’ for a plain minibuffer. + + -- User Option: ivy-on-del-error-function + Specify what when ‘DEL’ (‘ivy-backward-delete-char’) throws. + + The default behavior is to quit the completion after ‘DEL’ – a + handy key to invoke after mistakenly triggering a completion. + + +File: ivy.info, Node: Actions, Next: Packages, Prev: Defcustoms, Up: Customization + +6.3 Actions +=========== + +* Menu: + +* What are actions?:: +* How can different actions be called?:: +* How to modify the actions list?:: +* Example - add two actions to each command:: +* Example - define a new command with several actions:: + + +File: ivy.info, Node: What are actions?, Next: How can different actions be called?, Up: Actions + +6.3.1 What are actions? +----------------------- + +An action is a function that is called after you select a candidate +during completion. This function takes a single string argument, which +is the selected candidate. + +Window context when calling an action +..................................... + + Currently, the action is executed in the minibuffer window context. + This means e.g. that if you call ‘insert’ the text will be + inserted into the minibuffer. + + If you want to execute the action in the initial window from which + the completion started, use the ‘with-ivy-window’ wrapper macro. + + (defun ivy-insert-action (x) + (with-ivy-window + (insert x))) + + +File: ivy.info, Node: How can different actions be called?, Next: How to modify the actions list?, Prev: What are actions?, Up: Actions + +6.3.2 How can different actions be called? +------------------------------------------ + + • ‘C-m’ (‘ivy-done’) calls the current action. + • ‘M-o’ (‘ivy-dispatching-done’) presents available actions for + selection, calls it after selection, and then exits. + • ‘C-M-o’ (‘ivy-dispatching-call’) presents available actions for + selection, calls it after selection, and then does not exit. + + +File: ivy.info, Node: How to modify the actions list?, Next: Example - add two actions to each command, Prev: How can different actions be called?, Up: Actions + +6.3.3 How to modify the actions list? +------------------------------------- + +Currently, you can append any amount of your own actions to the default +list of actions. This can be done either for a specific command, or for +all commands at once. + + Usually, the command has only one default action. The convention is +to use single letters when selecting a command, and the letter ‘o’ is +designated for the default command. This way, ‘M-o o’ should be always +equivalent to ‘C-m’. + + +File: ivy.info, Node: Example - add two actions to each command, Next: Example - define a new command with several actions, Prev: How to modify the actions list?, Up: Actions + +6.3.4 Example - add two actions to each command +----------------------------------------------- + +The first action inserts the current candidate into the Ivy window - the +window from which ‘ivy-read’ was called. + + The second action copies the current candidate to the kill ring. + + (defun ivy-yank-action (x) + (kill-new x)) + + (defun ivy-copy-to-buffer-action (x) + (with-ivy-window + (insert x))) + + (ivy-set-actions + t + '(("i" ivy-copy-to-buffer-action "insert") + ("y" ivy-yank-action "yank"))) + + Then in any completion session, ‘M-o y’ invokes ‘ivy-yank-action’, +and ‘M-o i’ invokes ‘ivy-copy-to-buffer-action’. +* Menu: + +* How to undo adding the two actions:: +* How to add actions to a specific command:: + + +File: ivy.info, Node: How to undo adding the two actions, Next: How to add actions to a specific command, Up: Example - add two actions to each command + +6.3.4.1 How to undo adding the two actions +.......................................... + +Since ‘ivy-set-actions’ modifies the internal dictionary with new data, +set the extra actions list to ‘nil’ by assigning ‘nil’ value to the ‘t’ +key as follows: + + (ivy-set-actions t nil) + + +File: ivy.info, Node: How to add actions to a specific command, Prev: How to undo adding the two actions, Up: Example - add two actions to each command + +6.3.4.2 How to add actions to a specific command +................................................ + +Use the command name as the key: + + (ivy-set-actions + 'swiper + '(("i" ivy-copy-to-buffer-action "insert") + ("y" ivy-yank-action "yank"))) + + +File: ivy.info, Node: Example - define a new command with several actions, Prev: Example - add two actions to each command, Up: Actions + +6.3.5 Example - define a new command with several actions +--------------------------------------------------------- + + (defun my-action-1 (x) + (message "action-1: %s" x)) + + (defun my-action-2 (x) + (message "action-2: %s" x)) + + (defun my-action-3 (x) + (message "action-3: %s" x)) + + (defun my-command-with-3-actions () + (interactive) + (ivy-read "test: " '("foo" "bar" "baz") + :action '(1 + ("o" my-action-1 "action 1") + ("j" my-action-2 "action 2") + ("k" my-action-3 "action 3")))) + + The number 1 above is the index of the default action. Each action +has its own string description for easy selection. +* Menu: + +* Test the above function with ‘ivy-occur’:: + + +File: ivy.info, Node: Test the above function with ‘ivy-occur’, Up: Example - define a new command with several actions + +6.3.5.1 Test the above function with ‘ivy-occur’ +................................................ + +To examine each action with each candidate in a key-efficient way, try: + + • Call ‘my-command-with-3-actions’ + • Press ‘C-c C-o’ to close the completion window and move to an + ivy-occur buffer + • Press ‘kkk’ to move to the first candidate, since the point is most + likely at the end of the buffer + • Press ‘oo’ to call the first action + • Press ‘oj’ and ‘ok’ to call the second and the third actions + • Press ‘j’ to move to the next candidate + • Press ‘oo’, ‘oj’, ‘ok’ + • Press ‘j’ to move to the next candidate + • and so on… + + +File: ivy.info, Node: Packages, Prev: Actions, Up: Customization + +6.4 Packages +============ + +‘org-mode’ +.......... + + ‘org-mode’ versions 8.3.3 or later obey ‘completing-read-function’ + (which ‘ivy-mode’ sets). Try refiling headings with similar names + to appreciate ‘ivy-mode’. + +‘magit’ +....... + + Magit requries this setting for ivy completion: + + (setq magit-completing-read-function 'ivy-completing-read) + +‘find-file-in-project’ +...................... + + It uses ivy by default if Ivy is installed. + +‘projectile’ +............ + + Projectile requires this seeting for ivy completion: + + (setq projectile-completion-system 'ivy) + +‘helm-make’ +........... + + Helm-make requires this seeting for ivy completion. + + (setq helm-make-completion-method 'ivy) + + +File: ivy.info, Node: Commands, Next: API, Prev: Customization, Up: Top + +7 Commands +********** + +* Menu: + +* File Name Completion:: +* Buffer Name Completion:: +* Counsel commands:: + + +File: ivy.info, Node: File Name Completion, Next: Buffer Name Completion, Up: Commands + +7.1 File Name Completion +======================== + +Since file name completion is ubiquitious, Ivy provides extra bindings +that work here: + +‘C-j’ (‘ivy-alt-done’) +...................... + + On a directory, restarts completion from that directory. + + On a file or ‘./’, exit completion with the selected candidate. + +‘DEL’ (‘ivy-backward-delete-char’) +.................................. + + Restart the completion in the parent directory if current input is + empty. + +‘//’ (‘self-insert-command’) +............................ + + Switch to the root directory. + +‘~’ (‘self-insert-command’) +........................... + + Switch to the home directory. + +‘/’ (‘self-insert-command’) +........................... + + If the current input matches an existing directory name exactly, + switch the completion to that directory. + +‘M-q’ (‘ivy-toggle-regexp-quote’) +................................. + + Toggle between input as regexp or not. + + Switch to matching literally since file names include ‘.’, which is + for matching any char in regexp mode. + -- User Option: ivy-extra-directories + Decide if you want to see ‘../’ and ‘./’ during file name + completion. + + Reason to remove: ‘../’ is the same as ‘DEL’. + + Reason not to remove: navigate anywhere with only ‘C-n’, ‘C-p’ and + ‘C-j’. + + Likewise, ‘./’ can be removed. + +Using TRAMP +........... + + From any directory, with the empty input, inputting ‘/ssh:’ and + pressing ‘C-j’ (or ‘RET’, which is the same thing) completes for + host and user names. + + For ‘/ssh:user@’ input, completes the domain name. + + ‘C-i’ works in a similar way to the default completion. + +History +....... + + File history works the same with ‘M-p’, ‘M-n’, and ‘C-r’, but uses + a custom code for file name completion that cycles through files + previously opened. It also works with TRAMP files. + + +File: ivy.info, Node: Buffer Name Completion, Next: Counsel commands, Prev: File Name Completion, Up: Commands + +7.2 Buffer Name Completion +========================== + + -- User Option: ivy-use-virtual-buffers + When non-nil, add ‘recentf-mode’ and bookmarks to + ‘ivy-switch-buffer’ completion candidates. + + Adding this to Emacs init file: + + (setq ivy-use-virtual-buffers t) + will add additional virual buffers to the buffers list for recent + files. Selecting such virtual buffers, which are highlighted with + ‘ivy-virtual’ face, will open the corresponding file. + + +File: ivy.info, Node: Counsel commands, Prev: Buffer Name Completion, Up: Commands + +7.3 Counsel commands +==================== + +The main advantages of ‘counsel-’ functions over their basic equivalents +in ‘ivy-mode’ are: + + 1. Multi-actions and non-exiting actions work. + 2. ‘ivy-resume’ can resume the last completion session. + 3. Customize ‘ivy-set-actions’, ‘ivy-re-builders-alist’. + 4. Customize individual keymaps, such as ‘counsel-describe-map’, + ‘counsel-git-grep-map’, or ‘counsel-find-file-map’, instead of + customizing ‘ivy-minibuffer-map’ that applies to all completion + sessions. + + +File: ivy.info, Node: API, Next: Variable Index, Prev: Commands, Up: Top + +8 API +***** + +The main (and only) entry point is ‘ivy-read’ function. It takes two +required arguments and many optional arguments that can be passed by +key. The optional ‘:action’ argument is highly recommended for features +such as multi-actions, non-exiting actions, ‘ivy-occur’ and +‘ivy-resume’. +* Menu: + +* Required arguments for ‘ivy-read’:: +* Optional arguments for ‘ivy-read’:: +* Example - ‘counsel-describe-function’:: +* Example - ‘counsel-locate’:: + + +File: ivy.info, Node: Required arguments for ‘ivy-read’, Next: Optional arguments for ‘ivy-read’, Up: API + +8.1 Required arguments for ‘ivy-read’ +===================================== + +‘prompt’ +........ + + A format string normally ending in a colon and a space. + + ‘%d’ anywhere in the string is replaced by the current number of + matching candidates. To use a literal ‘%’ character, escape it as + ‘%%’. See also ‘ivy-count-format’. + +‘collection’ +............ + + Either a list of strings, a function, an alist or a hash table. + + If a function, then it has to be compatible with ‘all-completions’. + + +File: ivy.info, Node: Optional arguments for ‘ivy-read’, Next: Example - ‘counsel-describe-function’, Prev: Required arguments for ‘ivy-read’, Up: API + +8.2 Optional arguments for ‘ivy-read’ +===================================== + +‘predicate’ +........... + + Is a function to filter the initial collection. It has to be + compatible with ‘all-completions’. + +‘require-match’ +............... + + When set to a non-nil value, input must match one of the + candidates. Custom input is not accepted. + +‘initial-input’ +............... + + This string argument is included for compatibility with + ‘completing-read’, which inserts it into the minibuffer. + + It’s recommended to use the ‘preselect’ argument instead of this. + +‘history’ +......... + + Name of the symbol to store history. See ‘completing-read’. + +‘preselect’ +........... + + When set to a string value, select the first candidate matching + this value. + + When set to an integer value, select the candidate with that index + value. + + Every time the input becomes empty, the item corresponding to to + ‘preselect’ is selected. + +‘keymap’ +........ + + A keymap to be composed with ‘ivy-minibuffer-map’. This keymap has + priority over ‘ivy-minibuffer-map’ and can be modified at any later + stage. + +‘update-fn’ +........... + + Is the function called each time the current candidate changes. + This function takes no arguments and is called in the minibuffer’s + ‘post-command-hook’. See ‘swiper’ for an example usage. + +‘sort’ +...... + + When non-nil, use ‘ivy-sort-functions-alist’ to sort the collection + as long as the collection is not larger than ‘ivy-sort-max-size’. + +‘action’ +........ + + Is the function to call after selection. It takes a string + argument. + +‘unwind’ +........ + + Is the function to call before exiting completion. It takes no + arguments. This function is called even if the completion is + interrupted with ‘C-g’. See ‘swiper’ for an example usage. + +‘re-builder’ +............ + + Is a function that takes a string and returns a valid regex. See + ‘Completion Styles’ for details. + +‘matcher’ +......... + + Is a function that takes a regex string and a list of strings and + returns a list of strings matching the regex. Any ordinary Emacs + matching function will suffice, yet finely tuned mathing functions + can be used. See ‘counsel-find-file’ for an example usage. + +‘dynamic-collection’ +.................... + + When non-nil, ‘collection’ will be used to dynamically generate the + candidates each time the input changes, instead of being used once + statically with ‘all-completions’ to generate a list of strings. + See ‘counsel-locate’ for an example usage. + +‘caller’ +........ + + Is a symbol that uniquely identifies the function that called + ‘ivy-read’, which may be useful for further customizations. + + +File: ivy.info, Node: Example - ‘counsel-describe-function’, Next: Example - ‘counsel-locate’, Prev: Optional arguments for ‘ivy-read’, Up: API + +8.3 Example - ‘counsel-describe-function’ +========================================= + +This is a typical example of a function with a non-async collection, +which is a collection where the strings in the collection are known +prior to any input from the user. + + Only the first two arguments (along with ‘action’) are essential - +the rest of the arguments are for fine-tuning, and could be omitted. + + The ‘action’ argument could also be omitted - but then ‘ivy-read’ +would do nothing except returning the string result, which you could +later use yourself. However, it’s recommended that you use the ‘action’ +argument. + + (defun counsel-describe-function () + "Forward to `describe-function'." + (interactive) + (ivy-read "Describe function: " + (let (cands) + (mapatoms + (lambda (x) + (when (fboundp x) + (push (symbol-name x) cands)))) + cands) + :keymap counsel-describe-map + :preselect (counsel-symbol-at-point) + :history 'counsel-describe-symbol-history + :require-match t + :sort t + :action (lambda (x) + (describe-function + (intern x))) + :caller 'counsel-describe-function)) + + Here are the interesting features of the above function, in the order +that they appear: + + • The ‘prompt’ argument is a simple string ending in ": ". + • The ‘collection’ argument evaluates to a (large) list of strings. + • The ‘keymap’ argument is for a custom keymap to supplement + ‘ivy-minibuffer-map’. + • The ‘preselect’ is provided by ‘counsel-symbol-at-point’, which + returns a symbol near the point. Ivy then selects the first + candidate from the collection that matches this symbol. To select + this pre-selected candidate, a ‘RET’ will suffice. No further user + input is necessary. + • The ‘history’ argument is for keeping the history of this command + separate from the common history in ‘ivy-history’. + • The ‘require-match’ is set to ‘t’ since it doesn’t make sense to + call ‘describe-function’ on an un-interned symbol. + • The ‘sort’ argument is set to ‘t’ so choosing between similar + candidates becomes easier. Sometimes, the collection size will + exceed ‘ivy-sort-max-size’, which is 30000 by default. In that + case the sorting will not happen to avoid delays. + + Adjust this variable to choose between sorting time and completion + start-up time. + • The ‘action’ argument calls ‘describe-function’ on the interned + selected candidate. + • The ‘caller’ argument identifies this completion session. This is + important, since with the collection being a list of strings and + not a function name, the only other way for ‘ivy-read’ to identify + "who’s calling" and to apply the appropriate customizations is to + examine ‘this-command’. But ‘this-command’ would be modified if + another command called ‘counsel-describe-function’. + + +File: ivy.info, Node: Example - ‘counsel-locate’, Prev: Example - ‘counsel-describe-function’, Up: API + +8.4 Example - ‘counsel-locate’ +============================== + +This is a typical example of a function with an async collection. Since +the collection function cannot pre-compute all the locatable files in +memory within reasonable limits (time or memory), it relies on user +input to filter the universe of possible candidates to a manageable size +while also continuing to search asynchronously for possible candidates. +Both the filtering and searching continues with each character change of +the input with rapid updates to the collection presented without idle +waiting times. This live update will continue as long as there are +likely candidates. Eventually updates to the minibuffer will stop after +user input, filtering, and searching have exhausted looking for possible +candidates. + + Async collections suit long-running shell commands, such as ‘locate’. +With each new input, a new process starts while the old process is +killed. The collection is refreshed anew with each new process. +Meanwhile the user can provide more input characters (for further +narrowing) or select a candidate from the visible collection. + + (defun counsel-locate-function (str) + (if (< (length str) 3) + (counsel-more-chars 3) + (counsel--async-command + (format "locate %s '%s'" + (mapconcat #'identity counsel-locate-options " ") + (counsel-unquote-regex-parens + (ivy--regex str)))) + '("" "working..."))) + + ;;;###autoload + (defun counsel-locate (&optional initial-input) + "Call the \"locate\" shell command. + INITIAL-INPUT can be given as the initial minibuffer input." + (interactive) + (ivy-read "Locate: " #'counsel-locate-function + :initial-input initial-input + :dynamic-collection t + :history 'counsel-locate-history + :action (lambda (file) + (with-ivy-window + (when file + (find-file file)))) + :unwind #'counsel-delete-process + :caller 'counsel-locate)) + + Here are the interesting features of the above functions, in the +order that they appear: + + • ‘counsel-locate-function’ takes a string argument and returns a + list of strings. Note that it’s not compatible with + ‘all-completions’, but since we’re not using that here, might as + well use one argument instead of three. + • ‘counsel-more-chars’ is a simple function that returns e.g. ‘'("2 + chars more")’ asking the user for more input. + • ‘counsel--async-command’ is a very easy API simplification that + takes a single string argument suitable for + ‘shell-command-to-string’. So you could prototype your function as + non-async using ‘shell-command-to-string’ and ‘split-string’ to + produce a collection, then decide that you want async and simply + swap in ‘counsel--async-command’. + • ‘counsel-locate’ is an interactive function with an optional + ‘initial-input’. + • ‘#'counsel-locate-function’ is passed as the ‘collection’ argument. + • ‘dynamic-collection’ is set to t, since this is an async + collection. + • ‘action’ argument uses ‘with-ivy-window’ wrapper, since we want to + open the selected file in the same window from which + ‘counsel-locate’ was called. + • ‘unwind’ argument is set to ‘#'counsel-delete-process’: when we + press ‘C-g’ we want to kill the running process created by + ‘counsel--async-command’. + • ‘caller’ argument identifies this command for easier customization. + + +File: ivy.info, Node: Variable Index, Next: Keystroke Index, Prev: API, Up: Top + +Variable Index +************** + +[index] +* Menu: + +* ivy-alt-done: Key bindings for single selection action then exit minibuffer. + (line 30) +* ivy-alt-done <1>: File Name Completion. (line 12) +* ivy-avy: Key bindings for single selection action then exit minibuffer. + (line 64) +* ivy-backward-delete-char: File Name Completion. (line 19) +* ivy-call: Key bindings for multiple selections and actions keep minibuffer open. + (line 16) +* ivy-confirm-face: Faces. (line 34) +* ivy-count-format: Defcustoms. (line 6) +* ivy-current-match: Faces. (line 9) +* ivy-dispatching-call: Key bindings for multiple selections and actions keep minibuffer open. + (line 26) +* ivy-dispatching-done: Key bindings for single selection action then exit minibuffer. + (line 24) +* ivy-display-style: Defcustoms. (line 24) +* ivy-done: Key bindings for single selection action then exit minibuffer. + (line 19) +* ivy-extra-directories: File Name Completion. (line 45) +* ivy-height: Key bindings for navigation. + (line 21) +* ivy-immediate-done: Key bindings for single selection action then exit minibuffer. + (line 53) +* ivy-insert-current: Key bindings that alter the minibuffer input. + (line 23) +* ivy-kill-ring-save: Other key bindings. (line 9) +* ivy-match-required-face: Faces. (line 53) +* ivy-minibuffer-grow: Hydra in the minibuffer. + (line 45) +* ivy-minibuffer-map: Minibuffer key bindings. + (line 6) +* ivy-minibuffer-match-face-1: Faces. (line 14) +* ivy-minibuffer-match-face-2: Faces. (line 19) +* ivy-minibuffer-match-face-3: Faces. (line 24) +* ivy-minibuffer-match-face-4: Faces. (line 29) +* ivy-minibuffer-shrink: Hydra in the minibuffer. + (line 50) +* ivy-next-action: Hydra in the minibuffer. + (line 60) +* ivy-next-history-element: Key bindings that alter the minibuffer input. + (line 9) +* ivy-next-line-and-call: Key bindings for multiple selections and actions keep minibuffer open. + (line 36) +* ivy-occur: Saving the current completion session to a buffer. + (line 9) +* ivy-occur-click: Saving the current completion session to a buffer. + (line 21) +* ivy-occur-dispatch: Saving the current completion session to a buffer. + (line 41) +* ivy-occur-press: Saving the current completion session to a buffer. + (line 16) +* ivy-occur-read-action: Saving the current completion session to a buffer. + (line 36) +* ivy-on-del-error-function: Defcustoms. (line 32) +* ivy-partial-or-done: Key bindings for single selection action then exit minibuffer. + (line 37) +* ivy-prev-action: Hydra in the minibuffer. + (line 55) +* ivy-previous-history-element: Key bindings that alter the minibuffer input. + (line 18) +* ivy-previous-line-and-call: Key bindings for multiple selections and actions keep minibuffer open. + (line 47) +* ivy-read-action: Hydra in the minibuffer. + (line 65) +* ivy-remote: Faces. (line 71) +* ivy-restrict-to-matches: Key bindings that alter the minibuffer input. + (line 40) +* ivy-resume: Key bindings for multiple selections and actions keep minibuffer open. + (line 55) +* ivy-reverse-i-search: Key bindings that alter the minibuffer input. + (line 48) +* ivy-subdir: Faces. (line 66) +* ivy-toggle-calling: Hydra in the minibuffer. + (line 34) +* ivy-toggle-case-fold: Hydra in the minibuffer. + (line 70) +* ivy-toggle-fuzzy: Hydra in the minibuffer. + (line 40) +* ivy-toggle-regexp-quote: File Name Completion. (line 41) +* ivy-use-virtual-buffers: Buffer Name Completion. + (line 6) +* ivy-virtual: Faces. (line 76) +* ivy-wrap: Key bindings for navigation. + (line 14) +* ivy-yank-word: Key bindings that alter the minibuffer input. + (line 32) + + +File: ivy.info, Node: Keystroke Index, Prev: Variable Index, Up: Top + +Keystroke Index +*************** + +[index] +* Menu: + +* /: File Name Completion. (line 35) +* //: File Name Completion. (line 25) +* <: Hydra in the minibuffer. + (line 50) +* >: Hydra in the minibuffer. + (line 45) +* ~: File Name Completion. (line 30) +* a: Hydra in the minibuffer. + (line 65) +* a <1>: Saving the current completion session to a buffer. + (line 36) +* c: Hydra in the minibuffer. + (line 34) +* C: Hydra in the minibuffer. + (line 70) +* C-': Key bindings for single selection action then exit minibuffer. + (line 64) +* C-c C-o: Saving the current completion session to a buffer. + (line 9) +* C-j: Key bindings for single selection action then exit minibuffer. + (line 30) +* C-j <1>: File Name Completion. (line 12) +* C-m: Key bindings for single selection action then exit minibuffer. + (line 19) +* C-M-j: Key bindings for single selection action then exit minibuffer. + (line 53) +* C-M-m: Key bindings for multiple selections and actions keep minibuffer open. + (line 16) +* C-M-n: Key bindings for multiple selections and actions keep minibuffer open. + (line 36) +* C-M-o: Key bindings for multiple selections and actions keep minibuffer open. + (line 26) +* C-M-p: Key bindings for multiple selections and actions keep minibuffer open. + (line 47) +* C-o: Hydra in the minibuffer. + (line 9) +* C-r: Key bindings that alter the minibuffer input. + (line 48) +* DEL: File Name Completion. (line 19) +* j: Saving the current completion session to a buffer. + (line 16) +* j <1>: Saving the current completion session to a buffer. + (line 26) +* k: Saving the current completion session to a buffer. + (line 31) +* m: Hydra in the minibuffer. + (line 40) +* M-i: Key bindings that alter the minibuffer input. + (line 23) +* M-j: Key bindings that alter the minibuffer input. + (line 32) +* M-n: Key bindings that alter the minibuffer input. + (line 9) +* M-o: Key bindings for single selection action then exit minibuffer. + (line 24) +* M-p: Key bindings that alter the minibuffer input. + (line 18) +* M-q: File Name Completion. (line 41) +* M-w: Other key bindings. (line 9) +* mouse-1: Saving the current completion session to a buffer. + (line 21) +* o: Saving the current completion session to a buffer. + (line 41) +* q: Saving the current completion session to a buffer. + (line 46) +* RET: Key bindings for single selection action then exit minibuffer. + (line 19) +* RET <1>: Saving the current completion session to a buffer. + (line 16) +* s: Hydra in the minibuffer. + (line 60) +* S-SPC: Key bindings that alter the minibuffer input. + (line 40) +* TAB: Key bindings for single selection action then exit minibuffer. + (line 37) +* w: Hydra in the minibuffer. + (line 55) + + + +Tag Table: +Node: Top1355 +Node: Introduction4386 +Node: Installation6866 +Node: Installing from Emacs Package Manager7319 +Node: Installing from the Git repository8277 +Node: Getting started9097 +Node: Basic customization9403 +Node: Key bindings10024 +Node: Global key bindings10216 +Node: Minibuffer key bindings11534 +Node: Key bindings for navigation12767 +Node: Key bindings for single selection action then exit minibuffer13974 +Node: Key bindings for multiple selections and actions keep minibuffer open16656 +Node: Key bindings that alter the minibuffer input19030 +Node: Other key bindings20918 +Node: Hydra in the minibuffer21296 +Node: Saving the current completion session to a buffer23373 +Node: Completion Styles24785 +Node: ivy--regex-plus26542 +Node: ivy--regex-ignore-order28028 +Node: ivy--regex-fuzzy28396 +Node: Customization28893 +Node: Faces29079 +Node: Defcustoms31206 +Node: Actions32373 +Node: What are actions?32699 +Node: How can different actions be called?33517 +Node: How to modify the actions list?34088 +Node: Example - add two actions to each command34748 +Node: How to undo adding the two actions35706 +Node: How to add actions to a specific command36158 +Node: Example - define a new command with several actions36574 +Node: Test the above function with ‘ivy-occur’37516 +Node: Packages38364 +Node: Commands39207 +Node: File Name Completion39392 +Node: Buffer Name Completion41493 +Node: Counsel commands42107 +Node: API42754 +Node: Required arguments for ‘ivy-read’43324 +Node: Optional arguments for ‘ivy-read’43989 +Node: Example - ‘counsel-describe-function’47053 +Node: Example - ‘counsel-locate’50453 +Node: Variable Index54301 +Node: Keystroke Index61202 + +End Tag Table + + +Local Variables: +coding: utf-8 +End: diff --git a/elpa/swiper-20160219.536/swiper-autoloads.el b/elpa/swiper-20160219.536/swiper-autoloads.el new file mode 100644 index 0000000..919f70b --- /dev/null +++ b/elpa/swiper-20160219.536/swiper-autoloads.el @@ -0,0 +1,102 @@ +;;; swiper-autoloads.el --- automatically extracted autoloads +;; +;;; Code: +(add-to-list 'load-path (directory-file-name (or (file-name-directory #$) (car load-path)))) + +;;;### (autoloads nil "ivy" "ivy.el" (22215 17797 0 0)) +;;; Generated autoloads from ivy.el + +(autoload 'ivy-resume "ivy" "\ +Resume the last completion session. + +\(fn)" t nil) + +(autoload 'ivy-completing-read "ivy" "\ +Read a string in the minibuffer, with completion. + +This interface conforms to `completing-read' and can be used for +`completing-read-function'. + +PROMPT is a string that normally ends in a colon and a space. +COLLECTION is either a list of strings, an alist, an obarray, or a hash table. +PREDICATE limits completion to a subset of COLLECTION. +REQUIRE-MATCH is a boolean value. See `completing-read'. +INITIAL-INPUT is a string inserted into the minibuffer initially. +HISTORY is a list of previously selected inputs. +DEF is the default value. +INHERIT-INPUT-METHOD is currently ignored. + +\(fn PROMPT COLLECTION &optional PREDICATE REQUIRE-MATCH INITIAL-INPUT HISTORY DEF INHERIT-INPUT-METHOD)" nil nil) + +(defvar ivy-mode nil "\ +Non-nil if Ivy mode is enabled. +See the command `ivy-mode' for a description of this minor mode. +Setting this variable directly does not take effect; +either customize it (see the info node `Easy Customization') +or call the function `ivy-mode'.") + +(custom-autoload 'ivy-mode "ivy" nil) + +(autoload 'ivy-mode "ivy" "\ +Toggle Ivy mode on or off. +Turn Ivy mode on if ARG is positive, off otherwise. +Turning on Ivy mode sets `completing-read-function' to +`ivy-completing-read'. + +Global bindings: +\\{ivy-mode-map} + +Minibuffer bindings: +\\{ivy-minibuffer-map} + +\(fn &optional ARG)" t nil) + +(autoload 'ivy-switch-buffer "ivy" "\ +Switch to another buffer. + +\(fn)" t nil) + +(autoload 'ivy-switch-buffer-other-window "ivy" "\ +Switch to another buffer in another window. + +\(fn)" t nil) + +(autoload 'ivy-recentf "ivy" "\ +Find a file on `recentf-list'. + +\(fn)" t nil) + +;;;*** + +;;;### (autoloads nil "swiper" "swiper.el" (22215 17797 0 0)) +;;; Generated autoloads from swiper.el + +(autoload 'swiper-avy "swiper" "\ +Jump to one of the current swiper candidates. + +\(fn)" t nil) + +(autoload 'swiper-mc "swiper" "\ + + +\(fn)" t nil) + +(autoload 'swiper "swiper" "\ +`isearch' with an overview. +When non-nil, INITIAL-INPUT is the initial search pattern. + +\(fn &optional INITIAL-INPUT)" t nil) + +;;;*** + +;;;### (autoloads nil nil ("colir.el" "ivy-hydra.el" "swiper-pkg.el") +;;;;;; (22215 17797 0 0)) + +;;;*** + +;; Local Variables: +;; version-control: never +;; no-byte-compile: t +;; no-update-autoloads: t +;; End: +;;; swiper-autoloads.el ends here diff --git a/elpa/swiper-20160219.536/swiper-pkg.el b/elpa/swiper-20160219.536/swiper-pkg.el new file mode 100644 index 0000000..5ad2131 --- /dev/null +++ b/elpa/swiper-20160219.536/swiper-pkg.el @@ -0,0 +1,7 @@ +(define-package "swiper" "20160219.536" "Isearch with an overview. Oh, man!" + '((emacs "24.1")) + :url "https://github.com/abo-abo/swiper" :keywords + '("matching")) +;; Local Variables: +;; no-byte-compile: t +;; End: diff --git a/elpa/swiper-20160219.536/swiper.el b/elpa/swiper-20160219.536/swiper.el new file mode 100644 index 0000000..2bc552f --- /dev/null +++ b/elpa/swiper-20160219.536/swiper.el @@ -0,0 +1,696 @@ +;;; swiper.el --- Isearch with an overview. Oh, man! -*- lexical-binding: t -*- + +;; Copyright (C) 2015 Free Software Foundation, Inc. + +;; Author: Oleh Krehel +;; URL: https://github.com/abo-abo/swiper +;; Version: 0.7.0 +;; Package-Requires: ((emacs "24.1")) +;; Keywords: matching + +;; This file is part of GNU Emacs. + +;; This file is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 3, or (at your option) +;; any later version. + +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; For a full copy of the GNU General Public License +;; see . + +;;; Commentary: +;; +;; This package gives an overview of the current regex search +;; candidates. The search regex can be split into groups with a +;; space. Each group is highlighted with a different face. +;; +;; It can double as a quick `regex-builder', although only single +;; lines will be matched. +;; +;; It also provides `ivy-mode': a global minor mode that uses the +;; matching back end of `swiper' for all matching on your system, +;; including file matching. You can use it in place of `ido-mode' +;; (can't have both on at once). + +;;; Code: +(require 'ivy) + +(defgroup swiper nil + "`isearch' with an overview." + :group 'matching + :prefix "swiper-") + +(defface swiper-match-face-1 + '((t (:inherit isearch-lazy-highlight-face))) + "The background face for `swiper' matches.") + +(defface swiper-match-face-2 + '((t (:inherit isearch))) + "Face for `swiper' matches modulo 1.") + +(defface swiper-match-face-3 + '((t (:inherit match))) + "Face for `swiper' matches modulo 2.") + +(defface swiper-match-face-4 + '((t (:inherit isearch-fail))) + "Face for `swiper' matches modulo 3.") + +(defface swiper-line-face + '((t (:inherit highlight))) + "Face for current `swiper' line.") + +(defcustom swiper-faces '(swiper-match-face-1 + swiper-match-face-2 + swiper-match-face-3 + swiper-match-face-4) + "List of `swiper' faces for group matches.") + +(defcustom swiper-min-highlight 2 + "Only highlight matches for regexps at least this long." + :type 'integer) + +(defvar swiper-map + (let ((map (make-sparse-keymap))) + (define-key map (kbd "M-q") 'swiper-query-replace) + (define-key map (kbd "C-l") 'swiper-recenter-top-bottom) + (define-key map (kbd "C-'") 'swiper-avy) + (define-key map (kbd "C-7") 'swiper-mc) + (define-key map (kbd "C-c C-f") 'swiper-toggle-face-matching) + map) + "Keymap for swiper.") + +(defun swiper-query-replace () + "Start `query-replace' with string to replace from last search string." + (interactive) + (if (null (window-minibuffer-p)) + (user-error "Should only be called in the minibuffer through `swiper-map'") + (let* ((enable-recursive-minibuffers t) + (from (ivy--regex ivy-text)) + (to (query-replace-read-to from "Query replace" t))) + (swiper--cleanup) + (ivy-exit-with-action + (lambda (_) + (with-ivy-window + (move-beginning-of-line 1) + (perform-replace from to + t t nil))))))) + +(defvar avy-background) +(defvar avy-all-windows) +(defvar avy-style) +(defvar avy-keys) +(declare-function avy--regex-candidates "ext:avy") +(declare-function avy--process "ext:avy") +(declare-function avy--overlay-post "ext:avy") +(declare-function avy-action-goto "ext:avy") +(declare-function avy--done "ext:avy") +(declare-function avy--make-backgrounds "ext:avy") +(declare-function avy-window-list "ext:avy") +(declare-function avy-read "ext:avy") +(declare-function avy-read-de-bruijn "ext:avy") +(declare-function avy-tree "ext:avy") +(declare-function avy-push-mark "ext:avy") +(declare-function avy--remove-leading-chars "ext:avy") + +;;;###autoload +(defun swiper-avy () + "Jump to one of the current swiper candidates." + (interactive) + (unless (string= ivy-text "") + (let* ((avy-all-windows nil) + (candidates (append + (with-ivy-window + (avy--regex-candidates + (ivy--regex ivy-text))) + (save-excursion + (save-restriction + (narrow-to-region (window-start) (window-end)) + (goto-char (point-min)) + (forward-line) + (let ((cands)) + (while (< (point) (point-max)) + (push (cons (1+ (point)) + (selected-window)) + cands) + (forward-line)) + cands))))) + (candidate (unwind-protect + (prog2 + (avy--make-backgrounds + (append (avy-window-list) + (list (ivy-state-window ivy-last)))) + (if (eq avy-style 'de-bruijn) + (avy-read-de-bruijn + candidates avy-keys) + (avy-read (avy-tree candidates avy-keys) + #'avy--overlay-post + #'avy--remove-leading-chars)) + (avy-push-mark)) + (avy--done)))) + (if (window-minibuffer-p (cdr candidate)) + (progn + (ivy-set-index (- (line-number-at-pos (car candidate)) 2)) + (ivy--exhibit) + (ivy-done) + (ivy-call)) + (ivy-quit-and-run + (avy-action-goto (caar candidate))))))) + +(declare-function mc/create-fake-cursor-at-point "ext:multiple-cursors-core") +(declare-function multiple-cursors-mode "ext:multiple-cursors-core") + +;;;###autoload +(defun swiper-mc () + (interactive) + (unless (require 'multiple-cursors nil t) + (error "multiple-cursors isn't installed")) + (let ((cands (nreverse ivy--old-cands))) + (unless (string= ivy-text "") + (ivy-exit-with-action + (lambda (_) + (let (cand) + (while (setq cand (pop cands)) + (swiper--action cand) + (when cands + (mc/create-fake-cursor-at-point)))) + (multiple-cursors-mode 1)))))) + +(defun swiper-recenter-top-bottom (&optional arg) + "Call (`recenter-top-bottom' ARG)." + (interactive "P") + (with-ivy-window + (recenter-top-bottom arg))) + +(defvar swiper-font-lock-exclude + '(package-menu-mode + gnus-summary-mode + gnus-article-mode + gnus-group-mode + emms-playlist-mode + emms-stream-mode + erc-mode + org-agenda-mode + dired-mode + jabber-chat-mode + elfeed-search-mode + elfeed-show-mode + fundamental-mode + Man-mode + woman-mode + mu4e-view-mode + mu4e-headers-mode + help-mode + debbugs-gnu-mode + occur-mode + occur-edit-mode + bongo-mode + bongo-library-mode + bongo-playlist-mode + eww-mode + twittering-mode + vc-dir-mode + rcirc-mode + sauron-mode + w3m-mode) + "List of major-modes that are incompatible with font-lock-ensure.") + +(defun swiper-font-lock-ensure-p () + "Return non-nil if we should font-lock-ensure." + (or (derived-mode-p 'magit-mode) + (bound-and-true-p magit-blame-mode) + (memq major-mode swiper-font-lock-exclude))) + +(defun swiper-font-lock-ensure () + "Ensure the entired buffer is highlighted." + (unless (swiper-font-lock-ensure-p) + (unless (> (buffer-size) 100000) + (if (fboundp 'font-lock-ensure) + (font-lock-ensure) + (with-no-warnings (font-lock-fontify-buffer)))))) + +(defvar swiper--format-spec "" + "Store the current candidates format spec.") + +(defvar swiper--width nil + "Store the number of digits needed for the longest line nubmer.") + +(defvar swiper-use-visual-line nil + "When non-nil, use `line-move' instead of `forward-line'.") + +(declare-function outline-show-all "outline") + +(defun swiper--candidates (&optional numbers-width) + "Return a list of this buffer lines. + +NUMBERS-WIDTH, when specified, is used for width spec of line +numbers; replaces calculating the width from buffer line count." + (if (and visual-line-mode + ;; super-slow otherwise + (< (buffer-size) 20000)) + (progn + (when (eq major-mode 'org-mode) + (require 'outline) + (if (fboundp 'outline-show-all) + (outline-show-all) + (with-no-warnings + (show-all)))) + (setq swiper-use-visual-line t)) + (setq swiper-use-visual-line nil)) + (let ((n-lines (count-lines (point-min) (point-max)))) + (unless (zerop n-lines) + (setq swiper--width (or numbers-width + (1+ (floor (log n-lines 10))))) + (setq swiper--format-spec + (format "%%-%dd " swiper--width)) + (let ((line-number 0) + (advancer (if swiper-use-visual-line + (lambda (arg) (line-move arg t)) + #'forward-line)) + candidates) + (save-excursion + (goto-char (point-min)) + (swiper-font-lock-ensure) + (while (< (point) (point-max)) + (let ((str (concat + " " + (replace-regexp-in-string + "\t" " " + (if swiper-use-visual-line + (buffer-substring + (save-excursion + (beginning-of-visual-line) + (point)) + (save-excursion + (end-of-visual-line) + (point))) + (buffer-substring + (point) + (line-end-position))))))) + (when (eq major-mode 'twittering-mode) + (remove-text-properties 0 (length str) '(field) str)) + (put-text-property 0 1 'display + (format swiper--format-spec + (cl-incf line-number)) + str) + (push str candidates)) + (funcall advancer 1)) + (nreverse candidates)))))) + +(defvar swiper--opoint 1 + "The point when `swiper' starts.") + +;;;###autoload +(defun swiper (&optional initial-input) + "`isearch' with an overview. +When non-nil, INITIAL-INPUT is the initial search pattern." + (interactive) + (swiper--ivy initial-input)) + +(defun swiper-occur () + "Generate a custom occur buffer for `swiper'." + (ivy-occur-grep-mode) + (font-lock-mode -1) + (let* ((fname (propertize + (with-ivy-window + (file-name-nondirectory + (buffer-file-name))) + 'face + 'compilation-info)) + (cands (mapcar + (lambda (s) + (format "%s:%s:%s" + fname + (propertize + (string-trim-right + (get-text-property 0 'display s)) + 'face 'compilation-line-number) + (substring s 1))) + ivy--old-cands))) + (insert (format "-*- mode:grep; default-directory: %S -*-\n\n\n" + default-directory)) + (insert (format "%d candidates:\n" (length cands))) + (ivy--occur-insert-lines + (mapcar + (lambda (cand) (concat "./" cand)) + cands)))) + +(ivy-set-occur 'swiper 'swiper-occur) + +(declare-function evil-jumper--set-jump "ext:evil-jumper") + +(defvar swiper--current-line nil) +(defvar swiper--current-match-start nil) + +(defun swiper--init () + "Perform initialization common to both completion methods." + (setq swiper--current-line nil) + (setq swiper--current-match-start nil) + (setq swiper--opoint (point)) + (when (bound-and-true-p evil-jumper-mode) + (evil-jumper--set-jump))) + +(defun swiper--re-builder (str) + "Transform STR into a swiper regex. +This is the regex used in the minibuffer where candidates have +line numbers. For the buffer, use `ivy--regex' instead." + (replace-regexp-in-string + "\t" " " + (cond + ((equal str "") + "") + ((equal str "^") + (setq ivy--subexps 0) + ".") + ((string-match "^\\^" str) + (setq ivy--old-re "") + (let ((re (ivy--regex-plus (substring str 1)))) + (if (zerop ivy--subexps) + (prog1 (format "^ ?\\(%s\\)" re) + (setq ivy--subexps 1)) + (format "^ %s" re)))) + (t + (ivy--regex-plus str))))) + +(defvar swiper-history nil + "History for `swiper'.") + +(defvar swiper-invocation-face nil + "The face at the point of invocation of `swiper'.") + +(defun swiper--ivy (&optional initial-input) + "`isearch' with an overview using `ivy'. +When non-nil, INITIAL-INPUT is the initial search pattern." + (interactive) + (swiper--init) + (setq swiper-invocation-face + (plist-get (text-properties-at (point)) 'face)) + (let ((candidates (swiper--candidates)) + (preselect + (if swiper-use-visual-line + (count-screen-lines + (point-min) + (save-excursion (beginning-of-visual-line) (point))) + (1- (line-number-at-pos)))) + (minibuffer-allow-text-properties t) + res) + (unwind-protect + (and + (setq res + (ivy-read + "Swiper: " + candidates + :initial-input initial-input + :keymap swiper-map + :preselect preselect + :require-match t + :update-fn #'swiper--update-input-ivy + :unwind #'swiper--cleanup + :action #'swiper--action + :re-builder #'swiper--re-builder + :history 'swiper-history + :caller 'swiper)) + (point)) + (unless res + (goto-char swiper--opoint))))) + +(defun swiper-toggle-face-matching () + "Toggle matching only the candidates with `swiper-invocation-face'." + (interactive) + (setf (ivy-state-matcher ivy-last) + (if (ivy-state-matcher ivy-last) + nil + #'swiper--face-matcher)) + (setq ivy--old-re nil)) + +(defun swiper--face-matcher (regexp candidates) + "Return REGEXP-matching CANDIDATES. +Matched candidates should have `swiper-invocation-face'." + (cl-remove-if-not + (lambda (x) + (and + (string-match regexp x) + (let ((s (match-string 0 x)) + (i 0)) + (while (and (< i (length s)) + (text-property-any + i (1+ i) + 'face swiper-invocation-face + s)) + (cl-incf i)) + (eq i (length s))))) + candidates)) + +(defun swiper--ensure-visible () + "Remove overlays hiding point." + (let ((overlays (overlays-at (point))) + ov expose) + (while (setq ov (pop overlays)) + (if (and (invisible-p (overlay-get ov 'invisible)) + (setq expose (overlay-get ov 'isearch-open-invisible))) + (funcall expose ov))))) + +(defvar swiper--overlays nil + "Store overlays.") + +(defun swiper--cleanup () + "Clean up the overlays." + (while swiper--overlays + (delete-overlay (pop swiper--overlays))) + (save-excursion + (goto-char (point-min)) + (isearch-clean-overlays))) + +(defun swiper--update-input-ivy () + "Called when `ivy' input is updated." + (with-ivy-window + (swiper--cleanup) + (when (> (length ivy--current) 0) + (let* ((re (funcall ivy--regex-function ivy-text)) + (re (if (stringp re) re (caar re))) + (str (get-text-property 0 'display ivy--current)) + (num (if (string-match "^[0-9]+" str) + (string-to-number (match-string 0 str)) + 0))) + (unless (eq this-command 'ivy-yank-word) + (when (cl-plusp num) + (unless (if swiper--current-line + (eq swiper--current-line num) + (eq (line-number-at-pos) num)) + (goto-char (point-min)) + (if swiper-use-visual-line + (line-move (1- num)) + (forward-line (1- num)))) + (if (and (equal ivy-text "") + (>= swiper--opoint (line-beginning-position)) + (<= swiper--opoint (line-end-position))) + (goto-char swiper--opoint) + (if (eq swiper--current-line num) + (when swiper--current-match-start + (goto-char swiper--current-match-start)) + (setq swiper--current-line num)) + (when (re-search-forward re (line-end-position) t) + (setq swiper--current-match-start (match-beginning 0)))) + (isearch-range-invisible (line-beginning-position) + (line-end-position)) + (unless (and (>= (point) (window-start)) + (<= (point) (window-end (ivy-state-window ivy-last) t))) + (recenter)))) + (swiper--add-overlays re))))) + +(defun swiper--add-overlays (re &optional beg end wnd) + "Add overlays for RE regexp in visible part of the current buffer. +BEG and END, when specified, are the point bounds. +WND, when specified is the window." + (setq wnd (or wnd (ivy-state-window ivy-last))) + (let ((ov (if visual-line-mode + (make-overlay + (save-excursion + (beginning-of-visual-line) + (point)) + (save-excursion + (end-of-visual-line) + (point))) + (make-overlay + (line-beginning-position) + (1+ (line-end-position)))))) + (overlay-put ov 'face 'swiper-line-face) + (overlay-put ov 'window wnd) + (push ov swiper--overlays) + (let* ((wh (window-height)) + (beg (or beg (save-excursion + (forward-line (- wh)) + (point)))) + (end (or end (save-excursion + (forward-line wh) + (point))))) + (when (>= (length re) swiper-min-highlight) + (save-excursion + (goto-char beg) + ;; RE can become an invalid regexp + (while (and (ignore-errors (re-search-forward re end t)) + (> (- (match-end 0) (match-beginning 0)) 0)) + (let ((i 0)) + (while (<= i ivy--subexps) + (when (match-beginning i) + (let ((overlay (make-overlay (match-beginning i) + (match-end i))) + (face + (cond ((zerop ivy--subexps) + (cadr swiper-faces)) + ((zerop i) + (car swiper-faces)) + (t + (nth (1+ (mod (+ i 2) (1- (length swiper-faces)))) + swiper-faces))))) + (push overlay swiper--overlays) + (overlay-put overlay 'face face) + (overlay-put overlay 'window wnd) + (overlay-put overlay 'priority i))) + (cl-incf i))))))))) + +(defun swiper--action (x) + "Goto line X." + (let ((ln (1- (read (if (memq this-command '(ivy-occur-press)) + (when (string-match ":\\([0-9]+\\):.*\\'" x) + (match-string-no-properties 1 x)) + (get-text-property 0 'display x))))) + (re (ivy--regex ivy-text))) + (if (null x) + (user-error "No candidates") + (with-ivy-window + (unless (equal (current-buffer) + (ivy-state-buffer ivy-last)) + (switch-to-buffer (ivy-state-buffer ivy-last))) + (goto-char (point-min)) + (funcall (if swiper-use-visual-line + #'line-move + #'forward-line) + ln) + (re-search-forward re (line-end-position) t) + (swiper--ensure-visible) + (when (/= (point) swiper--opoint) + (unless (and transient-mark-mode mark-active) + (when (eq ivy-exit 'done) + (push-mark swiper--opoint t) + (message "Mark saved where search started")))) + (add-to-history + 'regexp-search-ring + re + regexp-search-ring-max))))) + +;; (define-key isearch-mode-map (kbd "C-o") 'swiper-from-isearch) +(defun swiper-from-isearch () + "Invoke `swiper' from isearch." + (interactive) + (let ((query (if isearch-regexp + isearch-string + (regexp-quote isearch-string)))) + (isearch-exit) + (swiper query))) + +(defvar swiper-multi-buffers nil + "Store the current list of buffers.") + +(defvar swiper-multi-candidates nil + "Store the list of candidates for `swiper-multi'.") + +(defun swiper-multi-prompt () + (format "Buffers (%s): " + (mapconcat #'identity swiper-multi-buffers ", "))) + +(defun swiper-multi () + "Select one or more buffers. +Run `swiper' for those buffers." + (interactive) + (setq swiper-multi-buffers nil) + (ivy-read (swiper-multi-prompt) + 'internal-complete-buffer + :action 'swiper-multi-action-1) + (ivy-read "Swiper: " swiper-multi-candidates + :action 'swiper-multi-action-2 + :unwind #'swiper--cleanup + :caller 'swiper-multi)) + +(defun swiper-all () + "Run `swiper' for all opened buffers." + (interactive) + (ivy-read "Swiper: " (swiper--multi-candidates + (cl-remove-if-not + #'buffer-file-name + (buffer-list))) + :action 'swiper-multi-action-2 + :unwind #'swiper--cleanup + :caller 'swiper-multi)) + +(defun swiper--multi-candidates (buffers) + (let* ((ww (window-width)) + (res nil) + (column-2 (apply #'max + (mapcar + (lambda (b) + (length (buffer-name b))) + buffers))) + (column-1 (- ww 4 column-2 1))) + (dolist (buf buffers) + (with-current-buffer buf + (setq res + (append + (mapcar + (lambda (s) + (setq s (concat (ivy--truncate-string s column-1) " ")) + (let ((len (length s))) + (put-text-property + (1- len) len 'display + (concat + (make-string + (- ww (string-width s) (length (buffer-name)) 3) + ?\ ) + (buffer-name)) + s) + s)) + (swiper--candidates 4)) + res)) + nil)) + res)) + +(defun swiper-multi-action-1 (x) + (if (member x swiper-multi-buffers) + (progn + (setq swiper-multi-buffers (delete x swiper-multi-buffers))) + (unless (equal x "") + (setq swiper-multi-buffers (append swiper-multi-buffers (list x))))) + (let ((prompt (swiper-multi-prompt))) + (setf (ivy-state-prompt ivy-last) prompt) + (setq ivy--prompt (concat "%-4d " prompt))) + (cond ((memq this-command '(ivy-done + ivy-alt-done + ivy-immediate-done)) + (setq swiper-multi-candidates + (swiper--multi-candidates + (mapcar #'get-buffer swiper-multi-buffers)))) + ((eq this-command 'ivy-call) + (delete-minibuffer-contents)))) + +(defun swiper-multi-action-2 (x) + (let ((buf-space (get-text-property (1- (length x)) 'display x))) + (with-ivy-window + (when (string-match "\\` *\\([^ ]+\\)\\'" buf-space) + (switch-to-buffer (match-string 1 buf-space)) + (goto-char (point-min)) + (forward-line (1- (read (get-text-property 0 'display x)))) + (re-search-forward + (ivy--regex ivy-text) + (line-end-position) t) + (unless (eq ivy-exit 'done) + (swiper--cleanup) + (swiper--add-overlays (ivy--regex ivy-text))))))) + +(provide 'swiper) + +;;; swiper.el ends here diff --git a/elpa/swiper-20160219.536/swiper.elc b/elpa/swiper-20160219.536/swiper.elc new file mode 100644 index 0000000000000000000000000000000000000000..534a8ce9fc7f85ae02eca236adaeb3690780496f GIT binary patch literal 19022 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. +;; ------------------------------------------------------------------------------------------- + +;; URL: http://github.com/ananthakumaran/typescript.el +;; Package-Version: 20160126.408 +;; Version: 0.1 +;; Keywords: typescript languages +;; Package-Requires: () + +;; This file is not part of GNU Emacs. + +;;; Commentary: + +;; This is based on Karl Landstrom's barebones typescript-mode. This +;; is much more robust and works with cc-mode's comment filling +;; (mostly). +;; The modifications to the original javascript.el mode mainly consisted in +;; replacing "javascript" with "typescript" +;; +;; The main features of this typescript mode are syntactic +;; highlighting (enabled with `font-lock-mode' or +;; `global-font-lock-mode'), automatic indentation and filling of +;; comments and C preprocessor fontification +;; +;; +;; General Remarks: +;; +;; XXX: This mode assumes that block comments are not nested inside block +;; XXX: comments +;; +;; Exported names start with "typescript-"; private names start with +;; "typescript--". + +;;; Code: + +(eval-and-compile + (require 'cc-mode) + (require 'font-lock) + (require 'newcomment) + (require 'etags) + (require 'thingatpt) + (require 'ido) + (require 'json nil t)) + +(eval-when-compile + (require 'cl)) + +(declare-function ido-mode "ido") + +;;; Constants + +(defconst typescript--name-start-re "[a-zA-Z_$]" + "Regexp matching the start of a typescript identifier, without grouping.") + +(defconst typescript--name-re (concat typescript--name-start-re + "\\(?:\\s_\\|\\sw\\)*") + "Regexp matching a typescript identifier, without grouping.") + +(defconst typescript--objfield-re (concat typescript--name-re ":") + "Regexp matching the start of a typescript object field.") + +(defconst typescript--dotted-name-re + (concat typescript--name-re "\\(?:\\." typescript--name-re "\\)*") + "Regexp matching a dot-separated sequence of typescript names.") + +(defconst typescript--cpp-name-re typescript--name-re + "Regexp matching a C preprocessor name.") + +(defconst typescript--opt-cpp-start "^\\s-*#\\s-*\\([[:alnum:]]+\\)" + "Regexp matching the prefix of a cpp directive. +This includes the directive name, or nil in languages without +preprocessor support. The first submatch surrounds the directive +name.") + +(defconst typescript--plain-method-re + (concat "^\\s-*?\\(" typescript--dotted-name-re "\\)\\.prototype" + "\\.\\(" typescript--name-re "\\)\\s-*?=\\s-*?\\(function\\)\\_>") + "Regexp matching an explicit typescript prototype \"method\" declaration. +Group 1 is a (possibly-dotted) class name, group 2 is a method name, +and group 3 is the 'function' keyword.") + +(defconst typescript--plain-class-re + (concat "^\\s-*\\(" typescript--dotted-name-re "\\)\\.prototype" + "\\s-*=\\s-*{") + "Regexp matching a typescript explicit prototype \"class\" declaration. +An example of this is \"Class.prototype = { method1: ...}\".") + +;; var NewClass = BaseClass.extend( +(defconst typescript--mp-class-decl-re + (concat "^\\s-*var\\s-+" + "\\(" typescript--name-re "\\)" + "\\s-*=\\s-*" + "\\(" typescript--dotted-name-re + "\\)\\.extend\\(?:Final\\)?\\s-*(\\s-*{?\\s-*$")) + +;; var NewClass = Class.create() +(defconst typescript--prototype-obsolete-class-decl-re + (concat "^\\s-*\\(?:var\\s-+\\)?" + "\\(" typescript--dotted-name-re "\\)" + "\\s-*=\\s-*Class\\.create()")) + +(defconst typescript--prototype-objextend-class-decl-re-1 + (concat "^\\s-*Object\\.extend\\s-*(" + "\\(" typescript--dotted-name-re "\\)" + "\\s-*,\\s-*{")) + +(defconst typescript--prototype-objextend-class-decl-re-2 + (concat "^\\s-*\\(?:var\\s-+\\)?" + "\\(" typescript--dotted-name-re "\\)" + "\\s-*=\\s-*Object\\.extend\\s-*\(")) + +;; var NewClass = Class.create({ +(defconst typescript--prototype-class-decl-re + (concat "^\\s-*\\(?:var\\s-+\\)?" + "\\(" typescript--name-re "\\)" + "\\s-*=\\s-*Class\\.create\\s-*(\\s-*" + "\\(?:\\(" typescript--dotted-name-re "\\)\\s-*,\\s-*\\)?{?")) + +;; Parent class name(s) (yes, multiple inheritance in typescript) are +;; matched with dedicated font-lock matchers +(defconst typescript--dojo-class-decl-re + (concat "^\\s-*dojo\\.declare\\s-*(\"\\(" typescript--dotted-name-re "\\)")) + +(defconst typescript--exttypescript-class-decl-re-1 + (concat "^\\s-*Ext\\.extend\\s-*(" + "\\s-*\\(" typescript--dotted-name-re "\\)" + "\\s-*,\\s-*\\(" typescript--dotted-name-re "\\)") + "Regexp matching an ExtTYPESCRIPT class declaration (style 1).") + +(defconst typescript--exttypescript-class-decl-re-2 + (concat "^\\s-*\\(?:var\\s-+\\)?" + "\\(" typescript--name-re "\\)" + "\\s-*=\\s-*Ext\\.extend\\s-*(\\s-*" + "\\(" typescript--dotted-name-re "\\)") + "Regexp matching an ExtTYPESCRIPT class declaration (style 2).") + +(defconst typescript--mochikit-class-re + (concat "^\\s-*MochiKit\\.Base\\.update\\s-*(\\s-*" + "\\(" typescript--dotted-name-re "\\)") + "Regexp matching a MochiKit class declaration.") + +(defconst typescript--dummy-class-style + '(:name "[Automatically Generated Class]")) + +(defconst typescript--class-styles + `((:name "Plain" + :class-decl ,typescript--plain-class-re + :prototype t + :contexts (toplevel) + :framework typescript) + + (:name "MochiKit" + :class-decl ,typescript--mochikit-class-re + :prototype t + :contexts (toplevel) + :framework mochikit) + + (:name "Prototype (Obsolete)" + :class-decl ,typescript--prototype-obsolete-class-decl-re + :contexts (toplevel) + :framework prototype) + + (:name "Prototype (Modern)" + :class-decl ,typescript--prototype-class-decl-re + :contexts (toplevel) + :framework prototype) + + (:name "Prototype (Object.extend)" + :class-decl ,typescript--prototype-objextend-class-decl-re-1 + :prototype t + :contexts (toplevel) + :framework prototype) + + (:name "Prototype (Object.extend) 2" + :class-decl ,typescript--prototype-objextend-class-decl-re-2 + :prototype t + :contexts (toplevel) + :framework prototype) + + (:name "Dojo" + :class-decl ,typescript--dojo-class-decl-re + :contexts (toplevel) + :framework dojo) + + (:name "ExtTYPESCRIPT (style 1)" + :class-decl ,typescript--exttypescript-class-decl-re-1 + :prototype t + :contexts (toplevel) + :framework exttypescript) + + (:name "ExtTYPESCRIPT (style 2)" + :class-decl ,typescript--exttypescript-class-decl-re-2 + :contexts (toplevel) + :framework exttypescript) + + (:name "Merrill Press" + :class-decl ,typescript--mp-class-decl-re + :contexts (toplevel) + :framework merrillpress)) + + "List of typescript class definition styles. + +A class definition style is a plist with the following keys: + +:name is a human-readable name of the class type + +:class-decl is a regular expression giving the start of the +class. Its first group must match the name of its class. If there +is a parent class, the second group should match, and it should be +the name of the class. + +If :prototype is present and non-nil, the parser will merge +declarations for this constructs with others at the same lexical +level that have the same name. Otherwise, multiple definitions +will create multiple top-level entries. Don't use :prototype +unnecessarily: it has an associated cost in performance. + +If :strip-prototype is present and non-nil, then if the class +name as matched contains +") + +(defconst typescript--available-frameworks + (loop with available-frameworks + for style in typescript--class-styles + for framework = (plist-get style :framework) + unless (memq framework available-frameworks) + collect framework into available-frameworks + finally return available-frameworks) + "List of available typescript frameworks symbols.") + +(defconst typescript--function-heading-1-re + (concat + "^\\s-*function\\s-+\\(" typescript--name-re "\\)") + "Regexp matching the start of a typescript function header. +Match group 1 is the name of the function.") + +(defconst typescript--function-heading-2-re + (concat + "^\\s-*\\(" typescript--name-re "\\)\\s-*:\\s-*function\\_>") + "Regexp matching the start of a function entry in an associative array. +Match group 1 is the name of the function.") + +(defconst typescript--function-heading-3-re + (concat + "^\\s-*\\(?:var\\s-+\\)?\\(" typescript--dotted-name-re "\\)" + "\\s-*=\\s-*function\\_>") + "Regexp matching a line in the typescript form \"var MUMBLE = function\". +Match group 1 is MUMBLE.") + +(defconst typescript--macro-decl-re + (concat "^\\s-*#\\s-*define\\s-+\\(" typescript--cpp-name-re "\\)\\s-*(") + "Regexp matching a CPP macro definition, up to the opening parenthesis. +Match group 1 is the name of the macro.") + +(defun typescript--regexp-opt-symbol (list) + "Like `regexp-opt', but surround the result with `\\\\_<' and `\\\\_>'." + (concat "\\_<" (regexp-opt list t) "\\_>")) + +(defconst typescript--keyword-re + (typescript--regexp-opt-symbol + '("any" "async" "await" "bool" "boolean" "break" "case" "catch" "class" "const" + "constructor" "continue" "declare" "default" "delete" "do" "else" + "enum" "export" "extends" "extern" "false" "finally" "for" + "function" "goto" "if" "implements" "import" "in" "instanceof" + "interface" "let" "module" "namespace" "new" "null" "number" + "private" "protected" "public" "return" "static" "string" + "super" "switch" "this" "throw" "true" + "try" "type" "typeof" "var" "void" + "while" )) + "Regexp matching any typescript keyword.") + +(defconst typescript--basic-type-re + (typescript--regexp-opt-symbol + '("bool" "boolean" "string" "number" "any" "void")) + "Regular expression matching any predefined type in typescript.") + +(defconst typescript--constant-re + (typescript--regexp-opt-symbol '("false" "null" "undefined" + "Infinity" "NaN" + "true" "arguments" "this")) + "Regular expression matching any future reserved words in typescript.") + + +(defconst typescript--font-lock-keywords-1 + (list + "\\_" + (list typescript--function-heading-1-re 1 font-lock-function-name-face) + (list typescript--function-heading-2-re 1 font-lock-function-name-face)) + "Level one font lock keywords for `typescript-mode'.") + +(defconst typescript--font-lock-keywords-2 + (append typescript--font-lock-keywords-1 + (list (list typescript--keyword-re 1 font-lock-keyword-face) + (list "\\_" + "\\s-+\\(each\\)\\_>" nil nil + (list 1 'font-lock-keyword-face)) + (cons typescript--basic-type-re font-lock-type-face) + (cons typescript--constant-re font-lock-constant-face))) + "Level two font lock keywords for `typescript-mode'.") + +;; typescript--pitem is the basic building block of the lexical +;; database. When one refers to a real part of the buffer, the region +;; of text to which it refers is split into a conceptual header and +;; body. Consider the (very short) block described by a hypothetical +;; typescript--pitem: +;; +;; function foo(a,b,c) { return 42; } +;; ^ ^ ^ +;; | | | +;; +- h-begin +- h-end +- b-end +;; +;; (Remember that these are buffer positions, and therefore point +;; between characters, not at them. An arrow drawn to a character +;; indicates the corresponding position is between that character and +;; the one immediately preceding it.) +;; +;; The header is the region of text [h-begin, h-end], and is +;; the text needed to unambiguously recognize the start of the +;; construct. If the entire header is not present, the construct is +;; not recognized at all. No other pitems may be nested inside the +;; header. +;; +;; The body is the region [h-end, b-end]. It may contain nested +;; typescript--pitem instances. The body of a pitem may be empty: in +;; that case, b-end is equal to header-end. +;; +;; The three points obey the following relationship: +;; +;; h-begin < h-end <= b-end +;; +;; We put a text property in the buffer on the character *before* +;; h-end, and if we see it, on the character *before* b-end. +;; +;; The text property for h-end, typescript--pstate, is actually a list +;; of all typescript--pitem instances open after the marked character. +;; +;; The text property for b-end, typescript--pend, is simply the +;; typescript--pitem that ends after the marked character. (Because +;; pitems always end when the paren-depth drops below a critical +;; value, and because we can only drop one level per character, only +;; one pitem may end at a given character.) +;; +;; In the structure below, we only store h-begin and (sometimes) +;; b-end. We can trivially and quickly find h-end by going to h-begin +;; and searching for an typescript--pstate text property. Since no other +;; typescript--pitem instances can be nested inside the header of a +;; pitem, the location after the character with this text property +;; must be h-end. +;; +;; typescript--pitem instances are never modified (with the exception +;; of the b-end field). Instead, modified copies are added at subseqnce parse points. +;; (The exception for b-end and its caveats is described below.) +;; + +(defstruct (typescript--pitem (:type list)) + ;; IMPORTANT: Do not alter the position of fields within the list. + ;; Various bits of code depend on their positions, particularly + ;; anything that manipulates the list of children. + + ;; List of children inside this pitem's body + (children nil :read-only t) + + ;; When we reach this paren depth after h-end, the pitem ends + (paren-depth nil :read-only t) + + ;; Symbol or class-style plist if this is a class + (type nil :read-only t) + + ;; See above + (h-begin nil :read-only t) + + ;; List of strings giving the parts of the name of this pitem (e.g., + ;; '("MyClass" "myMethod"), or t if this pitem is anonymous + (name nil :read-only t) + + ;; THIS FIELD IS MUTATED, and its value is shared by all copies of + ;; this pitem: when we copy-and-modify pitem instances, we share + ;; their tail structures, so all the copies actually have the same + ;; terminating cons cell. We modify that shared cons cell directly. + ;; + ;; The field value is either a number (buffer location) or nil if + ;; unknown. + ;; + ;; If the field's value is greater than `typescript--cache-end', the + ;; value is stale and must be treated as if it were nil. Conversely, + ;; if this field is nil, it is guaranteed that this pitem is open up + ;; to at least `typescript--cache-end'. (This property is handy when + ;; computing whether we're inside a given pitem.) + ;; + (b-end nil)) + +;; The pitem we start parsing with. +(defconst typescript--initial-pitem + (make-typescript--pitem + :paren-depth most-negative-fixnum + :type 'toplevel)) + +;;; User Customization + +(defgroup typescript nil + "Customization variables for typescript mode." + :tag "typescript" + :group 'languages) + +(defcustom typescript-indent-level 4 + "Number of spaces for each indentation step in `typescript-mode'." + :type 'integer + :group 'typescript) + +(defcustom typescript-expr-indent-offset 0 + "Number of additional spaces used for indentation of continued expressions. +The value must be no less than minus `typescript-indent-level'." + :type 'integer + :group 'typescript) + +(defcustom typescript-auto-indent-flag t + "Whether to automatically indent when typing punctuation characters. +If non-nil, the characters {}();,: also indent the current line +in typescript mode." + :type 'boolean + :group 'typescript) + +(defcustom typescript-flat-functions nil + "Treat nested functions as top-level functions in `typescript-mode'. +This applies to function movement, marking, and so on." + :type 'boolean + :group 'typescript) + +(defcustom typescript-comment-lineup-func #'c-lineup-C-comments + "Lineup function for `cc-mode-style', for C comments in `typescript-mode'." + :type 'function + :group 'typescript) + +(defcustom typescript-enabled-frameworks typescript--available-frameworks + "Frameworks recognized by `typescript-mode'. +To improve performance, you may turn off some frameworks you +seldom use, either globally or on a per-buffer basis." + :type (cons 'set (mapcar (lambda (x) + (list 'const x)) + typescript--available-frameworks)) + :group 'typescript) + +(defcustom typescript-mode-hook nil + "*Hook called by `typescript-mode'." + :type 'hook + :group 'typescript) + +;;; KeyMap + +(defvar typescript-mode-map + (let ((keymap (make-sparse-keymap))) + (mapc (lambda (key) + (define-key keymap key #'typescript-insert-and-indent)) + '("{" "}" "(" ")" ":" ";" ",")) + keymap) + "Keymap for `typescript-mode'.") + +(defun typescript-insert-and-indent (key) + "Run the command bound to KEY, and indent if necessary. +Indentation does not take place if point is in a string or +comment." + (interactive (list (this-command-keys))) + (call-interactively (lookup-key (current-global-map) key)) + (let ((syntax (save-restriction (widen) (syntax-ppss)))) + (when (or (and (not (nth 8 syntax)) + typescript-auto-indent-flag) + (and (nth 4 syntax) + (eq (current-column) + (1+ (current-indentation))))) + (indent-according-to-mode)))) + + +;;; Syntax table and parsing + +(defvar typescript-mode-syntax-table + (let ((table (make-syntax-table))) + (c-populate-syntax-table table) + (modify-syntax-entry ?$ "_" table) + (modify-syntax-entry ?` "\"" table) + table) + "Syntax table for `typescript-mode'.") + +(defvar typescript--quick-match-re nil + "Autogenerated regexp used by `typescript-mode' to match buffer constructs.") + +(defvar typescript--quick-match-re-func nil + "Autogenerated regexp used by `typescript-mode' to match constructs and functions.") + +(make-variable-buffer-local 'typescript--quick-match-re) +(make-variable-buffer-local 'typescript--quick-match-re-func) + +(defvar typescript--cache-end 1 + "Last valid buffer position for the `typescript-mode' function cache.") +(make-variable-buffer-local 'typescript--cache-end) + +(defvar typescript--last-parse-pos nil + "Latest parse position reached by `typescript--ensure-cache'.") +(make-variable-buffer-local 'typescript--last-parse-pos) + +(defvar typescript--state-at-last-parse-pos nil + "Parse state at `typescript--last-parse-pos'.") +(make-variable-buffer-local 'typescript--state-at-last-parse-pos) + +(defun typescript--flatten-list (list) + (loop for item in list + nconc (cond ((consp item) + (typescript--flatten-list item)) + (item (list item))))) + +(defun typescript--maybe-join (prefix separator suffix &rest list) + "Helper function for `typescript--update-quick-match-re'. +If LIST contains any element that is not nil, return its non-nil +elements, separated by SEPARATOR, prefixed by PREFIX, and ended +with SUFFIX as with `concat'. Otherwise, if LIST is empty, return +nil. If any element in LIST is itself a list, flatten that +element." + (setq list (typescript--flatten-list list)) + (when list + (concat prefix (mapconcat #'identity list separator) suffix))) + +(defun typescript--update-quick-match-re () + "Internal function used by `typescript-mode' for caching buffer constructs. +This updates `typescript--quick-match-re', based on the current set of +enabled frameworks." + (setq typescript--quick-match-re + (typescript--maybe-join + "^[ \t]*\\(?:" "\\|" "\\)" + + ;; #define mumble + "#define[ \t]+[a-zA-Z_]" + + (when (memq 'exttypescript typescript-enabled-frameworks) + "Ext\\.extend") + + (when (memq 'prototype typescript-enabled-frameworks) + "Object\\.extend") + + ;; var mumble = THING ( + (typescript--maybe-join + "\\(?:var[ \t]+\\)?[a-zA-Z_$0-9.]+[ \t]*=[ \t]*\\(?:" + "\\|" + "\\)[ \t]*\(" + + (when (memq 'prototype typescript-enabled-frameworks) + "Class\\.create") + + (when (memq 'exttypescript typescript-enabled-frameworks) + "Ext\\.extend") + + (when (memq 'merrillpress typescript-enabled-frameworks) + "[a-zA-Z_$0-9]+\\.extend\\(?:Final\\)?")) + + (when (memq 'dojo typescript-enabled-frameworks) + "dojo\\.declare[ \t]*\(") + + (when (memq 'mochikit typescript-enabled-frameworks) + "MochiKit\\.Base\\.update[ \t]*\(") + + ;; mumble.prototypeTHING + (typescript--maybe-join + "[a-zA-Z_$0-9.]+\\.prototype\\(?:" "\\|" "\\)" + + (when (memq 'typescript typescript-enabled-frameworks) + '( ;; foo.prototype.bar = function( + "\\.[a-zA-Z_$0-9]+[ \t]*=[ \t]*function[ \t]*\(" + + ;; mumble.prototype = { + "[ \t]*=[ \t]*{"))))) + + (setq typescript--quick-match-re-func + (concat "function\\|" typescript--quick-match-re))) + +(defun typescript--forward-text-property (propname) + "Move over the next value of PROPNAME in the buffer. +If found, return that value and leave point after the character +having that value; otherwise, return nil and leave point at EOB." + (let ((next-value (get-text-property (point) propname))) + (if next-value + (forward-char) + + (goto-char (next-single-property-change + (point) propname nil (point-max))) + (unless (eobp) + (setq next-value (get-text-property (point) propname)) + (forward-char))) + + next-value)) + +(defun typescript--backward-text-property (propname) + "Move over the previous value of PROPNAME in the buffer. +If found, return that value and leave point just before the +character that has that value, otherwise return nil and leave +point at BOB." + (unless (bobp) + (let ((prev-value (get-text-property (1- (point)) propname))) + (if prev-value + (backward-char) + + (goto-char (previous-single-property-change + (point) propname nil (point-min))) + + (unless (bobp) + (backward-char) + (setq prev-value (get-text-property (point) propname)))) + + prev-value))) + +(defsubst typescript--forward-pstate () + (typescript--forward-text-property 'typescript--pstate)) + +(defsubst typescript--backward-pstate () + (typescript--backward-text-property 'typescript--pstate)) + +(defun typescript--pitem-goto-h-end (pitem) + (goto-char (typescript--pitem-h-begin pitem)) + (typescript--forward-pstate)) + +(defun typescript--re-search-forward-inner (regexp &optional bound count) + "Helper function for `typescript--re-search-forward'." + (let ((parse) + str-terminator + (orig-macro-end (save-excursion + (when (typescript--beginning-of-macro) + (c-end-of-macro) + (point))))) + (while (> count 0) + (re-search-forward regexp bound) + (setq parse (syntax-ppss)) + (cond ((setq str-terminator (nth 3 parse)) + (when (eq str-terminator t) + (setq str-terminator ?/)) + (re-search-forward + (concat "\\([^\\]\\|^\\)" (string str-terminator)) + (save-excursion (end-of-line) (point)) t)) + ((nth 7 parse) + (forward-line)) + ((or (nth 4 parse) + (and (eq (char-before) ?\/) (eq (char-after) ?\*))) + (re-search-forward "\\*/")) + ((and (not (and orig-macro-end + (<= (point) orig-macro-end))) + (typescript--beginning-of-macro)) + (c-end-of-macro)) + (t + (setq count (1- count)))))) + (point)) + + +(defun typescript--re-search-forward (regexp &optional bound noerror count) + "Search forward, ignoring strings, cpp macros, and comments. +This function invokes `re-search-forward', but treats the buffer +as if strings, cpp macros, and comments have been removed. + +If invoked while inside a macro, it treats the contents of the +macro as normal text." + (let ((saved-point (point)) + (search-expr + (cond ((null count) + '(typescript--re-search-forward-inner regexp bound 1)) + ((< count 0) + '(typescript--re-search-backward-inner regexp bound (- count))) + ((> count 0) + '(typescript--re-search-forward-inner regexp bound count))))) + (condition-case err + (eval search-expr) + (search-failed + (goto-char saved-point) + (unless noerror + (error (error-message-string err))))))) + + +(defun typescript--re-search-backward-inner (regexp &optional bound count) + "Auxiliary function for `typescript--re-search-backward'." + (let ((parse) + str-terminator + (orig-macro-start + (save-excursion + (and (typescript--beginning-of-macro) + (point))))) + (while (> count 0) + (re-search-backward regexp bound) + (when (and (> (point) (point-min)) + (save-excursion (backward-char) (looking-at "/[/*]"))) + (forward-char)) + (setq parse (syntax-ppss)) + (cond ((setq str-terminator (nth 3 parse)) + (when (eq str-terminator t) + (setq str-terminator ?/)) + (re-search-backward + (concat "\\([^\\]\\|^\\)" (string str-terminator)) + (save-excursion (beginning-of-line) (point)) t)) + ((nth 7 parse) + (goto-char (nth 8 parse))) + ((or (nth 4 parse) + (and (eq (char-before) ?/) (eq (char-after) ?*))) + (re-search-backward "/\\*")) + ((and (not (and orig-macro-start + (>= (point) orig-macro-start))) + (typescript--beginning-of-macro))) + (t + (setq count (1- count)))))) + (point)) + + +(defun typescript--re-search-backward (regexp &optional bound noerror count) + "Search backward, ignoring strings, preprocessor macros, and comments. + +This function invokes `re-search-backward' but treats the buffer +as if strings, preprocessor macros, and comments have been +removed. + +If invoked while inside a macro, treat the macro as normal text." + (let ((saved-point (point)) + (search-expr + (cond ((null count) + '(typescript--re-search-backward-inner regexp bound 1)) + ((< count 0) + '(typescript--re-search-forward-inner regexp bound (- count))) + ((> count 0) + '(typescript--re-search-backward-inner regexp bound count))))) + (condition-case err + (eval search-expr) + (search-failed + (goto-char saved-point) + (unless noerror + (error (error-message-string err))))))) + +(defun typescript--forward-expression () + "Move forward over a whole typescript expression. +This function doesn't move over expressions continued across +lines." + (loop + ;; non-continued case; simplistic, but good enough? + do (loop until (or (eolp) + (progn + (forward-comment most-positive-fixnum) + (memq (char-after) '(?\, ?\; ?\] ?\) ?\})))) + do (forward-sexp)) + + while (and (eq (char-after) ?\n) + (save-excursion + (forward-char) + (typescript--continued-expression-p))))) + +(defun typescript--forward-function-decl () + "Move forward over a typescript function declaration. +This puts point at the 'function' keyword. + +If this is a syntactically-correct non-expression function, +return the name of the function, or t if the name could not be +determined. Otherwise, return nil." + (assert (looking-at "\\_")) + (let ((name t)) + (forward-word) + (forward-comment most-positive-fixnum) + (when (looking-at typescript--name-re) + (setq name (match-string-no-properties 0)) + (goto-char (match-end 0))) + (forward-comment most-positive-fixnum) + (and (eq (char-after) ?\( ) + (ignore-errors (forward-list) t) + (progn (forward-comment most-positive-fixnum) + (and (eq (char-after) ?{) + name))))) + +(defun typescript--function-prologue-beginning (&optional pos) + "Return the start of the typescript function prologue containing POS. +A function prologue is everything from start of the definition up +to and including the opening brace. POS defaults to point. +If POS is not in a function prologue, return nil." + (let (prologue-begin) + (save-excursion + (if pos + (goto-char pos) + (setq pos (point))) + + (when (save-excursion + (forward-line 0) + (or (looking-at typescript--function-heading-2-re) + (looking-at typescript--function-heading-3-re))) + + (setq prologue-begin (match-beginning 1)) + (when (<= prologue-begin pos) + (goto-char (match-end 0)))) + + (skip-syntax-backward "w_") + (and (or (looking-at "\\_") + (typescript--re-search-backward "\\_" nil t)) + + (save-match-data (goto-char (match-beginning 0)) + (typescript--forward-function-decl)) + + (<= pos (point)) + (or prologue-begin (match-beginning 0)))))) + +(defun typescript--beginning-of-defun-raw () + "Helper function for `typescript-beginning-of-defun'. +Go to previous defun-beginning and return the parse state for it, +or nil if we went all the way back to bob and don't find +anything." + (typescript--ensure-cache) + (let (pstate) + (while (and (setq pstate (typescript--backward-pstate)) + (not (eq 'function (typescript--pitem-type (car pstate)))))) + (and (not (bobp)) pstate))) + +(defun typescript--pstate-is-toplevel-defun (pstate) + "Helper function for `typescript--beginning-of-defun-nested'. +If PSTATE represents a non-empty top-level defun, return the +top-most pitem. Otherwise, return nil." + (loop for pitem in pstate + with func-depth = 0 + with func-pitem + if (eq 'function (typescript--pitem-type pitem)) + do (incf func-depth) + and do (setq func-pitem pitem) + finally return (if (eq func-depth 1) func-pitem))) + +(defun typescript--beginning-of-defun-nested () + "Helper function for `typescript--beginning-of-defun'. +Return the pitem of the function we went to the beginning of." + (or + ;; Look for the smallest function that encloses point... + (loop for pitem in (typescript--parse-state-at-point) + if (and (eq 'function (typescript--pitem-type pitem)) + (typescript--inside-pitem-p pitem)) + do (goto-char (typescript--pitem-h-begin pitem)) + and return pitem) + + ;; ...and if that isn't found, look for the previous top-level + ;; defun + (loop for pstate = (typescript--backward-pstate) + while pstate + if (typescript--pstate-is-toplevel-defun pstate) + do (goto-char (typescript--pitem-h-begin it)) + and return it))) + +(defun typescript--beginning-of-defun-flat () + "Helper function for `typescript-beginning-of-defun'." + (let ((pstate (typescript--beginning-of-defun-raw))) + (when pstate + (goto-char (typescript--pitem-h-begin (car pstate)))))) + +(defun typescript-beginning-of-defun (&optional arg) + "Value of `beginning-of-defun-function' for `typescript-mode'." + (setq arg (or arg 1)) + (while (and (not (eobp)) (< arg 0)) + (incf arg) + (when (and (not typescript-flat-functions) + (or (eq (typescript-syntactic-context) 'function) + (typescript--function-prologue-beginning))) + (typescript-end-of-defun)) + + (if (typescript--re-search-forward + "\\_" nil t) + (goto-char (typescript--function-prologue-beginning)) + (goto-char (point-max)))) + + (while (> arg 0) + (decf arg) + ;; If we're just past the end of a function, the user probably wants + ;; to go to the beginning of *that* function + (when (eq (char-before) ?}) + (backward-char)) + + (let ((prologue-begin (typescript--function-prologue-beginning))) + (cond ((and prologue-begin (< prologue-begin (point))) + (goto-char prologue-begin)) + + (typescript-flat-functions + (typescript--beginning-of-defun-flat)) + (t + (typescript--beginning-of-defun-nested)))))) + +(defun typescript--flush-caches (&optional beg ignored) + "Flush the `typescript-mode' syntax cache after position BEG. +BEG defaults to `point-min', meaning to flush the entire cache." + (interactive) + (setq beg (or beg (save-restriction (widen) (point-min)))) + (setq typescript--cache-end (min typescript--cache-end beg))) + +(defmacro typescript--debug (&rest arguments) + ;; `(message ,@arguments) + ) + +(defun typescript--ensure-cache--pop-if-ended (open-items paren-depth) + (let ((top-item (car open-items))) + (when (<= paren-depth (typescript--pitem-paren-depth top-item)) + (assert (not (get-text-property (1- (point)) 'typescript-pend))) + (put-text-property (1- (point)) (point) 'typescript--pend top-item) + (setf (typescript--pitem-b-end top-item) (point)) + (setq open-items + ;; open-items must contain at least two items for this to + ;; work, but because we push a dummy item to start with, + ;; that assumption holds. + (cons (typescript--pitem-add-child (second open-items) top-item) + (cddr open-items))))) + open-items) + +(defmacro typescript--ensure-cache--update-parse () + "Helper function for `typescript--ensure-cache'. +Update parsing information up to point, referring to parse, +prev-parse-point, goal-point, and open-items bound lexically in +the body of `typescript--ensure-cache'." + `(progn + (setq goal-point (point)) + (goto-char prev-parse-point) + (while (progn + (setq open-items (typescript--ensure-cache--pop-if-ended + open-items (car parse))) + ;; Make sure parse-partial-sexp doesn't stop because we *entered* + ;; the given depth -- i.e., make sure we're deeper than the target + ;; depth. + (assert (> (nth 0 parse) + (typescript--pitem-paren-depth (car open-items)))) + (setq parse (parse-partial-sexp + prev-parse-point goal-point + (typescript--pitem-paren-depth (car open-items)) + nil parse)) + +;; (let ((overlay (make-overlay prev-parse-point (point)))) +;; (overlay-put overlay 'face '(:background "red")) +;; (unwind-protect +;; (progn +;; (typescript--debug "parsed: %S" parse) +;; (sit-for 1)) +;; (delete-overlay overlay))) + + (setq prev-parse-point (point)) + (< (point) goal-point))) + + (setq open-items (typescript--ensure-cache--pop-if-ended + open-items (car parse))))) + +(defun typescript--show-cache-at-point () + (interactive) + (require 'pp) + (let ((prop (get-text-property (point) 'typescript--pstate))) + (with-output-to-temp-buffer "*Help*" + (pp prop)))) + +(defun typescript--split-name (string) + "Split a typescript name into its dot-separated parts. +This also removes any prototype parts from the split name +\(unless the name is just \"prototype\" to start with)." + (let ((name (save-match-data + (split-string string "\\." t)))) + (unless (and (= (length name) 1) + (equal (car name) "prototype")) + + (setq name (remove "prototype" name))))) + +(defvar typescript--guess-function-name-start nil) + +(defun typescript--guess-function-name (position) + "Guess the name of the typescript function at POSITION. +POSITION should be just after the end of the word \"function\". +Return the name of the function, or nil if the name could not be +guessed. + +This function clobbers match data. If we find the preamble +begins earlier than expected while guessing the function name, +set `typescript--guess-function-name-start' to that position; otherwise, +set that variable to nil." + (setq typescript--guess-function-name-start nil) + (save-excursion + (goto-char position) + (forward-line 0) + (cond + ((looking-at typescript--function-heading-3-re) + (and (eq (match-end 0) position) + (setq typescript--guess-function-name-start (match-beginning 1)) + (match-string-no-properties 1))) + + ((looking-at typescript--function-heading-2-re) + (and (eq (match-end 0) position) + (setq typescript--guess-function-name-start (match-beginning 1)) + (match-string-no-properties 1)))))) + +(defun typescript--clear-stale-cache () + ;; Clear any endings that occur after point + (let (end-prop) + (save-excursion + (while (setq end-prop (typescript--forward-text-property + 'typescript--pend)) + (setf (typescript--pitem-b-end end-prop) nil)))) + + ;; Remove any cache properties after this point + (remove-text-properties (point) (point-max) + '(typescript--pstate t typescript--pend t))) + +(defun typescript--ensure-cache (&optional limit) + "Ensures brace cache is valid up to the character before LIMIT. +LIMIT defaults to point." + (setq limit (or limit (point))) + (when (< typescript--cache-end limit) + + (c-save-buffer-state + (open-items + orig-match-start + orig-match-end + orig-depth + parse + prev-parse-point + name + case-fold-search + filtered-class-styles + new-item + goal-point + end-prop) + + ;; Figure out which class styles we need to look for + (setq filtered-class-styles + (loop for style in typescript--class-styles + if (memq (plist-get style :framework) + typescript-enabled-frameworks) + collect style)) + + (save-excursion + (save-restriction + (widen) + + ;; Find last known good position + (goto-char typescript--cache-end) + (unless (bobp) + (setq open-items (get-text-property + (1- (point)) 'typescript--pstate)) + + (unless open-items + (goto-char (previous-single-property-change + (point) 'typescript--pstate nil (point-min))) + + (unless (bobp) + (setq open-items (get-text-property (1- (point)) + 'typescript--pstate)) + (assert open-items)))) + + (unless open-items + ;; Make a placeholder for the top-level definition + (setq open-items (list typescript--initial-pitem))) + + (setq parse (syntax-ppss)) + (setq prev-parse-point (point)) + + (typescript--clear-stale-cache) + + (narrow-to-region (point-min) limit) + + (loop while (re-search-forward typescript--quick-match-re-func nil t) + for orig-match-start = (goto-char (match-beginning 0)) + for orig-match-end = (match-end 0) + do (typescript--ensure-cache--update-parse) + for orig-depth = (nth 0 parse) + + ;; Each of these conditions should return non-nil if + ;; we should add a new item and leave point at the end + ;; of the new item's header (h-end in the + ;; typescript--pitem diagram). This point is the one + ;; after the last character we need to unambiguously + ;; detect this construct. If one of these evaluates to + ;; nil, the location of the point is ignored. + if (cond + ;; In comment or string + ((nth 8 parse) nil) + + ;; Regular function declaration + ((and (looking-at "\\_") + (setq name (typescript--forward-function-decl))) + + (when (eq name t) + (setq name (typescript--guess-function-name orig-match-end)) + (if name + (when typescript--guess-function-name-start + (setq orig-match-start + typescript--guess-function-name-start)) + + (setq name t))) + + (assert (eq (char-after) ?{)) + (forward-char) + (make-typescript--pitem + :paren-depth orig-depth + :h-begin orig-match-start + :type 'function + :name (if (eq name t) + name + (typescript--split-name name)))) + + ;; Macro + ((looking-at typescript--macro-decl-re) + + ;; Macros often contain unbalanced parentheses. + ;; Make sure that h-end is at the textual end of + ;; the macro no matter what the parenthesis say. + (c-end-of-macro) + (typescript--ensure-cache--update-parse) + + (make-typescript--pitem + :paren-depth (nth 0 parse) + :h-begin orig-match-start + :type 'macro + :name (list (match-string-no-properties 1)))) + + ;; "Prototype function" declaration + ((looking-at typescript--plain-method-re) + (goto-char (match-beginning 3)) + (when (save-match-data + (typescript--forward-function-decl)) + (forward-char) + (make-typescript--pitem + :paren-depth orig-depth + :h-begin orig-match-start + :type 'function + :name (nconc (typescript--split-name + (match-string-no-properties 1)) + (list (match-string-no-properties 2)))))) + + ;; Class definition + ((loop with syntactic-context = + (typescript--syntactic-context-from-pstate open-items) + for class-style in filtered-class-styles + if (and (memq syntactic-context + (plist-get class-style :contexts)) + (looking-at (plist-get class-style + :class-decl))) + do (goto-char (match-end 0)) + and return + (make-typescript--pitem + :paren-depth orig-depth + :h-begin orig-match-start + :type class-style + :name (typescript--split-name + (match-string-no-properties 1)))))) + + do (typescript--ensure-cache--update-parse) + and do (push it open-items) + and do (put-text-property + (1- (point)) (point) 'typescript--pstate open-items) + else do (goto-char orig-match-end)) + + (goto-char limit) + (typescript--ensure-cache--update-parse) + (setq typescript--cache-end limit) + (setq typescript--last-parse-pos limit) + (setq typescript--state-at-last-parse-pos open-items) + ))))) + +(defun typescript--end-of-defun-flat () + "Helper function for `typescript-end-of-defun'." + (loop while (typescript--re-search-forward "}" nil t) + do (typescript--ensure-cache) + if (get-text-property (1- (point)) 'typescript--pend) + if (eq 'function (typescript--pitem-type it)) + return t + finally do (goto-char (point-max)))) + +(defun typescript--end-of-defun-nested () + "Helper function for `typescript-end-of-defun'." + (message "test") + (let* (pitem + (this-end (save-excursion + (and (setq pitem (typescript--beginning-of-defun-nested)) + (typescript--pitem-goto-h-end pitem) + (progn (backward-char) + (forward-list) + (point))))) + found) + + (if (and this-end (< (point) this-end)) + ;; We're already inside a function; just go to its end. + (goto-char this-end) + + ;; Otherwise, go to the end of the next function... + (while (and (typescript--re-search-forward "\\_" nil t) + (not (setq found (progn + (goto-char (match-beginning 0)) + (typescript--forward-function-decl)))))) + + (if found (forward-list) + ;; ... or eob. + (goto-char (point-max)))))) + +(defun typescript-end-of-defun (&optional arg) + "Value of `end-of-defun-function' for `typescript-mode'." + (setq arg (or arg 1)) + (while (and (not (bobp)) (< arg 0)) + (incf arg) + (typescript-beginning-of-defun) + (typescript-beginning-of-defun) + (unless (bobp) + (typescript-end-of-defun))) + + (while (> arg 0) + (decf arg) + ;; look for function backward. if we're inside it, go to that + ;; function's end. otherwise, search for the next function's end and + ;; go there + (if typescript-flat-functions + (typescript--end-of-defun-flat) + + ;; if we're doing nested functions, see whether we're in the + ;; prologue. If we are, go to the end of the function; otherwise, + ;; call typescript--end-of-defun-nested to do the real work + (let ((prologue-begin (typescript--function-prologue-beginning))) + (cond ((and prologue-begin (<= prologue-begin (point))) + (goto-char prologue-begin) + (re-search-forward "\\_" + (1 font-lock-constant-face)) + + ;; Highlights class being declared, in parts + (typescript--class-decl-matcher + ,(concat "\\(" typescript--name-re "\\)\\(?:\\.\\|.*$\\)") + (goto-char (match-beginning 1)) + nil + (1 font-lock-type-face)) + + ;; Highlights parent class, in parts, if available + (typescript--class-decl-matcher + ,(concat "\\(" typescript--name-re "\\)\\(?:\\.\\|.*$\\)") + (if (match-beginning 2) + (progn + (setq typescript--tmp-location (match-end 2)) + (goto-char typescript--tmp-location) + (insert "=") + (goto-char (match-beginning 2))) + (setq typescript--tmp-location nil) + (goto-char (point-at-eol))) + (when typescript--tmp-location + (save-excursion + (goto-char typescript--tmp-location) + (delete-char 1))) + (1 font-lock-type-face)) + + ;; Highlights parent class + (typescript--class-decl-matcher + (2 font-lock-type-face nil t)) + + ;; Dojo needs its own matcher to override the string highlighting + (,(typescript--make-framework-matcher + 'dojo + "^\\s-*dojo\\.declare\\s-*(\"" + "\\(" typescript--dotted-name-re "\\)" + "\\(?:\"\\s-*,\\s-*\\(" typescript--dotted-name-re "\\)\\)?") + (1 font-lock-type-face t) + (2 font-lock-type-face nil t)) + + ;; Match Dojo base classes. Of course Mojo has to be different + ;; from everything else under the sun... + (,(typescript--make-framework-matcher + 'dojo + "^\\s-*dojo\\.declare\\s-*(\"" + "\\(" typescript--dotted-name-re "\\)\"\\s-*,\\s-*\\[") + ,(concat "[[,]\\s-*\\(" typescript--dotted-name-re "\\)\\s-*" + "\\(?:\\].*$\\)?") + (backward-char) + (end-of-line) + (1 font-lock-type-face)) + + ;; continued Dojo base-class list + (,(typescript--make-framework-matcher + 'dojo + "^\\s-*" typescript--dotted-name-re "\\s-*[],]") + ,(concat "\\(" typescript--dotted-name-re "\\)" + "\\s-*\\(?:\\].*$\\)?") + (if (save-excursion (backward-char) + (typescript--inside-dojo-class-list-p)) + (forward-symbol -1) + (end-of-line)) + (end-of-line) + (1 font-lock-type-face)) + + ;; variable declarations + ,(list + (concat "\\_<\\(const\\|var\\|let\\)\\_>\\|" typescript--basic-type-re) + (list #'typescript--variable-decl-matcher nil nil nil)) + + ;; class instantiation + ,(list + (concat "\\_\\s-+\\(" typescript--dotted-name-re "\\)") + (list 1 'font-lock-type-face)) + + ;; instanceof + ,(list + (concat "\\_\\s-+\\(" typescript--dotted-name-re "\\)") + (list 1 'font-lock-type-face)) + + ;; formal parameters + ,(list + (concat + "\\_\\(\\s-+" typescript--name-re "\\)?\\s-*(\\s-*" + typescript--name-start-re) + (list (concat "\\(" typescript--name-re "\\)\\(\\s-*).*\\)?") + '(backward-char) + '(end-of-line) + '(1 font-lock-variable-name-face))) + + ;; continued formal parameter list + ,(list + (concat + "^\\s-*" typescript--name-re "\\s-*[,)]") + (list typescript--name-re + '(if (save-excursion (backward-char) + (typescript--inside-param-list-p)) + (forward-symbol -1) + (end-of-line)) + '(end-of-line) + '(0 font-lock-variable-name-face)))) + "Level three font lock for `typescript-mode'.") + +(defun typescript--inside-pitem-p (pitem) + "Return whether point is inside the given pitem's header or body." + (typescript--ensure-cache) + (assert (typescript--pitem-h-begin pitem)) + (assert (typescript--pitem-paren-depth pitem)) + + (and (> (point) (typescript--pitem-h-begin pitem)) + (or (null (typescript--pitem-b-end pitem)) + (> (typescript--pitem-b-end pitem) (point))))) + +(defun typescript--parse-state-at-point () + "Parse the typescript program state at point. +Return a list of `typescript--pitem' instances that apply to point, most +specific first. In the worst case, the current toplevel instance +will be returned." + (save-excursion + (save-restriction + (widen) + (typescript--ensure-cache) + (let* ((bound (if (eobp) (point) (1+ (point)))) + (pstate (or (save-excursion + (typescript--backward-pstate)) + (list typescript--initial-pitem)))) + + ;; Loop until we either hit a pitem at BOB or pitem ends after + ;; point (or at point if we're at eob) + (loop for pitem = (car pstate) + until (or (eq (typescript--pitem-type pitem) + 'toplevel) + (typescript--inside-pitem-p pitem)) + do (pop pstate)) + + pstate)))) + +(defun typescript--syntactic-context-from-pstate (pstate) + "Return the typescript syntactic context corresponding to PSTATE." + (let ((type (typescript--pitem-type (car pstate)))) + (cond ((memq type '(function macro)) + type) + ((consp type) + 'class) + (t 'toplevel)))) + +(defun typescript-syntactic-context () + "Return the typescript syntactic context at point. +When called interatively, also display a message with that +context." + (interactive) + (let* ((syntactic-context (typescript--syntactic-context-from-pstate + (typescript--parse-state-at-point)))) + + (when (called-interactively-p 'interactive) + (message "Syntactic context: %s" syntactic-context)) + + syntactic-context)) + +(defun typescript--class-decl-matcher (limit) + "Font lock function used by `typescript-mode'. +This performs fontification according to `typescript--class-styles'." + (loop initially (typescript--ensure-cache limit) + while (re-search-forward typescript--quick-match-re limit t) + for orig-end = (match-end 0) + do (goto-char (match-beginning 0)) + if (loop for style in typescript--class-styles + for decl-re = (plist-get style :class-decl) + if (and (memq (plist-get style :framework) + typescript-enabled-frameworks) + (memq (typescript-syntactic-context) + (plist-get style :contexts)) + decl-re + (looking-at decl-re)) + do (goto-char (match-end 0)) + and return t) + return t + else do (goto-char orig-end))) + +(defconst typescript--font-lock-keywords + '(typescript--font-lock-keywords-3 typescript--font-lock-keywords-1 + typescript--font-lock-keywords-2 + typescript--font-lock-keywords-3) + "Font lock keywords for `typescript-mode'. See `font-lock-keywords'.") + +;; XXX: typescript can continue a regexp literal across lines so long +;; as the newline is escaped with \. Account for that in the regexp +;; below. +(defconst typescript--regexp-literal + "[=(,:]\\(?:\\s-\\|\n\\)*\\(/\\)\\(?:\\\\/\\|[^/*]\\)\\(?:\\\\/\\|[^/]\\)*\\(/\\)" + "Regexp matching a typescript regular expression literal. +Match groups 1 and 2 are the characters forming the beginning and +end of the literal.") + +;; we want to match regular expressions only at the beginning of +;; expressions +(defconst typescript-font-lock-syntactic-keywords + `((,typescript--regexp-literal (1 "|") (2 "|"))) + "Syntactic font lock keywords matching regexps in typescript. +See `font-lock-keywords'.") + +;;; Indentation + +(defconst typescript--possibly-braceless-keyword-re + (typescript--regexp-opt-symbol + '("catch" "do" "else" "finally" "for" "if" "try" "while" "with" + "each")) + "Regexp matching keywords optionally followed by an opening brace.") + +(defconst typescript--indent-operator-re + (concat "[-+*/%<>=&^|?:.]\\([^-+*/]\\|$\\)\\|" + (typescript--regexp-opt-symbol '("in" "instanceof"))) + "Regexp matching operators that affect indentation of continued expressions.") + + +(defun typescript--looking-at-operator-p () + "Return non-nil if point is on a typescript operator, other than a comma." + (save-match-data + (and (looking-at typescript--indent-operator-re) + (or (not (looking-at ":")) + (save-excursion + (and (typescript--re-search-backward "[?:{]\\|\\_" nil t) + (looking-at "?"))))))) + + +(defun typescript--continued-expression-p () + "Return non-nil if the current line continues an expression." + (save-excursion + (back-to-indentation) + (or (typescript--looking-at-operator-p) + (and (typescript--re-search-backward "\n" nil t) + (progn + (skip-chars-backward " \t") + (or (bobp) (backward-char)) + (and (> (point) (point-min)) + (save-excursion (backward-char) (not (looking-at "[/*]/"))) + (typescript--looking-at-operator-p) + (and (progn (backward-char) + (not (looking-at "++\\|--\\|/[/*]")))))))))) + + +(defun typescript--end-of-do-while-loop-p () + "Return non-nil if point is on the \"while\" of a do-while statement. +Otherwise, return nil. A braceless do-while statement spanning +several lines requires that the start of the loop is indented to +the same column as the current line." + (interactive) + (save-excursion + (save-match-data + (when (looking-at "\\s-*\\_") + (if (save-excursion + (skip-chars-backward "[ \t\n]*}") + (looking-at "[ \t\n]*}")) + (save-excursion + (backward-list) (forward-symbol -1) (looking-at "\\_")) + (typescript--re-search-backward "\\_" (point-at-bol) t) + (or (looking-at "\\_") + (let ((saved-indent (current-indentation))) + (while (and (typescript--re-search-backward "^\\s-*\\_<" nil t) + (/= (current-indentation) saved-indent))) + (and (looking-at "\\s-*\\_") + (not (typescript--re-search-forward + "\\_" (point-at-eol) t)) + (= (current-indentation) saved-indent))))))))) + + +(defun typescript--ctrl-statement-indentation () + "Helper function for `typescript--proper-indentation'. +Return the proper indentation of the current line if it starts +the body of a control statement without braces; otherwise, return +nil." + (save-excursion + (back-to-indentation) + (when (save-excursion + (and (not (eq (point-at-bol) (point-min))) + (not (looking-at "[{]")) + (progn + (typescript--re-search-backward "[[:graph:]]" nil t) + (or (eobp) (forward-char)) + (when (= (char-before) ?\)) (backward-list)) + (skip-syntax-backward " ") + (skip-syntax-backward "w_") + (looking-at typescript--possibly-braceless-keyword-re)) + (not (typescript--end-of-do-while-loop-p)))) + (save-excursion + (goto-char (match-beginning 0)) + (+ (current-indentation) typescript-indent-level))))) + +(defun typescript--get-c-offset (symbol anchor) + (let ((c-offsets-alist + (list (cons 'c typescript-comment-lineup-func)))) + (c-get-syntactic-indentation (list (cons symbol anchor))))) + +(defun typescript--proper-indentation (parse-status) + "Return the proper indentation for the current line." + (save-excursion + (back-to-indentation) + (cond ((nth 4 parse-status) + (typescript--get-c-offset 'c (nth 8 parse-status))) + ((nth 8 parse-status) 0) ; inside string + ((typescript--ctrl-statement-indentation)) + ((eq (char-after) ?#) 0) + ((save-excursion (typescript--beginning-of-macro)) 4) + ((nth 1 parse-status) + (let ((same-indent-p (looking-at + "[]})]\\|\\_\\|\\_")) + (continued-expr-p (typescript--continued-expression-p))) + (goto-char (nth 1 parse-status)) + (if (looking-at "[({[]\\s-*\\(/[/*]\\|$\\)") + (progn + (skip-syntax-backward " ") + (when (eq (char-before) ?\)) (backward-list)) + (back-to-indentation) + (cond (same-indent-p + (current-column)) + (continued-expr-p + (+ (current-column) (* 2 typescript-indent-level) + typescript-expr-indent-offset)) + (t + (+ (current-column) typescript-indent-level)))) + (unless same-indent-p + (forward-char) + (skip-chars-forward " \t")) + (current-column)))) + + ((typescript--continued-expression-p) + (+ typescript-indent-level typescript-expr-indent-offset)) + (t 0)))) + +(defun typescript-indent-line () + "Indent the current line as typescript." + (interactive) + (save-restriction + (widen) + (let* ((parse-status + (save-excursion (syntax-ppss (point-at-bol)))) + (offset (- (current-column) (current-indentation)))) + (indent-line-to (typescript--proper-indentation parse-status)) + (when (> offset 0) (forward-char offset))))) + +;;; Filling + +(defun typescript-c-fill-paragraph (&optional justify) + "Fill the paragraph with `c-fill-paragraph'." + (interactive "*P") + ;; Dynamically replace functions using the lexically scoped cl-letf. + ;; See below for more details: + ;; http://endlessparentheses.com/understanding-letf-and-how-it-replaces-flet.html + (cl-letf (((symbol-function 'c-forward-sws) + (lambda (&optional limit) + (typescript--forward-syntactic-ws limit))) + ((symbol-function 'c-backward-sws) + (lambda (&optional limit) + (typescript--backward-syntactic-ws limit))) + ((symbol-function 'c-beginning-of-macro) + (lambda (&optional limit) + (typescript--beginning-of-macro limit)))) + (let ((fill-paragraph-function 'c-fill-paragraph)) + (c-fill-paragraph justify)))) + +;; We maintain a cache of semantic information, i.e., the classes and +;; functions we've encountered so far. In order to avoid having to +;; re-parse the buffer on every change, we cache the parse state at +;; each interesting point in the buffer. Each parse state is a +;; modified copy of the previous one, or in the case of the first +;; parse state, the empty state. +;; +;; The parse state itself is just a stack of typescript--pitem +;; instances. It starts off containing one element that is never +;; closed, that is initially typescript--initial-pitem. +;; + + +(defun typescript--pitem-format (pitem) + (let ((name (typescript--pitem-name pitem)) + (type (typescript--pitem-type pitem))) + + (format "name:%S type:%S" + name + (if (atom type) + type + (plist-get type :name))))) + +(defun typescript--make-merged-item (item child name-parts) + "Helper function for `typescript--splice-into-items'. +Return a new item that is the result of merging CHILD into +ITEM. NAME-PARTS is a list of parts of the name of CHILD +that we haven't consumed yet." + (typescript--debug "typescript--make-merged-item: {%s} into {%s}" + (typescript--pitem-format child) + (typescript--pitem-format item)) + + ;; If the item we're merging into isn't a class, make it into one + (unless (consp (typescript--pitem-type item)) + (typescript--debug "typescript--make-merged-item: changing dest into class") + (setq item (make-typescript--pitem + :children (list item) + + ;; Use the child's class-style if it's available + :type (if (atom (typescript--pitem-type child)) + typescript--dummy-class-style + (typescript--pitem-type child)) + + :name (typescript--pitem-strname item)))) + + ;; Now we can merge either a function or a class into a class + (cons (cond + ((cdr name-parts) + (typescript--debug "typescript--make-merged-item: recursing") + ;; if we have more name-parts to go before we get to the + ;; bottom of the class hierarchy, call the merger + ;; recursively + (typescript--splice-into-items (car item) child + (cdr name-parts))) + + ((atom (typescript--pitem-type child)) + (typescript--debug "typescript--make-merged-item: straight merge") + ;; Not merging a class, but something else, so just prepend + ;; it + (cons child (car item))) + + (t + ;; Otherwise, merge the new child's items into those + ;; of the new class + (typescript--debug "typescript--make-merged-item: merging class contents") + (append (car child) (car item)))) + (cdr item))) + +(defun typescript--pitem-strname (pitem) + "Last part of the name of PITEM, as a string or symbol." + (let ((name (typescript--pitem-name pitem))) + (if (consp name) + (car (last name)) + name))) + +(defun typescript--splice-into-items (items child name-parts) + "Splice CHILD into the `typescript--pitem' ITEMS at NAME-PARTS. +If a class doesn't exist in the tree, create it. Return +the new items list. NAME-PARTS is a list of strings given +the broken-down class name of the item to insert." + + (let ((top-name (car name-parts)) + (item-ptr items) + new-items last-new-item new-cons item) + + (typescript--debug "typescript--splice-into-items: name-parts: %S items:%S" + name-parts + (mapcar #'typescript--pitem-name items)) + + (assert (stringp top-name)) + (assert (> (length top-name) 0)) + + ;; If top-name isn't found in items, then we build a copy of items + ;; and throw it away. But that's okay, since most of the time, we + ;; *will* find an instance. + + (while (and item-ptr + (cond ((equal (typescript--pitem-strname (car item-ptr)) top-name) + ;; Okay, we found an entry with the right name. Splice + ;; the merged item into the list... + (setq new-cons (cons (typescript--make-merged-item + (car item-ptr) child + name-parts) + (cdr item-ptr))) + + (if last-new-item + (setcdr last-new-item new-cons) + (setq new-items new-cons)) + + ;; ...and terminate the loop + nil) + + (t + ;; Otherwise, copy the current cons and move onto the + ;; text. This is tricky; we keep track of the tail of + ;; the list that begins with new-items in + ;; last-new-item. + (setq new-cons (cons (car item-ptr) nil)) + (if last-new-item + (setcdr last-new-item new-cons) + (setq new-items new-cons)) + (setq last-new-item new-cons) + + ;; Go to the next cell in items + (setq item-ptr (cdr item-ptr)))))) + + (if item-ptr + ;; Yay! We stopped because we found something, not because + ;; we ran out of items to search. Just return the new + ;; list. + (progn + (typescript--debug "search succeeded: %S" name-parts) + new-items) + + ;; We didn't find anything. If the child is a class and we don't + ;; have any classes to drill down into, just push that class; + ;; otherwise, make a fake class and carry on. + (typescript--debug "search failed: %S" name-parts) + (cons (if (cdr name-parts) + ;; We have name-parts left to process. Make a fake + ;; class for this particular part... + (make-typescript--pitem + ;; ...and recursively digest the rest of the name + :children (typescript--splice-into-items + nil child (cdr name-parts)) + :type typescript--dummy-class-style + :name top-name) + + ;; Otherwise, this is the only name we have, so stick + ;; the item on the front of the list + child) + items)))) + +(defun typescript--pitem-add-child (pitem child) + "Copy `typescript--pitem' PITEM, and push CHILD onto its list of children." + (assert (integerp (typescript--pitem-h-begin child))) + (assert (if (consp (typescript--pitem-name child)) + (loop for part in (typescript--pitem-name child) + always (stringp part)) + t)) + + ;; This trick works because we know (based on our defstructs) that + ;; the child list is always the first element, and so the second + ;; element and beyond can be shared when we make our "copy". + (cons + + (let ((name (typescript--pitem-name child)) + (type (typescript--pitem-type child))) + + (cond ((cdr-safe name) ; true if a list of at least two elements + ;; Use slow path because we need class lookup + (typescript--splice-into-items (car pitem) child name)) + + ((and (consp type) + (plist-get type :prototype)) + + ;; Use slow path because we need class merging. We know + ;; name is a list here because down in + ;; `typescript--ensure-cache', we made sure to only add + ;; class entries with lists for :name + (assert (consp name)) + (typescript--splice-into-items (car pitem) child name)) + + (t + ;; Fast path + (cons child (car pitem))))) + + (cdr pitem))) + +;;; Main Function + +(defalias 'typescript-parent-mode + (if (fboundp 'prog-mode) 'prog-mode 'fundamental-mode)) + +;;;###autoload +(define-derived-mode typescript-mode typescript-parent-mode "typescript" + "Major mode for editing typescript. + +Key bindings: + +\\{typescript-mode-map}" + + :group 'typescript + :syntax-table typescript-mode-syntax-table + + (set (make-local-variable 'indent-line-function) 'typescript-indent-line) + (set (make-local-variable 'beginning-of-defun-function) + 'typescript-beginning-of-defun) + (set (make-local-variable 'end-of-defun-function) + 'typescript-end-of-defun) + + (set (make-local-variable 'open-paren-in-column-0-is-defun-start) nil) + (set (make-local-variable 'font-lock-defaults) + (list typescript--font-lock-keywords + nil nil nil nil + '(font-lock-syntactic-keywords + . typescript-font-lock-syntactic-keywords))) + + (set (make-local-variable 'parse-sexp-ignore-comments) t) + (set (make-local-variable 'parse-sexp-lookup-properties) t) + + ;; Comments + (setq comment-start "// ") + (setq comment-end "") + (set (make-local-variable 'fill-paragraph-function) + 'typescript-c-fill-paragraph) + + ;; Parse cache + (add-hook 'before-change-functions #'typescript--flush-caches t t) + + ;; Frameworks + (typescript--update-quick-match-re) + + (setq major-mode 'typescript-mode) + (setq mode-name "typescript") + + ;; for filling, pretend we're cc-mode + (setq c-comment-prefix-regexp "//+\\|\\**" + c-paragraph-start "$" + c-paragraph-separate "$" + c-block-comment-prefix "* " + c-line-comment-starter "//" + c-comment-start-regexp "/[*/]\\|\\s!" + comment-start-skip "\\(//+\\|/\\*+\\)\\s *") + + (let ((c-buffer-is-cc-mode t)) + ;; FIXME: These are normally set by `c-basic-common-init'. Should + ;; we call it instead? (Bug#6071) + (make-local-variable 'paragraph-start) + (make-local-variable 'paragraph-separate) + (make-local-variable 'paragraph-ignore-fill-prefix) + (make-local-variable 'adaptive-fill-mode) + (make-local-variable 'adaptive-fill-regexp) + (c-setup-paragraph-variables)) + + (set (make-local-variable 'syntax-begin-function) + #'typescript--syntax-begin-function) + + ;; Important to fontify the whole buffer syntactically! If we don't, + ;; then we might have regular expression literals that aren't marked + ;; as strings, which will screw up parse-partial-sexp, scan-lists, + ;; etc. and and produce maddening "unbalanced parenthesis" errors. + ;; When we attempt to find the error and scroll to the portion of + ;; the buffer containing the problem, JIT-lock will apply the + ;; correct syntax to the regular expresion literal and the problem + ;; will mysteriously disappear. + (font-lock-set-defaults) + + (let (font-lock-keywords) ; leaves syntactic keywords intact + ;; Avoid byte-compilation errors. `font-lock-fontify-buffer' is + ;; marked as interactive only in Emacs 25. + (with-no-warnings + (font-lock-fontify-buffer))) + + (run-mode-hooks 'typescript-mode-hook)) + +;;;###autoload +(eval-after-load 'folding + '(when (fboundp 'folding-add-to-marks-list) + (folding-add-to-marks-list 'typescript-mode "// {{{" "// }}}" ))) + +;;;###autoload +(add-to-list 'auto-mode-alist '("\\.ts$" . typescript-mode)) + +(provide 'typescript-mode) + +;;; typescript-mode.el ends here diff --git a/elpa/typescript-mode-20160126.408/typescript-mode.elc b/elpa/typescript-mode-20160126.408/typescript-mode.elc new file mode 100644 index 0000000000000000000000000000000000000000..f5d74e83be6690d60e30eb183c3d1050c44d9075 GIT binary patch literal 60519 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 literal 0 HcmV?d00001 diff --git a/elpa/yasnippet-20160131.948/snippets/.gitignore b/elpa/yasnippet-20160131.948/snippets/.gitignore new file mode 100644 index 0000000..8ab45ff --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/.gitignore @@ -0,0 +1 @@ +**/.yas-compiled-snippets.el diff --git a/elpa/yasnippet-20160131.948/snippets/.nosearch b/elpa/yasnippet-20160131.948/snippets/.nosearch new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/.nosearch @@ -0,0 +1 @@ + diff --git a/elpa/yasnippet-20160131.948/snippets/CONTRIBUTORS.txt b/elpa/yasnippet-20160131.948/snippets/CONTRIBUTORS.txt new file mode 100644 index 0000000..955e6a3 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/CONTRIBUTORS.txt @@ -0,0 +1,4 @@ +Please add here your name in alphabetical order (first name) if you contributed with + +- Andrea Crotti +- James Ferguson diff --git a/elpa/yasnippet-20160131.948/snippets/LICENSE b/elpa/yasnippet-20160131.948/snippets/LICENSE new file mode 100644 index 0000000..c9b44cb --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/LICENSE @@ -0,0 +1,18 @@ +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/elpa/yasnippet-20160131.948/snippets/README.md b/elpa/yasnippet-20160131.948/snippets/README.md new file mode 100644 index 0000000..194bea4 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/README.md @@ -0,0 +1,40 @@ +# Yasnippet official snippet collections + +[![Join the chat at https://gitter.im/AndreaCrotti/yasnippet-snippets](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/AndreaCrotti/yasnippet-snippets?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) +This repository contains the official snippets for [yasnippet](http://github.com/capitaomorte/yasnippet), as you can see from the git submodules link. + +# How to install + +There are two options, if you have checked out *yasnippet* already, the only thing you need to do is to run `git submodule update --init` +and it will checkout automatically this repository, at the last version it was synchronized too. + +Otherwise if you want the latest and greatest snippets collection proceed as follows: + +1. clone this repository +2. add to your .emacs the following + - `(add-to-list 'yas-snippet-dirs "$$DIRECTORY_WHERE_YOU_CLONED")` + - and in case you want to enable yasnippet globally: `(yas-global-mode t)` + +3. `M-x yas-reload-all` to activate them + +# Contributing + +This repository has now become the default snippets repository (as a submodule) in yasnippet. +So if you have any useful snippets for any language or framework please feel free to contribute. + +To study the current snippets I suggest to use `M-x yas-describe-tables` +which will gave a table representation of all the snippets available in the current mode. + + +# Guidelines + +Snippets need to be generic enough to be useful for everyone, and not contain anything specific to your own system. + +# Various notes + +## HTML snippets + +Until September 1st 2014 there were a lot of HTML snippets in the repository, which were sometimes useful but I came to the conclusion that yasnippet was not the right fool for them, so they were removed in this pull request: +https://github.com/AndreaCrotti/yasnippet-snippets/pull/49 + +To everyone writing a lot of HTML I suggest using [emmet mode](https://github.com/smihica/emmet-mode) instead, which is a much more powerful mode for writing HTML tags. diff --git a/elpa/yasnippet-20160131.948/snippets/antlr-mode/project b/elpa/yasnippet-20160131.948/snippets/antlr-mode/project new file mode 100644 index 0000000..0588eb9 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/antlr-mode/project @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: project +# key: proj +# -- + + +$0 + \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/antlr-mode/property b/elpa/yasnippet-20160131.948/snippets/antlr-mode/property new file mode 100644 index 0000000..6086cf1 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/antlr-mode/property @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: property +# key: prop +# -- + +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/antlr-mode/target b/elpa/yasnippet-20160131.948/snippets/antlr-mode/target new file mode 100644 index 0000000..c42110d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/antlr-mode/target @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: target +# key: target +# -- + + $0 + \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/applescript-mode/.yas-parents b/elpa/yasnippet-20160131.948/snippets/applescript-mode/.yas-parents new file mode 100644 index 0000000..0539988 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/applescript-mode/.yas-parents @@ -0,0 +1 @@ +prog-mode \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/.yas-parents b/elpa/yasnippet-20160131.948/snippets/c++-mode/.yas-parents new file mode 100644 index 0000000..ce9828b --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/.yas-parents @@ -0,0 +1 @@ +cc-mode diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/assert b/elpa/yasnippet-20160131.948/snippets/c++-mode/assert new file mode 100644 index 0000000..f8f6a49 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/assert @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: assert +# key: ass +# -- +assert($0); \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/beginend b/elpa/yasnippet-20160131.948/snippets/c++-mode/beginend new file mode 100644 index 0000000..51748ae --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/beginend @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name : v.begin(), v.end() +# key: beginend +# -- +${1:v}.begin(), $1.end \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/boost_require b/elpa/yasnippet-20160131.948/snippets/c++-mode/boost_require new file mode 100644 index 0000000..804bb3f --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/boost_require @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: boost_require +# key: req +# group: boost +# -- +BOOST_REQUIRE( ${1:condition} ); +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/cerr b/elpa/yasnippet-20160131.948/snippets/c++-mode/cerr new file mode 100644 index 0000000..2be4917 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/cerr @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: cerr +# key: err +# -- +cerr << $0; diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/cin b/elpa/yasnippet-20160131.948/snippets/c++-mode/cin new file mode 100644 index 0000000..401ccda --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/cin @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: cin +# key: cin +# -- +cin >> $0; \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/class b/elpa/yasnippet-20160131.948/snippets/c++-mode/class new file mode 100644 index 0000000..18d0b54 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/class @@ -0,0 +1,11 @@ +# -*- mode: snippet -*- +# name: class +# key: cls +# -- +class ${1:Name} +{ +public: + ${1:$(yas/substr yas-text "[^: ]*")}(); + ${2:virtual ~${1:$(yas/substr yas-text "[^: ]*")}();} +}; +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/const_[] b/elpa/yasnippet-20160131.948/snippets/c++-mode/const_[] new file mode 100644 index 0000000..ef92ffb --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/const_[] @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: const_[] +# key: c[ +# -- +const ${1:Type}& operator[](${2:int index}) const +{ + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/constructor b/elpa/yasnippet-20160131.948/snippets/c++-mode/constructor new file mode 100644 index 0000000..95ed499 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/constructor @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: constructor +# key: ct +# -- +${1:Class}::$1(${2:args}) ${3: : ${4:init}} +{ + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/cout b/elpa/yasnippet-20160131.948/snippets/c++-mode/cout new file mode 100644 index 0000000..6975775 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/cout @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# contributor: York Zhao +# name: cout +# key: cout +# -- +`(progn (save-excursion) (goto-char (point-min)) (unless (re-search-forward +"^using\\s-+namespace std;" nil 'no-errer) "std::")) +`cout << $0${1: << "${2:\n}"}; \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/cpp b/elpa/yasnippet-20160131.948/snippets/c++-mode/cpp new file mode 100644 index 0000000..99ea53c --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/cpp @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: cpp +# key: cpp +# -- +#include "`(file-name-nondirectory (file-name-sans-extension (buffer-file-name)))`.h" \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/cstd b/elpa/yasnippet-20160131.948/snippets/c++-mode/cstd new file mode 100644 index 0000000..6148875 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/cstd @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: cstd +# key: cstd +# -- +#include \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/d+= b/elpa/yasnippet-20160131.948/snippets/c++-mode/d+= new file mode 100644 index 0000000..b3bf110 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/d+= @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: d+= +# key: d+= +# -- +${1:MyClass}& operator+=(${2:const $1 &}); \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/d_operator b/elpa/yasnippet-20160131.948/snippets/c++-mode/d_operator new file mode 100644 index 0000000..c7f40fc --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/d_operator @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: d_operator<< +# key: << +# -- +friend std::ostream& operator<<(std::ostream&, const ${1:Class}&); \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/d_operator[] b/elpa/yasnippet-20160131.948/snippets/c++-mode/d_operator[] new file mode 100644 index 0000000..d0555f7 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/d_operator[] @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: d_operator[] +# key: [ +# -- +${1:Type}& operator[](${2:int index}); \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/d_operator[]_const b/elpa/yasnippet-20160131.948/snippets/c++-mode/d_operator[]_const new file mode 100644 index 0000000..b4c1f8f --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/d_operator[]_const @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: d_operator[]_const +# key: c[ +# -- +const ${1:Type}& operator[](${2:int index}) const; \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/d_operator_istream b/elpa/yasnippet-20160131.948/snippets/c++-mode/d_operator_istream new file mode 100644 index 0000000..36f88e0 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/d_operator_istream @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: d_operator>> +# key: >> +# -- +friend std::istream& operator>>(std::istream&, const ${1:Class}&); \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/d_operator_ostream b/elpa/yasnippet-20160131.948/snippets/c++-mode/d_operator_ostream new file mode 100644 index 0000000..c7f40fc --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/d_operator_ostream @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: d_operator<< +# key: << +# -- +friend std::ostream& operator<<(std::ostream&, const ${1:Class}&); \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/delete b/elpa/yasnippet-20160131.948/snippets/c++-mode/delete new file mode 100644 index 0000000..61119d1 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/delete @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: delete +# key: dl +# -- +delete ${1:pointer}; \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/delete[] b/elpa/yasnippet-20160131.948/snippets/c++-mode/delete[] new file mode 100644 index 0000000..69223c2 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/delete[] @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: delete[] +# key: dla +# -- +delete[] ${1:arr}; \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/doc b/elpa/yasnippet-20160131.948/snippets/c++-mode/doc new file mode 100644 index 0000000..b58550a --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/doc @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: doc +# key: doc +# -- +/** + * $0 + */ \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/dynamic_casting b/elpa/yasnippet-20160131.948/snippets/c++-mode/dynamic_casting new file mode 100644 index 0000000..f09c171 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/dynamic_casting @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: dynamic_casting +# key: cast +# -- +check_and_cast<${1:Type} *>(${2:msg}); \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/enum b/elpa/yasnippet-20160131.948/snippets/c++-mode/enum new file mode 100644 index 0000000..7b22035 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/enum @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: enum +# key: enum +# -- +enum ${1:NAME}{ +$0 +}; \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/fixture b/elpa/yasnippet-20160131.948/snippets/c++-mode/fixture new file mode 100644 index 0000000..1a25aee --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/fixture @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: fixture +# key: fixt +# -- +BOOST_FIXTURE_TEST_SUITE( ${1:name}, ${2:Fixture} ) + +$0 + +BOOST_AUTO_TEST_SUITE_END() \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/fori b/elpa/yasnippet-20160131.948/snippets/c++-mode/fori new file mode 100644 index 0000000..7676a89 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/fori @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: fori +# key: fori +# -- +for (${1:auto }${2:it} = ${3:var}.begin(); $2 != $3.end(); ++$2) { + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/friend b/elpa/yasnippet-20160131.948/snippets/c++-mode/friend new file mode 100644 index 0000000..d3c9009 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/friend @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: friend +# key: fr +# -- +friend $0; \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/fun_declaration b/elpa/yasnippet-20160131.948/snippets/c++-mode/fun_declaration new file mode 100644 index 0000000..03184dc --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/fun_declaration @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: fun_declaration +# key: f +# -- +${1:type} ${2:name}(${3:args})${4: const}; \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/function b/elpa/yasnippet-20160131.948/snippets/c++-mode/function new file mode 100644 index 0000000..c947c34 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/function @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: function +# key: f +# -- +${1:type} ${2:Class}::${3:name}(${4:args})${5: const} +{ + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/gtest b/elpa/yasnippet-20160131.948/snippets/c++-mode/gtest new file mode 100644 index 0000000..8ba9c57 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/gtest @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: gtest +# key: gtest +# group: testing +# -- +#include \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/ignore b/elpa/yasnippet-20160131.948/snippets/c++-mode/ignore new file mode 100644 index 0000000..ac4085d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/ignore @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: ignore +# key: ignore +# -- +${1:std::}cin.ignore(std::numeric_limits::max(), '\n'); \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/inline b/elpa/yasnippet-20160131.948/snippets/c++-mode/inline new file mode 100644 index 0000000..da5c320 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/inline @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: inline +# key: il +# -- +inline $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/io b/elpa/yasnippet-20160131.948/snippets/c++-mode/io new file mode 100644 index 0000000..1355dac --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/io @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: io +# key: io +# -- +#include \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/iterator b/elpa/yasnippet-20160131.948/snippets/c++-mode/iterator new file mode 100644 index 0000000..1aad629 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/iterator @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: iterator +# key: iter +# -- +${1:std::}${2:vector}::iterator ${3:iter}; diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/map b/elpa/yasnippet-20160131.948/snippets/c++-mode/map new file mode 100644 index 0000000..17ed9ae --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/map @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: map +# key: map +# -- +std::map<${1:type1}$0> ${2:var}; \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/module b/elpa/yasnippet-20160131.948/snippets/c++-mode/module new file mode 100644 index 0000000..b962be4 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/module @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: module +# key: mod +# -- +class ${1:Class} : public cSimpleModule +{ + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/namespace b/elpa/yasnippet-20160131.948/snippets/c++-mode/namespace new file mode 100644 index 0000000..5f702d8 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/namespace @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: namespace +# key: ns +# -- +namespace ${1:Namespace} { + + `yas/selected-text` + +} // $1 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/ns b/elpa/yasnippet-20160131.948/snippets/c++-mode/ns new file mode 100644 index 0000000..0b736e7 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/ns @@ -0,0 +1,4 @@ +#name : namespace ... +# key: ns +# -- +namespace \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/operator!= b/elpa/yasnippet-20160131.948/snippets/c++-mode/operator!= new file mode 100644 index 0000000..0b9c3c3 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/operator!= @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: operator!= +# key: != +# group: operator overloading +# -- +bool ${1:MyClass}::operator!=(const $1 &other) const +{ + return !(*this == other); +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/operator+ b/elpa/yasnippet-20160131.948/snippets/c++-mode/operator+ new file mode 100644 index 0000000..cc1d9aa --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/operator+ @@ -0,0 +1,11 @@ +# -*- mode: snippet -*- +# name: operator+ +# key: + +# group: operator overloading +# -- +${1:MyClass} $1::operator+(const $1 &other) +{ + $1 result = *this; + result += other; + return result; +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/operator+= b/elpa/yasnippet-20160131.948/snippets/c++-mode/operator+= new file mode 100644 index 0000000..e913631 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/operator+= @@ -0,0 +1,10 @@ +# -*- mode: snippet -*- +# name: operator+= +# key: += +# group: operator overloading +# -- +${1:MyClass}& $1::operator+=(${2:const $1 &rhs}) +{ + $0 + return *this; +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/operator= b/elpa/yasnippet-20160131.948/snippets/c++-mode/operator= new file mode 100644 index 0000000..272af5d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/operator= @@ -0,0 +1,14 @@ +# -*- mode: snippet -*- +# name: operator= +# key: = +# where this is a reference to myself +# group: operator overloading +# -- +${1:MyClass}& $1::operator=(const $1 &rhs) +{ + // Check for self-assignment! + if (this == &rhs) + return *this; + $0 + return *this; +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/operator== b/elpa/yasnippet-20160131.948/snippets/c++-mode/operator== new file mode 100644 index 0000000..f8fb3e9 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/operator== @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: operator== +# key: == +# group: operator overloading +# -- +bool ${1:MyClass}::operator==(const $1 &other) const +{ + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/operator[] b/elpa/yasnippet-20160131.948/snippets/c++-mode/operator[] new file mode 100644 index 0000000..5fb110b --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/operator[] @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: operator[] +# key: [] +# group: operator overloading +# -- +${1:Type}& operator[](${2:int index}) +{ + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/operator_istream b/elpa/yasnippet-20160131.948/snippets/c++-mode/operator_istream new file mode 100644 index 0000000..e2296ab --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/operator_istream @@ -0,0 +1,10 @@ +# -*- mode: snippet -*- +# name: operator>> +# key: >> +# group: operator overloading +# -- +std::istream& operator>>(std::istream& is, const ${1:Class}& ${2:c}) +{ + $0 + return is; +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/operator_ostream b/elpa/yasnippet-20160131.948/snippets/c++-mode/operator_ostream new file mode 100644 index 0000000..cd77eb4 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/operator_ostream @@ -0,0 +1,10 @@ +# -*- mode: snippet -*- +# name: operator<< +# key: << +# group: operator overloading +# -- +std::ostream& operator<<(std::ostream& os, const ${1:Class}& ${2:c}) +{ + $0 + return os; +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/ostream b/elpa/yasnippet-20160131.948/snippets/c++-mode/ostream new file mode 100644 index 0000000..9371338 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/ostream @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: ostream +# key: os +# -- +#include \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/pack b/elpa/yasnippet-20160131.948/snippets/c++-mode/pack new file mode 100644 index 0000000..5172bb9 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/pack @@ -0,0 +1,10 @@ +# -*- mode: snippet -*- +# name: pack +# key: pack +# -- +void cNetCommBuffer::pack(${1:type}) +{ + +} + +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/private b/elpa/yasnippet-20160131.948/snippets/c++-mode/private new file mode 100644 index 0000000..849d7ee --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/private @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: private +# key: pr +# -- +private: + $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/protected b/elpa/yasnippet-20160131.948/snippets/c++-mode/protected new file mode 100644 index 0000000..a4f6d59 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/protected @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: protected +# key: pt +# -- +protected: + $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/public b/elpa/yasnippet-20160131.948/snippets/c++-mode/public new file mode 100644 index 0000000..638ddfd --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/public @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: public +# key: pb +# -- +public: + $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/sstream b/elpa/yasnippet-20160131.948/snippets/c++-mode/sstream new file mode 100644 index 0000000..738fd11 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/sstream @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: +# key: ss +# -- +#include \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/std b/elpa/yasnippet-20160131.948/snippets/c++-mode/std new file mode 100644 index 0000000..04d8772 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/std @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: std +# key: std +# -- +using namespace std; \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/std_colon b/elpa/yasnippet-20160131.948/snippets/c++-mode/std_colon new file mode 100644 index 0000000..d9ea8e7 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/std_colon @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: std:: +# key: st +# -- +std::$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/str b/elpa/yasnippet-20160131.948/snippets/c++-mode/str new file mode 100644 index 0000000..95b865c --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/str @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: str +# key: str +# -- +#include \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/template b/elpa/yasnippet-20160131.948/snippets/c++-mode/template new file mode 100644 index 0000000..64814b8 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/template @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: template +# key: temp +# -- +template<${1:$$(yas/choose-value '("typename" "class"))} ${2:T}> +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/test case b/elpa/yasnippet-20160131.948/snippets/c++-mode/test case new file mode 100644 index 0000000..4977ae8 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/test case @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: test case +# key: tc +# group: testing +# -- +BOOST_AUTO_TEST_CASE( ${1:test_case} ) +{ + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/test_main b/elpa/yasnippet-20160131.948/snippets/c++-mode/test_main new file mode 100644 index 0000000..9321cf3 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/test_main @@ -0,0 +1,10 @@ +# -*- mode: snippet -*- +# name: test_main +# key: test_main +# group: testing +# -- +int main(int argc, char **argv) +{ + ::testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/test_suite b/elpa/yasnippet-20160131.948/snippets/c++-mode/test_suite new file mode 100644 index 0000000..84d0f46 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/test_suite @@ -0,0 +1,10 @@ +# -*- mode: snippet -*- +# name: test_suite +# key: ts +# group: testing +# -- +BOOST_AUTO_TEST_SUITE( ${1:test_suite1} ) + +$0 + +BOOST_AUTO_TEST_SUITE_END() \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/this b/elpa/yasnippet-20160131.948/snippets/c++-mode/this new file mode 100644 index 0000000..5c7e6a3 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/this @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: this +# key: th +# -- +this \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/throw b/elpa/yasnippet-20160131.948/snippets/c++-mode/throw new file mode 100644 index 0000000..95616db --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/throw @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: throw +# key: throw +# -- +throw ${1:MyError}($0); \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/try b/elpa/yasnippet-20160131.948/snippets/c++-mode/try new file mode 100644 index 0000000..f44c67f --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/try @@ -0,0 +1,10 @@ +# -*- mode: snippet -*- +# name: try +# key: try +# a bit too intrusive now still, not always I want to do this +# -- +try { + $0 +} catch (${1:type}) { + +} diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/tryw b/elpa/yasnippet-20160131.948/snippets/c++-mode/tryw new file mode 100644 index 0000000..cf61928 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/tryw @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: tryw +# key: tryw +# -- +try { + `(or yas/selected-text (car kill-ring))` +} catch ${1:Exception} { + +} diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/using b/elpa/yasnippet-20160131.948/snippets/c++-mode/using new file mode 100644 index 0000000..27ec885 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/using @@ -0,0 +1,5 @@ +#name : using namespace ... +# key: using +# -- +using namespace ${std}; +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c++-mode/vector b/elpa/yasnippet-20160131.948/snippets/c++-mode/vector new file mode 100644 index 0000000..ef118a2 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c++-mode/vector @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: vector +# key: vec +# -- +std::vector<${1:Class}> ${2:var}${3:(${4:10}, $1($5))}; \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c-mode/.yas-parents b/elpa/yasnippet-20160131.948/snippets/c-mode/.yas-parents new file mode 100644 index 0000000..ce9828b --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c-mode/.yas-parents @@ -0,0 +1 @@ +cc-mode diff --git a/elpa/yasnippet-20160131.948/snippets/c-mode/assert b/elpa/yasnippet-20160131.948/snippets/c-mode/assert new file mode 100644 index 0000000..964205e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c-mode/assert @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: assert +# key: ass +# -- +#include +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c-mode/compile b/elpa/yasnippet-20160131.948/snippets/c-mode/compile new file mode 100644 index 0000000..8246a10 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c-mode/compile @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: compile +# key: compile +# -- +// -*- compile-command: "${1:gcc -Wall -o ${2:dest} ${3:file}}" -*- \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c-mode/define b/elpa/yasnippet-20160131.948/snippets/c-mode/define new file mode 100644 index 0000000..9d5c5dd --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c-mode/define @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: define +# key: d +# -- +#define $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c-mode/malloc b/elpa/yasnippet-20160131.948/snippets/c-mode/malloc new file mode 100644 index 0000000..2a51de3 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c-mode/malloc @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: malloc +# key: malloc +# -- +malloc(sizeof($1)${2: * ${3:3}}); +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c-mode/packed b/elpa/yasnippet-20160131.948/snippets/c-mode/packed new file mode 100644 index 0000000..b4eb125 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c-mode/packed @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: packed +# key: packed +# -- +__attribute__((__packed__))$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c-mode/printf b/elpa/yasnippet-20160131.948/snippets/c-mode/printf new file mode 100644 index 0000000..ccc788c --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c-mode/printf @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: printf +# key: pr +# -- +printf("${1:format string}"${2: ,a0,a1}); \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c-mode/stdio b/elpa/yasnippet-20160131.948/snippets/c-mode/stdio new file mode 100644 index 0000000..7529766 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c-mode/stdio @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: stdio +# key: io +# -- +#include \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c-mode/stdlib b/elpa/yasnippet-20160131.948/snippets/c-mode/stdlib new file mode 100644 index 0000000..a7d117b --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c-mode/stdlib @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: stdlib +# key: std +# -- +#include diff --git a/elpa/yasnippet-20160131.948/snippets/c-mode/string b/elpa/yasnippet-20160131.948/snippets/c-mode/string new file mode 100644 index 0000000..d45b757 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c-mode/string @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: string +# key: str +# -- +#include \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c-mode/union b/elpa/yasnippet-20160131.948/snippets/c-mode/union new file mode 100644 index 0000000..b4ec5fa --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c-mode/union @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: union +# key: union +# -- +typedef union { + $0 +} ${1:name}; \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/c-mode/unistd b/elpa/yasnippet-20160131.948/snippets/c-mode/unistd new file mode 100644 index 0000000..d5fca02 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/c-mode/unistd @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: unistd +# key: uni +# -- +#include \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/cc-mode/case b/elpa/yasnippet-20160131.948/snippets/cc-mode/case new file mode 100644 index 0000000..0b3dc36 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cc-mode/case @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name : case : {...} +# key: case +# -- +`(indent-region (- (point) 20) (+ (point) 20) nil)`case ${2:constexpr}:${3: \{} + $0 + break; +${3:$(if (string-match "\{" yas-text) "\}" "")} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/cc-mode/do b/elpa/yasnippet-20160131.948/snippets/cc-mode/do new file mode 100644 index 0000000..70e208a --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cc-mode/do @@ -0,0 +1,7 @@ +#name : do { ... } while (...) +# key: do +# -- +do +{ + $0 +} while (${1:condition}); \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/cc-mode/else b/elpa/yasnippet-20160131.948/snippets/cc-mode/else new file mode 100644 index 0000000..99e006d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cc-mode/else @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name : else { ... } +# key: else +# -- +else${1: { + $0 +}} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/cc-mode/file_description b/elpa/yasnippet-20160131.948/snippets/cc-mode/file_description new file mode 100644 index 0000000..5b3a1ee --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cc-mode/file_description @@ -0,0 +1,13 @@ +# -*- mode: snippet -*- +#cotributor: Henrique Jung +#name: File description +#key: \file +#group: doxygen +# -- +/** + * \file ${1:`(file-name-nondirectory(buffer-file-name))`} + * \brief ${2:A Documented file.} + ${3:* + * ${4:Detailed description} + * +}*/ diff --git a/elpa/yasnippet-20160131.948/snippets/cc-mode/fopen b/elpa/yasnippet-20160131.948/snippets/cc-mode/fopen new file mode 100644 index 0000000..f41cf62 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cc-mode/fopen @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: FILE *fp = fopen(..., ...); +# key: fopen +# -- +FILE *${fp} = fopen(${"file"}, "${r}"); \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/cc-mode/for b/elpa/yasnippet-20160131.948/snippets/cc-mode/for new file mode 100644 index 0000000..e445f4d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cc-mode/for @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: for +# key: for +# -- +for (${1:i = 0}; ${2:i < N}; ${3:i++}) { + $0 +} diff --git a/elpa/yasnippet-20160131.948/snippets/cc-mode/for_n b/elpa/yasnippet-20160131.948/snippets/cc-mode/for_n new file mode 100644 index 0000000..014d8ff --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cc-mode/for_n @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# contributor: York Zhao +# name: for_n +# key: forn +# -- +for (${1:auto }${2:i} = ${3:0}; $2 < ${4:MAXIMUM}; ++$2) { + $0 +} diff --git a/elpa/yasnippet-20160131.948/snippets/cc-mode/function_description b/elpa/yasnippet-20160131.948/snippets/cc-mode/function_description new file mode 100644 index 0000000..1ff27ff --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cc-mode/function_description @@ -0,0 +1,14 @@ +# -*- mode: snippet -*- +#cotributor: Henrique Jung +#name: Function description +#key: \brief +#group: doxygen +# -- +/** + * \brief ${1:function description} + ${2:* + * ${3:Detailed description} + * + }* \param ${4:param} + * \return ${5:return type} + */ \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/cc-mode/if b/elpa/yasnippet-20160131.948/snippets/cc-mode/if new file mode 100644 index 0000000..751c6f5 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cc-mode/if @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name : if (...) { ... } +# key: if +# -- +if (${1:condition}) ${2:{ + $0 +}} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/cc-mode/ifdef b/elpa/yasnippet-20160131.948/snippets/cc-mode/ifdef new file mode 100644 index 0000000..578ed8a --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cc-mode/ifdef @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: ifdef +# key: ifdef +# -- +#ifdef ${1:MACRO} + +$0 + +#endif // $1 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/cc-mode/inc b/elpa/yasnippet-20160131.948/snippets/cc-mode/inc new file mode 100644 index 0000000..96beaa7 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cc-mode/inc @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name : #include <...> +# key : inc +# -- +#include <$1> \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/cc-mode/inc.1 b/elpa/yasnippet-20160131.948/snippets/cc-mode/inc.1 new file mode 100644 index 0000000..64a8653 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cc-mode/inc.1 @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name : #include "..." +# key : inc +# -- +#include "$1" \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/cc-mode/main b/elpa/yasnippet-20160131.948/snippets/cc-mode/main new file mode 100644 index 0000000..b05494e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cc-mode/main @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: main +# key: main +# -- +int main(${1:int argc, char *argv[]}) +{ + $0 + return 0; +} diff --git a/elpa/yasnippet-20160131.948/snippets/cc-mode/math b/elpa/yasnippet-20160131.948/snippets/cc-mode/math new file mode 100644 index 0000000..820fd16 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cc-mode/math @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: math +# key: math +# -- +#include +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/cc-mode/member_description b/elpa/yasnippet-20160131.948/snippets/cc-mode/member_description new file mode 100644 index 0000000..54f3406 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cc-mode/member_description @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +#cotributor: Henrique Jung +#name: Member description +#key: !< +#group: doxygen +# -- +/*!< ${1:Detailed description after the member} */ \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/cc-mode/once b/elpa/yasnippet-20160131.948/snippets/cc-mode/once new file mode 100644 index 0000000..8d7003a --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cc-mode/once @@ -0,0 +1,9 @@ +#name : #ifndef XXX; #define XXX; #endif +# key: once +# -- +#ifndef ${1:`(upcase (file-name-nondirectory (file-name-sans-extension (buffer-file-name))))`_H} +#define $1 + +$0 + +#endif /* $1 */ \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/cc-mode/printf b/elpa/yasnippet-20160131.948/snippets/cc-mode/printf new file mode 100644 index 0000000..1e276ec --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cc-mode/printf @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: printf +# key: printf +# -- +printf("${1:%s}\\n"${1:$(if (string-match "%" yas-text) ", " "\);") +}$2${1:$(if (string-match "%" yas-text) "\);" "")} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/cc-mode/struct b/elpa/yasnippet-20160131.948/snippets/cc-mode/struct new file mode 100644 index 0000000..aeacc33 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cc-mode/struct @@ -0,0 +1,7 @@ +#name : struct ... { ... } +# key: struct +# -- +struct ${1:name} +{ + $0 +}; \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/cc-mode/switch b/elpa/yasnippet-20160131.948/snippets/cc-mode/switch new file mode 100644 index 0000000..6827bba --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cc-mode/switch @@ -0,0 +1,11 @@ +# -*- mode: snippet -*- +# name : switch (...) { case : ... default: ...} +# key: switch +# -- +switch (${1:expr}) { +case ${2:constexpr}:${3: \{} + $0 + break; +${3:$(if (string-match "\{" yas-text) "\}\n" "")}default: + break; +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/cc-mode/ternary b/elpa/yasnippet-20160131.948/snippets/cc-mode/ternary new file mode 100644 index 0000000..3c31d93 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cc-mode/ternary @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: ternary +# key: ? +# -- +(${1:cond}) ? ${2:then} : ${3:else}; \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/cc-mode/typedef b/elpa/yasnippet-20160131.948/snippets/cc-mode/typedef new file mode 100644 index 0000000..6cb41b1 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cc-mode/typedef @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: typedef +# key: typedef +# -- +typedef ${1:type} ${2:alias}; \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/cc-mode/while b/elpa/yasnippet-20160131.948/snippets/cc-mode/while new file mode 100644 index 0000000..e9f07ca --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cc-mode/while @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: while +# key: while +# -- +while (${1:condition}) { + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/action b/elpa/yasnippet-20160131.948/snippets/chef-mode/action new file mode 100644 index 0000000..98fa8ac --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/action @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: action +# key: action +# -- +action: ${0:nothing} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/bash b/elpa/yasnippet-20160131.948/snippets/chef-mode/bash new file mode 100644 index 0000000..90a485f --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/bash @@ -0,0 +1,14 @@ +# -*- mode: snippet -*- +# name: bash +# key: bash +# -- +bash "${1:install something}" do + user "${2:root}" + cwd "${3:/tmp}" + creates "${4:maybe}" + code <<-EOH + STATUS=0 + $0 || STATUS=1 + exit $STATUS + EOH +end \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/cookbook_file b/elpa/yasnippet-20160131.948/snippets/chef-mode/cookbook_file new file mode 100644 index 0000000..9d13d2b --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/cookbook_file @@ -0,0 +1,10 @@ +# -*- mode: snippet -*- +# name: cookbook_file +# key: cookbook_file +# -- +cookbook_file "${1:/tmp/file}" do + owner "${2:root}" + group "${3:root}" + mode "${4:0644}" + source "${5:my-filename}" +end \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/cron b/elpa/yasnippet-20160131.948/snippets/chef-mode/cron new file mode 100644 index 0000000..ee4b57d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/cron @@ -0,0 +1,10 @@ +# -*- mode: snippet -*- +# name: cron +# key: cron +# -- +cron "${1:name}" do + hour "${2:5}" + minute "${3:0}" + + command "${4:/bin/true}" +end \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/cronf b/elpa/yasnippet-20160131.948/snippets/chef-mode/cronf new file mode 100644 index 0000000..afe369c --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/cronf @@ -0,0 +1,16 @@ +# -*- mode: snippet -*- +# name: cronf +# key: cronf +# -- +cron "${1:name}" do + hour "${2:*}" + minute "${3:*}" + day "${4:*}" + weekday "${6:*}" + command "${7:/bin/true}" + user "${8:root}" + mailto "${9:root@example.com}" + path "${10:/bin:/usr/bin}" + home "${11:/tmp}" + shell "${12:/bin/bash}" +end diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/deploy b/elpa/yasnippet-20160131.948/snippets/chef-mode/deploy new file mode 100644 index 0000000..499982e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/deploy @@ -0,0 +1,18 @@ +# -*- mode: snippet -*- +# name: deploy +# key: deploy +# -- +deploy "/my/deploy/dir" do + repo "git@github.com/whoami/provideroject" + revision "abc123" # or "HEAD" or "TAG_for_1.0" or (subversion) "1234" + user "deploy_ninja" + enable_submodules true + migrate true + migration_command "rake db:migrate" + environment "RAILS_ENV" => "production", "OTHER_ENV" => "foo" + shallow_clone true + action :deploy # or :rollback + restart_command "touch tmp/restart.txt" + git_ssh_wrapper "wrap-ssh4git.sh" + scm_provider Chef::Provider::Git # is the default, for svn: Chefhef::Provider::Subversion +end diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/directory b/elpa/yasnippet-20160131.948/snippets/chef-mode/directory new file mode 100644 index 0000000..63005be --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/directory @@ -0,0 +1,11 @@ +# -*- mode: snippet -*- +# name: directory +# key: directory +# -- +directory "${1:name}" do + owner "root" + group "root" + mode "0755" + + action :create +end diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/directoryf b/elpa/yasnippet-20160131.948/snippets/chef-mode/directoryf new file mode 100644 index 0000000..4496829 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/directoryf @@ -0,0 +1,13 @@ +# -*- mode: snippet -*- +# name: directoryf +# key: directoryf +# -- +directory "${1:name}" do + owner "$create{2:root}" + group "${3:root}" + mode "${4:0755}" + path "${5:name}" + recursive ${6:false} + + action :${7:create} +end diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/env b/elpa/yasnippet-20160131.948/snippets/chef-mode/env new file mode 100644 index 0000000..6a8ab6d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/env @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: env +# key: env +# -- +env "${1:RAILS_ENV}" do + value "${2:production}" +end \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/execute b/elpa/yasnippet-20160131.948/snippets/chef-mode/execute new file mode 100644 index 0000000..356d854 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/execute @@ -0,0 +1,10 @@ +# -*- mode: snippet -*- +# name: execute +# key: execute +# -- +execute "${1:name}" do + command "${2:ls -la}" + creates "${3:/tmp/something}" + + action :${4:run} +end \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/executef b/elpa/yasnippet-20160131.948/snippets/chef-mode/executef new file mode 100644 index 0000000..2ad7786 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/executef @@ -0,0 +1,18 @@ +# -*- mode: snippet -*- +# name: executef +# key: executef +# -- +execute "${1:name}" do + command "${2:ls -la}" + creates "$ls{3:/tmp/something}" + cwd "${4:/tmp}" + environment ({${5:'HOME' => '/home/myhome'}}) + user "${6:root}" + group "${7:root}" + path "${8:['/opt/bin','/opt/sbin']}" + timeout ${9:3600} + returns ${10:0} + umask "${11:022}umask" + + action :${12:run} +end \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/file b/elpa/yasnippet-20160131.948/snippets/chef-mode/file new file mode 100644 index 0000000..3d85756 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/file @@ -0,0 +1,11 @@ +# -*- mode: snippet -*- +# name: file +# key: file +# -- +file "${1:name}" do + owner "root" + group "root" + mode "0644" + + action :create +end \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/filef b/elpa/yasnippet-20160131.948/snippets/chef-mode/filef new file mode 100644 index 0000000..facd77e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/filef @@ -0,0 +1,14 @@ +# -*- mode: snippet -*- +# name: filef +# key: filef +# -- +file "${1:name}" do + path "${3:path}" + backup ${4:5} + owner "${5:root}" + group "${6:root}" + mode "${7:0644}" + content "${8:content here}" + + action :${2:create} +end \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/git b/elpa/yasnippet-20160131.948/snippets/chef-mode/git new file mode 100644 index 0000000..309d844 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/git @@ -0,0 +1,11 @@ +# -*- mode: snippet -*- +# name: git +# key: git +# -- +git "${1:/home/user/deployment}" do + repository "${2:git@github.com:gitsite/deploymentployment.git}" + reference "${3:master}" + user "${4:user}" + group "${5:templateest}" + action :sync +end \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/group b/elpa/yasnippet-20160131.948/snippets/chef-mode/group new file mode 100644 index 0000000..73ad1f8 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/group @@ -0,0 +1,10 @@ +# -*- mode: snippet -*- +# name: group +# key: group +# -- +group "${1:name}" do + gid ${2:999} + members [${3:'paco','vicente'}] + + action :create +end \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/http_request b/elpa/yasnippet-20160131.948/snippets/chef-mode/http_request new file mode 100644 index 0000000..b3a2882 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/http_request @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: http_request +# key: http_request +# -- +http_request "${1:some message}" do + url "${2:http://example.com/check_in}" +end \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/http_requestp b/elpa/yasnippet-20160131.948/snippets/chef-mode/http_requestp new file mode 100644 index 0000000..96047dd --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/http_requestp @@ -0,0 +1,10 @@ +# -*- mode: snippet -*- +# name: http_requestp +# key: http_requestp +# -- +http_request "${1:posting data}" do + action :post + url "${2:http://example.com/check_in}" + message ${3::some => "data"} + headers (${4:\{"AUTHORIZATION" => authorization\}}) +end \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/ignore_failure b/elpa/yasnippet-20160131.948/snippets/chef-mode/ignore_failure new file mode 100644 index 0000000..6dbed60 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/ignore_failure @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: ignore_failure +# key: ignore_failure +# -- +ignore_failure ${0:true} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/inc b/elpa/yasnippet-20160131.948/snippets/chef-mode/inc new file mode 100644 index 0000000..4fd785a --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/inc @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: inc +# key: inc +# -- +include_recipe "${1:example::recipe}" \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/link b/elpa/yasnippet-20160131.948/snippets/chef-mode/link new file mode 100644 index 0000000..f429d3c --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/link @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: link +# key: link +# -- +link "${1:/tmp/passwd}" do + to "${2:/etc/passwd}" +end \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/linkf b/elpa/yasnippet-20160131.948/snippets/chef-mode/linkf new file mode 100644 index 0000000..cec083f --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/linkf @@ -0,0 +1,10 @@ +# -*- mode: snippet -*- +# name: linkf +# key: linkf +# -- +link "${1:/tmp/passwd}" do + to "${2:/etc/passwd}" + link_type :${3:symbolic} + owner "${4:root}" + group "${5:root}" +end \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/log b/elpa/yasnippet-20160131.948/snippets/chef-mode/log new file mode 100644 index 0000000..fce4b9e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/log @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: log +# key: log +# -- +log ("${1:your string to log}") { level :${2:debug} } \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/machine b/elpa/yasnippet-20160131.948/snippets/chef-mode/machine new file mode 100644 index 0000000..fb9ed43 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/machine @@ -0,0 +1,10 @@ +# -*- mode: snippet -*- +# name: machine +# key: machine +# -- +machine "${1:name}" do + role '${2:web}' + recipe '${3:web}' + chef_environment '${4:_default}' + converge true +end diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/meta b/elpa/yasnippet-20160131.948/snippets/chef-mode/meta new file mode 100644 index 0000000..70ba649 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/meta @@ -0,0 +1,10 @@ +# -*- mode: snippet -*- +# name: meta +# key: meta +# -- +maintainer "${1:YOUR_COMPANY_NAME}" +maintainer_email "${2:YOUR_EMAIL}" +license "${3:All rights reserved}" +description "${4:Installs/Configures example}" +long_description IO.read(File.join(File.dirname(__FILE__), 'README.rdoc')) +version "${5:0.0.1}" \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/not_if b/elpa/yasnippet-20160131.948/snippets/chef-mode/not_if new file mode 100644 index 0000000..9cba25d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/not_if @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: not_if +# key: not_if +# -- +not_if "${1}" \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/notifies b/elpa/yasnippet-20160131.948/snippets/chef-mode/notifies new file mode 100644 index 0000000..072e50f --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/notifies @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: notifies +# key: notifies +# -- +notifies :${1:restart}, "${2:service}[${3:name}]" \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/only_if b/elpa/yasnippet-20160131.948/snippets/chef-mode/only_if new file mode 100644 index 0000000..395bdf8 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/only_if @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: only_if +# key: only_if +# -- +only_if "${1}" \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/pac b/elpa/yasnippet-20160131.948/snippets/chef-mode/pac new file mode 100644 index 0000000..60c9a8f --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/pac @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: pac +# key: pac +# -- +package "${1:name}" do + action :${2:install} + version "${3:1.0-1}" +end \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/pak b/elpa/yasnippet-20160131.948/snippets/chef-mode/pak new file mode 100644 index 0000000..86fec9b --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/pak @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: pak +# key: pak +# -- +package "${1:name}" do + action :${2:install} + version "${3:1.0-1}" +end \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/provider b/elpa/yasnippet-20160131.948/snippets/chef-mode/provider new file mode 100644 index 0000000..f049cb8 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/provider @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: provider +# key: provider +# -- +provider Chef::Provider::${0:Package::Rubygems} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/python b/elpa/yasnippet-20160131.948/snippets/chef-mode/python new file mode 100644 index 0000000..7cd8b4e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/python @@ -0,0 +1,11 @@ +# -*- mode: snippet -*- +# name: python +# key: python +# -- +python "${1:install something}" do + user "${2:root}" + cwd "${3:/tmp}" + code <<-EOH + $0 + EOH +end \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/remote_file b/elpa/yasnippet-20160131.948/snippets/chef-mode/remote_file new file mode 100644 index 0000000..0c78cc9 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/remote_file @@ -0,0 +1,11 @@ +# -*- mode: snippet -*- +# name: remote_file +# key: remote_file +# -- +remote_file "${1:/tmp/remote_file}" do + owner "${2:root}" + group "${3:root}" + mode "${4:0644}" + source "${5:http://www.example.com/remote_file}" + checksum "${6:sha256checksum}" +end \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/retries b/elpa/yasnippet-20160131.948/snippets/chef-mode/retries new file mode 100644 index 0000000..d87a424 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/retries @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: retries +# key: retries +# -- +retries ${1:1} +retry_delay ${2:2} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/role b/elpa/yasnippet-20160131.948/snippets/chef-mode/role new file mode 100644 index 0000000..ccce3ed --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/role @@ -0,0 +1,12 @@ +# -*- mode: snippet -*- +# name: role +# key: role +# -- +name "${1:role name}" + description "${2:Description for the role}" + env_run_lists "${3:role name}" => [ + ] + run_list "" + default_attributes( + ${4::attribute => "example"} + ) diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/ruby b/elpa/yasnippet-20160131.948/snippets/chef-mode/ruby new file mode 100644 index 0000000..105a05d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/ruby @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: ruby +# key: ruby +# -- +ruby_block "${1:reload client config}" do + block do + ${0:Chef::Config.from_file("/Chefetc/chef/client.rb")} + end +end \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/script b/elpa/yasnippet-20160131.948/snippets/chef-mode/script new file mode 100644 index 0000000..227c464 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/script @@ -0,0 +1,15 @@ +# -*- mode: snippet -*- +# name: script +# key: script +# -- +script "${1:do something}" do + interpreter "bash" + user "${2:root}" + cwd "${3:/tmp}" + creates "${4:maybe}" + code <<-EOH + STATUS=0 + $0 || STATUS=1 + exit $STATUS + EOH +end diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/service b/elpa/yasnippet-20160131.948/snippets/chef-mode/service new file mode 100644 index 0000000..f653c28 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/service @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: service +# key: service +# -- +service "${1:name}" do + supports :status => ${2:true}, :restart => ${3:true}, :truereload => ${4:true} + action ${5:[ :enable, :start ]} +end \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/servicep b/elpa/yasnippet-20160131.948/snippets/chef-mode/servicep new file mode 100644 index 0000000..c7b0940 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/servicep @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: servicep +# key: servicep +# -- +service "${1:name}" do + pattern "${2:pattern}" + supports :status => ${3:true}, :restart => ${4:true}, :reload => ${5:true} + action ${6:[ :enable, :start ]} +end \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/subscribes b/elpa/yasnippet-20160131.948/snippets/chef-mode/subscribes new file mode 100644 index 0000000..05ec673 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/subscribes @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: subscribes +# key: subscribes +# -- +subscribes :${1:restart}, "${2:template}[${3:name}]" \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/supports b/elpa/yasnippet-20160131.948/snippets/chef-mode/supports new file mode 100644 index 0000000..6fe4c84 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/supports @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: supports +# key: supports +# -- +supports :status => :${1:true}, :restart => :${2:true}, :reload => :${3:true} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/template b/elpa/yasnippet-20160131.948/snippets/chef-mode/template new file mode 100644 index 0000000..8a01cc2 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/template @@ -0,0 +1,10 @@ +# -*- mode: snippet -*- +# name: template +# key: template +# -- +template "${1:name}" do + source "${2:source}.erb" + owner "root" + group "root" + mode "0644" +end diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/templatev b/elpa/yasnippet-20160131.948/snippets/chef-mode/templatev new file mode 100644 index 0000000..c933cd7 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/templatev @@ -0,0 +1,11 @@ +# -*- mode: snippet -*- +# name: templatev +# key: templatev +# -- +template "${1:name}" do + source "${2:source}.erb" + owner "root" + group "root" + node "0644" + variables( ${3::config_var => node[:configs][:config_var]} ) +end diff --git a/elpa/yasnippet-20160131.948/snippets/chef-mode/user b/elpa/yasnippet-20160131.948/snippets/chef-mode/user new file mode 100644 index 0000000..5f98dde --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/chef-mode/user @@ -0,0 +1,14 @@ +# -*- mode: snippet -*- +# name: user +# key: user +# -- +user "${1:random}" do + action :create + comment "${2:Random User}" + uid ${3:1000} + gid "${4:users}" + home "${5:/home/random}" + shell "${6:/bin/zsh}" + password "${7:\$1\$JJsvHslV\$szsCjVEroftprNn4JHtDi.}" + supports :manage_home =>manage_home true +end diff --git a/elpa/yasnippet-20160131.948/snippets/cider-repl-mode b/elpa/yasnippet-20160131.948/snippets/cider-repl-mode new file mode 100644 index 0000000..e69de29 diff --git a/elpa/yasnippet-20160131.948/snippets/clojure-mode/.yas-parents b/elpa/yasnippet-20160131.948/snippets/clojure-mode/.yas-parents new file mode 100644 index 0000000..75d003f --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/clojure-mode/.yas-parents @@ -0,0 +1 @@ +prog-mode diff --git a/elpa/yasnippet-20160131.948/snippets/clojure-mode/bench b/elpa/yasnippet-20160131.948/snippets/clojure-mode/bench new file mode 100644 index 0000000..fd4e151 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/clojure-mode/bench @@ -0,0 +1,7 @@ +# name: bench +# key: bench +# -- +(dotimes [_ 5 ]$> + (time (dotimes [i 1000000]$> + $0$> + )))$> \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/clojure-mode/bp b/elpa/yasnippet-20160131.948/snippets/clojure-mode/bp new file mode 100644 index 0000000..5760865 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/clojure-mode/bp @@ -0,0 +1,4 @@ +# name: bp +# key: bp +# -- +(swank.core/break) diff --git a/elpa/yasnippet-20160131.948/snippets/clojure-mode/def b/elpa/yasnippet-20160131.948/snippets/clojure-mode/def new file mode 100644 index 0000000..7ac6697 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/clojure-mode/def @@ -0,0 +1,4 @@ +# name: def +# key: def +# -- +(def $0) diff --git a/elpa/yasnippet-20160131.948/snippets/clojure-mode/defm b/elpa/yasnippet-20160131.948/snippets/clojure-mode/defm new file mode 100644 index 0000000..1f6bb7c --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/clojure-mode/defm @@ -0,0 +1,7 @@ +# name: defmacro +# key: defm +# -- +(defmacro $1 + "$2"$> + [$3]$> + $0)$> diff --git a/elpa/yasnippet-20160131.948/snippets/clojure-mode/defn b/elpa/yasnippet-20160131.948/snippets/clojure-mode/defn new file mode 100644 index 0000000..f68b48e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/clojure-mode/defn @@ -0,0 +1,7 @@ +# name: defn +# key: defn +# -- +(defn $1 + "$2"$> + [$3]$> + $0)$> diff --git a/elpa/yasnippet-20160131.948/snippets/clojure-mode/defr b/elpa/yasnippet-20160131.948/snippets/clojure-mode/defr new file mode 100644 index 0000000..101a0e9 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/clojure-mode/defr @@ -0,0 +1,8 @@ +# name: defrecord +# key: defr +# -- +(defrecord + ^{"$1"}$> + $2$> + [$3]$> + $0)$> diff --git a/elpa/yasnippet-20160131.948/snippets/clojure-mode/deft b/elpa/yasnippet-20160131.948/snippets/clojure-mode/deft new file mode 100644 index 0000000..3337e9a --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/clojure-mode/deft @@ -0,0 +1,8 @@ +# name: deftype +# key: deft +# -- +(deftype + ^{"$1"}$> + $2$> + [$3]$> + $0)$> \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/clojure-mode/doseq b/elpa/yasnippet-20160131.948/snippets/clojure-mode/doseq new file mode 100644 index 0000000..9a7d3aa --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/clojure-mode/doseq @@ -0,0 +1,6 @@ +# name: doseq +# key: doseq +# -- +(doseq [$1 $2] + $3)$> +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/clojure-mode/fn b/elpa/yasnippet-20160131.948/snippets/clojure-mode/fn new file mode 100644 index 0000000..e949ed8 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/clojure-mode/fn @@ -0,0 +1,5 @@ +# name: fn +# key: fn +# -- +(fn [$1] + $0)$> diff --git a/elpa/yasnippet-20160131.948/snippets/clojure-mode/for b/elpa/yasnippet-20160131.948/snippets/clojure-mode/for new file mode 100644 index 0000000..6ff8781 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/clojure-mode/for @@ -0,0 +1,5 @@ +# name: for +# key: for +# -- +(for [$1 $2] + $3)$> diff --git a/elpa/yasnippet-20160131.948/snippets/clojure-mode/if b/elpa/yasnippet-20160131.948/snippets/clojure-mode/if new file mode 100644 index 0000000..e3a0bd3 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/clojure-mode/if @@ -0,0 +1,8 @@ +# -*- coding: utf-8 -*- +# name: if +# key: if +# -- +(if $1 + $2$> + $3)$> +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/clojure-mode/ifl b/elpa/yasnippet-20160131.948/snippets/clojure-mode/ifl new file mode 100644 index 0000000..a8df766 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/clojure-mode/ifl @@ -0,0 +1,7 @@ +# -*- coding: utf-8 -*- +# name: ifl +# key: ifl +# -- +(if-let [$1 $2] + $3)$> +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/clojure-mode/import b/elpa/yasnippet-20160131.948/snippets/clojure-mode/import new file mode 100644 index 0000000..a7929d1 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/clojure-mode/import @@ -0,0 +1,4 @@ +# name: import +# key: import +# -- +(:import ($1))$> \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/clojure-mode/is b/elpa/yasnippet-20160131.948/snippets/clojure-mode/is new file mode 100644 index 0000000..6a8e54a --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/clojure-mode/is @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- +# name: is +# key: is +# -- +(is (= $1 $2)) diff --git a/elpa/yasnippet-20160131.948/snippets/clojure-mode/let b/elpa/yasnippet-20160131.948/snippets/clojure-mode/let new file mode 100644 index 0000000..9d83ae2 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/clojure-mode/let @@ -0,0 +1,7 @@ +# -*- coding: utf-8 -*- +# name: let +# key: let +# -- +(let [$1 $2]$> + $3)$> +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/clojure-mode/map b/elpa/yasnippet-20160131.948/snippets/clojure-mode/map new file mode 100644 index 0000000..a699c4a --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/clojure-mode/map @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- +# name: map +# key: map +# -- +(map $1 $2) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/clojure-mode/map.lambda b/elpa/yasnippet-20160131.948/snippets/clojure-mode/map.lambda new file mode 100644 index 0000000..9771706 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/clojure-mode/map.lambda @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- +# name: map lambda +# key: map +# -- +(map #($1) $2)$> \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/clojure-mode/mdoc b/elpa/yasnippet-20160131.948/snippets/clojure-mode/mdoc new file mode 100644 index 0000000..0917228 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/clojure-mode/mdoc @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- +# name: mdoc +# key: mdoc +# -- +^{:doc "$1"} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/clojure-mode/ns b/elpa/yasnippet-20160131.948/snippets/clojure-mode/ns new file mode 100644 index 0000000..1d8982e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/clojure-mode/ns @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# name: ns +# key: ns +# -- +(ns `(flet ((try-src-prefix + (path src-pfx) + (let ((parts (split-string path src-pfx))) + (if (= 2 (length parts)) + (second parts) + nil)))) + (let* ((p (buffer-file-name)) + (p2 (first + (remove-if-not '(lambda (x) x) + (mapcar + '(lambda (pfx) + (try-src-prefix p pfx)) + '("/src/cljs/" "/src/clj/" "/src/"))))) + (p3 (file-name-sans-extension p2)) + (p4 (mapconcat '(lambda (x) x) + (split-string p3 "/") + "."))) + (replace-regexp-in-string "_" "-" p4)))`) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/clojure-mode/opts b/elpa/yasnippet-20160131.948/snippets/clojure-mode/opts new file mode 100644 index 0000000..4e04fa0 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/clojure-mode/opts @@ -0,0 +1,6 @@ +# key: opts +# name: opts +# -- +{:keys [$1]$> + :or {$2}$> + :as $3}$> \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/clojure-mode/pr b/elpa/yasnippet-20160131.948/snippets/clojure-mode/pr new file mode 100644 index 0000000..6d98a41 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/clojure-mode/pr @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +# name: pr +# key: pr +# -- +(prn $1) +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/clojure-mode/print b/elpa/yasnippet-20160131.948/snippets/clojure-mode/print new file mode 100644 index 0000000..a23c1c8 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/clojure-mode/print @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +# name: print +# key: print +# -- +(println $1) +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/clojure-mode/reduce b/elpa/yasnippet-20160131.948/snippets/clojure-mode/reduce new file mode 100644 index 0000000..68f7375 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/clojure-mode/reduce @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- +# name: reduce +# key: reduce +# -- +(reduce ${1:(fn [p n] $0)} $2) diff --git a/elpa/yasnippet-20160131.948/snippets/clojure-mode/require b/elpa/yasnippet-20160131.948/snippets/clojure-mode/require new file mode 100644 index 0000000..29c584e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/clojure-mode/require @@ -0,0 +1,4 @@ +# name: require +# key: require +# -- +(:require [$1 :as $2])$> \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/clojure-mode/test b/elpa/yasnippet-20160131.948/snippets/clojure-mode/test new file mode 100644 index 0000000..0d7751d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/clojure-mode/test @@ -0,0 +1,6 @@ +# name: test +# key: test +# -- +(deftest $1 + (is (= $2))$> + $0)$> diff --git a/elpa/yasnippet-20160131.948/snippets/clojure-mode/try b/elpa/yasnippet-20160131.948/snippets/clojure-mode/try new file mode 100644 index 0000000..397cc6c --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/clojure-mode/try @@ -0,0 +1,7 @@ +# name: try +# key: try +# -- +(try +$1$> +(catch ${2:Exception} e$> +$3$>))$> \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/clojure-mode/use b/elpa/yasnippet-20160131.948/snippets/clojure-mode/use new file mode 100644 index 0000000..67a7be1 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/clojure-mode/use @@ -0,0 +1,4 @@ +# name: use +# key: use +# -- +(:use [$1 :refer [$2]])$> \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/clojure-mode/when b/elpa/yasnippet-20160131.948/snippets/clojure-mode/when new file mode 100644 index 0000000..e17bb6b --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/clojure-mode/when @@ -0,0 +1,7 @@ +# -*- coding: utf-8 -*- +# name: when +# key: when +# -- +(when $1 + $2)$> +$0$> diff --git a/elpa/yasnippet-20160131.948/snippets/clojure-mode/whenl b/elpa/yasnippet-20160131.948/snippets/clojure-mode/whenl new file mode 100644 index 0000000..929019e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/clojure-mode/whenl @@ -0,0 +1,7 @@ +# -*- coding: utf-8 -*- +# name: whenl +# key: whenl +# -- +(when-let [$1 $2] + $3)$> + $0$> \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/cmake-mode/add_executable b/elpa/yasnippet-20160131.948/snippets/cmake-mode/add_executable new file mode 100644 index 0000000..34e1546 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cmake-mode/add_executable @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: add_executable +# key: exe +# -- +add_executable($1 ${2:main.cpp}) +target_link_libraries($1 $3) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/cmake-mode/add_library b/elpa/yasnippet-20160131.948/snippets/cmake-mode/add_library new file mode 100644 index 0000000..55c3def --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cmake-mode/add_library @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: add_library +# key: lib +# -- +add_library($1 ${2:class.cpp}) +target_link_libraries($1 $3) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/cmake-mode/cmake_minimum_required b/elpa/yasnippet-20160131.948/snippets/cmake-mode/cmake_minimum_required new file mode 100644 index 0000000..1d1b7aa --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cmake-mode/cmake_minimum_required @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: cmake_minimum_required +# key: min +# -- +cmake_minimum_required(VERSION ${1:2.6}) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/cmake-mode/foreach b/elpa/yasnippet-20160131.948/snippets/cmake-mode/foreach new file mode 100644 index 0000000..c512312 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cmake-mode/foreach @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: foreach +# key: for +# -- +foreach(${1:var} \${${2:array}}) + $3 +endforeach($1)$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/cmake-mode/function b/elpa/yasnippet-20160131.948/snippets/cmake-mode/function new file mode 100644 index 0000000..d330315 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cmake-mode/function @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: function +# key: fun +# -- +function(${1:name}) + $2 +endfunction($1)$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/cmake-mode/if b/elpa/yasnippet-20160131.948/snippets/cmake-mode/if new file mode 100644 index 0000000..9f96b97 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cmake-mode/if @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: if +# key: if +# -- +if(${1:cond}) + $2 +endif($1)$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/cmake-mode/ifelse b/elpa/yasnippet-20160131.948/snippets/cmake-mode/ifelse new file mode 100644 index 0000000..984896f --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cmake-mode/ifelse @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: ifelse +# key: if +# -- +if(${1:cond}) + $2 +else(${3:cond}) + $0 +endif($1)$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/cmake-mode/include b/elpa/yasnippet-20160131.948/snippets/cmake-mode/include new file mode 100644 index 0000000..caf4742 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cmake-mode/include @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: include +# key: inc +# -- +include($0) diff --git a/elpa/yasnippet-20160131.948/snippets/cmake-mode/macro b/elpa/yasnippet-20160131.948/snippets/cmake-mode/macro new file mode 100644 index 0000000..09652a5 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cmake-mode/macro @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: macro +# key: macro +# -- +macro(${1:name}${2: args}) + $2 +endmacro($1)$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/cmake-mode/message b/elpa/yasnippet-20160131.948/snippets/cmake-mode/message new file mode 100644 index 0000000..ede2c77 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cmake-mode/message @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: message +# key: msg +# -- +message(${1:STATUS }"$0") \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/cmake-mode/option b/elpa/yasnippet-20160131.948/snippets/cmake-mode/option new file mode 100644 index 0000000..b8b51e4 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cmake-mode/option @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: option +# key: opt +# -- +option(${1:OPT} "${2:docstring}" ${3:value}) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/cmake-mode/project b/elpa/yasnippet-20160131.948/snippets/cmake-mode/project new file mode 100644 index 0000000..67b0138 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cmake-mode/project @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: project +# key: proj +# -- +project($0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/cmake-mode/set b/elpa/yasnippet-20160131.948/snippets/cmake-mode/set new file mode 100644 index 0000000..8d105bd --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cmake-mode/set @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: set +# key: set +# -- +set(${1:var} ${2:value}) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/conf-unix-mode/.yas-parents b/elpa/yasnippet-20160131.948/snippets/conf-unix-mode/.yas-parents new file mode 100644 index 0000000..d58dacb --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/conf-unix-mode/.yas-parents @@ -0,0 +1 @@ +text-mode \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/conf-unix-mode/section b/elpa/yasnippet-20160131.948/snippets/conf-unix-mode/section new file mode 100644 index 0000000..7f5553d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/conf-unix-mode/section @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: section +# key: sec +# section for xorg.conf +# -- +Section "${1:Device}" + $0 +EndSection \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/cperl-mode/.yas-parents b/elpa/yasnippet-20160131.948/snippets/cperl-mode/.yas-parents new file mode 100644 index 0000000..bfa2993 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cperl-mode/.yas-parents @@ -0,0 +1 @@ +perl-mode diff --git a/elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/EV b/elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/EV new file mode 100644 index 0000000..ab5d427 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/EV @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: EV +# key: ev +# -- +EV << "${1:string}"$0; \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/emit_signal b/elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/emit_signal new file mode 100644 index 0000000..5303595 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/emit_signal @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: emit_signal +# key: emit +# -- +emit(${1:signal_id}, ${2:long}); \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/intuniform b/elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/intuniform new file mode 100644 index 0000000..24921d7 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/intuniform @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: intuniform +# key: intuni +# -- +intuniform(${1:0}, ${2:1}) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/math b/elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/math new file mode 100644 index 0000000..bb6f4ba --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/math @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: math +# key: math +# -- +#include \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/nan b/elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/nan new file mode 100644 index 0000000..601b373 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/nan @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: nan +# key: nan +# -- +isnan(${1:x}) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/omnet b/elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/omnet new file mode 100644 index 0000000..6342017 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/omnet @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: omnet +# key: omnet +# -- +#include \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/parameter_omnetpp b/elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/parameter_omnetpp new file mode 100644 index 0000000..d1aea19 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/parameter_omnetpp @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: parameter_omnetpp +# key: par +# -- +${1:var} = par("${2:par}"); \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/scheduleAt b/elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/scheduleAt new file mode 100644 index 0000000..e3edb3e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/scheduleAt @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: scheduleAt +# key: sched +# -- +scheduleAt(simTime()+${1:1.0}, ${2:event}); \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/uniform b/elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/uniform new file mode 100644 index 0000000..d1f81d5 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/uniform @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: uniform +# key: uni +# uniform distribution +# -- +uniform(${1:0}, ${2:1}) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/csharp-mode/.yas-parents b/elpa/yasnippet-20160131.948/snippets/csharp-mode/.yas-parents new file mode 100644 index 0000000..ce9828b --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/csharp-mode/.yas-parents @@ -0,0 +1 @@ +cc-mode diff --git a/elpa/yasnippet-20160131.948/snippets/csharp-mode/attrib b/elpa/yasnippet-20160131.948/snippets/csharp-mode/attrib new file mode 100644 index 0000000..ccc9754 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/csharp-mode/attrib @@ -0,0 +1,8 @@ +#contributor : Alejandro Espinoza Esparza +#name : private attribute ....; +# key: attrib +# -- +/// +/// $3 +/// +private $1 $2; \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/csharp-mode/attrib.1 b/elpa/yasnippet-20160131.948/snippets/csharp-mode/attrib.1 new file mode 100644 index 0000000..ba06d76 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/csharp-mode/attrib.1 @@ -0,0 +1,22 @@ +#contributor : Alejandro Espinoza Esparza +#name : private attribute ....; public property ... ... { ... } +# key: attrib +# -- +/// +/// $3 +/// +private $1 $2; + +/// +/// $4 +/// +/// $5 +public $1 $2 +{ + get { + return this.$2; + } + set { + this.$2 = value; + } +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/csharp-mode/attrib.2 b/elpa/yasnippet-20160131.948/snippets/csharp-mode/attrib.2 new file mode 100644 index 0000000..82962fb --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/csharp-mode/attrib.2 @@ -0,0 +1,22 @@ +#contributor : Alejandro Espinoza Esparza +#name : private _attribute ....; public Property ... ... { ... } +# key: attrib +# -- +/// +/// $3 +/// +private $1 ${2:$(if (> (length yas-text) 0) (format "_%s%s" (downcase (substring yas-text 0 1)) (substring yas-text 1 (length yas-text))) "")}; + +/// +/// ${3:Description} +/// +/// $1 +public ${1:Type} ${2:Name} +{ + get { + return this.${2:$(if (> (length yas-text) 0) (format "_%s%s" (downcase (substring yas-text 0 1)) (substring yas-text 1 (length yas-text))) "")}; + } + set { + this.${2:$(if (> (length yas-text) 0) (format "_%s%s" (downcase (substring yas-text 0 1)) (substring yas-text 1 (length yas-text))) "")} = value; + } +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/csharp-mode/class b/elpa/yasnippet-20160131.948/snippets/csharp-mode/class new file mode 100644 index 0000000..bea8a1e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/csharp-mode/class @@ -0,0 +1,22 @@ +#contributor : Alejandro Espinoza Esparza +#name : class ... { ... } +# key: class +# -- +${5:public} class ${1:Name} +{ + #region Ctor & Destructor + /// + /// ${3:Standard Constructor} + /// + public $1($2) + { + } + + /// + /// ${4:Default Destructor} + /// + public ~$1() + { + } + #endregion +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/csharp-mode/comment b/elpa/yasnippet-20160131.948/snippets/csharp-mode/comment new file mode 100644 index 0000000..44f2fb3 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/csharp-mode/comment @@ -0,0 +1,7 @@ +#contributor : Alejandro Espinoza Esparza +#name : /// ... +# key: comment +# -- +/// +/// $1 +/// \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/csharp-mode/comment.1 b/elpa/yasnippet-20160131.948/snippets/csharp-mode/comment.1 new file mode 100644 index 0000000..dda243e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/csharp-mode/comment.1 @@ -0,0 +1,5 @@ +#contributor : Alejandro Espinoza Esparza +#name : /// ... +# key: comment +# -- +/// $2 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/csharp-mode/comment.2 b/elpa/yasnippet-20160131.948/snippets/csharp-mode/comment.2 new file mode 100644 index 0000000..34bc58c --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/csharp-mode/comment.2 @@ -0,0 +1,5 @@ +#contributor : Alejandro Espinoza Esparza +#name : /// ... +# key: comment +# -- +/// $1 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/csharp-mode/comment.3 b/elpa/yasnippet-20160131.948/snippets/csharp-mode/comment.3 new file mode 100644 index 0000000..15f2e1a --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/csharp-mode/comment.3 @@ -0,0 +1,5 @@ +#contributor : Alejandro Espinoza Esparza +#name : /// ... +# key: comment +# -- +/// $2 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/csharp-mode/method b/elpa/yasnippet-20160131.948/snippets/csharp-mode/method new file mode 100644 index 0000000..e8cb7fc --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/csharp-mode/method @@ -0,0 +1,11 @@ +#contributor : Alejandro Espinoza Esparza +#name : public void Method { ... } +# key: method +# -- +/// +/// ${5:Description} +/// ${2:$(if (string= (upcase yas-text) "VOID") "" (format "%s%s%s" "\n/// " yas-text ""))} +${1:public} ${2:void} ${3:MethodName}($4) +{ +$0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/csharp-mode/namespace b/elpa/yasnippet-20160131.948/snippets/csharp-mode/namespace new file mode 100644 index 0000000..4d8d154 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/csharp-mode/namespace @@ -0,0 +1,8 @@ +#contributor : Alejandro Espinoza Esparza +#name : namespace .. { ... } +# key: namespace +# -- +namespace $1 +{ +$0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/csharp-mode/prop b/elpa/yasnippet-20160131.948/snippets/csharp-mode/prop new file mode 100644 index 0000000..7d75dee --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/csharp-mode/prop @@ -0,0 +1,17 @@ +#contributor : Alejandro Espinoza Esparza +#name : property ... ... { ... } +# key: prop +# -- +/// +/// $5 +/// +/// $6 +$1 $2 $3 +{ + get { + return this.$4; + } + set { + this.$4 = value; + } +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/csharp-mode/region b/elpa/yasnippet-20160131.948/snippets/csharp-mode/region new file mode 100644 index 0000000..498d153 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/csharp-mode/region @@ -0,0 +1,7 @@ +#contributor : Alejandro Espinoza Esparza +#name : #region ... #endregion +# key: region +# -- +#region $1 +$0 +#endregion \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/csharp-mode/using b/elpa/yasnippet-20160131.948/snippets/csharp-mode/using new file mode 100644 index 0000000..4556b8c --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/csharp-mode/using @@ -0,0 +1,5 @@ +#contributor : Alejandro Espinoza Esparza +#name : using ...; +# key: using +# -- +using $1; \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/csharp-mode/using.1 b/elpa/yasnippet-20160131.948/snippets/csharp-mode/using.1 new file mode 100644 index 0000000..fd80875 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/csharp-mode/using.1 @@ -0,0 +1,5 @@ +#contributor : Alejandro Espinoza Esparza +#name : using System; +# key: using +# -- +using System; \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/csharp-mode/using.2 b/elpa/yasnippet-20160131.948/snippets/csharp-mode/using.2 new file mode 100644 index 0000000..ebcaadb --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/csharp-mode/using.2 @@ -0,0 +1,5 @@ +#contributor : Alejandro Espinoza Esparza +#name : using System....; +# key: using +# -- +using System.$1; \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/css-mode/bg b/elpa/yasnippet-20160131.948/snippets/css-mode/bg new file mode 100644 index 0000000..d731807 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/css-mode/bg @@ -0,0 +1,3 @@ +#name : background-color: ... +# -- +background-color: #${1:DDD}; \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/css-mode/bg.1 b/elpa/yasnippet-20160131.948/snippets/css-mode/bg.1 new file mode 100644 index 0000000..d31f540 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/css-mode/bg.1 @@ -0,0 +1,3 @@ +#name : background-image: ... +# -- +background-image: url($1); \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/css-mode/bor b/elpa/yasnippet-20160131.948/snippets/css-mode/bor new file mode 100644 index 0000000..eb3a2b4 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/css-mode/bor @@ -0,0 +1,3 @@ +#name : border size style color +# -- +border: ${1:1px} ${2:solid} #${3:999}; \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/css-mode/cl b/elpa/yasnippet-20160131.948/snippets/css-mode/cl new file mode 100644 index 0000000..4fc7a8d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/css-mode/cl @@ -0,0 +1,4 @@ +#contributor : rejeep +#name : clear: ... +# -- +clear: $1; diff --git a/elpa/yasnippet-20160131.948/snippets/css-mode/disp.block b/elpa/yasnippet-20160131.948/snippets/css-mode/disp.block new file mode 100644 index 0000000..f74ea3c --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/css-mode/disp.block @@ -0,0 +1,4 @@ +#contributor : rejeep +#name : display: block +# -- +display: block; diff --git a/elpa/yasnippet-20160131.948/snippets/css-mode/disp.inline b/elpa/yasnippet-20160131.948/snippets/css-mode/disp.inline new file mode 100644 index 0000000..30275a8 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/css-mode/disp.inline @@ -0,0 +1,4 @@ +#contributor : rejeep +#name : display: inline +# -- +display: inline; diff --git a/elpa/yasnippet-20160131.948/snippets/css-mode/disp.none b/elpa/yasnippet-20160131.948/snippets/css-mode/disp.none new file mode 100644 index 0000000..80632a5 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/css-mode/disp.none @@ -0,0 +1,4 @@ +#contributor : rejeep +#name : display: none +# -- +display: none; diff --git a/elpa/yasnippet-20160131.948/snippets/css-mode/ff b/elpa/yasnippet-20160131.948/snippets/css-mode/ff new file mode 100644 index 0000000..a7352cf --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/css-mode/ff @@ -0,0 +1,4 @@ +#contributor : rejeep +#name : font-family: ... +# -- +font-family: $1; diff --git a/elpa/yasnippet-20160131.948/snippets/css-mode/fs b/elpa/yasnippet-20160131.948/snippets/css-mode/fs new file mode 100644 index 0000000..c28cdbb --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/css-mode/fs @@ -0,0 +1,4 @@ +#contributor : rejeep +#name : font-size: ... +# -- +font-size: ${12px}; diff --git a/elpa/yasnippet-20160131.948/snippets/css-mode/mar.bottom b/elpa/yasnippet-20160131.948/snippets/css-mode/mar.bottom new file mode 100644 index 0000000..9672f60 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/css-mode/mar.bottom @@ -0,0 +1,4 @@ +#contributor : rejeep +#name : margin-bottom: ... +# -- +margin-bottom: $1; diff --git a/elpa/yasnippet-20160131.948/snippets/css-mode/mar.left b/elpa/yasnippet-20160131.948/snippets/css-mode/mar.left new file mode 100644 index 0000000..414353e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/css-mode/mar.left @@ -0,0 +1,4 @@ +#contributor : rejeep +#name : margin-left: ... +# -- +margin-left: $1; diff --git a/elpa/yasnippet-20160131.948/snippets/css-mode/mar.mar b/elpa/yasnippet-20160131.948/snippets/css-mode/mar.mar new file mode 100644 index 0000000..13354db --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/css-mode/mar.mar @@ -0,0 +1,4 @@ +#contributor : rejeep +#name : margin: ... +# -- +margin: $1; diff --git a/elpa/yasnippet-20160131.948/snippets/css-mode/mar.margin b/elpa/yasnippet-20160131.948/snippets/css-mode/mar.margin new file mode 100644 index 0000000..97de70c --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/css-mode/mar.margin @@ -0,0 +1,4 @@ +#contributor : rejeep +#name : margin top right bottom left +# -- +margin: ${top} ${right} ${bottom} ${left}; diff --git a/elpa/yasnippet-20160131.948/snippets/css-mode/mar.right b/elpa/yasnippet-20160131.948/snippets/css-mode/mar.right new file mode 100644 index 0000000..47a4973 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/css-mode/mar.right @@ -0,0 +1,4 @@ +#contributor : rejeep +#name : margin-right: ... +# -- +margin-right: $1; diff --git a/elpa/yasnippet-20160131.948/snippets/css-mode/mar.top b/elpa/yasnippet-20160131.948/snippets/css-mode/mar.top new file mode 100644 index 0000000..c805754 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/css-mode/mar.top @@ -0,0 +1,4 @@ +#contributor : rejeep +#name : margin-top: ... +# -- +margin-top: $1; diff --git a/elpa/yasnippet-20160131.948/snippets/css-mode/pad.bottom b/elpa/yasnippet-20160131.948/snippets/css-mode/pad.bottom new file mode 100644 index 0000000..3b9495e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/css-mode/pad.bottom @@ -0,0 +1,4 @@ +#contributor : rejeep +#name : padding-bottom: ... +# -- +padding-bottom: $1; diff --git a/elpa/yasnippet-20160131.948/snippets/css-mode/pad.left b/elpa/yasnippet-20160131.948/snippets/css-mode/pad.left new file mode 100644 index 0000000..ecae515 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/css-mode/pad.left @@ -0,0 +1,4 @@ +#contributor : rejeep +#name : padding-left: ... +# -- +padding-left: $1; diff --git a/elpa/yasnippet-20160131.948/snippets/css-mode/pad.pad b/elpa/yasnippet-20160131.948/snippets/css-mode/pad.pad new file mode 100644 index 0000000..ee3a682 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/css-mode/pad.pad @@ -0,0 +1,4 @@ +#contributor : rejeep +#name : padding: ... +# -- +padding: $1; diff --git a/elpa/yasnippet-20160131.948/snippets/css-mode/pad.padding b/elpa/yasnippet-20160131.948/snippets/css-mode/pad.padding new file mode 100644 index 0000000..c1009d3 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/css-mode/pad.padding @@ -0,0 +1,4 @@ +#contributor : rejeep +#name : padding: top right bottom left +# -- +padding: ${top} ${right} ${bottom} ${left}; diff --git a/elpa/yasnippet-20160131.948/snippets/css-mode/pad.right b/elpa/yasnippet-20160131.948/snippets/css-mode/pad.right new file mode 100644 index 0000000..98a9e12 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/css-mode/pad.right @@ -0,0 +1,4 @@ +#contributor : rejeep +#name : padding-right: ... +# -- +padding-right: $1; diff --git a/elpa/yasnippet-20160131.948/snippets/css-mode/pad.top b/elpa/yasnippet-20160131.948/snippets/css-mode/pad.top new file mode 100644 index 0000000..34987f6 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/css-mode/pad.top @@ -0,0 +1,4 @@ +#contributor : rejeep +#name : padding-top: ... +# -- +padding-top: $1; diff --git a/elpa/yasnippet-20160131.948/snippets/css-mode/v b/elpa/yasnippet-20160131.948/snippets/css-mode/v new file mode 100644 index 0000000..fec5bd5 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/css-mode/v @@ -0,0 +1,10 @@ +# -*- mode: snippet -*- +# name: -vendor-prefix +# contributor: Prateek Saxena +# key: -v +# -- +$1: $2; +-webkit-$1: $2; +-moz-$1: $2; +-ms-$1: $2; +-o-$1: $2; \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/elixir-mode/.yas-parents b/elpa/yasnippet-20160131.948/snippets/elixir-mode/.yas-parents new file mode 100644 index 0000000..75d003f --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/elixir-mode/.yas-parents @@ -0,0 +1 @@ +prog-mode diff --git a/elpa/yasnippet-20160131.948/snippets/elixir-mode/case b/elpa/yasnippet-20160131.948/snippets/elixir-mode/case new file mode 100644 index 0000000..1630d2e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/elixir-mode/case @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: case +# key: case +# -- +case $1 do + $0 +end diff --git a/elpa/yasnippet-20160131.948/snippets/elixir-mode/cond b/elpa/yasnippet-20160131.948/snippets/elixir-mode/cond new file mode 100644 index 0000000..40934ff --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/elixir-mode/cond @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: cond +# key: cond +# -- +cond do + $0 +end diff --git a/elpa/yasnippet-20160131.948/snippets/elixir-mode/def b/elpa/yasnippet-20160131.948/snippets/elixir-mode/def new file mode 100644 index 0000000..e680262 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/elixir-mode/def @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: def +# key: def +# -- +def ${1:method}${2:(${3:args})} do + $0 +end diff --git a/elpa/yasnippet-20160131.948/snippets/elixir-mode/defmacro b/elpa/yasnippet-20160131.948/snippets/elixir-mode/defmacro new file mode 100644 index 0000000..63ab988 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/elixir-mode/defmacro @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: defmacro +# key: defmacro +# -- +defmacro $1 do + $0 +end diff --git a/elpa/yasnippet-20160131.948/snippets/elixir-mode/defmacrop b/elpa/yasnippet-20160131.948/snippets/elixir-mode/defmacrop new file mode 100644 index 0000000..3f4cf98 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/elixir-mode/defmacrop @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: defmacrop +# key: defmacrop +# -- +defmacrop $1 do + $0 +end diff --git a/elpa/yasnippet-20160131.948/snippets/elixir-mode/defmodule b/elpa/yasnippet-20160131.948/snippets/elixir-mode/defmodule new file mode 100644 index 0000000..4e33ab0 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/elixir-mode/defmodule @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: defmodule +# key: defmodule +# -- +defmodule $1 do + $0 +end diff --git a/elpa/yasnippet-20160131.948/snippets/elixir-mode/defp b/elpa/yasnippet-20160131.948/snippets/elixir-mode/defp new file mode 100644 index 0000000..0fd90e9 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/elixir-mode/defp @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: defp +# key: defp +# -- +defp $1 do + $0 +end diff --git a/elpa/yasnippet-20160131.948/snippets/elixir-mode/doc b/elpa/yasnippet-20160131.948/snippets/elixir-mode/doc new file mode 100644 index 0000000..c23f906 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/elixir-mode/doc @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: doc +# key: doc +# -- +@doc """ +$0 +""" diff --git a/elpa/yasnippet-20160131.948/snippets/elixir-mode/mdoc b/elpa/yasnippet-20160131.948/snippets/elixir-mode/mdoc new file mode 100644 index 0000000..c0cc4f2 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/elixir-mode/mdoc @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: moduledoc +# key: mdoc +# -- +@moduledoc """ +$0 +""" diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/.read_me b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/.read_me new file mode 100644 index 0000000..49c8e00 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/.read_me @@ -0,0 +1,7 @@ +-*- coding: utf-8 -*- +Originally started by Xah Lee (xahlee.org) on 2009-02-22 +Released under GPL 3. + +Feel free to add missing ones or modify existing ones to improve. + +Those starting with “x-†are supposed to be idiom templates. Not sure it's very useful. They might start with “i-†or "id-" in the future. \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/add-hook b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/add-hook new file mode 100644 index 0000000..77605af --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/add-hook @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: add-hook +#key: add-hook +#key: ah +# -- +(add-hook HOOK$0 FUNCTION) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/and b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/and new file mode 100644 index 0000000..6502b6a --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/and @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: and +#key: and +#key: a +# -- +(and $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/append b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/append new file mode 100644 index 0000000..0b8639d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/append @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: append +#key: append +# -- +(append $0 ) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/apply b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/apply new file mode 100644 index 0000000..1963f29 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/apply @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: apply +#key: apply +# -- +(apply $0 ) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/aref b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/aref new file mode 100644 index 0000000..867ef0a --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/aref @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: aref +#key: aref +# -- +(aref ARRAY$0 INDEX) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/aset b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/aset new file mode 100644 index 0000000..9402dc9 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/aset @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: aset +#key: aset +# -- +(aset ARRAY$0 IDX NEWELT) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/assq b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/assq new file mode 100644 index 0000000..d7c5257 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/assq @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: assq +#key: assq +# -- +(assq KEY$0 LIST) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/autoload b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/autoload new file mode 100644 index 0000000..c497482 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/autoload @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: autoload +#key: autoload +# -- +(autoload 'FUNCNAME$0 "FILENAME" &optional "DOCSTRING" INTERACTIVE TYPE) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/backward-char b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/backward-char new file mode 100644 index 0000000..296cf97 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/backward-char @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: backward-char +#key: backward-char +#key: bc +# -- +(backward-char $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/beginning-of-line b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/beginning-of-line new file mode 100644 index 0000000..7dfd32c --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/beginning-of-line @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: beginning-of-line +#key: beginning-of-line +#key: bol +# -- +(beginning-of-line) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/bounds-of-thing-at-point b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/bounds-of-thing-at-point new file mode 100644 index 0000000..6d645b6 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/bounds-of-thing-at-point @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: bounds-of-thing-at-point +#key: bounds-of-thing-at-point +#key: botap +# -- +(bounds-of-thing-at-point '$0) ; symbol, list, sexp, defun, filename, url, email, word, sentence, whitespace, line, page ... \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/buffer-file-name b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/buffer-file-name new file mode 100644 index 0000000..d983182 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/buffer-file-name @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: buffer-file-name +#key: buffer-file-name +#key: bfn +# -- +(buffer-file-name) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/buffer-modified-p b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/buffer-modified-p new file mode 100644 index 0000000..f3ca3aa --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/buffer-modified-p @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: buffer-modified-p +#key: buffer-modified-p +#key: bmp +# -- +(buffer-modified-p $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/buffer-substring b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/buffer-substring new file mode 100644 index 0000000..0c08119 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/buffer-substring @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: buffer-substring +#key: buffer-substring +#key: bs +# -- +(buffer-substring START$0 END) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/buffer-substring-no-properties b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/buffer-substring-no-properties new file mode 100644 index 0000000..adb8270 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/buffer-substring-no-properties @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: buffer-substring-no-properties +#key: buffer-substring-no-properties +#key: bsnp +# -- +(buffer-substring-no-properties START$0 END) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/car b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/car new file mode 100644 index 0000000..09ff8e4 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/car @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: car +#key: car +# -- +(car $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/cdr b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/cdr new file mode 100644 index 0000000..404d1d2 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/cdr @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: cdr +#key: cdr +# -- +(cdr $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/concat b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/concat new file mode 100644 index 0000000..b94cfeb --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/concat @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: concat +#key: concat +# -- +(concat $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/cond b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/cond new file mode 100644 index 0000000..3927414 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/cond @@ -0,0 +1,8 @@ +#contributor: Xah Lee (XahLee.org) +#name: cond +#key: cond +# -- +(cond +(CONDITION$0 BODY) +(CONDITION BODY) +) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/condition-case b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/condition-case new file mode 100644 index 0000000..da794dd --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/condition-case @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: condition-case +#key: condition-case +#key: cc +# -- +(condition-case $0 ) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/cons b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/cons new file mode 100644 index 0000000..f186919 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/cons @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: cons +#key: cons +# -- +(cons $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/consp b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/consp new file mode 100644 index 0000000..2b2ce5c --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/consp @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: consp +#key: consp +# -- +(consp $0 ) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/copy-directory b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/copy-directory new file mode 100644 index 0000000..b2516d5 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/copy-directory @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: copy-directory +#key: copy-directory +#key: cd +# -- +(copy-directory $0 NEWNAME &optional KEEP-TIME PARENTS) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/copy-file b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/copy-file new file mode 100644 index 0000000..b952b16 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/copy-file @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: copy-file +#key: copy-file +#key: cf +# -- +(copy-file FILE$0 NEWNAME &optional OK-IF-ALREADY-EXISTS KEEP-TIME PRESERVE-UID-GID) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/current-buffer b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/current-buffer new file mode 100644 index 0000000..b25a48a --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/current-buffer @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: current-buffer +#key: current-buffer +#key: cb +# -- +(current-buffer) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/custom-autoload b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/custom-autoload new file mode 100644 index 0000000..b5dbb71 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/custom-autoload @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: custom-autoload +#key: custom-autoload +#key: ca +# -- +(custom-autoload$0 SYMBOL LOAD &optional NOSET) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/defalias b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/defalias new file mode 100644 index 0000000..7c3998a --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/defalias @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: defalias +#key: defalias +# -- +(defalias 'SYMBOL$0 'DEFINITION &optional DOCSTRING) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/defcustom b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/defcustom new file mode 100644 index 0000000..25ecbaa --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/defcustom @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: defcustom +#key: defcustom +# -- +(defcustom $0 VALUE "DOC" &optional ARGS) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/define-key b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/define-key new file mode 100644 index 0000000..e483a51 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/define-key @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: define-key +#key: define-key +#key: dk +# -- +(define-key KEYMAPNAME$0 (kbd "M-b") 'FUNCNAME) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/defsubst b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/defsubst new file mode 100644 index 0000000..5ce9033 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/defsubst @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: defsubst +#key: defsubst +# -- +(defsubst $0 ) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/defun b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/defun new file mode 100644 index 0000000..6d7001e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/defun @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: defun +# key: def +# -- +(defun ${1:fun} (${2:args}) + ${3:(interactive${4: "P"})} + $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/defvar b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/defvar new file mode 100644 index 0000000..6781858 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/defvar @@ -0,0 +1,4 @@ +#name: defvar +#key: defvar +# -- +(defvar $0 &optional ${1:initvalue} "${2:docstring}") \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/delete-char b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/delete-char new file mode 100644 index 0000000..da983bd --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/delete-char @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: delete-char +#key: delete-char +#key: dc +# -- +(delete-char $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/delete-directory b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/delete-directory new file mode 100644 index 0000000..59f0838 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/delete-directory @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: delete-directory +#key: delete-directory +#key: dd +# -- +(delete-directory $0 &optional RECURSIVE) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/delete-file b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/delete-file new file mode 100644 index 0000000..dfbd4f1 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/delete-file @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: delete-file +#key: delete-file +#key: df +# -- +(delete-file $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/delete-region b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/delete-region new file mode 100644 index 0000000..7c753d2 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/delete-region @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: delete-region +#key: delete-region +#key: dr +# -- +(delete-region $0 ) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/directory-files b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/directory-files new file mode 100644 index 0000000..df301a2 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/directory-files @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: directory-files +#key: directory-files +#key: df +# -- +(directory-files $0 &optional FULL MATCH NOSORT) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/dired.process_marked b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/dired.process_marked new file mode 100644 index 0000000..1b42597 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/dired.process_marked @@ -0,0 +1,16 @@ +#name : process marked files in dired +#contributor : Xah Lee +# -- +;; idiom for processing a list of files in dired's marked files + +;; suppose myProcessFile is your function that takes a file path +;; and do some processing on the file + +(defun dired-myProcessFile () + "apply myProcessFile function to marked files in dired." + (interactive) + (require 'dired) + (mapc 'myProcessFile (dired-get-marked-files)) +) + +;; to use it, type M-x dired-myProcessFile diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/dolist b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/dolist new file mode 100644 index 0000000..ea66015 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/dolist @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: dolist +#key: dolist +# -- +(dolist $0 ) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/end-of-line b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/end-of-line new file mode 100644 index 0000000..f8a2d9f --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/end-of-line @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: end-of-line +#key: end-of-line +#key: eol +# -- +(end-of-line) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/eq b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/eq new file mode 100644 index 0000000..3d29f52 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/eq @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: eq +#key: eq +# -- +(eq $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/equal b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/equal new file mode 100644 index 0000000..7b0dd58 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/equal @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: equal +#key: equal +# -- +(equal $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/error b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/error new file mode 100644 index 0000000..48bf689 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/error @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: error +#key: error +# -- +(error "$0" &optional ARGS) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/ert-deftest b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/ert-deftest new file mode 100644 index 0000000..0ccdb73 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/ert-deftest @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +#contributor: Raghav Kumar Gautam +#name: ert-deftest +#key: edt +# -- +(ert-deftest ${1:test-name} () + $0) diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/expand-file-name b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/expand-file-name new file mode 100644 index 0000000..8e6c596 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/expand-file-name @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: expand-file-name +#key: expand-file-name +#key: efn +# -- +(expand-file-name $0 ) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/f b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/f new file mode 100644 index 0000000..011a606 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/f @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: format +#key: format +# -- +(format "$0" &optional OBJECTS) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/fboundp b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/fboundp new file mode 100644 index 0000000..0212c2d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/fboundp @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: fboundp +#key: fboundp +# -- +(fboundp '$0 ) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/file-name-directory b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/file-name-directory new file mode 100644 index 0000000..e7fb5c0 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/file-name-directory @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: file-name-directory +#key: file-name-directory +#key: fnd +# -- +(file-name-directory $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/file-name-extension b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/file-name-extension new file mode 100644 index 0000000..38dc0c4 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/file-name-extension @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: file-name-extension +#key: file-name-extension +#key: fne +# -- +(file-name-extension $0 &optional PERIOD) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/file-name-nondirectory b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/file-name-nondirectory new file mode 100644 index 0000000..7310bec --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/file-name-nondirectory @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: file-name-nondirectory +#key: file-name-nondirectory +#key: fnn +# -- +(file-name-nondirectory $0 ) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/file-name-sans-extension b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/file-name-sans-extension new file mode 100644 index 0000000..8b18db5 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/file-name-sans-extension @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: file-name-sans-extension +#key: file-name-sans-extension +#key: fnse +# -- +(file-name-sans-extension $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/file-relative-name b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/file-relative-name new file mode 100644 index 0000000..39b6807 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/file-relative-name @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: file-relative-name +#key: file-relative-name +#key: frn +# -- +(file-relative-name $0 ) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/file.process b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/file.process new file mode 100644 index 0000000..abd1a33 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/file.process @@ -0,0 +1,17 @@ +#name : a function that process a file +#contributor : Xah Lee +# -- +(defun doThisFile (fpath) + "Process the file at path FPATH ..." + (let () + ;; create temp buffer without undo record or font lock. (more efficient) + ;; first space in temp buff name is necessary + (set-buffer (get-buffer-create " myTemp")) + (insert-file-contents fpath nil nil nil t) + + ;; process it ... + ;; (goto-char 0) ; move to begining of file's content (in case it was open) + ;; ... do something here + ;; (write-file fpath) ;; write back to the file + + (kill-buffer " myTemp"))) diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/file.read-lines b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/file.read-lines new file mode 100644 index 0000000..b4a1942 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/file.read-lines @@ -0,0 +1,17 @@ +#name : read lines of a file +#contributor : Xah Lee +# -- +(defun read-lines (filePath) + "Return a list of lines in FILEPATH." + (with-temp-buffer + (insert-file-contents filePath) + (split-string + (buffer-string) "\n" t)) ) + +;; process all lines +(mapc + (lambda (aLine) + (message aLine) ; do your stuff here + ) + (read-lines "inputFilePath") +) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/find-file b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/find-file new file mode 100644 index 0000000..8038e83 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/find-file @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: find-file +#key: find-file +#key: ff +# -- +(find-file $0 ) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/find-replace b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/find-replace new file mode 100644 index 0000000..cefcf51 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/find-replace @@ -0,0 +1,17 @@ +#name : find and replace on region +#contributor : Xah Lee +# -- +(defun replace-html-chars-region (start end) + "Replace “<†to “<†and other chars in HTML. +This works on the current region." + (interactive "r") + (save-restriction + (narrow-to-region start end) + (goto-char (point-min)) + (while (search-forward "&" nil t) (replace-match "&" nil t)) + (goto-char (point-min)) + (while (search-forward "<" nil t) (replace-match "<" nil t)) + (goto-char (point-min)) + (while (search-forward ">" nil t) (replace-match ">" nil t)) + ) + ) diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/format b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/format new file mode 100644 index 0000000..011a606 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/format @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: format +#key: format +# -- +(format "$0" &optional OBJECTS) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/forward-char b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/forward-char new file mode 100644 index 0000000..1298e98 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/forward-char @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: forward-char +#key: forward-char +#key: fc +# -- +(forward-char $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/forward-line b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/forward-line new file mode 100644 index 0000000..37d94d7 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/forward-line @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: forward-line +#key: forward-line +#key: fl +# -- +(forward-line $0 ) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/funcall b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/funcall new file mode 100644 index 0000000..fb486bc --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/funcall @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: funcall +#key: funcall +# -- +(funcall $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/function b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/function new file mode 100644 index 0000000..cbebaf0 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/function @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: function +#key: function +# -- +(function $0 ) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/get b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/get new file mode 100644 index 0000000..9b29658 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/get @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: get +#key: get +# -- +(get SYMBOL$0 PROPNAME) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/global-set-key b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/global-set-key new file mode 100644 index 0000000..8629f27 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/global-set-key @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: global-set-key +#key: global-set-key +#key: gsk +# -- +(global-set-key (kbd "C-$0") 'COMMAND) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/goto-char b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/goto-char new file mode 100644 index 0000000..7cb8d2b --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/goto-char @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: goto-char +#key: goto-char +#key: gc +# -- +(goto-char $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/grabstring b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/grabstring new file mode 100644 index 0000000..55600b1 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/grabstring @@ -0,0 +1,4 @@ +#name : grab buffer substring +#contributor : Xah Lee +# -- +(setq $0 (buffer-substring-no-properties myStartPos myEndPos)) diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/grabthing b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/grabthing new file mode 100644 index 0000000..772b8dc --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/grabthing @@ -0,0 +1,4 @@ +#name : grab word under cursor +#contributor : Xah Lee +# -- +(setq $0 (thing-at-point 'symbol)) diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/hash b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/hash new file mode 100644 index 0000000..0022722 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/hash @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: hash +# key: hash +# -- +make-hash-table ${1:options} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/if b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/if new file mode 100644 index 0000000..c797755 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/if @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: if +#key: if +# -- +(if $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/insert b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/insert new file mode 100644 index 0000000..ae5943d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/insert @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: insert +#key: insert +#key: i +# -- +(insert $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/insert-file-contents b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/insert-file-contents new file mode 100644 index 0000000..ffdd154 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/insert-file-contents @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: insert-file-contents +#key: insert-file-contents +#key: ifc +# -- +(insert-file-contents $0 &optional VISIT BEG END REPLACE) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/interactive b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/interactive new file mode 100644 index 0000000..f973892 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/interactive @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: interactive +#key: interactive +# -- +(interactive) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/kbd b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/kbd new file mode 100644 index 0000000..be91b08 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/kbd @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: kbd +#key: kbd +# -- +(kbd "$0") \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/kill-buffer b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/kill-buffer new file mode 100644 index 0000000..491a73b --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/kill-buffer @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: kill-buffer +#key: kill-buffer +#key: kb +# -- +(kill-buffer $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/lambda b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/lambda new file mode 100644 index 0000000..ae4062f --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/lambda @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: lambda +#key: lambda +# -- +(lambda ($0) "DOCSTRING" (interactive) BODY) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/length b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/length new file mode 100644 index 0000000..46a379b --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/length @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: length +#key: length +# -- +(length $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/let b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/let new file mode 100644 index 0000000..76e991e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/let @@ -0,0 +1,8 @@ +#contributor: Xah Lee (XahLee.org) +#name: let +#key: let +#key: l +# -- +(let ($1 ) + $0 +) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/line-beginning-position b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/line-beginning-position new file mode 100644 index 0000000..647158b --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/line-beginning-position @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: line-beginning-position +#key: line-beginning-position +#key: lbp +# -- +(line-beginning-position) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/line-end-position b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/line-end-position new file mode 100644 index 0000000..f3a4f4c --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/line-end-position @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: line-end-position +#key: line-end-position +#key: lep +# -- +(line-end-position) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/list b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/list new file mode 100644 index 0000000..11be961 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/list @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: list +#key: list +# -- +(list $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/looking-at b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/looking-at new file mode 100644 index 0000000..83741dd --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/looking-at @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: looking-at +#key: looking-at +#key: la +# -- +(looking-at $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/make-directory b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/make-directory new file mode 100644 index 0000000..6c6ee64 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/make-directory @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: make-directory +#key: make-directory +#key: md +# -- +(make-directory $0 &optional PARENTS) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/make-local-variable b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/make-local-variable new file mode 100644 index 0000000..06e0ff4 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/make-local-variable @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: make-local-variable +#key: make-local-variable +#key: mlv +# -- +(make-local-variable $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/mapc b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/mapc new file mode 100644 index 0000000..f244f64 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/mapc @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: mapc +#key: mapc +# -- +(mapc '$0 SEQUENCE) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/mapcar b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/mapcar new file mode 100644 index 0000000..25bbd5d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/mapcar @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: mapcar +#key: mapcar +# -- +(mapcar $0 ) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/match-beginning b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/match-beginning new file mode 100644 index 0000000..b3ecc75 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/match-beginning @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: match-beginning +#key: match-beginning +#key: mb +# -- +(match-beginning N$0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/match-end b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/match-end new file mode 100644 index 0000000..d263499 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/match-end @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: match-end +#key: match-end +#key: me +# -- +(match-end N$0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/match-string b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/match-string new file mode 100644 index 0000000..5c74e9d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/match-string @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: match-string +#key: match-string +#key: ms +# -- +(match-string $0 ) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/memq b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/memq new file mode 100644 index 0000000..f0f7cba --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/memq @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: memq +#key: memq +# -- +(memq ELT$0 LIST) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/message b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/message new file mode 100644 index 0000000..ea3009e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/message @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: message +#key: message +#key: m +# -- +(message "FORMATSTRING$0" &optional ARGS) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/minor_mode b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/minor_mode new file mode 100644 index 0000000..f0a09b2 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/minor_mode @@ -0,0 +1,20 @@ +# -*- mode: snippet -*- +# name: minor_mode +# key: minor +# -- +(defvar ${1:mode}-modeline-indicator " ${2:INDICATOR}" + "call ($1-install-mode) again if this is changed") + +(defvar $1-mode nil) +(make-variable-buffer-local '$1-mode) +(put '$1-mode 'permanent-local t) + +(defun $1-mode (&optional arg) + "$0" + (interactive "P") + (setq $1-mode + (if (null arg) (not $1-mode) + (> (prefix-numeric-value arg) 0))) + (force-mode-line-update)) + +(provide '$1-mode) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/not b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/not new file mode 100644 index 0000000..083bcd7 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/not @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: not +#key: not +#key: n +# -- +(not $0 ) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/nth b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/nth new file mode 100644 index 0000000..b3880a2 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/nth @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: nth +#key: nth +# -- +(nth N$0 LIST) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/null b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/null new file mode 100644 index 0000000..9d451ec --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/null @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: null +#key: null +# -- +(null $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/number-to-string b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/number-to-string new file mode 100644 index 0000000..42eccb7 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/number-to-string @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: number-to-string +#key: number-to-string +#key: nts +# -- +(number-to-string $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/or b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/or new file mode 100644 index 0000000..046218c --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/or @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: or +#key: or +#key: o +# -- +(or $0 ) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/point b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/point new file mode 100644 index 0000000..6aa6b74 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/point @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: point +#key: point +#key: p +# -- +(point) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/point-max b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/point-max new file mode 100644 index 0000000..6544869 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/point-max @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: point-max +#key: point-max +# -- +(point-max) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/point-min b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/point-min new file mode 100644 index 0000000..029d736 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/point-min @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: point-min +#key: point-min +#key: pm +# -- +(point-min) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/princ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/princ new file mode 100644 index 0000000..88ad7d7 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/princ @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: princ +#key: princ +# -- +(princ $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/print b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/print new file mode 100644 index 0000000..7d0f421 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/print @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: print +#key: print +# -- +(print $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/progn b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/progn new file mode 100644 index 0000000..d07c5c3 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/progn @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: progn +#key: progn +# -- +(progn $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/push b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/push new file mode 100644 index 0000000..f019b80 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/push @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: push +#key: push +# -- +(push $0 ) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/put b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/put new file mode 100644 index 0000000..7a91f20 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/put @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: put +#key: put +# -- +(put $0 PROPNAME VALUE) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/re-search-backward b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/re-search-backward new file mode 100644 index 0000000..a04d99f --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/re-search-backward @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: re-search-backward +#key: re-search-backward +#key: rsb +# -- +(re-search-backward REGEXP$0 &optional BOUND NOERROR COUNT) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/re-search-forward b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/re-search-forward new file mode 100644 index 0000000..31a24a3 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/re-search-forward @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: re-search-forward +#key: re-search-forward +#key: rsf +# -- +(re-search-forward REGEXP$0 &optional BOUND NOERROR COUNT) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/region-active-p b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/region-active-p new file mode 100644 index 0000000..e70553e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/region-active-p @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: region-active-p +#key: region-active-p +#key: rap +# -- +(region-active-p) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/region-beginning b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/region-beginning new file mode 100644 index 0000000..55496e2 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/region-beginning @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: region-beginning +#key: region-beginning +#key: rb +# -- +(region-beginning) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/region-end b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/region-end new file mode 100644 index 0000000..fddcd9f --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/region-end @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: region-end +#key: region-end +#key: re +# -- +(region-end) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/rename-file b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/rename-file new file mode 100644 index 0000000..b589a89 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/rename-file @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: rename-file +#key: rename-file +#key: rf +# -- +(rename-file FILE$0 NEWNAME &optional OK-IF-ALREADY-EXISTS) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/repeat b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/repeat new file mode 100644 index 0000000..45422eb --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/repeat @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: repeat +#key: repeat +# -- +(repeat $0 ) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/replace-regexp b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/replace-regexp new file mode 100644 index 0000000..7535bc1 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/replace-regexp @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: replace-regexp +#key: replace-regexp +#key: rr +# -- +(replace-regexp REGEXP$0 TO-STRING &optional DELIMITED START END) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/replace-regexp-in-string b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/replace-regexp-in-string new file mode 100644 index 0000000..edf7f5b --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/replace-regexp-in-string @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: replace-regexp-in-string +#key: replace-regexp-in-string +#key: rris +# -- +(replace-regexp-in-string REGEXP$0 REP STRING &optional FIXEDCASE LITERAL SUBEXP START) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/require b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/require new file mode 100644 index 0000000..9c91035 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/require @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: require +#key: require +# -- +(require $0 ) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/save-buffer b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/save-buffer new file mode 100644 index 0000000..931a72c --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/save-buffer @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: save-buffer +#key: save-buffer +#key: sb +# -- +(save-buffer $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/save-excursion b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/save-excursion new file mode 100644 index 0000000..5f587ce --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/save-excursion @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: save-excursion +#key: save-excursion +#key: se +# -- +(save-excursion $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/search-backward b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/search-backward new file mode 100644 index 0000000..4b07486 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/search-backward @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: search-backward +#key: search-backward +#key: sb +# -- +(search-backward "$0" &optional BOUND NOERROR COUNT) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/search-backward-regexp b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/search-backward-regexp new file mode 100644 index 0000000..33795fd --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/search-backward-regexp @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: search-backward-regexp +#key: search-backward-regexp +#key: sbr +# -- +(search-backward-regexp "$0" &optional BOUND NOERROR COUNT) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/search-forward b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/search-forward new file mode 100644 index 0000000..03e56c8 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/search-forward @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: search-forward +#key: search-forward +#key: sf +# -- +(search-forward "$0" &optional BOUND NOERROR COUNT) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/search-forward-regexp b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/search-forward-regexp new file mode 100644 index 0000000..eb37b84 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/search-forward-regexp @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: search-forward-regexp +#key: search-forward-regexp +#key: sfr +# -- +(search-forward-regexp "$0" &optional BOUND NOERROR COUNT) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/set b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/set new file mode 100644 index 0000000..cf9c101 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/set @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: set +#key: set +# -- +(set $0 ) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/set-buffer b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/set-buffer new file mode 100644 index 0000000..0eff93d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/set-buffer @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: set-buffer +#key: set-buffer +#key: sb +# -- +(set-buffer $0 ) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/set-file-modes b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/set-file-modes new file mode 100644 index 0000000..f7d7e16 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/set-file-modes @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: set-file-modes +#key: set-file-modes +#key: sfm +# -- +(set-file-modes $0 MODE) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/set-mark b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/set-mark new file mode 100644 index 0000000..9a482a1 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/set-mark @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: set-mark +#key: set-mark +#key: sm +# -- +(set-mark $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/setq b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/setq new file mode 100644 index 0000000..4bdb4fc --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/setq @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: setq +#key: setq +#key: s +# -- +(setq $0 ) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/should b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/should new file mode 100644 index 0000000..29748a2 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/should @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +#contributor: Raghav Kumar Gautam +#name: should +#key: sh +# -- +(should $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/skip-chars-backward b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/skip-chars-backward new file mode 100644 index 0000000..0fc4cf4 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/skip-chars-backward @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: skip-chars-backward +#key: skip-chars-backward +#key: scb +# -- +(skip-chars-backward "$0" &optional LIM) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/skip-chars-forward b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/skip-chars-forward new file mode 100644 index 0000000..110cbd5 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/skip-chars-forward @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: skip-chars-forward +#key: skip-chars-forward +#key: scf +# -- +(skip-chars-forward "$0" &optional LIM) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/split-string b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/split-string new file mode 100644 index 0000000..37c372d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/split-string @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: split-string +#key: split-string +#key: ss +# -- +(split-string $0 &optional SEPARATORS OMIT-NULLS) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/string b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/string new file mode 100644 index 0000000..f3a4dda --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/string @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: string +#key: string +# -- +(string $0 ) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/string-match b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/string-match new file mode 100644 index 0000000..1ef9876 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/string-match @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: string-match +#key: string-match +#key: sm +# -- +(string-match "REGEXP$0" "STRING" &optional START) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/string-to-number b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/string-to-number new file mode 100644 index 0000000..449d621 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/string-to-number @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: string-to-number +#key: string-to-number +#key: stn +# -- +(string-to-number "$0") \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/string= b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/string= new file mode 100644 index 0000000..d0d43aa --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/string= @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: string= +#key: string= +# -- +(string= $0 ) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/stringp b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/stringp new file mode 100644 index 0000000..c20be65 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/stringp @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: stringp +#key: stringp +# -- +(stringp $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/substring b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/substring new file mode 100644 index 0000000..8ab6b49 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/substring @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: substring +#key: substring +# -- +(substring STRING$0 FROM &optional TO) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/thing-at-point b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/thing-at-point new file mode 100644 index 0000000..9c6e189 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/thing-at-point @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: thing-at-point +#key: thing-at-point +#key: tap +# -- +(thing-at-point '$0) ; symbol, list, sexp, defun, filename, url, email, word, sentence, whitespace, line, page ... \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/traverse_dir b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/traverse_dir new file mode 100644 index 0000000..2859cbd --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/traverse_dir @@ -0,0 +1,6 @@ +#name : traversing a directory +#contributor : Xah Lee +# -- +;; apply a function to all files in a dir +(require 'find-lisp) +(mapc 'my-process-file (find-lisp-find-files "~/myweb/" "\\.html$")) diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/unless b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/unless new file mode 100644 index 0000000..15c1518 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/unless @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: unless +#key: unless +# -- +(unless $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/vector b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/vector new file mode 100644 index 0000000..59ad236 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/vector @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: vector +#key: vector +#key: v +# -- +(vector $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/when b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/when new file mode 100644 index 0000000..c5f4478 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/when @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: when +#key: when +# -- +(when $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/while b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/while new file mode 100644 index 0000000..4584be3 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/while @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: while +#key: while +# -- +(while $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/widget-get b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/widget-get new file mode 100644 index 0000000..24caf7b --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/widget-get @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: widget-get +#key: widget-get +#key: wg +# -- +(widget-get $0 ) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/with-current-buffer b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/with-current-buffer new file mode 100644 index 0000000..9041303 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/with-current-buffer @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: with-current-buffer +#key: with-current-buffer +#key: wcb +# -- +(with-current-buffer $0 ) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/word-or-region b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/word-or-region new file mode 100644 index 0000000..66a59e4 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/word-or-region @@ -0,0 +1,27 @@ +#name : Command that works on region or word +#contributor : Xah Lee +# -- +;; example of a command that works on current word or text selection +(defun down-case-word-or-region () + "Lower case the current word or text selection." +(interactive) +(let (pos1 pos2 meat) + (if (and transient-mark-mode mark-active) + (setq pos1 (region-beginning) + pos2 (region-end)) + (setq pos1 (car (bounds-of-thing-at-point 'symbol)) + pos2 (cdr (bounds-of-thing-at-point 'symbol)))) + + ; now, pos1 and pos2 are the starting and ending positions + ; of the current word, or current text selection if exists + + ;; put your code here. + $0 + ;; Some example of things you might want to do + (downcase-region pos1 pos2) ; example of a func that takes region as args + (setq meat (buffer-substring-no-properties pos1 pos2)) ; grab the text. + (delete-region pos1 pos2) ; get rid of it + (insert "newText") ; insert your new text + + ) +) diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/word_regexp b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/word_regexp new file mode 100644 index 0000000..4c3bfe6 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/word_regexp @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: word_regexp +# key: < +# -- +"\\_<${1:word}\\_>" \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-dired.process_marked b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-dired.process_marked new file mode 100644 index 0000000..9af5a26 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-dired.process_marked @@ -0,0 +1,17 @@ +#contributor: Xah Lee (XahLee.org) +#name: process marked files in dired +# key: x-dired +# -- +;; idiom for processing a list of files in dired's marked files + +;; suppose myProcessFile is your function that takes a file path +;; and do some processing on the file + +(defun dired-myProcessFile () + "apply myProcessFile function to marked files in dired." + (interactive) + (require 'dired) + (mapc 'myProcessFile (dired-get-marked-files)) +) + +;; to use it, type M-x dired-myProcessFile \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-file.process b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-file.process new file mode 100644 index 0000000..3c82822 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-file.process @@ -0,0 +1,18 @@ +#contributor: Xah Lee (XahLee.org) +#name: a function that process a file +# key: x-file +# -- +(defun doThisFile (fpath) + "Process the file at path FPATH ..." + (let () + ;; create temp buffer without undo record or font lock. (more efficient) + ;; first space in temp buff name is necessary + (set-buffer (get-buffer-create " myTemp")) + (insert-file-contents fpath nil nil nil t) + + ;; process it ... + ;; (goto-char 0) ; move to begining of file's content (in case it was open) + ;; ... do something here + ;; (write-file fpath) ;; write back to the file + + (kill-buffer " myTemp"))) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-file.read-lines b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-file.read-lines new file mode 100644 index 0000000..2b23983 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-file.read-lines @@ -0,0 +1,18 @@ +#contributor: Xah Lee (XahLee.org) +#name: read lines of a file +# key: x-file +# -- +(defun read-lines (filePath) + "Return a list of lines in FILEPATH." + (with-temp-buffer + (insert-file-contents filePath) + (split-string + (buffer-string) "\n" t)) ) + +;; process all lines +(mapc + (lambda (aLine) + (message aLine) ; do your stuff here + ) + (read-lines "inputFilePath") +) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-find-replace b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-find-replace new file mode 100644 index 0000000..d4c4d11 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-find-replace @@ -0,0 +1,18 @@ +#contributor: Xah Lee (XahLee.org) +#name: find and replace on region +# key: x-find-replace +# -- +(defun replace-html-chars-region (start end) + "Replace “<†to “<†and other chars in HTML. +This works on the current region." + (interactive "r") + (save-restriction + (narrow-to-region start end) + (goto-char (point-min)) + (while (search-forward "&" nil t) (replace-match "&" nil t)) + (goto-char (point-min)) + (while (search-forward "<" nil t) (replace-match "<" nil t)) + (goto-char (point-min)) + (while (search-forward ">" nil t) (replace-match ">" nil t)) + ) + ) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-grabstring b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-grabstring new file mode 100644 index 0000000..d348e93 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-grabstring @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: grab buffer substring +# key: x-grabstring +# -- +(setq $0 (buffer-substring-no-properties myStartPos myEndPos)) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-grabthing b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-grabthing new file mode 100644 index 0000000..2c0079d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-grabthing @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: grab word under cursor +# key: x-grabthing +# -- +(setq $0 (thing-at-point 'symbol)) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-traverse_dir b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-traverse_dir new file mode 100644 index 0000000..cfa461a --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-traverse_dir @@ -0,0 +1,7 @@ +#name: traversing a directory +#contributor: Xah Lee (XahLee.org) +# key: x-traverse_dir +# -- +;; apply a function to all files in a dir +(require 'find-lisp) +(mapc 'my-process-file (find-lisp-find-files "~/myweb/" "\\.html$")) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-word-or-region b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-word-or-region new file mode 100644 index 0000000..c7b851b --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-word-or-region @@ -0,0 +1,28 @@ +#contributor: Xah Lee (XahLee.org) +#name: Command that works on region or word +# key: x-word-or-region +# -- +;; example of a command that works on current word or text selection +(defun down-case-word-or-region () + "Lower case the current word or text selection." +(interactive) +(let (pos1 pos2 meat) + (if (and transient-mark-mode mark-active) + (setq pos1 (region-beginning) + pos2 (region-end)) + (setq pos1 (car (bounds-of-thing-at-point 'symbol)) + pos2 (cdr (bounds-of-thing-at-point 'symbol)))) + + ; now, pos1 and pos2 are the starting and ending positions + ; of the current word, or current text selection if exists + + ;; put your code here. + $0 + ;; Some example of things you might want to do + (downcase-region pos1 pos2) ; example of a func that takes region as args + (setq meat (buffer-substring-no-properties pos1 pos2)) ; grab the text. + (delete-region pos1 pos2) ; get rid of it + (insert "newText") ; insert your new text + + ) +) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/y-or-n-p b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/y-or-n-p new file mode 100644 index 0000000..8aeec63 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/y-or-n-p @@ -0,0 +1,6 @@ +#contributor: Xah Lee (XahLee.org) +#name: y-or-n-p +#key: y-or-n-p +#key: yonp +# -- +(yes-or-no-p "PROMPT$0 ") \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/yes-or-no-p b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/yes-or-no-p new file mode 100644 index 0000000..e7bb064 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/yes-or-no-p @@ -0,0 +1,5 @@ +#contributor: Xah Lee (XahLee.org) +#name: yes-or-no-p +#key: yes-or-no-p +# -- +(yes-or-no-p "PROMPT$0 ") \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/enh-ruby-mode b/elpa/yasnippet-20160131.948/snippets/enh-ruby-mode new file mode 100644 index 0000000..e69de29 diff --git a/elpa/yasnippet-20160131.948/snippets/ensime-mode b/elpa/yasnippet-20160131.948/snippets/ensime-mode new file mode 100644 index 0000000..e69de29 diff --git a/elpa/yasnippet-20160131.948/snippets/erc-mode/blist b/elpa/yasnippet-20160131.948/snippets/erc-mode/blist new file mode 100644 index 0000000..bf30419 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/erc-mode/blist @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: blist +# key: b +# -- +blist diff --git a/elpa/yasnippet-20160131.948/snippets/erc-mode/help b/elpa/yasnippet-20160131.948/snippets/erc-mode/help new file mode 100644 index 0000000..a47a572 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/erc-mode/help @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: help +# key: h +# -- +help $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/erlang-mode/after b/elpa/yasnippet-20160131.948/snippets/erlang-mode/after new file mode 100644 index 0000000..264e201 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/erlang-mode/after @@ -0,0 +1,4 @@ +#name : after ... -> +# -- +after + $1 -> $0 diff --git a/elpa/yasnippet-20160131.948/snippets/erlang-mode/begin b/elpa/yasnippet-20160131.948/snippets/erlang-mode/begin new file mode 100644 index 0000000..7b48494 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/erlang-mode/begin @@ -0,0 +1,5 @@ +#name : begin ... end +# -- +begin + $0 +end diff --git a/elpa/yasnippet-20160131.948/snippets/erlang-mode/beh b/elpa/yasnippet-20160131.948/snippets/erlang-mode/beh new file mode 100644 index 0000000..4975b26 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/erlang-mode/beh @@ -0,0 +1,4 @@ +#name : -behaviour(...). +# -- +-behaviour(${1:gen_server}). +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/erlang-mode/case b/elpa/yasnippet-20160131.948/snippets/erlang-mode/case new file mode 100644 index 0000000..5bed114 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/erlang-mode/case @@ -0,0 +1,5 @@ +#name : case ... of ... end +# -- +case $1 of + $0 +end diff --git a/elpa/yasnippet-20160131.948/snippets/erlang-mode/compile b/elpa/yasnippet-20160131.948/snippets/erlang-mode/compile new file mode 100644 index 0000000..ae3a4d8 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/erlang-mode/compile @@ -0,0 +1,4 @@ +#name : -compile(...). +# -- +-compile([${1:export_all}]). +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/erlang-mode/def b/elpa/yasnippet-20160131.948/snippets/erlang-mode/def new file mode 100644 index 0000000..6fb92f1 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/erlang-mode/def @@ -0,0 +1,4 @@ +#name : -define(...,...). +# -- +-define($1,$2). +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/erlang-mode/exp b/elpa/yasnippet-20160131.948/snippets/erlang-mode/exp new file mode 100644 index 0000000..67f56da --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/erlang-mode/exp @@ -0,0 +1,5 @@ +#name : -export([]). +#contributor : hitesh +# -- +-export([${1:start/0}]). +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/erlang-mode/fun b/elpa/yasnippet-20160131.948/snippets/erlang-mode/fun new file mode 100644 index 0000000..77f8293 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/erlang-mode/fun @@ -0,0 +1,3 @@ +#name : fun (...) -> ... end +# -- +fun ($1) -> $0 end diff --git a/elpa/yasnippet-20160131.948/snippets/erlang-mode/if b/elpa/yasnippet-20160131.948/snippets/erlang-mode/if new file mode 100644 index 0000000..45674c4 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/erlang-mode/if @@ -0,0 +1,6 @@ +#name : if ... -> ... ; true -> ... end +# -- +if + $1 -> $2; + true -> $0 +end diff --git a/elpa/yasnippet-20160131.948/snippets/erlang-mode/ifdef b/elpa/yasnippet-20160131.948/snippets/erlang-mode/ifdef new file mode 100644 index 0000000..ea89ecf --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/erlang-mode/ifdef @@ -0,0 +1,5 @@ +#name : -ifdef(...). ... -endif. +# -- +-ifdef($1). +$0 +-endif. diff --git a/elpa/yasnippet-20160131.948/snippets/erlang-mode/ifndef b/elpa/yasnippet-20160131.948/snippets/erlang-mode/ifndef new file mode 100644 index 0000000..dcd67a7 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/erlang-mode/ifndef @@ -0,0 +1,5 @@ +#name : -ifndef(...). ... -endif. +# -- +-ifndef($1). +$0 +-endif. diff --git a/elpa/yasnippet-20160131.948/snippets/erlang-mode/imp b/elpa/yasnippet-20160131.948/snippets/erlang-mode/imp new file mode 100644 index 0000000..c035ddd --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/erlang-mode/imp @@ -0,0 +1,5 @@ +#name : -import([]). +#contributor : hitesh +# -- +-import(${1:lists}, [${2:map/2, sum/1}]). +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/erlang-mode/inc b/elpa/yasnippet-20160131.948/snippets/erlang-mode/inc new file mode 100644 index 0000000..f7b2161 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/erlang-mode/inc @@ -0,0 +1,4 @@ +#name : -include("..."). +# -- +-include("$1"). +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/erlang-mode/inc.lib b/elpa/yasnippet-20160131.948/snippets/erlang-mode/inc.lib new file mode 100644 index 0000000..09a6723 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/erlang-mode/inc.lib @@ -0,0 +1,4 @@ +#name : -include_lib("..."). +# -- +-include_lib("$1"). +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/erlang-mode/loop b/elpa/yasnippet-20160131.948/snippets/erlang-mode/loop new file mode 100644 index 0000000..0205802 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/erlang-mode/loop @@ -0,0 +1,8 @@ +#name : loop(...) -> receive _ -> loop(...) end. +# -- +${1:loop}($2) -> + receive + ${3:_} -> + $1($2) + end. +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/erlang-mode/mod b/elpa/yasnippet-20160131.948/snippets/erlang-mode/mod new file mode 100644 index 0000000..7275d39 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/erlang-mode/mod @@ -0,0 +1,6 @@ +#name : -module(). +#contributor : hitesh +# -- +-module(${1:`(file-name-nondirectory + (file-name-sans-extension (or (buffer-file-name) (buffer-name))))`}). +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/erlang-mode/rcv b/elpa/yasnippet-20160131.948/snippets/erlang-mode/rcv new file mode 100644 index 0000000..804fb3f --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/erlang-mode/rcv @@ -0,0 +1,5 @@ +#name : receive ... -> ... end +# -- +receive + $1 -> $0 +end diff --git a/elpa/yasnippet-20160131.948/snippets/erlang-mode/rcv.after b/elpa/yasnippet-20160131.948/snippets/erlang-mode/rcv.after new file mode 100644 index 0000000..51046df --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/erlang-mode/rcv.after @@ -0,0 +1,6 @@ +#name : receive after ... -> ... end +# -- +receive +after + $1 -> $0 +end diff --git a/elpa/yasnippet-20160131.948/snippets/erlang-mode/rec b/elpa/yasnippet-20160131.948/snippets/erlang-mode/rec new file mode 100644 index 0000000..0d67834 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/erlang-mode/rec @@ -0,0 +1,4 @@ +#name : -record(...,{...}). +# -- +-record($1,{$2}). +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/erlang-mode/try b/elpa/yasnippet-20160131.948/snippets/erlang-mode/try new file mode 100644 index 0000000..fa5c9c2 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/erlang-mode/try @@ -0,0 +1,7 @@ +#name : try ... of ... catch after end +# -- +try $1 of + $0 +catch +after +end diff --git a/elpa/yasnippet-20160131.948/snippets/erlang-mode/undef b/elpa/yasnippet-20160131.948/snippets/erlang-mode/undef new file mode 100644 index 0000000..7ab5dd4 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/erlang-mode/undef @@ -0,0 +1,4 @@ +#name : -undef(...). +# -- +-undef($1). +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/f90-mode/bd b/elpa/yasnippet-20160131.948/snippets/f90-mode/bd new file mode 100644 index 0000000..8840102 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/f90-mode/bd @@ -0,0 +1,4 @@ +#contributor: Li Zhu +#name : block data +# -- +block data $0 diff --git a/elpa/yasnippet-20160131.948/snippets/f90-mode/c b/elpa/yasnippet-20160131.948/snippets/f90-mode/c new file mode 100644 index 0000000..c7182e4 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/f90-mode/c @@ -0,0 +1,4 @@ +#contributor: Li Zhu +#name : continue +# -- +continue $0 diff --git a/elpa/yasnippet-20160131.948/snippets/f90-mode/ch b/elpa/yasnippet-20160131.948/snippets/f90-mode/ch new file mode 100644 index 0000000..7e6b4cb --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/f90-mode/ch @@ -0,0 +1,4 @@ +#contributor: Li Zhu +#name : character +# -- +character $0 diff --git a/elpa/yasnippet-20160131.948/snippets/f90-mode/cx b/elpa/yasnippet-20160131.948/snippets/f90-mode/cx new file mode 100644 index 0000000..8feb41e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/f90-mode/cx @@ -0,0 +1,4 @@ +#contributor: Li Zhu +#name : complex +# -- +complex $0 diff --git a/elpa/yasnippet-20160131.948/snippets/f90-mode/dc b/elpa/yasnippet-20160131.948/snippets/f90-mode/dc new file mode 100644 index 0000000..1992b1b --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/f90-mode/dc @@ -0,0 +1,4 @@ +#contributor: Li Zhu +#name : double complex +# -- +double complex $0 diff --git a/elpa/yasnippet-20160131.948/snippets/f90-mode/do b/elpa/yasnippet-20160131.948/snippets/f90-mode/do new file mode 100644 index 0000000..09f5cb2 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/f90-mode/do @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# contributor: Jonas Kalderstam +# name: do ... end do ... +# key: do +# -- +do $1 + $0 +end do diff --git a/elpa/yasnippet-20160131.948/snippets/f90-mode/dp b/elpa/yasnippet-20160131.948/snippets/f90-mode/dp new file mode 100644 index 0000000..ad014b7 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/f90-mode/dp @@ -0,0 +1,4 @@ +#contributor: Li Zhu +#name : double precision +# -- +double precision $0 diff --git a/elpa/yasnippet-20160131.948/snippets/f90-mode/forall b/elpa/yasnippet-20160131.948/snippets/f90-mode/forall new file mode 100644 index 0000000..03da421 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/f90-mode/forall @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# contributor: Jonas Kalderstam +# name: forall ... end forall ... +# key: forall +# -- +forall ($1) + $0 +end forall \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/f90-mode/function b/elpa/yasnippet-20160131.948/snippets/f90-mode/function new file mode 100644 index 0000000..e8f13ef --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/f90-mode/function @@ -0,0 +1,12 @@ +# -*- mode: snippet -*- +# contributor: Jonas Kalderstam +# name: function ... end function ... +# key: function +# -- +function ${1:name} (${2:arg}) + ${3:real} :: $1 + ${4:real, intent(in)} :: $2 + + $0 + +end function $1 diff --git a/elpa/yasnippet-20160131.948/snippets/f90-mode/if b/elpa/yasnippet-20160131.948/snippets/f90-mode/if new file mode 100644 index 0000000..b4fb526 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/f90-mode/if @@ -0,0 +1,6 @@ +#contributor: Li Zhu +#name : if then end if +# -- +if ( ${1:condition} ) then + $0 +end if diff --git a/elpa/yasnippet-20160131.948/snippets/f90-mode/in b/elpa/yasnippet-20160131.948/snippets/f90-mode/in new file mode 100644 index 0000000..0c1d5e1 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/f90-mode/in @@ -0,0 +1,4 @@ +#contributor: Li Zhu +#name : implicit none +# -- +implicit none diff --git a/elpa/yasnippet-20160131.948/snippets/f90-mode/inc b/elpa/yasnippet-20160131.948/snippets/f90-mode/inc new file mode 100644 index 0000000..dd649c4 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/f90-mode/inc @@ -0,0 +1,4 @@ +#contributor: Li Zhu +#name : include +# -- +include $0 diff --git a/elpa/yasnippet-20160131.948/snippets/f90-mode/intr b/elpa/yasnippet-20160131.948/snippets/f90-mode/intr new file mode 100644 index 0000000..147fffd --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/f90-mode/intr @@ -0,0 +1,4 @@ +#contributor: Li Zhu +#name : intrinsic +# -- +intrinsic $0 diff --git a/elpa/yasnippet-20160131.948/snippets/f90-mode/l b/elpa/yasnippet-20160131.948/snippets/f90-mode/l new file mode 100644 index 0000000..8605d69 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/f90-mode/l @@ -0,0 +1,4 @@ +#contributor: Li Zhu +#name : logical +# -- +logical $0 diff --git a/elpa/yasnippet-20160131.948/snippets/f90-mode/module b/elpa/yasnippet-20160131.948/snippets/f90-mode/module new file mode 100644 index 0000000..ebffe50 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/f90-mode/module @@ -0,0 +1,12 @@ +# -*- mode: snippet -*- +# contributor: Jonas Kalderstam +# name: module ... end module ... +# key: module +# -- +module ${1:name} + +contains + + $0 + +end module $1 diff --git a/elpa/yasnippet-20160131.948/snippets/f90-mode/pa b/elpa/yasnippet-20160131.948/snippets/f90-mode/pa new file mode 100644 index 0000000..1b1b503 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/f90-mode/pa @@ -0,0 +1,4 @@ +#contributor: Li Zhu +#name : parameter +# -- +parameter $0 diff --git a/elpa/yasnippet-20160131.948/snippets/f90-mode/program b/elpa/yasnippet-20160131.948/snippets/f90-mode/program new file mode 100644 index 0000000..1458cb5 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/f90-mode/program @@ -0,0 +1,11 @@ +# -*- mode: snippet -*- +# contributor: Jonas Kalderstam +# name: program .. end program +# key: program +# -- +program ${1:name} + ${2:implicit none} + + $0 + +end program $1 diff --git a/elpa/yasnippet-20160131.948/snippets/f90-mode/puref b/elpa/yasnippet-20160131.948/snippets/f90-mode/puref new file mode 100644 index 0000000..0c4b046 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/f90-mode/puref @@ -0,0 +1,12 @@ +# -*- mode: snippet -*- +# contributor: Jonas Kalderstam +# name: pure function ... end function ... +# key: pure func +# -- +pure function ${1:name} (${2:arg}) + ${3:real} :: $1 + ${4:real, intent(in)} :: $2 + + $0 + +end function $1 diff --git a/elpa/yasnippet-20160131.948/snippets/f90-mode/pures b/elpa/yasnippet-20160131.948/snippets/f90-mode/pures new file mode 100644 index 0000000..e306d4b --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/f90-mode/pures @@ -0,0 +1,10 @@ +# -*- mode: snippet -*- +# contributor: Jonas Kalderstam +# name: pure subroutine .. end subroutine +# key: pure subroutine +# -- +pure subroutine ${1:name} (${2:arg}) + ${3:real, intent(in) :: $2} + + $0 +end subroutine $1 diff --git a/elpa/yasnippet-20160131.948/snippets/f90-mode/re b/elpa/yasnippet-20160131.948/snippets/f90-mode/re new file mode 100644 index 0000000..08c7ba0 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/f90-mode/re @@ -0,0 +1,4 @@ +#contributor: Li Zhu +#name : read (*,*) +# -- +read (${1:*},${2:*}) $0 diff --git a/elpa/yasnippet-20160131.948/snippets/f90-mode/subroutine b/elpa/yasnippet-20160131.948/snippets/f90-mode/subroutine new file mode 100644 index 0000000..35e913a --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/f90-mode/subroutine @@ -0,0 +1,10 @@ +# -*- mode: snippet -*- +# contributor: Jonas Kalderstam +# name: subroutine .. end subroutine +# key: subroutine +# -- +subroutine ${1:name} (${2:arg}) + ${3:real, intent(in) :: $2} + + $0 +end subroutine $1 diff --git a/elpa/yasnippet-20160131.948/snippets/f90-mode/until b/elpa/yasnippet-20160131.948/snippets/f90-mode/until new file mode 100644 index 0000000..5094629 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/f90-mode/until @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# contributor: Jonas Kalderstam +# name: until ... end until ... +# key: until +# -- +do + $0 + if (${1:condition}) exit +end do diff --git a/elpa/yasnippet-20160131.948/snippets/f90-mode/where b/elpa/yasnippet-20160131.948/snippets/f90-mode/where new file mode 100644 index 0000000..98c2b1c --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/f90-mode/where @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# contributor: Jonas Kalderstam +# name: where ... end where ... +# key: where +# -- + +where (${1:condition}) + $0 +end where diff --git a/elpa/yasnippet-20160131.948/snippets/f90-mode/while b/elpa/yasnippet-20160131.948/snippets/f90-mode/while new file mode 100644 index 0000000..3acc12f --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/f90-mode/while @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# contributor: Jonas Kalderstam +# name: while ... end while ... +# key: while +# -- +do while (${1:condition}) + $0 +end do diff --git a/elpa/yasnippet-20160131.948/snippets/f90-mode/wr b/elpa/yasnippet-20160131.948/snippets/f90-mode/wr new file mode 100644 index 0000000..1ac3eb9 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/f90-mode/wr @@ -0,0 +1,4 @@ +#contributor: Li Zhu +#name : write (*,*) +# -- +write (${1:*},${2:*}) $0 diff --git a/elpa/yasnippet-20160131.948/snippets/fundamental-mode/.yas-setup.el b/elpa/yasnippet-20160131.948/snippets/fundamental-mode/.yas-setup.el new file mode 100644 index 0000000..cc4a171 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/fundamental-mode/.yas-setup.el @@ -0,0 +1,8 @@ +(defun ca-all-asscs (asslist query) + "returns a list of all corresponding values (like rassoc)" + (cond + ((null asslist) nil) + (t + (if (equal (cdr (car asslist)) query) + (cons (car (car asslist)) (ca-all-asscs (cdr asslist) query)) + (ca-all-asscs (cdr asslist) query))))) diff --git a/elpa/yasnippet-20160131.948/snippets/fundamental-mode/.yas-setup.elc b/elpa/yasnippet-20160131.948/snippets/fundamental-mode/.yas-setup.elc new file mode 100644 index 0000000000000000000000000000000000000000..d0ddaba8ea3fa3d7c4fcf8a028c2a10f3325dff0 GIT binary patch literal 623 zcmbtR!A`?44DAVx{s7!~+K||!wOZRDn06UVJ0Nj`+qQ#AG8T~~BS}H<^|%Fr5J!Bn z{jB%w=jq~hev~9hI-O22ce}kdO16czSnNmyyeJ>EvnbE=Q9dd1qJ>{|+=7gO+ef|A z?-Y3^4Mt-m9>8R){VgVlyz|Iu4xjDGJFImSgbSP#+<)~&P= literal 0 HcmV?d00001 diff --git a/elpa/yasnippet-20160131.948/snippets/git-commit-mode/.yas-parents b/elpa/yasnippet-20160131.948/snippets/git-commit-mode/.yas-parents new file mode 100644 index 0000000..d58dacb --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/git-commit-mode/.yas-parents @@ -0,0 +1 @@ +text-mode \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/git-commit-mode/fixes b/elpa/yasnippet-20160131.948/snippets/git-commit-mode/fixes new file mode 100644 index 0000000..22ad91d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/git-commit-mode/fixes @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: fixes +# key: fix +# -- +fixes #${1:100} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/git-commit-mode/references b/elpa/yasnippet-20160131.948/snippets/git-commit-mode/references new file mode 100644 index 0000000..160ebc0 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/git-commit-mode/references @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: references +# key: ref +# -- +references #${1:100} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/go-mode/benchmark b/elpa/yasnippet-20160131.948/snippets/go-mode/benchmark new file mode 100644 index 0000000..ef669a8 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/go-mode/benchmark @@ -0,0 +1,10 @@ +# -*- mode: snippet -*- +# name: benchmark +# key: bench +# contributor : @atotto +# -- +func Benchmark$1(b *testing.B) { + for i := 0; i < b.N; i++ { + $0 + } +} diff --git a/elpa/yasnippet-20160131.948/snippets/go-mode/const b/elpa/yasnippet-20160131.948/snippets/go-mode/const new file mode 100644 index 0000000..c6524e3 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/go-mode/const @@ -0,0 +1,6 @@ +# -*- mode:snippet -*- +# name: const +# key: const +# -- +const ${1:name type} = ${2:val} +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/go-mode/const( b/elpa/yasnippet-20160131.948/snippets/go-mode/const( new file mode 100644 index 0000000..03f26da --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/go-mode/const( @@ -0,0 +1,7 @@ +# -*- mode:snippet -*- +# name: const (...) +# key: const +# -- +const ( + ${1:name type} = ${2:val} +) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/go-mode/dd b/elpa/yasnippet-20160131.948/snippets/go-mode/dd new file mode 100644 index 0000000..6e6fd1e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/go-mode/dd @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: debug fmt.Printf +# key: dd +# -- +fmt.Printf("%+v\n", $1) // output for debug +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/go-mode/default b/elpa/yasnippet-20160131.948/snippets/go-mode/default new file mode 100644 index 0000000..e0cd749 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/go-mode/default @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: default +# key: def +# -- +default: +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/go-mode/else b/elpa/yasnippet-20160131.948/snippets/go-mode/else new file mode 100644 index 0000000..7f71305 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/go-mode/else @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: else +# key: el +# -- + else { + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/go-mode/error b/elpa/yasnippet-20160131.948/snippets/go-mode/error new file mode 100644 index 0000000..85c539a --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/go-mode/error @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: error +# key: err +# contributor : @atotto +# -- +if err != nil { + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/go-mode/example b/elpa/yasnippet-20160131.948/snippets/go-mode/example new file mode 100644 index 0000000..acfb75d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/go-mode/example @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: example +# key: example +# contributor : @atotto +# -- +func Example$1() { + $0 +} diff --git a/elpa/yasnippet-20160131.948/snippets/go-mode/for b/elpa/yasnippet-20160131.948/snippets/go-mode/for new file mode 100644 index 0000000..9f404a3 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/go-mode/for @@ -0,0 +1,7 @@ +# -*- mode:snippet -*- +# name: for +# key: for +# -- +for $1 { + $0 +} diff --git a/elpa/yasnippet-20160131.948/snippets/go-mode/forrange b/elpa/yasnippet-20160131.948/snippets/go-mode/forrange new file mode 100644 index 0000000..9d889eb --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/go-mode/forrange @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: for range +# key: range +# contributor : @atotto +# -- +for ${3:key}, ${2:value} := range ${1:target} { + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/go-mode/func b/elpa/yasnippet-20160131.948/snippets/go-mode/func new file mode 100644 index 0000000..9b1649f --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/go-mode/func @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: func +# key: func +# -- +// $1 ${4:...} +func ${1:name}(${2:args}) $3 { + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/go-mode/if b/elpa/yasnippet-20160131.948/snippets/go-mode/if new file mode 100644 index 0000000..569c1d5 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/go-mode/if @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: if +# key: if +# -- +if $1 { + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/go-mode/iferr b/elpa/yasnippet-20160131.948/snippets/go-mode/iferr new file mode 100644 index 0000000..f1a284e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/go-mode/iferr @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: if error +# key: iferr +# -- +if err != $1 { + $0 +} diff --git a/elpa/yasnippet-20160131.948/snippets/go-mode/import b/elpa/yasnippet-20160131.948/snippets/go-mode/import new file mode 100644 index 0000000..adf411b --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/go-mode/import @@ -0,0 +1,6 @@ +# -*- mode:snippet -*- +# name: import +# key: imp +# -- +import "$1" +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/go-mode/import( b/elpa/yasnippet-20160131.948/snippets/go-mode/import( new file mode 100644 index 0000000..b38ccf7 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/go-mode/import( @@ -0,0 +1,7 @@ +# -*- mode:snippet -*- +# name: import (...) +# key: imp +# -- +import ( + "$0" +) diff --git a/elpa/yasnippet-20160131.948/snippets/go-mode/lambda b/elpa/yasnippet-20160131.948/snippets/go-mode/lambda new file mode 100644 index 0000000..07edca4 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/go-mode/lambda @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: lambda func +# key: lambda +# -- +func(${1:args}) $2 { + $0 +}() \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/go-mode/main b/elpa/yasnippet-20160131.948/snippets/go-mode/main new file mode 100644 index 0000000..22d4b85 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/go-mode/main @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: func main() +# key: main +# -- +func main() { + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/go-mode/map b/elpa/yasnippet-20160131.948/snippets/go-mode/map new file mode 100644 index 0000000..a2860ce --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/go-mode/map @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: map +# key: map +# -- +map[${1:type}]${2:type} diff --git a/elpa/yasnippet-20160131.948/snippets/go-mode/printf b/elpa/yasnippet-20160131.948/snippets/go-mode/printf new file mode 100644 index 0000000..56563df --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/go-mode/printf @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: fmt.Printf(...) +# key: pr +# -- +fmt.Printf("${1:%s}\n", ${2:args}) +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/go-mode/select b/elpa/yasnippet-20160131.948/snippets/go-mode/select new file mode 100644 index 0000000..1db4b3c --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/go-mode/select @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: select +# key: sel +# -- +select { +case $1: + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/go-mode/switch b/elpa/yasnippet-20160131.948/snippets/go-mode/switch new file mode 100644 index 0000000..95c9dd7 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/go-mode/switch @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: switch +# key: sw +# -- +switch $1 { +case $2: + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/go-mode/test b/elpa/yasnippet-20160131.948/snippets/go-mode/test new file mode 100644 index 0000000..8baf8c9 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/go-mode/test @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: test +# key: at +# contributor : @atotto +# -- +func Test$1(t *testing.T) { + $0 +} diff --git a/elpa/yasnippet-20160131.948/snippets/go-mode/testmain b/elpa/yasnippet-20160131.948/snippets/go-mode/testmain new file mode 100644 index 0000000..5f208da --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/go-mode/testmain @@ -0,0 +1,21 @@ +# -*- mode: snippet -*- +# name: testmain +# key: testmain +# contributor : @atotto +# -- +func TestMain(m *testing.M) { + setup() + ret := m.Run() + if ret == 0 { + teardown() + } + os.Exit(ret) +} + +func setup() { + $1 +} + +func teardown() { + $2 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/go-mode/type b/elpa/yasnippet-20160131.948/snippets/go-mode/type new file mode 100644 index 0000000..862feb7 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/go-mode/type @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: type +# key: type +# -- +type $1 $2 { + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/go-mode/var b/elpa/yasnippet-20160131.948/snippets/go-mode/var new file mode 100644 index 0000000..839eb9f --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/go-mode/var @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: var +# key: var +# -- +var ${1:name} ${2:type} +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/go-mode/var( b/elpa/yasnippet-20160131.948/snippets/go-mode/var( new file mode 100644 index 0000000..5ad7cc8 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/go-mode/var( @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: var (...) +# key: var +# -- +var ( + ${1:name} ${2:type} +) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/groovy-mode/.yas-parents b/elpa/yasnippet-20160131.948/snippets/groovy-mode/.yas-parents new file mode 100644 index 0000000..c23a148 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/groovy-mode/.yas-parents @@ -0,0 +1 @@ +java-mode \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/groovy-mode/class b/elpa/yasnippet-20160131.948/snippets/groovy-mode/class new file mode 100644 index 0000000..d58e4ba --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/groovy-mode/class @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: class +# key: class +# -- +class ${1:Class} { + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/groovy-mode/def b/elpa/yasnippet-20160131.948/snippets/groovy-mode/def new file mode 100644 index 0000000..5d7aa22 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/groovy-mode/def @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: def +# key: def +# -- +def ${1:method}(${2:args}) { + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/groovy-mode/dict b/elpa/yasnippet-20160131.948/snippets/groovy-mode/dict new file mode 100644 index 0000000..380eaf8 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/groovy-mode/dict @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: dict +# key: dict +# -- +${1:dict} = [${2:key} : ${3:value}$0] \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/groovy-mode/for b/elpa/yasnippet-20160131.948/snippets/groovy-mode/for new file mode 100644 index 0000000..c060814 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/groovy-mode/for @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: for +# key: for +# -- +for (${1:var} in ${2:iter}) { + $0 +} diff --git a/elpa/yasnippet-20160131.948/snippets/groovy-mode/println b/elpa/yasnippet-20160131.948/snippets/groovy-mode/println new file mode 100644 index 0000000..0fd8648 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/groovy-mode/println @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: println +# key: pr +# -- +println ${1:"string"} +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/groovy-mode/times b/elpa/yasnippet-20160131.948/snippets/groovy-mode/times new file mode 100644 index 0000000..39d218d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/groovy-mode/times @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: times +# key: times +# -- +${1:10}.times { + $0 +} . \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/haskell-mode/case b/elpa/yasnippet-20160131.948/snippets/haskell-mode/case new file mode 100644 index 0000000..196ab8a --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/haskell-mode/case @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: case +# key: case +# expand-env: ((yas-indent-line 'fixed)) +# -- +case ${1:var} of + ${2:cond} -> ${3:value} + $0 + otherwise -> ${4:other} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/haskell-mode/data b/elpa/yasnippet-20160131.948/snippets/haskell-mode/data new file mode 100644 index 0000000..ed0166f --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/haskell-mode/data @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: data +# key: da +# -- +data ${1:Type} = $2 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/haskell-mode/doc b/elpa/yasnippet-20160131.948/snippets/haskell-mode/doc new file mode 100644 index 0000000..d9ac695 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/haskell-mode/doc @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: doc +# key: d +# -- +{- + $0 +-} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/haskell-mode/efix b/elpa/yasnippet-20160131.948/snippets/haskell-mode/efix new file mode 100644 index 0000000..e8714f3 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/haskell-mode/efix @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: fixme dummy +# key: efix +# expand-env: ((yas-indent-line 'fixed)) +# -- +(error "FIXME: $0") \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/haskell-mode/function b/elpa/yasnippet-20160131.948/snippets/haskell-mode/function new file mode 100644 index 0000000..ea2e022 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/haskell-mode/function @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: fun +# key: fun +# -- +${1:function-name} :: ${2:type} +$1 ${3:arguments} $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/haskell-mode/functione b/elpa/yasnippet-20160131.948/snippets/haskell-mode/functione new file mode 100644 index 0000000..22276e7 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/haskell-mode/functione @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: fune +# key: fune +# -- +${1:function-name} :: ${2:type} +$1 = $0error "Not implemented: $1" \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/haskell-mode/import b/elpa/yasnippet-20160131.948/snippets/haskell-mode/import new file mode 100644 index 0000000..3771543 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/haskell-mode/import @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: import +# key: import +# -- +import${1: qualified} ${2:Module${3:(symbols)}}${4: as ${5:alias}} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/haskell-mode/instance b/elpa/yasnippet-20160131.948/snippets/haskell-mode/instance new file mode 100644 index 0000000..d288db7 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/haskell-mode/instance @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: instance +# key: ins +# -- +instance ${1:${2:(Show a)} => }${3:Ord} ${4:DataType} where +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/haskell-mode/main b/elpa/yasnippet-20160131.948/snippets/haskell-mode/main new file mode 100644 index 0000000..5ab76ba --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/haskell-mode/main @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: main function +# key: main +# expand-env: ((yas-indent-line 'fixed)) +# -- +main :: IO () +main = do $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/haskell-mode/module b/elpa/yasnippet-20160131.948/snippets/haskell-mode/module new file mode 100644 index 0000000..20d4f3c --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/haskell-mode/module @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: module +# key: mod +# -- +module ${1:Module} where +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/haskell-mode/new class b/elpa/yasnippet-20160131.948/snippets/haskell-mode/new class new file mode 100644 index 0000000..4fcca62 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/haskell-mode/new class @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: new class +# key: class +# expand-env: ((yas-indent-line 'fixed)) +# -- +class ${1:Class Name} where + $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/haskell-mode/pragma b/elpa/yasnippet-20160131.948/snippets/haskell-mode/pragma new file mode 100644 index 0000000..6532151 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/haskell-mode/pragma @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: pragma +# key: { +# -- +{-# ${1:PRAGMA} #-} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/haskell-mode/print b/elpa/yasnippet-20160131.948/snippets/haskell-mode/print new file mode 100644 index 0000000..30b4a44 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/haskell-mode/print @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: print +# key: pr +# -- +print $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/html-mode/.yas-parents b/elpa/yasnippet-20160131.948/snippets/html-mode/.yas-parents new file mode 100644 index 0000000..74c3dd5 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/html-mode/.yas-parents @@ -0,0 +1 @@ +nxml-mode diff --git a/elpa/yasnippet-20160131.948/snippets/html-mode/dd b/elpa/yasnippet-20160131.948/snippets/html-mode/dd new file mode 100644 index 0000000..8120b13 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/html-mode/dd @@ -0,0 +1,5 @@ +#contributor : Rodrigo Setti +#name :
...
+#group : list +# -- +
$1
\ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/html-mode/dl b/elpa/yasnippet-20160131.948/snippets/html-mode/dl new file mode 100644 index 0000000..be11bb5 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/html-mode/dl @@ -0,0 +1,7 @@ +#contributor : Rodrigo Setti +#name :
...
+#group : list +# -- +
+ $0 +
diff --git a/elpa/yasnippet-20160131.948/snippets/html-mode/doctype b/elpa/yasnippet-20160131.948/snippets/html-mode/doctype new file mode 100644 index 0000000..a60dfb6 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/html-mode/doctype @@ -0,0 +1,4 @@ +#name : Doctype HTML 4.01 Strict +#group : meta +# -- + \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/html-mode/doctype.html5 b/elpa/yasnippet-20160131.948/snippets/html-mode/doctype.html5 new file mode 100644 index 0000000..a892472 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/html-mode/doctype.html5 @@ -0,0 +1,4 @@ +#name : Doctype HTML 5 +#group : meta +# -- + diff --git a/elpa/yasnippet-20160131.948/snippets/html-mode/doctype.xhtml1 b/elpa/yasnippet-20160131.948/snippets/html-mode/doctype.xhtml1 new file mode 100644 index 0000000..5d95e07 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/html-mode/doctype.xhtml1 @@ -0,0 +1,4 @@ +#name : DocType XHTML 1.0 frameset +#group : meta +# -- + \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/html-mode/doctype.xhtml1_1 b/elpa/yasnippet-20160131.948/snippets/html-mode/doctype.xhtml1_1 new file mode 100644 index 0000000..fec46d7 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/html-mode/doctype.xhtml1_1 @@ -0,0 +1,4 @@ +#name : DocType XHTML 1.1 +#group : meta +# -- + \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/html-mode/doctype.xhtml1_strict b/elpa/yasnippet-20160131.948/snippets/html-mode/doctype.xhtml1_strict new file mode 100644 index 0000000..20d95d3 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/html-mode/doctype.xhtml1_strict @@ -0,0 +1,4 @@ +#name : DocType XHTML 1.0 Strict +#group : meta +# -- + \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/html-mode/doctype.xhtml1_transitional b/elpa/yasnippet-20160131.948/snippets/html-mode/doctype.xhtml1_transitional new file mode 100644 index 0000000..c5255fc --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/html-mode/doctype.xhtml1_transitional @@ -0,0 +1,4 @@ +#name : DocType XHTML 1.0 Transitional +#group : meta +# -- + \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/html-mode/dt b/elpa/yasnippet-20160131.948/snippets/html-mode/dt new file mode 100644 index 0000000..f385cec --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/html-mode/dt @@ -0,0 +1,5 @@ +#contributor : Rodrigo Setti +#name :
...
+#group : list +# -- +
$1
\ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/html-mode/form b/elpa/yasnippet-20160131.948/snippets/html-mode/form new file mode 100644 index 0000000..043a59a --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/html-mode/form @@ -0,0 +1,6 @@ +#contributor : Jimmy Wu +#name :
+# -- +
+ $0 +
\ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/html-mode/html b/elpa/yasnippet-20160131.948/snippets/html-mode/html new file mode 100644 index 0000000..93a0ad7 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/html-mode/html @@ -0,0 +1,6 @@ +#contributor : Jimmy Wu +#name : ... +# -- + + $0 + diff --git a/elpa/yasnippet-20160131.948/snippets/html-mode/html.xmlns b/elpa/yasnippet-20160131.948/snippets/html-mode/html.xmlns new file mode 100644 index 0000000..fd6adc8 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/html-mode/html.xmlns @@ -0,0 +1,6 @@ +#contributor : Jimmy Wu +#name : ... +# -- + + $0 + diff --git a/elpa/yasnippet-20160131.948/snippets/html-mode/link.stylesheet b/elpa/yasnippet-20160131.948/snippets/html-mode/link.stylesheet new file mode 100644 index 0000000..0953396 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/html-mode/link.stylesheet @@ -0,0 +1,4 @@ +#contributor : Jimmy Wu +#name : +# -- + \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/html-mode/link.stylesheet-ie b/elpa/yasnippet-20160131.948/snippets/html-mode/link.stylesheet-ie new file mode 100644 index 0000000..9cf9fec --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/html-mode/link.stylesheet-ie @@ -0,0 +1,6 @@ +#contributor : Jimmy Wu +#name : +# -- + \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/html-mode/mailto b/elpa/yasnippet-20160131.948/snippets/html-mode/mailto new file mode 100644 index 0000000..b134f2c --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/html-mode/mailto @@ -0,0 +1,4 @@ +#contributor : Jimmy Wu +#name :
... +# -- +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/html-mode/meta b/elpa/yasnippet-20160131.948/snippets/html-mode/meta new file mode 100644 index 0000000..6d6fce9 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/html-mode/meta @@ -0,0 +1,5 @@ +#contributor : Jimmy Wu +#group : meta +#name : +# -- + \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/html-mode/meta.http-equiv b/elpa/yasnippet-20160131.948/snippets/html-mode/meta.http-equiv new file mode 100644 index 0000000..8edf4b4 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/html-mode/meta.http-equiv @@ -0,0 +1,5 @@ +#contributor : Jimmy Wu +#name : +#group : meta +# -- + diff --git a/elpa/yasnippet-20160131.948/snippets/html-mode/script.javascript b/elpa/yasnippet-20160131.948/snippets/html-mode/script.javascript new file mode 100644 index 0000000..807f0ea --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/html-mode/script.javascript @@ -0,0 +1,6 @@ +#contributor : Jimmy Wu +#name : +# -- + \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/html-mode/script.javascript-src b/elpa/yasnippet-20160131.948/snippets/html-mode/script.javascript-src new file mode 100644 index 0000000..3e3cc3d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/html-mode/script.javascript-src @@ -0,0 +1,4 @@ +#contributor : Jimmy Wu +#name : +# -- + \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/html-mode/textarea b/elpa/yasnippet-20160131.948/snippets/html-mode/textarea new file mode 100644 index 0000000..9553d7a --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/html-mode/textarea @@ -0,0 +1,4 @@ +#contributor : Jimmy Wu +#name : +# -- + \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/html-mode/th b/elpa/yasnippet-20160131.948/snippets/html-mode/th new file mode 100644 index 0000000..c9f3f8d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/html-mode/th @@ -0,0 +1,5 @@ +#contributor : Jimmy Wu +#name : ... +#group : table +# -- +$2 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/java-mode/apr_assert b/elpa/yasnippet-20160131.948/snippets/java-mode/apr_assert new file mode 100644 index 0000000..a3942be --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/java-mode/apr_assert @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: apr_assert +# key: apr_assert +# -- +if (Globals.useAssertions) { + ${1:assert ..}; +} diff --git a/elpa/yasnippet-20160131.948/snippets/java-mode/assert b/elpa/yasnippet-20160131.948/snippets/java-mode/assert new file mode 100644 index 0000000..686ffea --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/java-mode/assert @@ -0,0 +1,5 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: assert +# key: as +# -- +assert ${1:expression}; \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/java-mode/assertEquals b/elpa/yasnippet-20160131.948/snippets/java-mode/assertEquals new file mode 100644 index 0000000..ce23dae --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/java-mode/assertEquals @@ -0,0 +1,7 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: assertEquals +# key: ae +# group: test +# -- +Assert.assertEquals($1, $2); +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/java-mode/cls b/elpa/yasnippet-20160131.948/snippets/java-mode/cls new file mode 100644 index 0000000..88f534f --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/java-mode/cls @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: cls +# key: cls +# -- +class ${1:Class} { + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/java-mode/constructor b/elpa/yasnippet-20160131.948/snippets/java-mode/constructor new file mode 100644 index 0000000..602e496 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/java-mode/constructor @@ -0,0 +1,7 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: constructor +# key: c +# -- +public ${1:Class} (${2:args}) { + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/java-mode/define test method b/elpa/yasnippet-20160131.948/snippets/java-mode/define test method new file mode 100644 index 0000000..fd9daf6 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/java-mode/define test method @@ -0,0 +1,8 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: define test method +# key: dt +# -- +@Test +public void test${1:Name}() throws Exception { + $0 +} diff --git a/elpa/yasnippet-20160131.948/snippets/java-mode/doc b/elpa/yasnippet-20160131.948/snippets/java-mode/doc new file mode 100644 index 0000000..88f556e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/java-mode/doc @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: doc +# key: /* +# -- +/** + * ${1:documentation} + */ \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/java-mode/equals b/elpa/yasnippet-20160131.948/snippets/java-mode/equals new file mode 100644 index 0000000..e990966 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/java-mode/equals @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: equals +# key: eq +# -- +public boolean equals(${1:Class} other) { + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/java-mode/file_class b/elpa/yasnippet-20160131.948/snippets/java-mode/file_class new file mode 100644 index 0000000..e0a46f6 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/java-mode/file_class @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: file_class +# key: file +# -- +public class ${1:`(file-name-base + (or (buffer-file-name) + (buffer-name)))`} { + $0 +} diff --git a/elpa/yasnippet-20160131.948/snippets/java-mode/for b/elpa/yasnippet-20160131.948/snippets/java-mode/for new file mode 100644 index 0000000..833827b --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/java-mode/for @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: for +# key: for +# -- +for (${1:int i = 0}; ${2:i < N}; ${3:i++}) { + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/java-mode/fori b/elpa/yasnippet-20160131.948/snippets/java-mode/fori new file mode 100644 index 0000000..a417f2c --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/java-mode/fori @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: fori +# key: fori +# -- +for (${1:Object el} : ${2:iterator}) { + $0 +} diff --git a/elpa/yasnippet-20160131.948/snippets/java-mode/getter b/elpa/yasnippet-20160131.948/snippets/java-mode/getter new file mode 100644 index 0000000..747f9f4 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/java-mode/getter @@ -0,0 +1,7 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: getter +# key: g +# -- +public ${1:int} get${2:Field}() { + return ${3:field}; +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/java-mode/if b/elpa/yasnippet-20160131.948/snippets/java-mode/if new file mode 100644 index 0000000..cae545f --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/java-mode/if @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: if +# key: if +# -- +if (${1:condition}) { + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/java-mode/ife b/elpa/yasnippet-20160131.948/snippets/java-mode/ife new file mode 100644 index 0000000..975643f --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/java-mode/ife @@ -0,0 +1,10 @@ +# -*- mode: snippet -*- +# name: ife +# key: ife +# -- +if (${1:cond}) { + $2 +} +else { + $3 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/java-mode/import b/elpa/yasnippet-20160131.948/snippets/java-mode/import new file mode 100644 index 0000000..56235a2 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/java-mode/import @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: import +# key: imp +# -- +import ${1:System.}; +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/java-mode/iterator b/elpa/yasnippet-20160131.948/snippets/java-mode/iterator new file mode 100644 index 0000000..69fb2ac --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/java-mode/iterator @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: iterator +# key: iterator +# -- +public Iterator<${1:type}> iterator() { + $0 +} diff --git a/elpa/yasnippet-20160131.948/snippets/java-mode/javadoc b/elpa/yasnippet-20160131.948/snippets/java-mode/javadoc new file mode 100644 index 0000000..5bc9051 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/java-mode/javadoc @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: javadoc +# key: doc +# -- +/** + * $0 + * + */ \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/java-mode/lambda b/elpa/yasnippet-20160131.948/snippets/java-mode/lambda new file mode 100644 index 0000000..a73a7a5 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/java-mode/lambda @@ -0,0 +1,5 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: lambda +# key: \ +# -- +(${1:args}) -> ${2:expression}; \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/java-mode/main b/elpa/yasnippet-20160131.948/snippets/java-mode/main new file mode 100644 index 0000000..b24e49d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/java-mode/main @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: main +# key: main +# -- +public static void main(String[] args) { + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/java-mode/main_class b/elpa/yasnippet-20160131.948/snippets/java-mode/main_class new file mode 100644 index 0000000..624b31c --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/java-mode/main_class @@ -0,0 +1,11 @@ +# contributor: L. Guruprasad +# name: main_class +# key: main_class +# -- +class `(file-name-nondirectory (file-name-sans-extension (buffer-file-name)))` +{ +public static void main(String args[]) +{ +$0 +} +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/java-mode/method b/elpa/yasnippet-20160131.948/snippets/java-mode/method new file mode 100644 index 0000000..7a6b9ed --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/java-mode/method @@ -0,0 +1,7 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: method +# key: m +# -- +${1:public} ${2:void} ${3:name}(${4:args}) { + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/java-mode/new b/elpa/yasnippet-20160131.948/snippets/java-mode/new new file mode 100644 index 0000000..f06091d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/java-mode/new @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: new +# key: new +# -- +${1:Type} ${2:obj} = new ${3:Constr}(${4:args}); +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/java-mode/override b/elpa/yasnippet-20160131.948/snippets/java-mode/override new file mode 100644 index 0000000..9878c85 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/java-mode/override @@ -0,0 +1,6 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: override +# key: o +# -- +@Override +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/java-mode/param b/elpa/yasnippet-20160131.948/snippets/java-mode/param new file mode 100644 index 0000000..4a1f44d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/java-mode/param @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: param +# key: param +# -- +@param ${1:paramater} $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/java-mode/printf b/elpa/yasnippet-20160131.948/snippets/java-mode/printf new file mode 100644 index 0000000..f93c965 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/java-mode/printf @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: printf +# key: printf +# -- +System.out.printf("$0%n"); \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/java-mode/println b/elpa/yasnippet-20160131.948/snippets/java-mode/println new file mode 100644 index 0000000..7dd8f0d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/java-mode/println @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: println +# key: pr +# -- +System.out.println("${1:text}"); +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/java-mode/return b/elpa/yasnippet-20160131.948/snippets/java-mode/return new file mode 100644 index 0000000..5712e0c --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/java-mode/return @@ -0,0 +1,5 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: return +# key: r +# -- +return $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/java-mode/test b/elpa/yasnippet-20160131.948/snippets/java-mode/test new file mode 100644 index 0000000..a37d115 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/java-mode/test @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: test +# key: test +# -- +@Test +public void test_${1:Case}() { + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/java-mode/testClass b/elpa/yasnippet-20160131.948/snippets/java-mode/testClass new file mode 100644 index 0000000..b01a68f --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/java-mode/testClass @@ -0,0 +1,12 @@ +# -*- mode: snippet -*- +# name: testClass +# key: tc +# -- +import junit.framework.*; +import junit.textui.*; + +public class Test${1:Class} extends TestCase { + protected void setUp() { + $0 + } +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/java-mode/this b/elpa/yasnippet-20160131.948/snippets/java-mode/this new file mode 100644 index 0000000..45201b4 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/java-mode/this @@ -0,0 +1,6 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: this +# key: . +# -- +this.$1 = $1; +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/java-mode/toString b/elpa/yasnippet-20160131.948/snippets/java-mode/toString new file mode 100644 index 0000000..0382a9e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/java-mode/toString @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: toString +# key: toStr +# -- +public String toString() { + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/java-mode/try b/elpa/yasnippet-20160131.948/snippets/java-mode/try new file mode 100644 index 0000000..1a17ba3 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/java-mode/try @@ -0,0 +1,11 @@ +# -*- mode: snippet -*- +# name: try +# key: try +# -- +try { + $0 +} +catch (${1:Throwable e}) { + ${2:System.out.println("Error " + e.getMessage()); + e.printStackTrace();} +} diff --git a/elpa/yasnippet-20160131.948/snippets/java-mode/value b/elpa/yasnippet-20160131.948/snippets/java-mode/value new file mode 100644 index 0000000..7ec38ef --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/java-mode/value @@ -0,0 +1,5 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: value +# key: val +# -- +final ${1:int} ${2:n} = $0; \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/js-mode/al b/elpa/yasnippet-20160131.948/snippets/js-mode/al new file mode 100644 index 0000000..04fbec4 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/js-mode/al @@ -0,0 +1,4 @@ +# -*- mode: snippet -*- +#name : alert +# -- +alert($0); \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/js-mode/class b/elpa/yasnippet-20160131.948/snippets/js-mode/class new file mode 100644 index 0000000..84171bb --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/js-mode/class @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +#name : Class +# -- +var ${1:name} = new Class({ + initialize: function($2) { + $0 + } +}); \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/js-mode/com b/elpa/yasnippet-20160131.948/snippets/js-mode/com new file mode 100644 index 0000000..6179e18 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/js-mode/com @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +#name : comment (/* ... */) +# -- +/* + * $0 + */ \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/js-mode/debugger b/elpa/yasnippet-20160131.948/snippets/js-mode/debugger new file mode 100644 index 0000000..09af6eb --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/js-mode/debugger @@ -0,0 +1,5 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: debugger +# key: dbg +# -- +debugger; \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/js-mode/each b/elpa/yasnippet-20160131.948/snippets/js-mode/each new file mode 100644 index 0000000..74cbddd --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/js-mode/each @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +#name : each +# -- +${1:collection}.each(function($2) { + $0 +}); \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/js-mode/el b/elpa/yasnippet-20160131.948/snippets/js-mode/el new file mode 100644 index 0000000..ac13571 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/js-mode/el @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +#name : else +# -- +else { + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/js-mode/ev.add b/elpa/yasnippet-20160131.948/snippets/js-mode/ev.add new file mode 100644 index 0000000..cf2a7e0 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/js-mode/ev.add @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +#name : addEvent +# -- +addEvent('${1:event}', function($2) { + $0 +}); \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/js-mode/ev.fire b/elpa/yasnippet-20160131.948/snippets/js-mode/ev.fire new file mode 100644 index 0000000..c90e9ed --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/js-mode/ev.fire @@ -0,0 +1,4 @@ +# -*- mode: snippet -*- +#name : fireEvent +# -- +fireEvent('$0') \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/js-mode/for b/elpa/yasnippet-20160131.948/snippets/js-mode/for new file mode 100644 index 0000000..d79ed03 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/js-mode/for @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +#name : for +# -- +for(var ${1:i} = ${2:0}; $1 < ${3:collection}.length; $1++) { + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/js-mode/function b/elpa/yasnippet-20160131.948/snippets/js-mode/function new file mode 100644 index 0000000..8b36e86 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/js-mode/function @@ -0,0 +1,7 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: function +# key: f +# -- +function${1: ${2:name}}(${3:arg}) { + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/js-mode/if b/elpa/yasnippet-20160131.948/snippets/js-mode/if new file mode 100644 index 0000000..7306759 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/js-mode/if @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +#name : if +# -- +if (${1:condition}) { + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/js-mode/init b/elpa/yasnippet-20160131.948/snippets/js-mode/init new file mode 100644 index 0000000..feac58a --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/js-mode/init @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +#name : Constructor +# -- +initialize: function($1) { + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/js-mode/log b/elpa/yasnippet-20160131.948/snippets/js-mode/log new file mode 100644 index 0000000..2f33f4d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/js-mode/log @@ -0,0 +1,4 @@ +# -*- mode: snippet -*- +#name : console.log +# -- +console.log($0); \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/js-mode/multiline-comment b/elpa/yasnippet-20160131.948/snippets/js-mode/multiline-comment new file mode 100644 index 0000000..1d34aed --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/js-mode/multiline-comment @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +#name : multiline-comment +#key: /** +# -- +/** + * $0 + */ \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/js-mode/param-comment b/elpa/yasnippet-20160131.948/snippets/js-mode/param-comment new file mode 100644 index 0000000..e3c9d27 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/js-mode/param-comment @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +#name: param-comment +#key: *@p +#condition: (= (js2-node-type (js2-node-at-point)) js2-COMMENT) +# -- +* @param {${type}} ${comment}. \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/js-mode/req.html b/elpa/yasnippet-20160131.948/snippets/js-mode/req.html new file mode 100644 index 0000000..bc1491f --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/js-mode/req.html @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +#name : html +# -- +new Request.HTML({ + onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) { + $0 + } +}).${1:get}(${2:url}); \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/js-mode/req.json b/elpa/yasnippet-20160131.948/snippets/js-mode/req.json new file mode 100644 index 0000000..36fb03f --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/js-mode/req.json @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +#name : json +# -- +new Request.JSON({ + onSuccess: function(responseJSON, responseText) { + $0 + } +}).${1:send}(${2:url}); \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/js-mode/return-comment b/elpa/yasnippet-20160131.948/snippets/js-mode/return-comment new file mode 100644 index 0000000..fc5dadf --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/js-mode/return-comment @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +#name: return-comment +#key: *@r +#condition: (= (js2-node-type (js2-node-at-point)) js2-COMMENT) +# -- +* @return {${type}} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/js-mode/type-inline-comment b/elpa/yasnippet-20160131.948/snippets/js-mode/type-inline-comment new file mode 100644 index 0000000..ccc9430 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/js-mode/type-inline-comment @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +#name: type-inline-comment +#key: @ty +#condition: (not (= (js2-node-type (js2-node-at-point)) js2-COMMENT)) +# -- +/** @type {${type}} */ \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/js-mode/type-multiline-comment b/elpa/yasnippet-20160131.948/snippets/js-mode/type-multiline-comment new file mode 100644 index 0000000..92d7482 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/js-mode/type-multiline-comment @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +#name: type-inline-comment +#key: *ty +#condition: (= (js2-node-type (js2-node-at-point)) js2-COMMENT) +# -- +* @type {${type}} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/js2-mode b/elpa/yasnippet-20160131.948/snippets/js2-mode new file mode 100644 index 0000000..e69de29 diff --git a/elpa/yasnippet-20160131.948/snippets/latex-mode/acronym b/elpa/yasnippet-20160131.948/snippets/latex-mode/acronym new file mode 100644 index 0000000..ea2314c --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/latex-mode/acronym @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: acronym +# key: ac +# -- +\newacronym{${1:label}}{${1:$(upcase yas-text)}}{${2:Name}} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/latex-mode/alertblock b/elpa/yasnippet-20160131.948/snippets/latex-mode/alertblock new file mode 100644 index 0000000..d259d2b --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/latex-mode/alertblock @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: alertblock +# key: al +# -- +\begin{alertblock}{$2} + $0 +\end{alertblock} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/latex-mode/alg b/elpa/yasnippet-20160131.948/snippets/latex-mode/alg new file mode 100644 index 0000000..24a9c94 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/latex-mode/alg @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: alg +# key: alg +# -- +\begin{algorithmic} +$0 +\end{algorithmic} diff --git a/elpa/yasnippet-20160131.948/snippets/latex-mode/begin b/elpa/yasnippet-20160131.948/snippets/latex-mode/begin new file mode 100644 index 0000000..dabcbe8 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/latex-mode/begin @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: begin +# key: begin +# -- +\begin{${1:environment}} +$0 +\end{$1} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/latex-mode/block b/elpa/yasnippet-20160131.948/snippets/latex-mode/block new file mode 100644 index 0000000..6b16f4b --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/latex-mode/block @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: block +# key: bl +# -- +\begin{block}{$1} + $0 +\end{block} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/latex-mode/capgls b/elpa/yasnippet-20160131.948/snippets/latex-mode/capgls new file mode 100644 index 0000000..d469185 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/latex-mode/capgls @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: Gls +# key: G +# -- +\Gls{${1:label}} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/latex-mode/caption b/elpa/yasnippet-20160131.948/snippets/latex-mode/caption new file mode 100644 index 0000000..98e25fb --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/latex-mode/caption @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: caption +# key: ca +# -- +\caption{$0} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/latex-mode/cite b/elpa/yasnippet-20160131.948/snippets/latex-mode/cite new file mode 100644 index 0000000..2e24838 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/latex-mode/cite @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: cite +# key: c +# -- +\cite{$1} $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/latex-mode/code b/elpa/yasnippet-20160131.948/snippets/latex-mode/code new file mode 100644 index 0000000..cef9570 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/latex-mode/code @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: code +# key: code +# -- +\begin{lstlisting} +$0 +\end{lstlisting} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/latex-mode/columns b/elpa/yasnippet-20160131.948/snippets/latex-mode/columns new file mode 100644 index 0000000..80388f1 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/latex-mode/columns @@ -0,0 +1,13 @@ +# -*- mode: snippet -*- +# name: columns +# key: cols +# -- +\begin{columns} + \begin{column}{.${1:5}\textwidth} + $0 + \end{column} + + \begin{column}{.${2:5}\textwidth} + + \end{column} +\end{columns} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/latex-mode/emph b/elpa/yasnippet-20160131.948/snippets/latex-mode/emph new file mode 100644 index 0000000..36b19d7 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/latex-mode/emph @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: emph +# key: e +# -- +\emph{$1}$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/latex-mode/enumerate b/elpa/yasnippet-20160131.948/snippets/latex-mode/enumerate new file mode 100644 index 0000000..d49ce37 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/latex-mode/enumerate @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: enumerate +# key: enum +# -- +\begin{enumerate} +\item $0 +\end{enumerate} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/latex-mode/figure b/elpa/yasnippet-20160131.948/snippets/latex-mode/figure new file mode 100644 index 0000000..a25d601 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/latex-mode/figure @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: figure +# key: fig +# -- +\begin{figure}[ht] + \centering + \includegraphics[${1:options}]{figures/${2:path.pdf}} + \caption{\label{fig:${3:label}} $0} +\end{figure} diff --git a/elpa/yasnippet-20160131.948/snippets/latex-mode/frac b/elpa/yasnippet-20160131.948/snippets/latex-mode/frac new file mode 100644 index 0000000..b35f8ef --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/latex-mode/frac @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: frac +# key: frac +# -- +\frac{${1:numerator}}{${2:denominator}}$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/latex-mode/frame b/elpa/yasnippet-20160131.948/snippets/latex-mode/frame new file mode 100644 index 0000000..f94357d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/latex-mode/frame @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: frame +# key: fr +# -- +\begin{frame}${1:[$2]} + ${3:\frametitle{$4}} + $0 +\end{frame} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/latex-mode/gls b/elpa/yasnippet-20160131.948/snippets/latex-mode/gls new file mode 100644 index 0000000..c6a7aac --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/latex-mode/gls @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: gls +# key: g +# -- +\gls{${1:label}} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/latex-mode/glspl b/elpa/yasnippet-20160131.948/snippets/latex-mode/glspl new file mode 100644 index 0000000..699927b --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/latex-mode/glspl @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: glspl +# key: gp +# -- +\glspl{${1:label}} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/latex-mode/if b/elpa/yasnippet-20160131.948/snippets/latex-mode/if new file mode 100644 index 0000000..2d80b81 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/latex-mode/if @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: if +# key: if +# -- +\IF {$${1:cond}$} + $0 +\ELSE +\ENDIF diff --git a/elpa/yasnippet-20160131.948/snippets/latex-mode/includegraphics b/elpa/yasnippet-20160131.948/snippets/latex-mode/includegraphics new file mode 100644 index 0000000..d46c9a4 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/latex-mode/includegraphics @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: includegraphics +# key: ig +# -- +\includegraphics${1:[$2]}{$0} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/latex-mode/item b/elpa/yasnippet-20160131.948/snippets/latex-mode/item new file mode 100644 index 0000000..d4773f5 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/latex-mode/item @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: item +# key: - +# -- +\item $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/latex-mode/itemize b/elpa/yasnippet-20160131.948/snippets/latex-mode/itemize new file mode 100644 index 0000000..09a848f --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/latex-mode/itemize @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: itemize +# key: it +# -- +\begin{itemize} +\item $0 +\end{itemize} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/latex-mode/label b/elpa/yasnippet-20160131.948/snippets/latex-mode/label new file mode 100644 index 0000000..96a72b4 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/latex-mode/label @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: label +# key: lab +# -- +\label{$0} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/latex-mode/listing b/elpa/yasnippet-20160131.948/snippets/latex-mode/listing new file mode 100644 index 0000000..3c95b17 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/latex-mode/listing @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: listing +# key: lst +# -- +\begin{lstlisting}[float,label=lst:${1:label},caption=nextHopInfo: ${2:caption}] +$0 +\end{lstlisting} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/latex-mode/movie b/elpa/yasnippet-20160131.948/snippets/latex-mode/movie new file mode 100644 index 0000000..a01d032 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/latex-mode/movie @@ -0,0 +1,15 @@ +# -*- mode: snippet -*- +# name: movie +# key: movie +# -- +\begin{center} +\includemovie[ + label=test, + controls=false, + text={\includegraphics[width=4in]{${1:image.pdf}}} +]{4in}{4in}{${2:video file}} + +\movieref[rate=3]{test}{Play Fast} +\movieref[rate=1]{test}{Play Normal Speed} +\movieref[rate=0.2]{test}{Play Slow} +\movieref[resume]{test}{Pause/Resume} diff --git a/elpa/yasnippet-20160131.948/snippets/latex-mode/newcommand b/elpa/yasnippet-20160131.948/snippets/latex-mode/newcommand new file mode 100644 index 0000000..e9e03ca --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/latex-mode/newcommand @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: newcommand +# key: cmd +# -- +\newcommand{\\${1:name}}${2:[${3:0}]}{$0} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/latex-mode/newglossaryentry b/elpa/yasnippet-20160131.948/snippets/latex-mode/newglossaryentry new file mode 100644 index 0000000..66c964a --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/latex-mode/newglossaryentry @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: newglossaryentry +# key: gl +# -- +\newglossaryentry{${1:AC}}{name=${2:Andrea Crotti}${3:, description=${4:description}}} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/latex-mode/note b/elpa/yasnippet-20160131.948/snippets/latex-mode/note new file mode 100644 index 0000000..1122d7a --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/latex-mode/note @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: note +# key: no +# -- +\note{$0} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/latex-mode/python b/elpa/yasnippet-20160131.948/snippets/latex-mode/python new file mode 100644 index 0000000..0ba0fc4 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/latex-mode/python @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: python +# key: py +# -- +\lstset{language=python} +\begin[language=python]{lstlisting} +$0 +\end{lstlisting} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/latex-mode/question b/elpa/yasnippet-20160131.948/snippets/latex-mode/question new file mode 100644 index 0000000..235eb59 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/latex-mode/question @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: question +# key: q +# -- +\question{$0} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/latex-mode/section b/elpa/yasnippet-20160131.948/snippets/latex-mode/section new file mode 100644 index 0000000..88faeab --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/latex-mode/section @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: section +# key: sec +# -- +\section{${1:name}} +\label{sec:${2:label}} + +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/latex-mode/subf b/elpa/yasnippet-20160131.948/snippets/latex-mode/subf new file mode 100644 index 0000000..0497748 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/latex-mode/subf @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: subf +# key: sf +# -- +\subfigure[${1:caption}]{ + \label{fig:${2:label}} + \includegraphics[width=.${3:3}\textwidth]{${4:path}}} +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/latex-mode/subfigure b/elpa/yasnippet-20160131.948/snippets/latex-mode/subfigure new file mode 100644 index 0000000..e93678b --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/latex-mode/subfigure @@ -0,0 +1,13 @@ +# -*- mode: snippet -*- +# name: subfigure +# key: subfig +# -- +\begin{figure}[ht] + \centering + \subfigure[$1] + {\label{fig:${2:label}} + \includegraphics[width=.${3:5}\textwidth]{${4:path}}} + + \caption{${5:caption}} +\label{fig:${6:label}} +\end{figure} diff --git a/elpa/yasnippet-20160131.948/snippets/latex-mode/subsec b/elpa/yasnippet-20160131.948/snippets/latex-mode/subsec new file mode 100644 index 0000000..5658494 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/latex-mode/subsec @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: subsec +# key: sub +# -- +\subsection{${1:name}} +\label{subsec:${2:label}} + +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/latex-mode/textbf b/elpa/yasnippet-20160131.948/snippets/latex-mode/textbf new file mode 100644 index 0000000..84171d7 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/latex-mode/textbf @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: textbf +# key: b +# -- +\textbf{$1}$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/latex-mode/usepackage b/elpa/yasnippet-20160131.948/snippets/latex-mode/usepackage new file mode 100644 index 0000000..2afd38b --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/latex-mode/usepackage @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: usepackage +# key: pkg +# -- +\usepackage{$0} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/lisp-interaction-mode/defun b/elpa/yasnippet-20160131.948/snippets/lisp-interaction-mode/defun new file mode 100644 index 0000000..5cf3d68 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/lisp-interaction-mode/defun @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: defun +# key: defun +# -- +(defun ${1:fun} (${2:args}) + $0 +) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/lisp-mode/class b/elpa/yasnippet-20160131.948/snippets/lisp-mode/class new file mode 100644 index 0000000..bc5eec9 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/lisp-mode/class @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: class +# key: cls +# -- +(defclass ${1:name} (${2:inherits}) + (${4:slot}) + (:documentation "${3:doc}")) +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/lisp-mode/comment b/elpa/yasnippet-20160131.948/snippets/lisp-mode/comment new file mode 100644 index 0000000..107fad9 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/lisp-mode/comment @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: comment +# key: /* +# -- +#|${1:type the comment here}|# +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/lisp-mode/defpackage b/elpa/yasnippet-20160131.948/snippets/lisp-mode/defpackage new file mode 100644 index 0000000..2e44ac2 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/lisp-mode/defpackage @@ -0,0 +1,10 @@ +# -*- mode: snippet -*- +# name: defpackage +# key: defp +# -- +(defpackage #:${1:name} + (:nicknames #:${2:nick}) + (:use #:cl #:closer-mop #:${3:package}) + (:shadow :${4.symbol}) + (:shadowing-import-from #:${5:package} #:${6:symbol}) + (:export :$0)) diff --git a/elpa/yasnippet-20160131.948/snippets/lisp-mode/do b/elpa/yasnippet-20160131.948/snippets/lisp-mode/do new file mode 100644 index 0000000..6f90064 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/lisp-mode/do @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: do +# key: do +# -- +(do ((${1:var1} ${2:init-form} ${3:step-form}) + (${4:var2} ${5:init-form} ${6:step-form})) + (${7:condition} ${8:return-value}) + (${9:body})) +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/lisp-mode/for b/elpa/yasnippet-20160131.948/snippets/lisp-mode/for new file mode 100644 index 0000000..de8f644 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/lisp-mode/for @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: do +# key: for +# -- +(dotimes (${1:var} ${2:count-form}) + ${3:body}) +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/lisp-mode/foreach b/elpa/yasnippet-20160131.948/snippets/lisp-mode/foreach new file mode 100644 index 0000000..a993bf1 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/lisp-mode/foreach @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: do +# key: foreach +# -- +(dolist (${1:var} ${2:list-form}) + ${3:body}) +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/lisp-mode/format b/elpa/yasnippet-20160131.948/snippets/lisp-mode/format new file mode 100644 index 0000000..d4f10ad --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/lisp-mode/format @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: format +# key: print +# -- +(format t "~& $0 ~%") diff --git a/elpa/yasnippet-20160131.948/snippets/lisp-mode/if b/elpa/yasnippet-20160131.948/snippets/lisp-mode/if new file mode 100644 index 0000000..cd57e3d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/lisp-mode/if @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: if +# key: if +# -- +(when (${1:condition}) + (${2:then-do-this})) +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/lisp-mode/ifelse b/elpa/yasnippet-20160131.948/snippets/lisp-mode/ifelse new file mode 100644 index 0000000..91854d8 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/lisp-mode/ifelse @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: ifelse (...) (...) (...) ... +# key: ifelse +# -- + +(if (${1:condition}) + (${2:then}) + (${3:else})) +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/lisp-mode/ifnot b/elpa/yasnippet-20160131.948/snippets/lisp-mode/ifnot new file mode 100644 index 0000000..467636e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/lisp-mode/ifnot @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: ifnot (...) (...) ... +# key: ifnot +# -- + +(unless (${1:condition}) + (${2:then-do-this})) +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/lisp-mode/slot b/elpa/yasnippet-20160131.948/snippets/lisp-mode/slot new file mode 100644 index 0000000..2a51f64 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/lisp-mode/slot @@ -0,0 +1,13 @@ +# -*- mode: snippet -*- +# name: slot +# key: slot +# -- +(${1:name} :initarg :${1:$(yas/substr yas-text "[^: ]*")} + :initform (error ":${1:$(yas/substr yas-text "[^: ]*")} must be specified") + ;; :accessor ${1:$(yas/substr yas-text "[^: ]*")} + :reader ${1:$(yas/substr yas-text "[^: ]*")}-changed + :writer set-${1:$(yas/substr yas-text "[^: ]*")} + :type + :allocation ${3::class :instance} + :documentation "${2:about-slot}") +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/lisp-mode/switch b/elpa/yasnippet-20160131.948/snippets/lisp-mode/switch new file mode 100644 index 0000000..6d002dd --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/lisp-mode/switch @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: switch +# key: switch +# -- + +(cond (${1:case1} (${2:do-this})) + (${3:case2} (${4:do-this})) + (t ${5:default})) +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/lisp-mode/typecast b/elpa/yasnippet-20160131.948/snippets/lisp-mode/typecast new file mode 100644 index 0000000..4856e93 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/lisp-mode/typecast @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: typecast +# name: cast +# -- +(coerce ${1:object} ${2:type}) +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/lua-mode/fun b/elpa/yasnippet-20160131.948/snippets/lua-mode/fun new file mode 100644 index 0000000..f2cc839 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/lua-mode/fun @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: fun +# key: fun +# -- +function () + ${1:return something} +end \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/m4-mode/def b/elpa/yasnippet-20160131.948/snippets/m4-mode/def new file mode 100644 index 0000000..2cc90cb --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/m4-mode/def @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: def +# key: def +# -- +define(\`${1:macro}',\`${2:subst}'). +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/makefile-automake-mode/noinst_HEADERS b/elpa/yasnippet-20160131.948/snippets/makefile-automake-mode/noinst_HEADERS new file mode 100644 index 0000000..ab0a30b --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/makefile-automake-mode/noinst_HEADERS @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: noinst_HEADERS +# key: noinst +# -- +noinst_HEADERS = $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/makefile-bsdmake-mode/PHONY b/elpa/yasnippet-20160131.948/snippets/makefile-bsdmake-mode/PHONY new file mode 100644 index 0000000..9652539 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/makefile-bsdmake-mode/PHONY @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: PHONY +# key: phony +# -- +.PHONY: $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/makefile-bsdmake-mode/echo b/elpa/yasnippet-20160131.948/snippets/makefile-bsdmake-mode/echo new file mode 100644 index 0000000..d772a6e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/makefile-bsdmake-mode/echo @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: echo +# key: echo +# -- +@echo ${1:"message to output"} diff --git a/elpa/yasnippet-20160131.948/snippets/makefile-bsdmake-mode/gen b/elpa/yasnippet-20160131.948/snippets/makefile-bsdmake-mode/gen new file mode 100644 index 0000000..2b5e466 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/makefile-bsdmake-mode/gen @@ -0,0 +1,11 @@ +# -*- mode: snippet -*- +# name: gen +# key: gen +# possibly add some smart control over the list +# -- +all: ${1:targets} + +$0 + +clean: + ${2:clean actions} diff --git a/elpa/yasnippet-20160131.948/snippets/makefile-bsdmake-mode/if b/elpa/yasnippet-20160131.948/snippets/makefile-bsdmake-mode/if new file mode 100644 index 0000000..2e623f0 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/makefile-bsdmake-mode/if @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: if +# key: if +# -- +@if [ ${1:cond} ] + then $0 +fi diff --git a/elpa/yasnippet-20160131.948/snippets/makefile-bsdmake-mode/var b/elpa/yasnippet-20160131.948/snippets/makefile-bsdmake-mode/var new file mode 100644 index 0000000..196f4d9 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/makefile-bsdmake-mode/var @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: var +# key: $ +# -- +$(${1:VAR})$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/abspath b/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/abspath new file mode 100644 index 0000000..e02c55c --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/abspath @@ -0,0 +1,6 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: abspath +# contributor: gbalats +# key: abs +# -- +\$(abspath ${1:\$(${2:paths})})$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/addprefix b/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/addprefix new file mode 100644 index 0000000..2edc1e3 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/addprefix @@ -0,0 +1,6 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: addprefix +# contributor: gbalats +# key: ap +# -- +\$(addprefix ${1:\$(${2:dir})/},${3:\$(${4:items})})$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/addsuffix b/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/addsuffix new file mode 100644 index 0000000..6a3ebe4 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/addsuffix @@ -0,0 +1,6 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: addsuffix +# contributor: gbalats +# key: as +# -- +\$(addsuffix ${1:.suffix},${2:\$(${3:items})})$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/dir b/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/dir new file mode 100644 index 0000000..bc3561b --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/dir @@ -0,0 +1,6 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: dir +# contributor: gbalats +# key: d +# -- +\$(dir ${1:\$(${2:paths})})$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/make b/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/make new file mode 100644 index 0000000..16c49ce --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/make @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: make +# contributor: gbalats +# key: make +# -- +\$(MAKE) --directory=${1:\$@} +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/notdir b/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/notdir new file mode 100644 index 0000000..d5e82d5 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/notdir @@ -0,0 +1,6 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: notdir +# contributor: gbalats +# key: nd +# -- +\$(notdir ${1:\$(${2:paths})})$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/patsubst b/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/patsubst new file mode 100644 index 0000000..a966757 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/patsubst @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: patsubst +# key: ps +# -- +$(patsubst ${1:from},${2:to},${3:src}) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/phony b/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/phony new file mode 100644 index 0000000..8da99d7 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/phony @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: phony +# key: ph +# -- +.PHONY = $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/shell b/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/shell new file mode 100644 index 0000000..b550475 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/shell @@ -0,0 +1,5 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: shell +# key: sh +# -- +\$(shell ${1:command})$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/special b/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/special new file mode 100644 index 0000000..775021f --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/special @@ -0,0 +1,6 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: special targets +# contributor: gbalats +# key: . +# -- +.${1:PHONY$(upcase yas-text)}: $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/template b/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/template new file mode 100644 index 0000000..285624d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/template @@ -0,0 +1,10 @@ +# -*- mode: snippet -*- +# name: template +# contributor: gbalats +# binding: C-c C-t +# -- +define ${1:PROGRAM$(upcase yas-text)}_template +$0 +endef + +\$(foreach ${2:${1:$(downcase yas-text)}},\$(${3:$1S}),\$(eval \$(call $1_template,\$($2)))) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/wildcard b/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/wildcard new file mode 100644 index 0000000..c91dc9c --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/wildcard @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: wildcard +# key: wl +# -- +$(wildcard $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/makefile-mode/all b/elpa/yasnippet-20160131.948/snippets/makefile-mode/all new file mode 100644 index 0000000..823886f --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/makefile-mode/all @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: all +# key: all +# -- +all: + $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/makefile-mode/clean b/elpa/yasnippet-20160131.948/snippets/makefile-mode/clean new file mode 100644 index 0000000..7ade5eb --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/makefile-mode/clean @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: clean +# contributor: gbalats +# expand-env: ((yas-indent-line 'fixed)) +# key: cl +# -- +clean: + ${1:rm -r ${2:\$(${3:OUTDIR})}} +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/malabar-mode/variable b/elpa/yasnippet-20160131.948/snippets/malabar-mode/variable new file mode 100644 index 0000000..16ec628 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/malabar-mode/variable @@ -0,0 +1,5 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: variable +# key: var +# -- +${1:int} ${2:n} = $0; \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/markdown-mode/+ b/elpa/yasnippet-20160131.948/snippets/markdown-mode/+ new file mode 100644 index 0000000..0407169 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/markdown-mode/+ @@ -0,0 +1,5 @@ +#name : Unordered List +#contributor: Peng Deng +# -- ++ ${1:Text} ++$0 diff --git a/elpa/yasnippet-20160131.948/snippets/markdown-mode/- b/elpa/yasnippet-20160131.948/snippets/markdown-mode/- new file mode 100644 index 0000000..9d5c51d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/markdown-mode/- @@ -0,0 +1,5 @@ +#name : Unordered List +#contributor: Peng Deng +# -- +- ${1:Text} +-$0 diff --git a/elpa/yasnippet-20160131.948/snippets/markdown-mode/_ b/elpa/yasnippet-20160131.948/snippets/markdown-mode/_ new file mode 100644 index 0000000..50ab476 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/markdown-mode/_ @@ -0,0 +1,4 @@ +#name : Emphasis +#contributor: Peng Deng +# -- +_${1:Text}_ $0 diff --git a/elpa/yasnippet-20160131.948/snippets/markdown-mode/__ b/elpa/yasnippet-20160131.948/snippets/markdown-mode/__ new file mode 100644 index 0000000..b6304f3 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/markdown-mode/__ @@ -0,0 +1,4 @@ +#name : Strong +#contributor: Peng Deng +# -- +**${1:Text}** $0 diff --git a/elpa/yasnippet-20160131.948/snippets/markdown-mode/` b/elpa/yasnippet-20160131.948/snippets/markdown-mode/` new file mode 100644 index 0000000..ae58211 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/markdown-mode/` @@ -0,0 +1,4 @@ +#name : Inline Code +#contributor: Peng Deng +# -- +\`${1:Code}\` $0 diff --git a/elpa/yasnippet-20160131.948/snippets/markdown-mode/h1.1 b/elpa/yasnippet-20160131.948/snippets/markdown-mode/h1.1 new file mode 100644 index 0000000..8bb7ea2 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/markdown-mode/h1.1 @@ -0,0 +1,6 @@ +#name : Header 1 (#) +#contributor: Peng Deng +# -- +# ${1:Header 1} # + +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/markdown-mode/h1.2 b/elpa/yasnippet-20160131.948/snippets/markdown-mode/h1.2 new file mode 100644 index 0000000..57b178d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/markdown-mode/h1.2 @@ -0,0 +1,7 @@ +#name : Header 1 (=) +#contributor: Peng Deng +# -- +${1:Header 1} +${1:$(make-string (string-width yas-text) ?\=)} + +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/markdown-mode/h2.1 b/elpa/yasnippet-20160131.948/snippets/markdown-mode/h2.1 new file mode 100644 index 0000000..bfee3fc --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/markdown-mode/h2.1 @@ -0,0 +1,6 @@ +#name : Header 2 (##) +#contributor: Peng Deng +# -- +## ${1:Header 1} ## + +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/markdown-mode/h2.2 b/elpa/yasnippet-20160131.948/snippets/markdown-mode/h2.2 new file mode 100644 index 0000000..8f94c73 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/markdown-mode/h2.2 @@ -0,0 +1,7 @@ +#name : Header 2 (-) +#contributor: Peng Deng +# -- +${1:Header 2} +${1:$(make-string (string-width yas-text) ?\-)} + +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/markdown-mode/h3 b/elpa/yasnippet-20160131.948/snippets/markdown-mode/h3 new file mode 100644 index 0000000..44a6104 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/markdown-mode/h3 @@ -0,0 +1,6 @@ +#name : Header 3 +#contributor: Peng Deng +# -- +### ${1:Header 3} ### + +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/markdown-mode/h4 b/elpa/yasnippet-20160131.948/snippets/markdown-mode/h4 new file mode 100644 index 0000000..315140a --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/markdown-mode/h4 @@ -0,0 +1,6 @@ +#name : Header 4 +#contributor: Peng Deng +# -- +#### ${1:Header 4} #### + +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/markdown-mode/h5 b/elpa/yasnippet-20160131.948/snippets/markdown-mode/h5 new file mode 100644 index 0000000..f50a785 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/markdown-mode/h5 @@ -0,0 +1,6 @@ +#name : Header 5 +#contributor: Peng Deng +# -- +##### ${1:Header 5} ##### + +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/markdown-mode/h6 b/elpa/yasnippet-20160131.948/snippets/markdown-mode/h6 new file mode 100644 index 0000000..1cdfebb --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/markdown-mode/h6 @@ -0,0 +1,6 @@ +#name : Header 6 +#contributor: Peng Deng +# -- +###### ${1:Header 6} ###### + +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/markdown-mode/highlight b/elpa/yasnippet-20160131.948/snippets/markdown-mode/highlight new file mode 100644 index 0000000..f1bce71 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/markdown-mode/highlight @@ -0,0 +1,6 @@ +#name : Highlight +#contributor: nguyenvinhlinh +# -- +{% highlight ${1:language} %} +${0:content} +{% endhighlight %} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/markdown-mode/hr.1 b/elpa/yasnippet-20160131.948/snippets/markdown-mode/hr.1 new file mode 100644 index 0000000..5fbe4f4 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/markdown-mode/hr.1 @@ -0,0 +1,7 @@ +#name : Horizontal Rule (-) +#contributor: Peng Deng +# -- + +---------- + +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/markdown-mode/hr.2 b/elpa/yasnippet-20160131.948/snippets/markdown-mode/hr.2 new file mode 100644 index 0000000..2d4de22 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/markdown-mode/hr.2 @@ -0,0 +1,7 @@ +#name : Horizontal Rule (*) +#contributor: Peng Deng +# -- + +******* + +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/markdown-mode/img b/elpa/yasnippet-20160131.948/snippets/markdown-mode/img new file mode 100644 index 0000000..69ee77d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/markdown-mode/img @@ -0,0 +1,4 @@ +#name : Image +#contributor: Peng Deng +# -- +![${1:Alt Text}](${2:URL} $3) $0 diff --git a/elpa/yasnippet-20160131.948/snippets/markdown-mode/link b/elpa/yasnippet-20160131.948/snippets/markdown-mode/link new file mode 100644 index 0000000..dd7f99b --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/markdown-mode/link @@ -0,0 +1,4 @@ +#name : Link +#contributor: Peng Deng +# -- +[${1:Link Text}](${2:URL} $3) $0 diff --git a/elpa/yasnippet-20160131.948/snippets/markdown-mode/ol b/elpa/yasnippet-20160131.948/snippets/markdown-mode/ol new file mode 100644 index 0000000..c8e3970 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/markdown-mode/ol @@ -0,0 +1,5 @@ +#name : Ordered List +#contributor: Peng Deng +# -- +${1:1}. ${2:Text} +${1:$(number-to-string (1+ (string-to-number yas-text)))}. $0 diff --git a/elpa/yasnippet-20160131.948/snippets/markdown-mode/rimg b/elpa/yasnippet-20160131.948/snippets/markdown-mode/rimg new file mode 100644 index 0000000..caafb60 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/markdown-mode/rimg @@ -0,0 +1,4 @@ +#name : Referenced Image +#contributor: Peng Deng +# -- +![${1:Alt Text}][$2] $0 diff --git a/elpa/yasnippet-20160131.948/snippets/markdown-mode/rlb b/elpa/yasnippet-20160131.948/snippets/markdown-mode/rlb new file mode 100644 index 0000000..681d9f0 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/markdown-mode/rlb @@ -0,0 +1,5 @@ +#name : Reference Label +#contributor: Peng Deng +# -- +[${1:Reference}]: ${2:URL} $3 +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/markdown-mode/rlink b/elpa/yasnippet-20160131.948/snippets/markdown-mode/rlink new file mode 100644 index 0000000..e35a0c0 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/markdown-mode/rlink @@ -0,0 +1,4 @@ +#name : Reference Link +#contributor: Peng Deng +# -- +[${1:Link Text}][$2] $0 diff --git a/elpa/yasnippet-20160131.948/snippets/markdown-mode/utf8 b/elpa/yasnippet-20160131.948/snippets/markdown-mode/utf8 new file mode 100644 index 0000000..b21c56f --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/markdown-mode/utf8 @@ -0,0 +1,6 @@ +# name: utf-8 encoding +# key: utf8 +# contributor: Thiago Perrotta +# -- + +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/ned-mode/.yas-parents b/elpa/yasnippet-20160131.948/snippets/ned-mode/.yas-parents new file mode 100644 index 0000000..0539988 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/ned-mode/.yas-parents @@ -0,0 +1 @@ +prog-mode \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/ned-mode/chan b/elpa/yasnippet-20160131.948/snippets/ned-mode/chan new file mode 100644 index 0000000..b1dda9a --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/ned-mode/chan @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: chan +# key: chan +# -- +channel Channel extends ${1:ned.DelayChannel} { + $0 +} diff --git a/elpa/yasnippet-20160131.948/snippets/ned-mode/connections b/elpa/yasnippet-20160131.948/snippets/ned-mode/connections new file mode 100644 index 0000000..a731e88 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/ned-mode/connections @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: connections +# key: conn +# -- +connections${1: allowunconnected}: + $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/ned-mode/for b/elpa/yasnippet-20160131.948/snippets/ned-mode/for new file mode 100644 index 0000000..62ed072 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/ned-mode/for @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: for +# key: for +# -- +for ${1:i}=${2:0}..${3:sizeof(port)-1} { + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/ned-mode/import b/elpa/yasnippet-20160131.948/snippets/ned-mode/import new file mode 100644 index 0000000..47aa063 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/ned-mode/import @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: import +# key: imp +# -- +import ned.${1:Package}; \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/ned-mode/network b/elpa/yasnippet-20160131.948/snippets/ned-mode/network new file mode 100644 index 0000000..a7691e3 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/ned-mode/network @@ -0,0 +1,11 @@ +# -*- mode: snippet -*- +# name: network +# key: net +# -- +network ${1:Name} +{ + submodules: + $2 + connections: + $3 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/ned-mode/simple b/elpa/yasnippet-20160131.948/snippets/ned-mode/simple new file mode 100644 index 0000000..7db2698 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/ned-mode/simple @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: simple +# key: simple +# -- +simple ${1:Component}${2: extends ${3:Component}} +{ + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/ned-mode/submodules b/elpa/yasnippet-20160131.948/snippets/ned-mode/submodules new file mode 100644 index 0000000..46c1612 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/ned-mode/submodules @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: submodules +# key: sub +# -- +submodules: + $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nesc-mode/.yas-parents b/elpa/yasnippet-20160131.948/snippets/nesc-mode/.yas-parents new file mode 100644 index 0000000..2fa94cd --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nesc-mode/.yas-parents @@ -0,0 +1 @@ +text-mode cc-mode \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nesc-mode/TOSSIM b/elpa/yasnippet-20160131.948/snippets/nesc-mode/TOSSIM new file mode 100644 index 0000000..a7d6edb --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nesc-mode/TOSSIM @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: TOSSIM +# key: tossim +# -- +#ifndef TOSSIM + $0 +#endif \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nesc-mode/command b/elpa/yasnippet-20160131.948/snippets/nesc-mode/command new file mode 100644 index 0000000..314e7a0 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nesc-mode/command @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: command +# key: command +# -- +command ${1:void} ${2:naMe}($3) { + +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nesc-mode/dbg b/elpa/yasnippet-20160131.948/snippets/nesc-mode/dbg new file mode 100644 index 0000000..ab9b580 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nesc-mode/dbg @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: dbg +# key: dbg +# -- +dbg("${1:Module}", "${2:message}"${3:, ${4:var list}}); \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nesc-mode/event b/elpa/yasnippet-20160131.948/snippets/nesc-mode/event new file mode 100644 index 0000000..1cdc257 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nesc-mode/event @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: event +# key: event +# -- +event ${1:void} ${2:On.Event}($3) { + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nesc-mode/ifdef b/elpa/yasnippet-20160131.948/snippets/nesc-mode/ifdef new file mode 100644 index 0000000..dbe1a29 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nesc-mode/ifdef @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: ifdef +# key: ifdef +# -- +#ifdef ${1:Macro} + $2 +${3:#else} + $4 +#endif \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nesc-mode/interface b/elpa/yasnippet-20160131.948/snippets/nesc-mode/interface new file mode 100644 index 0000000..495a6c4 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nesc-mode/interface @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: interface +# key: int +# -- +interface ${1:Interface} { + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nesc-mode/module b/elpa/yasnippet-20160131.948/snippets/nesc-mode/module new file mode 100644 index 0000000..477f49e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nesc-mode/module @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: module +# key: mod +# -- +module ${1:Module} { + ${2:uses interface ${3:Packet}}; + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nesc-mode/nx b/elpa/yasnippet-20160131.948/snippets/nesc-mode/nx new file mode 100644 index 0000000..38da916 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nesc-mode/nx @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: nx +# key: nx +# -- +nx_uint${1:8}_t ${2:var}; +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nesc-mode/provides b/elpa/yasnippet-20160131.948/snippets/nesc-mode/provides new file mode 100644 index 0000000..175b621 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nesc-mode/provides @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: provides +# key: provides +# -- +provides interface ${1:Interface}; \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nesc-mode/sim b/elpa/yasnippet-20160131.948/snippets/nesc-mode/sim new file mode 100644 index 0000000..cd77218 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nesc-mode/sim @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: sim +# key: sim +# -- +#ifdef TOSSIM + $0 +#endif \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nesc-mode/uint8_t b/elpa/yasnippet-20160131.948/snippets/nesc-mode/uint8_t new file mode 100644 index 0000000..eb0144e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nesc-mode/uint8_t @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: uint8_t +# key: u8 +# -- +uint8_t ${1:var}; +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nesc-mode/uses b/elpa/yasnippet-20160131.948/snippets/nesc-mode/uses new file mode 100644 index 0000000..cbb977d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nesc-mode/uses @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: uses +# key: uses +# -- +uses interface ${1:Interface}${2: as ${3:alias}}; +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nsis-mode/.yas-parents b/elpa/yasnippet-20160131.948/snippets/nsis-mode/.yas-parents new file mode 100644 index 0000000..0539988 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nsis-mode/.yas-parents @@ -0,0 +1 @@ +prog-mode \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nsis-mode/define b/elpa/yasnippet-20160131.948/snippets/nsis-mode/define new file mode 100644 index 0000000..223d364 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nsis-mode/define @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: define +# key: def +# -- +!define ${1:CONSTANT} ${2:value} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nsis-mode/function b/elpa/yasnippet-20160131.948/snippets/nsis-mode/function new file mode 100644 index 0000000..22926eb --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nsis-mode/function @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: function +# key: fun +# -- +Function ${1:Name} + $0 +FunctionEnd \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nsis-mode/if b/elpa/yasnippet-20160131.948/snippets/nsis-mode/if new file mode 100644 index 0000000..da3e92f --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nsis-mode/if @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: if +# key: if +# -- +${IF} ${1:cond} + $0 +${ElseIf} ${2:else_cond} + +${EndIf} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nsis-mode/include b/elpa/yasnippet-20160131.948/snippets/nsis-mode/include new file mode 100644 index 0000000..a7e0f24 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nsis-mode/include @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: include +# key: inc +# -- +!include "${Library.nsh}" \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nsis-mode/insert_macro b/elpa/yasnippet-20160131.948/snippets/nsis-mode/insert_macro new file mode 100644 index 0000000..451dbb6 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nsis-mode/insert_macro @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: insert_macro +# key: im +# -- +!insermacro ${1:Name} ${2:"args"} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nsis-mode/instdir b/elpa/yasnippet-20160131.948/snippets/nsis-mode/instdir new file mode 100644 index 0000000..f5b14bc --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nsis-mode/instdir @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: instdir +# key: $ +# -- +$INSTDIR \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nsis-mode/macro b/elpa/yasnippet-20160131.948/snippets/nsis-mode/macro new file mode 100644 index 0000000..0316183 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nsis-mode/macro @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: macro +# key: macro +# -- +!macro ${1:Name} UN +$0 + +!macroend \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nsis-mode/message b/elpa/yasnippet-20160131.948/snippets/nsis-mode/message new file mode 100644 index 0000000..37de365 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nsis-mode/message @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: message +# key: msg +# -- +MessageBox MB_OK "${1:hello}" \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nsis-mode/outdir b/elpa/yasnippet-20160131.948/snippets/nsis-mode/outdir new file mode 100644 index 0000000..234b74d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nsis-mode/outdir @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: outdir +# key: $ +# -- +$OUTDIR \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nsis-mode/outfile b/elpa/yasnippet-20160131.948/snippets/nsis-mode/outfile new file mode 100644 index 0000000..14abffc --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nsis-mode/outfile @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: outfile +# key: out +# -- +outFile "${1:setup}.exe" \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nsis-mode/section b/elpa/yasnippet-20160131.948/snippets/nsis-mode/section new file mode 100644 index 0000000..5f0556e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nsis-mode/section @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: section +# key: sec +# -- +Section "${1:Program}" + $0 +SectionEnd \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nxml-mode/body b/elpa/yasnippet-20160131.948/snippets/nxml-mode/body new file mode 100644 index 0000000..9a9addc --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nxml-mode/body @@ -0,0 +1,6 @@ +#contributor : Anders Bach Nielsen +#name : ... +# -- + + $0 + \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nxml-mode/br b/elpa/yasnippet-20160131.948/snippets/nxml-mode/br new file mode 100644 index 0000000..3e235ed --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nxml-mode/br @@ -0,0 +1,4 @@ +#contributor : Anders Bach Nielsen +#name :
+# -- +
\ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nxml-mode/doctype b/elpa/yasnippet-20160131.948/snippets/nxml-mode/doctype new file mode 100644 index 0000000..3fdcf17 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nxml-mode/doctype @@ -0,0 +1,5 @@ +#contributor : Anders Bach Nielsen +#name : DocType XHTML 1.1 +#group : meta +# -- + \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nxml-mode/doctype_xhtml1_strict b/elpa/yasnippet-20160131.948/snippets/nxml-mode/doctype_xhtml1_strict new file mode 100644 index 0000000..eca5860 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nxml-mode/doctype_xhtml1_strict @@ -0,0 +1,5 @@ +#contributor : Anders Bach Nielsen +#name : DocType XHTML 1.0 Strict +#group : meta +# -- + \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nxml-mode/doctype_xhtml1_transitional b/elpa/yasnippet-20160131.948/snippets/nxml-mode/doctype_xhtml1_transitional new file mode 100644 index 0000000..fba232a --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nxml-mode/doctype_xhtml1_transitional @@ -0,0 +1,5 @@ +#contributor : Anders Bach Nielsen +#name : DocType XHTML 1.0 Transitional +#group : meta +# -- + \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nxml-mode/form b/elpa/yasnippet-20160131.948/snippets/nxml-mode/form new file mode 100644 index 0000000..a83c4f9 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nxml-mode/form @@ -0,0 +1,6 @@ +#contributor : Anders Bach Nielsen +#name :
+# -- +
+ $0 +
\ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nxml-mode/href b/elpa/yasnippet-20160131.948/snippets/nxml-mode/href new file mode 100644 index 0000000..f0e5c9b --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nxml-mode/href @@ -0,0 +1,5 @@ +#contributor : Anders Bach Nielsen +#name : ... +#key: a +# -- +$2 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nxml-mode/html b/elpa/yasnippet-20160131.948/snippets/nxml-mode/html new file mode 100644 index 0000000..fdcb784 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nxml-mode/html @@ -0,0 +1,6 @@ +#contributor : Anders Bach Nielsen +#name : ... +# -- + + $0 + diff --git a/elpa/yasnippet-20160131.948/snippets/nxml-mode/img b/elpa/yasnippet-20160131.948/snippets/nxml-mode/img new file mode 100644 index 0000000..442d679 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nxml-mode/img @@ -0,0 +1,4 @@ +#contributor : Anders Bach Nielsen +#name : ... +# -- +$2 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nxml-mode/input b/elpa/yasnippet-20160131.948/snippets/nxml-mode/input new file mode 100644 index 0000000..56cfc09 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nxml-mode/input @@ -0,0 +1,4 @@ +#contributor : Anders Bach Nielsen +#name : +# -- + \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nxml-mode/link b/elpa/yasnippet-20160131.948/snippets/nxml-mode/link new file mode 100644 index 0000000..d16475a --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nxml-mode/link @@ -0,0 +1,4 @@ +#contributor : Anders Bach Nielsen +#name : +# -- + \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nxml-mode/meta b/elpa/yasnippet-20160131.948/snippets/nxml-mode/meta new file mode 100644 index 0000000..71b20b1 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nxml-mode/meta @@ -0,0 +1,5 @@ +#contributor : Anders Bach Nielsen +#name : +#group : meta +# -- + \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nxml-mode/name b/elpa/yasnippet-20160131.948/snippets/nxml-mode/name new file mode 100644 index 0000000..a7683d5 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nxml-mode/name @@ -0,0 +1,4 @@ +#contributor : Anders Bach Nielsen +#name : +# -- + \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nxml-mode/quote b/elpa/yasnippet-20160131.948/snippets/nxml-mode/quote new file mode 100644 index 0000000..5e17c98 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nxml-mode/quote @@ -0,0 +1,6 @@ +#contributor : Anders Bach Nielsen +#name :
...
+# -- +
+ $1 +
\ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nxml-mode/style b/elpa/yasnippet-20160131.948/snippets/nxml-mode/style new file mode 100644 index 0000000..1f462cd --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nxml-mode/style @@ -0,0 +1,6 @@ +#contributor : Anders Bach Nielsen +#name : +# -- + \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nxml-mode/tag b/elpa/yasnippet-20160131.948/snippets/nxml-mode/tag new file mode 100644 index 0000000..7c6a766 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nxml-mode/tag @@ -0,0 +1,5 @@ +#contributor : Anders Bach Nielsen +#name : ... +#key: t +# -- +<${1:tag}>$2$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nxml-mode/tag_closing b/elpa/yasnippet-20160131.948/snippets/nxml-mode/tag_closing new file mode 100644 index 0000000..dcf5523 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nxml-mode/tag_closing @@ -0,0 +1,5 @@ +#contributor : Anders Bach Nielsen +#name : +#key: t +# -- +<$1 $2 />$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/nxml-mode/tag_newline b/elpa/yasnippet-20160131.948/snippets/nxml-mode/tag_newline new file mode 100644 index 0000000..a1e1260 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/nxml-mode/tag_newline @@ -0,0 +1,7 @@ +#contributor : Anders Bach Nielsen +#name : \n...\n +#key: tn +# -- +<${1:tag}> + $2 +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/octave-mode/for b/elpa/yasnippet-20160131.948/snippets/octave-mode/for new file mode 100644 index 0000000..c8e1dde --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/octave-mode/for @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: for +# key: for +# -- +for ${1:var} = ${2:expr} + $0 +endfor \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/octave-mode/function b/elpa/yasnippet-20160131.948/snippets/octave-mode/function new file mode 100644 index 0000000..ad2fe56 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/octave-mode/function @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: function +# key: fun +# -- +function ${1:return_val} = ${2:fname}(${3:args}) + $0 +endfunction \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/octave-mode/if b/elpa/yasnippet-20160131.948/snippets/octave-mode/if new file mode 100644 index 0000000..c785a24 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/octave-mode/if @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: if +# key: if +# -- +if ${1:cond} + $0 +${2:else + ${3:other}} +endif \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/org-mode/code b/elpa/yasnippet-20160131.948/snippets/org-mode/code new file mode 100644 index 0000000..89a94ff --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/org-mode/code @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: code +# key: code_ +# -- +#+begin_${1:lang} ${2:options} +$0 +#+end_$1 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/org-mode/dot b/elpa/yasnippet-20160131.948/snippets/org-mode/dot new file mode 100644 index 0000000..e9e76a1 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/org-mode/dot @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: dot +# key: dot_ +# -- +#+begin_src dot :file ${1:file} :cmdline -T${2:pdf} :exports none :results silent + $0 +#+end_src + +[[file:$1]] \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/org-mode/elisp b/elpa/yasnippet-20160131.948/snippets/org-mode/elisp new file mode 100644 index 0000000..c96251e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/org-mode/elisp @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: elisp +# key: elisp_ +# -- +#+begin_src emacs-lisp :tangle yes +$0 +#+end_src \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/org-mode/embedded b/elpa/yasnippet-20160131.948/snippets/org-mode/embedded new file mode 100644 index 0000000..5e74820 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/org-mode/embedded @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: embedded +# key: emb_ +# -- +src_${1:lang}${2:[${3:where}]}{${4:code}} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/org-mode/entry b/elpa/yasnippet-20160131.948/snippets/org-mode/entry new file mode 100644 index 0000000..51d680a --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/org-mode/entry @@ -0,0 +1,11 @@ +# -*- mode: snippet -*- +# name: entry +# key: entry_ +# -- +#+begin_html +--- +layout: ${1:default} +title: ${2:title} +--- +#+end_html +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/org-mode/figure b/elpa/yasnippet-20160131.948/snippets/org-mode/figure new file mode 100644 index 0000000..6c01df8 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/org-mode/figure @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: figure +# key: fig_ +# -- +#+CAPTION: ${1:caption} +#+ATTR_LaTeX: ${2:scale=0.75} +#+LABEL: fig:${3:label} diff --git a/elpa/yasnippet-20160131.948/snippets/org-mode/img b/elpa/yasnippet-20160131.948/snippets/org-mode/img new file mode 100644 index 0000000..9da54ba --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/org-mode/img @@ -0,0 +1,10 @@ +# -*- mode: snippet -*- +# name: img +# key: img_ +# -- +$2 +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/org-mode/latex b/elpa/yasnippet-20160131.948/snippets/org-mode/latex new file mode 100644 index 0000000..66541c2 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/org-mode/latex @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: latex +# key: latex_ +# -- +#+BEGIN_LaTeX +$0 +#+END_LaTeX \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/org-mode/matrix b/elpa/yasnippet-20160131.948/snippets/org-mode/matrix new file mode 100644 index 0000000..01f28c0 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/org-mode/matrix @@ -0,0 +1,11 @@ +# -*- mode: snippet -*- +# name: matrix +# key: matrix_ +# possible improvement, compute the number of lines from the argument to array +# -- +\left \( +\begin{array}{${1:ccc}} +${2:v1 & v2} \\ +$0 +\end{array} +\right \) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/org-mode/verse b/elpa/yasnippet-20160131.948/snippets/org-mode/verse new file mode 100644 index 0000000..02c691e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/org-mode/verse @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: verse +# key: verse_ +# -- +#+begin_verse + $0 +#+end_verse \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/perl-mode/.yas-parents b/elpa/yasnippet-20160131.948/snippets/perl-mode/.yas-parents new file mode 100644 index 0000000..eed5b44 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/perl-mode/.yas-parents @@ -0,0 +1 @@ +text-mode diff --git a/elpa/yasnippet-20160131.948/snippets/perl-mode/eval b/elpa/yasnippet-20160131.948/snippets/perl-mode/eval new file mode 100644 index 0000000..a484014 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/perl-mode/eval @@ -0,0 +1,9 @@ +# name: eval { ... } if ($@) { ... } +# key: eval +# -- +eval { + ${1:# do something risky...} +}; +if (\$@) { + ${2:# handle failure...} +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/perl-mode/for b/elpa/yasnippet-20160131.948/snippets/perl-mode/for new file mode 100644 index 0000000..1ba240f --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/perl-mode/for @@ -0,0 +1,6 @@ +# name: for (...) { ... } +# key: for +# -- +for (my \$${1:var} = 0; \$$1 < ${2:expression}; \$$1++) { + ${3:# body...} +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/perl-mode/fore b/elpa/yasnippet-20160131.948/snippets/perl-mode/fore new file mode 100644 index 0000000..c3b81d5 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/perl-mode/fore @@ -0,0 +1,6 @@ +# name: foreach ... { ... } +# key: fore +# -- +foreach my \$${1:x} (@${2:array}) { + ${3:# body...} +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/perl-mode/if b/elpa/yasnippet-20160131.948/snippets/perl-mode/if new file mode 100644 index 0000000..567db90 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/perl-mode/if @@ -0,0 +1,6 @@ +# name: if (...) { ... } +# key: if +# -- +if ($1) { + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/perl-mode/ife b/elpa/yasnippet-20160131.948/snippets/perl-mode/ife new file mode 100644 index 0000000..f278f21 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/perl-mode/ife @@ -0,0 +1,8 @@ +# name: if (...) { ... } else { ... } +# key: ife +# -- +if ($1) { + $2 +} else { + $3 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/perl-mode/ifee b/elpa/yasnippet-20160131.948/snippets/perl-mode/ifee new file mode 100644 index 0000000..d1bf237 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/perl-mode/ifee @@ -0,0 +1,10 @@ +# name: if, elsif, else ... +# key: ifee +# -- +if ($1) { + ${2:# body...} +} elsif ($3) { + ${4:# elsif...} +} else { + ${5:# else...} +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/perl-mode/sub b/elpa/yasnippet-20160131.948/snippets/perl-mode/sub new file mode 100644 index 0000000..05607d6 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/perl-mode/sub @@ -0,0 +1,6 @@ +# name: sub ... { ... } +# key: sub +# -- +sub ${1:function_name} { + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/perl-mode/unless b/elpa/yasnippet-20160131.948/snippets/perl-mode/unless new file mode 100644 index 0000000..f91a652 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/perl-mode/unless @@ -0,0 +1,6 @@ +# name: unless (...) { ... } +# key: unless +# -- +unless ($1) { + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/perl-mode/while b/elpa/yasnippet-20160131.948/snippets/perl-mode/while new file mode 100644 index 0000000..2744530 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/perl-mode/while @@ -0,0 +1,6 @@ +# name: while (...) { ... } +# key: while +# -- +while ($1) { + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/perl-mode/xfore b/elpa/yasnippet-20160131.948/snippets/perl-mode/xfore new file mode 100644 index 0000000..018e140 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/perl-mode/xfore @@ -0,0 +1,4 @@ +# name: ... foreach ... +# key: xfore +# -- +${1:expression} foreach @${2:array}; \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/perl-mode/xif b/elpa/yasnippet-20160131.948/snippets/perl-mode/xif new file mode 100644 index 0000000..ca8b563 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/perl-mode/xif @@ -0,0 +1,4 @@ +# name: ... if ... +# key: xif +# -- +${1:expression} if ${2:condition} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/perl-mode/xunless b/elpa/yasnippet-20160131.948/snippets/perl-mode/xunless new file mode 100644 index 0000000..dbb7d7d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/perl-mode/xunless @@ -0,0 +1,4 @@ +# name: ... unless ... +# key: xunless +# -- +${1:expression} unless ${2:condition} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/perl-mode/xwhile b/elpa/yasnippet-20160131.948/snippets/perl-mode/xwhile new file mode 100644 index 0000000..14c6308 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/perl-mode/xwhile @@ -0,0 +1,4 @@ +# name: ... while ... +# key: xwhile +# -- +${1:expression} while ${2:condition}; \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/prog-mode/.yas-setup.el b/elpa/yasnippet-20160131.948/snippets/prog-mode/.yas-setup.el new file mode 100644 index 0000000..03d07cf --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/prog-mode/.yas-setup.el @@ -0,0 +1,2 @@ +(defun yas-with-comment (str) + (format "%s%s%s" comment-start str comment-end)) diff --git a/elpa/yasnippet-20160131.948/snippets/prog-mode/.yas-setup.elc b/elpa/yasnippet-20160131.948/snippets/prog-mode/.yas-setup.elc new file mode 100644 index 0000000000000000000000000000000000000000..0f3f02bf8a34844d7890d1ddc6047cceedef23d9 GIT binary patch literal 516 zcmbtQu};G<5bX&00oGFh(MnB}CR9*mLRE)KY_PQ*4%;D?V!QHPLFMbYgbE2U_D&vr z@A>Z1?)Nqd$!Jg zAq$7{WB^}VOVEfE9LNypqeo{I=%9$B_3tzlG!g@9Z8ZE^%@%pN_@|+RX!yXOf@c)+ zft&16CO&(5S+3WhT8yYz_M8s(=rvFPg&y7vbOHaEoc=>#Fm~2N;8uub_2Vl!oK^h- z=T?#=V{IDjEE3!uk+MGROaBk7^i;jJE{_>xn0%jPGPXnbxEze;e7c+3XRj;hMK_gwfz@Sj-tTo;8wEO zt`f4LX@uR51um0}e0!FqakTR~OX7GBn@^v2@BoR7k&ie<8)gbgbTlS=&Nq62%NT8v zsV?#r$1k%qiLxY(J|bxJ&VkUMV2~uq7N5HPLCdO8%#Hu1ZYKzX(^v=1n zQv`jNyqz$lNlU_g5zwlV8yDiiP`k6wZO(NLaSl=A*Q!8D+qrjVZsTnKgSrR=0T3XKUQxvE*(W)Sb07qSYg*V1kS~05t!oBH z?T26v9jH~qBu<i_@% literal 0 HcmV?d00001 diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/__contains__ b/elpa/yasnippet-20160131.948/snippets/python-mode/__contains__ new file mode 100644 index 0000000..4d4ad50 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/__contains__ @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: __contains__ +# key: cont +# group: dunder methods +# -- +def __contains__(self, el): + $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/__enter__ b/elpa/yasnippet-20160131.948/snippets/python-mode/__enter__ new file mode 100644 index 0000000..3dcc3ba --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/__enter__ @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: __enter__ +# key: ent +# group: dunder methods +# -- +def __enter__(self): + $0 + + return self \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/__exit__ b/elpa/yasnippet-20160131.948/snippets/python-mode/__exit__ new file mode 100644 index 0000000..cd9de7d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/__exit__ @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: __exit__ +# key: ex +# group: dunder methods +# -- +def __exit__(self, type, value, traceback): + $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/__getitem__ b/elpa/yasnippet-20160131.948/snippets/python-mode/__getitem__ new file mode 100644 index 0000000..939bd1a --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/__getitem__ @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: __getitem__ +# key: getit +# group: dunder methods +# -- +def __getitem__(self, ${1:key}): + $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/__len__ b/elpa/yasnippet-20160131.948/snippets/python-mode/__len__ new file mode 100644 index 0000000..9e6c164 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/__len__ @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: __len__ +# key: len +# group: dunder methods +# -- +def __len__(self): + $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/__new__ b/elpa/yasnippet-20160131.948/snippets/python-mode/__new__ new file mode 100644 index 0000000..0256580 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/__new__ @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: __new__ +# key: new +# group: dunder methods +# -- +def __new__(mcs, name, bases, dict): + $0 + return type.__new__(mcs, name, bases, dict) diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/__setitem__ b/elpa/yasnippet-20160131.948/snippets/python-mode/__setitem__ new file mode 100644 index 0000000..c7db5b1 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/__setitem__ @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: __setitem__ +# key: setit +# group: dunder methods +# -- +def __setitem__(self, ${1:key}, ${2:val}): + $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/all b/elpa/yasnippet-20160131.948/snippets/python-mode/all new file mode 100644 index 0000000..062e31a --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/all @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: all +# key: a +# -- +__all__ = [ + $0 +] \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/arg b/elpa/yasnippet-20160131.948/snippets/python-mode/arg new file mode 100644 index 0000000..f5145ec --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/arg @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: arg +# key: arg +# group: argparser +# -- +parser.add_argument('-$1', '--$2', + $0) diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/arg_positional b/elpa/yasnippet-20160131.948/snippets/python-mode/arg_positional new file mode 100644 index 0000000..b54fc46 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/arg_positional @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: arg_positional +# key: arg +# group: argparser +# -- +parser.add_argument('${1:varname}', $0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/ass b/elpa/yasnippet-20160131.948/snippets/python-mode/ass new file mode 100644 index 0000000..ec82efe --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/ass @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: assert +# key: ass +# group: testing +# -- +assert $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/assertEqual b/elpa/yasnippet-20160131.948/snippets/python-mode/assertEqual new file mode 100644 index 0000000..29282b9 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/assertEqual @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: assertEqual +# key: ae +# group: testing +# -- +self.assertEqual($1, $2) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/assertFalse b/elpa/yasnippet-20160131.948/snippets/python-mode/assertFalse new file mode 100644 index 0000000..41a9dcf --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/assertFalse @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: assertFalse +# key: af +# group: testing +# -- +self.assertFalse($0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/assertIn b/elpa/yasnippet-20160131.948/snippets/python-mode/assertIn new file mode 100644 index 0000000..74e1ee7 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/assertIn @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: assertIn +# key: ai +# group: testing +# -- +self.assertIn(${1:member}, ${2:container}) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/assertNotEqual b/elpa/yasnippet-20160131.948/snippets/python-mode/assertNotEqual new file mode 100644 index 0000000..6837407 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/assertNotEqual @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: assertNotEqual +# key: ane +# group: testing +# -- +self.assertNotEqual($1, $2) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/assertNotIn b/elpa/yasnippet-20160131.948/snippets/python-mode/assertNotIn new file mode 100644 index 0000000..4780a7e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/assertNotIn @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: assetNotIn +# key: an +# group: testing +# -- +self.assertNotIn(${1:member}, ${2:container}) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/assertRaises b/elpa/yasnippet-20160131.948/snippets/python-mode/assertRaises new file mode 100644 index 0000000..db125da --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/assertRaises @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: assertRaises +# key: ar +# group: testing +# -- +self.assertRaises(${1:Exception}, ${2:fun}) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/assertRaises.with b/elpa/yasnippet-20160131.948/snippets/python-mode/assertRaises.with new file mode 100644 index 0000000..c97807e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/assertRaises.with @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: assertRaises +# key: ar +# -- +with self.assertRaises(${1:Exception}): + $0 diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/assertTrue b/elpa/yasnippet-20160131.948/snippets/python-mode/assertTrue new file mode 100644 index 0000000..1cc59ac --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/assertTrue @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: assertTrue +# key: at +# group: testing +# -- +self.assertTrue($0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/celery_pdb b/elpa/yasnippet-20160131.948/snippets/python-mode/celery_pdb new file mode 100644 index 0000000..6095b2d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/celery_pdb @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: celery pdb +# key: cdb +# group: debug +# -- +from celery.contrib import rdb; rdb.set_trace() \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/classmethod b/elpa/yasnippet-20160131.948/snippets/python-mode/classmethod new file mode 100644 index 0000000..3bffaac --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/classmethod @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: classmethod +# key: cm +# group: object oriented +# -- +@classmethod +def ${1:meth}(cls, $0): + \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/cls b/elpa/yasnippet-20160131.948/snippets/python-mode/cls new file mode 100644 index 0000000..f857cdb --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/cls @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: class +# key: cls +# group: object oriented +# -- +class ${1:class}: + $0 diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/dec b/elpa/yasnippet-20160131.948/snippets/python-mode/dec new file mode 100644 index 0000000..b22c9e9 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/dec @@ -0,0 +1,14 @@ +# -*- mode: snippet -*- +# name: dec +# key: dec +# group : definitions +# -- +def ${1:decorator}(func): + $2 + def _$1(*args, **kwargs): + $3 + ret = func(*args, **kwargs) + $4 + return ret + + return _$1 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/deftest b/elpa/yasnippet-20160131.948/snippets/python-mode/deftest new file mode 100644 index 0000000..394553a --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/deftest @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: deftest +# key: dt +# group: testing +# -- +def test_${1:long_name}(self): + $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/django_test_class b/elpa/yasnippet-20160131.948/snippets/python-mode/django_test_class new file mode 100644 index 0000000..386e305 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/django_test_class @@ -0,0 +1,7 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: django_test_class +# key: tcs +# group: testing +# -- +class ${1:Model}Test(TestCase): + $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/doc b/elpa/yasnippet-20160131.948/snippets/python-mode/doc new file mode 100644 index 0000000..2929e78 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/doc @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: doc +# key: d +# -- +"""$0 +""" \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/doctest b/elpa/yasnippet-20160131.948/snippets/python-mode/doctest new file mode 100644 index 0000000..a5e4bb5 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/doctest @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: doctest +# key: doc +# group: testing +# -- +>>> ${1:function calls} +${2:desired output} +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/eq b/elpa/yasnippet-20160131.948/snippets/python-mode/eq new file mode 100644 index 0000000..e19c328 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/eq @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: __eq__ +# key: eq +# group: dunder methods +# -- +def __eq__(self, other): + return self.$1 == other.$1 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/for b/elpa/yasnippet-20160131.948/snippets/python-mode/for new file mode 100644 index 0000000..0033c87 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/for @@ -0,0 +1,6 @@ +# name: for ... in ... : ... +# key: for +# group : control structure +# -- +for ${var} in ${collection}: + $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/from b/elpa/yasnippet-20160131.948/snippets/python-mode/from new file mode 100644 index 0000000..3a4acfc --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/from @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: from +# key: from +# group : general +# -- +from ${1:lib} import ${2:funs} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/function b/elpa/yasnippet-20160131.948/snippets/python-mode/function new file mode 100644 index 0000000..d7e8f12 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/function @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: function +# key: f +# group: definitions +# -- +def ${1:fun}(${2:args}): + $0 diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/function_docstring b/elpa/yasnippet-20160131.948/snippets/python-mode/function_docstring new file mode 100644 index 0000000..1f7f35b --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/function_docstring @@ -0,0 +1,10 @@ +# -*- mode: snippet -*- +# name: function_docstring +# key: fd +# group: definitions +# -- +def ${1:name}($2): + \"\"\"$3 + ${2:$(python-args-to-docstring)} + \"\"\" + $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/if b/elpa/yasnippet-20160131.948/snippets/python-mode/if new file mode 100644 index 0000000..d1538a9 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/if @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: if +# key: if +# group : control structure +# -- +if ${1:cond}: + $0 diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/ife b/elpa/yasnippet-20160131.948/snippets/python-mode/ife new file mode 100644 index 0000000..4b8f613 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/ife @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: ife +# key: ife +# group : control structure +# -- +if $1: + $2 +else: + $0 diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/ifmain b/elpa/yasnippet-20160131.948/snippets/python-mode/ifmain new file mode 100644 index 0000000..9575798 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/ifmain @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: ifmain +# key: ifm +# -- +if __name__ == '__main__': + ${1:main()} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/import b/elpa/yasnippet-20160131.948/snippets/python-mode/import new file mode 100644 index 0000000..f34bc39 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/import @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: import +# key: imp +# group : general +# -- +import ${1:lib}${2: as ${3:alias}} +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/init b/elpa/yasnippet-20160131.948/snippets/python-mode/init new file mode 100644 index 0000000..aece55c --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/init @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: init +# key: init +# group : definitions +# -- +def __init__(self${1:, args}): + ${2:"${3:docstring}" + }$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/init_docstring b/elpa/yasnippet-20160131.948/snippets/python-mode/init_docstring new file mode 100644 index 0000000..51af8db --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/init_docstring @@ -0,0 +1,10 @@ +# -*- mode: snippet -*- +# name: init_docstring +# key: id +# group : definitions +# -- +def __init__(self$1): + \"\"\"$2 + ${1:$(python-args-to-docstring)} + \"\"\" + $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/interact b/elpa/yasnippet-20160131.948/snippets/python-mode/interact new file mode 100644 index 0000000..4b412c8 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/interact @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: interact +# key: int +# -- +import code; code.interact(local=locals()) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/ipdbdebug b/elpa/yasnippet-20160131.948/snippets/python-mode/ipdbdebug new file mode 100644 index 0000000..f45ad75 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/ipdbdebug @@ -0,0 +1,6 @@ +# -*- mode: snippet; require-final-newline: nil -*- +# name: ipdb trace +# key: itr +# group: debug +# -- +import ipdb; ipdb.set_trace() \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/iter b/elpa/yasnippet-20160131.948/snippets/python-mode/iter new file mode 100644 index 0000000..a4fed13 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/iter @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: __iter__ +# key: iter +# group: dunder methods +# -- +def __iter__(self): + return ${1:iter($2)} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/lambda b/elpa/yasnippet-20160131.948/snippets/python-mode/lambda new file mode 100644 index 0000000..08b268b --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/lambda @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: lambda +# key: lam +# -- +lambda ${1:x}: $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/list b/elpa/yasnippet-20160131.948/snippets/python-mode/list new file mode 100644 index 0000000..63cef24 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/list @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: list +# key: li +# group : definitions +# -- +[${1:el} for $1 in ${2:list}] +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/logger_name b/elpa/yasnippet-20160131.948/snippets/python-mode/logger_name new file mode 100644 index 0000000..9759dd9 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/logger_name @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: logger_name +# key: ln +# -- +logger = logging.getLogger(${1:__name__}) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/logging b/elpa/yasnippet-20160131.948/snippets/python-mode/logging new file mode 100644 index 0000000..568eeea --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/logging @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: logging +# key: log +# -- +logger = logging.getLogger("${1:name}") +logger.setLevel(logging.${2:level}) diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/main b/elpa/yasnippet-20160131.948/snippets/python-mode/main new file mode 100644 index 0000000..9f3c721 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/main @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: main +# key: main +# -- +def main(): + $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/metaclass b/elpa/yasnippet-20160131.948/snippets/python-mode/metaclass new file mode 100644 index 0000000..1e688e4 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/metaclass @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: metaclass +# key: mt +# group: object oriented +# -- +__metaclass__ = type \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/method b/elpa/yasnippet-20160131.948/snippets/python-mode/method new file mode 100644 index 0000000..985ef0c --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/method @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: method +# key: m +# group: object oriented +# -- +def ${1:method}(self${2:, $3}): + $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/method_docstring b/elpa/yasnippet-20160131.948/snippets/python-mode/method_docstring new file mode 100644 index 0000000..8f5e78d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/method_docstring @@ -0,0 +1,10 @@ +# -*- mode: snippet -*- +# name: method_docstring +# key: md +# group: object oriented +# -- +def ${1:name}(self$2): + \"\"\"$3 + ${2:$(python-args-to-docstring)} + \"\"\" + $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/not_impl b/elpa/yasnippet-20160131.948/snippets/python-mode/not_impl new file mode 100644 index 0000000..515e353 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/not_impl @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: not_impl +# key: not_impl +# -- +raise NotImplementedError \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/np b/elpa/yasnippet-20160131.948/snippets/python-mode/np new file mode 100644 index 0000000..9f6327c --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/np @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: np +# key: np +# group : general +# -- +import numpy as np +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/parse_args b/elpa/yasnippet-20160131.948/snippets/python-mode/parse_args new file mode 100644 index 0000000..aa61070 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/parse_args @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: parse_args +# key: pargs +# group: argparser +# -- +def parse_arguments(): + parser = argparse.ArgumentParser(description='$1') + $0 + return parser.parse_args() \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/parser b/elpa/yasnippet-20160131.948/snippets/python-mode/parser new file mode 100644 index 0000000..29a04ea --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/parser @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: parser +# key: pars +# group: argparser +# -- +parser = argparse.ArgumentParser(description='$1') +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/pass b/elpa/yasnippet-20160131.948/snippets/python-mode/pass new file mode 100644 index 0000000..4734f7f --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/pass @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: pass +# key: ps +# -- +pass \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/pl b/elpa/yasnippet-20160131.948/snippets/python-mode/pl new file mode 100644 index 0000000..29d905c --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/pl @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: Import pyplot +# key: pl +# group : general +# -- +import matplotlib.pyplot as pl +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/print b/elpa/yasnippet-20160131.948/snippets/python-mode/print new file mode 100644 index 0000000..cc1c797 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/print @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: print +# key: p +# -- +print($0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/prop b/elpa/yasnippet-20160131.948/snippets/python-mode/prop new file mode 100644 index 0000000..34e4fa1 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/prop @@ -0,0 +1,17 @@ +# contributor: Mads D. Kristensen +# name: prop +# -- +def ${1:foo}(): + doc = """${2:Doc string}""" + def fget(self): + return self._$1 + + def fset(self, value): + self._$1 = value + + def fdel(self): + del self._$1 + return locals() +$1 = property(**$1()) + +$0 diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/reg b/elpa/yasnippet-20160131.948/snippets/python-mode/reg new file mode 100644 index 0000000..c4ebeac --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/reg @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: reg +# key: reg +# group : general +# -- +${1:regexp} = re.compile(r"${2:expr}") +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/repr b/elpa/yasnippet-20160131.948/snippets/python-mode/repr new file mode 100644 index 0000000..a1f6783 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/repr @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: __repr__ +# key: repr +# group: dunder methods +# -- +def __repr__(self): + $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/return b/elpa/yasnippet-20160131.948/snippets/python-mode/return new file mode 100644 index 0000000..641a308 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/return @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: return +# key: r +# -- +return $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/script b/elpa/yasnippet-20160131.948/snippets/python-mode/script new file mode 100644 index 0000000..55e42e9 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/script @@ -0,0 +1,11 @@ +# -*- mode: snippet -*- +# name: script +# key: script +# -- +#!/usr/bin/env python + +def main(): + pass + +if __name__ == '__main__': + main() diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/self b/elpa/yasnippet-20160131.948/snippets/python-mode/self new file mode 100644 index 0000000..4461022 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/self @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: self +# key: . +# group: object oriented +# -- +self.$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/self_without_dot b/elpa/yasnippet-20160131.948/snippets/python-mode/self_without_dot new file mode 100644 index 0000000..a1a0526 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/self_without_dot @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: self_without_dot +# key: s +# group: object oriented +# -- +self \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/selfassign b/elpa/yasnippet-20160131.948/snippets/python-mode/selfassign new file mode 100644 index 0000000..95d7b2b --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/selfassign @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: selfassign +# key: sn +# group: object oriented +# -- +self.$1 = $1 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/setdef b/elpa/yasnippet-20160131.948/snippets/python-mode/setdef new file mode 100644 index 0000000..2398eb1 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/setdef @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: setdef +# key: setdef +# -- +${1:var}.setdefault(${2:key}, []).append(${3:value}) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/setup b/elpa/yasnippet-20160131.948/snippets/python-mode/setup new file mode 100644 index 0000000..107abc1 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/setup @@ -0,0 +1,14 @@ +# -*- mode: snippet -*- +# name: setup +# key: setup +# group: distribute +# -- +from setuptools import setup + +package = '${1:name}' +version = '${2:0.1}' + +setup(name=package, + version=version, + description="${3:description}", + url='${4:url}'$0) diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/size b/elpa/yasnippet-20160131.948/snippets/python-mode/size new file mode 100644 index 0000000..47a0f38 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/size @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: size +# key: size +# -- +sys.getsizeof($0) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/static b/elpa/yasnippet-20160131.948/snippets/python-mode/static new file mode 100644 index 0000000..19c3df9 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/static @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: static +# key: sm +# -- +@staticmethod +def ${1:func}($0): diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/str b/elpa/yasnippet-20160131.948/snippets/python-mode/str new file mode 100644 index 0000000..b0572e3 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/str @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: __str__ +# key: str +# group: dunder methods +# -- +def __str__(self): + $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/super b/elpa/yasnippet-20160131.948/snippets/python-mode/super new file mode 100644 index 0000000..23fba5d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/super @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: super +# key: super +# group: object oriented +# -- +super(`(replace-regexp-in-string "\\([.]\\)[^.]+$" ", self)." (python-info-current-defun) nil nil 1)`($1) +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/test_class b/elpa/yasnippet-20160131.948/snippets/python-mode/test_class new file mode 100644 index 0000000..7342c5f --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/test_class @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: test_class +# key: tcs +# group : testing +# -- +class Test${1:toTest}(${2:unittest.TestCase}): + $0 diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/test_file b/elpa/yasnippet-20160131.948/snippets/python-mode/test_file new file mode 100644 index 0000000..e4b5315 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/test_file @@ -0,0 +1,12 @@ +# -*- mode: snippet -*- +# name: test_file +# key: tf +# group : testing +# -- +import unittest +${1:from ${2:test_file} import *} + +$0 + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/trace b/elpa/yasnippet-20160131.948/snippets/python-mode/trace new file mode 100644 index 0000000..e475d62 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/trace @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: trace +# key: tr +# group: debug +# -- +import pdb; pdb.set_trace() \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/try b/elpa/yasnippet-20160131.948/snippets/python-mode/try new file mode 100644 index 0000000..8836de6 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/try @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: try +# key: try +# -- +try: + $1 +except ${2:Exception}: + $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/tryelse b/elpa/yasnippet-20160131.948/snippets/python-mode/tryelse new file mode 100644 index 0000000..f2e44e4 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/tryelse @@ -0,0 +1,10 @@ +# -*- mode: snippet -*- +# name: tryelse +# key: try +# -- +try: + $1 +except $2: + $3 +else: + $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/unicode b/elpa/yasnippet-20160131.948/snippets/python-mode/unicode new file mode 100644 index 0000000..52d6b8d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/unicode @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: __unicode__ +# key: un +# group: dunder methods +# -- +def __unicode__(self): + $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/utf8 b/elpa/yasnippet-20160131.948/snippets/python-mode/utf8 new file mode 100644 index 0000000..2ebd82e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/utf8 @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: utf-8 encoding +# key: utf8 +# -- +# -*- coding: utf-8 -*- diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/while b/elpa/yasnippet-20160131.948/snippets/python-mode/while new file mode 100644 index 0000000..7b3539c --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/while @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: while +# key: wh +# group: control structure +# -- +while ${1:True}: + $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/with b/elpa/yasnippet-20160131.948/snippets/python-mode/with new file mode 100644 index 0000000..7fcbd38 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/with @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: with +# key: with +# group : control structure +# -- +with ${1:expr}${2: as ${3:alias}}: + $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/python-mode/with_statement b/elpa/yasnippet-20160131.948/snippets/python-mode/with_statement new file mode 100644 index 0000000..1be3692 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/python-mode/with_statement @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: with_statement +# key: fw +# group: future +# -- +from __future__ import with_statement \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/rename_add_contr.py b/elpa/yasnippet-20160131.948/snippets/rename_add_contr.py new file mode 100644 index 0000000..3ed7847 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/rename_add_contr.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python +import os +import re +from os.path import join +from shutil import move + + +def rename(root, f): + if f.endswith('.yasnippet'): + base, _ = f.split('.') + print("move %s to %s" % (join(root, f), join(root, base))) + move(join(root, f), join(root, base)) + + +CONT = "# contributor: Andrea crotti\n# --" +END = "# --\n\n" + +orig = "# --\n\n" +to = "# --\n" + +def insert(root, f, orig, to): + fname = join(root, f) + text = open(fname).read() + nex_text = re.sub(orig, to, text) + open(fname, 'w').write(nex_text) + +if __name__ == '__main__': + for root, dirs, files in os.walk('.'): + if "mode" in root: + # os.popen("git add *yasnippet") + for f in files: + rename(root, f) + # insert(root, f, orig, to) + + + diff --git a/elpa/yasnippet-20160131.948/snippets/rst-mode/autoclass b/elpa/yasnippet-20160131.948/snippets/rst-mode/autoclass new file mode 100644 index 0000000..b207dd3 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/rst-mode/autoclass @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: autoclass +# key: auto +# -- +.. autoclass:: $0 + ${1::members: ${2:members}} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/rst-mode/autofunction b/elpa/yasnippet-20160131.948/snippets/rst-mode/autofunction new file mode 100644 index 0000000..7ed5c5e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/rst-mode/autofunction @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: autofunction +# key: auto +# -- +.. autofunction:: $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/rst-mode/automodule b/elpa/yasnippet-20160131.948/snippets/rst-mode/automodule new file mode 100644 index 0000000..2929f77 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/rst-mode/automodule @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: automodule +# key: auto +# -- +.. automodule:: ${1:module_name} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/rst-mode/class b/elpa/yasnippet-20160131.948/snippets/rst-mode/class new file mode 100644 index 0000000..66ad562 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/rst-mode/class @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: class +# key: cls +# -- +:class:\`$0\` \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/rst-mode/code b/elpa/yasnippet-20160131.948/snippets/rst-mode/code new file mode 100644 index 0000000..49ff111 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/rst-mode/code @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: code +# key: code +# -- +.. code:: ${1:python} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/rst-mode/digraph b/elpa/yasnippet-20160131.948/snippets/rst-mode/digraph new file mode 100644 index 0000000..448de13 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/rst-mode/digraph @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: digraph +# key: graph +# -- +.. digraph:: $1 + + $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/rst-mode/function b/elpa/yasnippet-20160131.948/snippets/rst-mode/function new file mode 100644 index 0000000..8677632 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/rst-mode/function @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: function +# key: fun +# -- +:function:\`$0\` \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/rst-mode/graph b/elpa/yasnippet-20160131.948/snippets/rst-mode/graph new file mode 100644 index 0000000..f7d7b69 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/rst-mode/graph @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: graph +# key: graph +# -- +.. graph:: $1 + + $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/rst-mode/graphviz b/elpa/yasnippet-20160131.948/snippets/rst-mode/graphviz new file mode 100644 index 0000000..53ca449 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/rst-mode/graphviz @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: graphviz +# key: graph +# -- +.. graphviz:: + + $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/rst-mode/image b/elpa/yasnippet-20160131.948/snippets/rst-mode/image new file mode 100644 index 0000000..402c9a5 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/rst-mode/image @@ -0,0 +1,10 @@ +# -*- mode: snippet -*- +# name: image +# key: img +# -- +.. image:: ${1:path} + :height: ${2:100} + :width: ${3:200} + :alt: ${4:description} + +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/rst-mode/inheritance b/elpa/yasnippet-20160131.948/snippets/rst-mode/inheritance new file mode 100644 index 0000000..e646c9a --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/rst-mode/inheritance @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: inheritance +# key: inh +# -- +.. inheritance-diagram:: $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/rst-mode/literal_include b/elpa/yasnippet-20160131.948/snippets/rst-mode/literal_include new file mode 100644 index 0000000..9e2a7de --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/rst-mode/literal_include @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: literatal include +# key: inc +# -- +.. literalinclude:: ${1:path} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/rst-mode/meta b/elpa/yasnippet-20160131.948/snippets/rst-mode/meta new file mode 100644 index 0000000..6aaae41 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/rst-mode/meta @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: meta +# key: : +# -- +:${1:var}: $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/rst-mode/module b/elpa/yasnippet-20160131.948/snippets/rst-mode/module new file mode 100644 index 0000000..e60e18e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/rst-mode/module @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: module +# key: mod +# -- +:mod: \`$0\` \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/rst-mode/parsed_literal b/elpa/yasnippet-20160131.948/snippets/rst-mode/parsed_literal new file mode 100644 index 0000000..ee8c07c --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/rst-mode/parsed_literal @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: parsed_literal +# key: src +# -- +.. parsed-literal:: + $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/rst-mode/pause b/elpa/yasnippet-20160131.948/snippets/rst-mode/pause new file mode 100644 index 0000000..0833e87 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/rst-mode/pause @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: pause +# key: pause +# group: hieroglyph +# -- +.. rst-class:: build \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/rst-mode/term b/elpa/yasnippet-20160131.948/snippets/rst-mode/term new file mode 100644 index 0000000..86624e2 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/rst-mode/term @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: term +# key: term +# -- +:term:\`$0\` \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/rst-mode/url b/elpa/yasnippet-20160131.948/snippets/rst-mode/url new file mode 100644 index 0000000..ead9d35 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/rst-mode/url @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: url +# key: url +# -- +.. _${1:description}: $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/rst-mode/verbatim b/elpa/yasnippet-20160131.948/snippets/rst-mode/verbatim new file mode 100644 index 0000000..1d0362c --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/rst-mode/verbatim @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: verbatim +# key: | +# -- +| $0 +| \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/rst-mode/warning b/elpa/yasnippet-20160131.948/snippets/rst-mode/warning new file mode 100644 index 0000000..8f74b36 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/rst-mode/warning @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: warning +# key: warn +# -- +.. warning: + $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/ruby-mode/# b/elpa/yasnippet-20160131.948/snippets/ruby-mode/# new file mode 100644 index 0000000..33581c8 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/ruby-mode/# @@ -0,0 +1,4 @@ +#name : # => +#group : general +# -- +# => \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/ruby-mode/=b b/elpa/yasnippet-20160131.948/snippets/ruby-mode/=b new file mode 100644 index 0000000..22a013f --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/ruby-mode/=b @@ -0,0 +1,6 @@ +#name : =begin rdoc ... =end +#group : general +# -- +=begin rdoc + $0 +=end \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/ruby-mode/Comp b/elpa/yasnippet-20160131.948/snippets/ruby-mode/Comp new file mode 100644 index 0000000..03f2b35 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/ruby-mode/Comp @@ -0,0 +1,8 @@ +#name : include Comparable; def <=> ... end +#group : definitions +# -- +include Comparable + +def <=> other + $0 +end \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/ruby-mode/GLOB b/elpa/yasnippet-20160131.948/snippets/ruby-mode/GLOB new file mode 100644 index 0000000..6667254 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/ruby-mode/GLOB @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: GLOB +# key: $ +# -- +$${1:GLOBAL} = $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/ruby-mode/all b/elpa/yasnippet-20160131.948/snippets/ruby-mode/all new file mode 100644 index 0000000..a98a9f4 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/ruby-mode/all @@ -0,0 +1,4 @@ +#name : all? { |...| ... } +#group : collections +# -- +all? { |${e}| $0 } \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/ruby-mode/am b/elpa/yasnippet-20160131.948/snippets/ruby-mode/am new file mode 100644 index 0000000..7675a97 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/ruby-mode/am @@ -0,0 +1,4 @@ +#name : alias_method new, old +#group : definitions +# -- +alias_method :${new_name}, :${old_name} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/ruby-mode/any b/elpa/yasnippet-20160131.948/snippets/ruby-mode/any new file mode 100644 index 0000000..d0b6dd2 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/ruby-mode/any @@ -0,0 +1,4 @@ +#name : any? { |...| ... } +#group : collections +# -- +any? { |${e}| $0 } \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/ruby-mode/app b/elpa/yasnippet-20160131.948/snippets/ruby-mode/app new file mode 100644 index 0000000..19bf60a --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/ruby-mode/app @@ -0,0 +1,6 @@ +#name : if __FILE__ == $PROGRAM_NAME ... end +#group : general +# -- +if __FILE__ == $PROGRAM_NAME + $0 +end \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/ruby-mode/attribute b/elpa/yasnippet-20160131.948/snippets/ruby-mode/attribute new file mode 100644 index 0000000..4e8e37a --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/ruby-mode/attribute @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: attribute +# key: @ +# -- +@${1:attr} = $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/ruby-mode/bench b/elpa/yasnippet-20160131.948/snippets/ruby-mode/bench new file mode 100644 index 0000000..e440919 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/ruby-mode/bench @@ -0,0 +1,10 @@ +# -*- mode: snippet -*- +# name: bench +# key: bench +# -- +require "benchmark" + +TESTS = ${1:1_000} +Benchmark.bmbm do |x| + x.report("${2:var}") {} +end diff --git a/elpa/yasnippet-20160131.948/snippets/ruby-mode/bm b/elpa/yasnippet-20160131.948/snippets/ruby-mode/bm new file mode 100644 index 0000000..4789f64 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/ruby-mode/bm @@ -0,0 +1,6 @@ +#name : Benchmark.bmbm(...) do ... end +#group : general +# -- +Benchmark.bmbm(${1:10}) do |x| + $0 +end \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/ruby-mode/case b/elpa/yasnippet-20160131.948/snippets/ruby-mode/case new file mode 100644 index 0000000..40c3529 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/ruby-mode/case @@ -0,0 +1,7 @@ +#name : case ... end +#group : general +# -- +case ${1:object} +when ${2:condition} + $0 +end \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/ruby-mode/cla b/elpa/yasnippet-20160131.948/snippets/ruby-mode/cla new file mode 100644 index 0000000..81ccf45 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/ruby-mode/cla @@ -0,0 +1,6 @@ +#name : class << self ... end +#group : definitions +# -- +class << ${self} + $0 +end \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/ruby-mode/cls b/elpa/yasnippet-20160131.948/snippets/ruby-mode/cls new file mode 100644 index 0000000..ab81ca8 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/ruby-mode/cls @@ -0,0 +1,11 @@ +#name : class ... end +#contributor : hitesh +#group : definitions +# -- +class ${1:`(let ((fn (capitalize (file-name-nondirectory + (file-name-sans-extension + (or (buffer-file-name) + (buffer-name (current-buffer)))))))) + (replace-regexp-in-string "_" "" fn t t))`} + $0 +end diff --git a/elpa/yasnippet-20160131.948/snippets/ruby-mode/collect b/elpa/yasnippet-20160131.948/snippets/ruby-mode/collect new file mode 100644 index 0000000..934014a --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/ruby-mode/collect @@ -0,0 +1,4 @@ +#name : collect { |...| ... } +#group : collections +# -- +collect { |${e}| $0 } \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/ruby-mode/dee b/elpa/yasnippet-20160131.948/snippets/ruby-mode/dee new file mode 100644 index 0000000..56d0a18 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/ruby-mode/dee @@ -0,0 +1,4 @@ +#name : deep_copy(...) +#group : general +# -- +Marshal.load(Marshal.dump($0)) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/ruby-mode/def b/elpa/yasnippet-20160131.948/snippets/ruby-mode/def new file mode 100644 index 0000000..875f0ff --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/ruby-mode/def @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: def ... end +# key: def +# -- +def ${1:method}${2:(${3:args})} + $0 +end \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/ruby-mode/deli b/elpa/yasnippet-20160131.948/snippets/ruby-mode/deli new file mode 100644 index 0000000..8476ef9 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/ruby-mode/deli @@ -0,0 +1,4 @@ +#name : delete_if { |...| ... } +#group : collections +# -- +delete_if { |${e}| $0 } \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/ruby-mode/det b/elpa/yasnippet-20160131.948/snippets/ruby-mode/det new file mode 100644 index 0000000..6a17da9 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/ruby-mode/det @@ -0,0 +1,4 @@ +#name : detect { |...| ... } +#group : collections +# -- +detect { |${e}| $0 } \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/ruby-mode/dow b/elpa/yasnippet-20160131.948/snippets/ruby-mode/dow new file mode 100644 index 0000000..3b65271 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/ruby-mode/dow @@ -0,0 +1,6 @@ +#name : downto(...) { |n| ... } +#group : control structure +# -- +downto(${0}) { |${n}| + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/ruby-mode/ea b/elpa/yasnippet-20160131.948/snippets/ruby-mode/ea new file mode 100644 index 0000000..9cdf8dc --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/ruby-mode/ea @@ -0,0 +1,4 @@ +#name : each { |...| ... } +#group : collections +# -- +each { |${e}| $0 } \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/ruby-mode/eac b/elpa/yasnippet-20160131.948/snippets/ruby-mode/eac new file mode 100644 index 0000000..f0d9cb1 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/ruby-mode/eac @@ -0,0 +1,4 @@ +#name : each_cons(...) { |...| ... } +#group : collections +# -- +each_cons(${1:2}) { |${group}| $0 } \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/ruby-mode/eai b/elpa/yasnippet-20160131.948/snippets/ruby-mode/eai new file mode 100644 index 0000000..5b0ed67 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/ruby-mode/eai @@ -0,0 +1,4 @@ +#name : each_index { |i| ... } +#group : collections +# -- +each_index { |${i}| $0 } \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/ruby-mode/eav b/elpa/yasnippet-20160131.948/snippets/ruby-mode/eav new file mode 100644 index 0000000..558e5b4 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/ruby-mode/eav @@ -0,0 +1,4 @@ +#name : each_value { |val| ... } +#group : collections +# -- +each_value { |${val}| $0 } \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/ruby-mode/eawi b/elpa/yasnippet-20160131.948/snippets/ruby-mode/eawi new file mode 100644 index 0000000..edf8418 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/ruby-mode/eawi @@ -0,0 +1,4 @@ +#name : each_with_index { |e, i| ... } +#group : collections +# -- +each_with_index { |${e}, ${i}| $0 } \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/ruby-mode/for b/elpa/yasnippet-20160131.948/snippets/ruby-mode/for new file mode 100644 index 0000000..03dd82c --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/ruby-mode/for @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: for +# key: for +# -- +for ${1:el} in ${2:collection} + $0 +end \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/ruby-mode/forin b/elpa/yasnippet-20160131.948/snippets/ruby-mode/forin new file mode 100644 index 0000000..36b4387 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/ruby-mode/forin @@ -0,0 +1,6 @@ +#name : for ... in ...; ... end +#group : control structure +# -- +for ${1:element} in ${2:collection} + $0 +end \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/ruby-mode/formula b/elpa/yasnippet-20160131.948/snippets/ruby-mode/formula new file mode 100644 index 0000000..735b0d1 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/ruby-mode/formula @@ -0,0 +1,16 @@ +# -*- mode: snippet -*- +# name: formula +# key: form +# -- +require 'formula' + +class ${1:Name} +#name : object name extends App +# key: app +# -- +object ${1:name} extends App { + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/scala-mode/case b/elpa/yasnippet-20160131.948/snippets/scala-mode/case new file mode 100644 index 0000000..b16dcae --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/scala-mode/case @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +#Author : Jonas Bonèr +#name : case pattern => +# key: case +# -- +case ${1:_} => $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/scala-mode/cc b/elpa/yasnippet-20160131.948/snippets/scala-mode/cc new file mode 100644 index 0000000..3eedbc7 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/scala-mode/cc @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +#Author : Sam Halliday +#name : case class T(arg: A) +# key: cc +# -- +case class ${1:Name}( + ${2:arg}: ${3:Type} +) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/scala-mode/co b/elpa/yasnippet-20160131.948/snippets/scala-mode/co new file mode 100644 index 0000000..7c3d371 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/scala-mode/co @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +#Author : Jonas Bonèr +#name : case object T +# key: co +# -- +case object ${1:name} $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/scala-mode/cons b/elpa/yasnippet-20160131.948/snippets/scala-mode/cons new file mode 100644 index 0000000..bb2b26c --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/scala-mode/cons @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +#Author : Jonas Bonèr +#name : element1 :: element2 +# key: cons +# -- +${1:element1} :: ${2:element2} $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/scala-mode/def b/elpa/yasnippet-20160131.948/snippets/scala-mode/def new file mode 100644 index 0000000..22a8ee9 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/scala-mode/def @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +#Author : Jonas Bonèr +#name : def f(arg: T): R = {...} +# key: def +# -- +def ${1:name}(${2:args}): ${3:Unit} = { + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/scala-mode/doc b/elpa/yasnippet-20160131.948/snippets/scala-mode/doc new file mode 100644 index 0000000..60b5007 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/scala-mode/doc @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +#Author : Anders Bach Nielsen +#name : /** ... */ +# key: doc +# -- +/** + * ${1:description} + * $0 + */ \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/scala-mode/for b/elpa/yasnippet-20160131.948/snippets/scala-mode/for new file mode 100644 index 0000000..44a4253 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/scala-mode/for @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +#Author : Sam Halliday +#name : for { x <- xs } yield +#key: for +# -- +for { + ${1:x} <- ${2:xs} +} yield ${3:x} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/scala-mode/if b/elpa/yasnippet-20160131.948/snippets/scala-mode/if new file mode 100644 index 0000000..28ff792 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/scala-mode/if @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +#Author : Jonas Bonèr +#name : if (cond) { .. } +# key: if +# -- +if (${1:condition}) { + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/scala-mode/ls b/elpa/yasnippet-20160131.948/snippets/scala-mode/ls new file mode 100644 index 0000000..3e1fb51 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/scala-mode/ls @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +#Author : Jonas Bonèr +#name : List(..) +# key: ls +# -- +List(${1:args}, ${2:args}) $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/scala-mode/main b/elpa/yasnippet-20160131.948/snippets/scala-mode/main new file mode 100644 index 0000000..4befc32 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/scala-mode/main @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +#Author : Jonas Bonèr +#name: def main(args: Array[String]) = { ... } +# key: main +# -- +def main(args: Array[String]) = { + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/scala-mode/match b/elpa/yasnippet-20160131.948/snippets/scala-mode/match new file mode 100644 index 0000000..8aadeea --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/scala-mode/match @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +#Author : Jonas Bonèr +#name : cc match { .. } +# key: match +# -- +${1:cc} match { + case ${2:pattern} => $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/scala-mode/ob b/elpa/yasnippet-20160131.948/snippets/scala-mode/ob new file mode 100644 index 0000000..1890550 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/scala-mode/ob @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +#Author : Jonas Bonèr +#name : object name extends T +# key: ob +# -- +object ${1:name} extends ${2:type} $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/scala-mode/throw b/elpa/yasnippet-20160131.948/snippets/scala-mode/throw new file mode 100644 index 0000000..02ad549 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/scala-mode/throw @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +#Author : Jonas Bonèr +#name : throw new Exception +# key: throw +# -- +throw new ${1:Exception}(${2:msg}) $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/scala-mode/try b/elpa/yasnippet-20160131.948/snippets/scala-mode/try new file mode 100644 index 0000000..d0c8d04 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/scala-mode/try @@ -0,0 +1,11 @@ +# -*- mode: snippet -*- +#Author : Sam Halliday +#name : try { .. } catch { case e => ..} +# key: try +# -- +try { + $0 +} catch { + case e: ${1:Throwable} => + ${2:// TODO: handle exception} +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/sh-mode/args b/elpa/yasnippet-20160131.948/snippets/sh-mode/args new file mode 100644 index 0000000..09fe3a0 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/sh-mode/args @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name:args +# key: args +# -- +if [ $# -lt ${1:2} ] + then $0 +fi \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/sh-mode/bang b/elpa/yasnippet-20160131.948/snippets/sh-mode/bang new file mode 100644 index 0000000..5e11f0e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/sh-mode/bang @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: bang +# key: ! +# -- +#!/usr/bin/env bash +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/sh-mode/for loop b/elpa/yasnippet-20160131.948/snippets/sh-mode/for loop new file mode 100644 index 0000000..438706b --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/sh-mode/for loop @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: for loop +# key: for +# -- +for ${1:var} in ${2:stuff}; do + $0 +done \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/sh-mode/function b/elpa/yasnippet-20160131.948/snippets/sh-mode/function new file mode 100644 index 0000000..c0f670a --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/sh-mode/function @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: function +# key: f +# -- +function ${1:name} { + $0 +} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/sh-mode/if b/elpa/yasnippet-20160131.948/snippets/sh-mode/if new file mode 100644 index 0000000..2dc537d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/sh-mode/if @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: if +# key: if +# -- +if ${1:[ -f file]} + then ${2:do} +fi +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/sh-mode/ife b/elpa/yasnippet-20160131.948/snippets/sh-mode/ife new file mode 100644 index 0000000..f046a3e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/sh-mode/ife @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: ife +# key: ife +# -- +if ${1:cond} +then ${2:stuff} +else ${3:other} +fi +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/snippet-mode/cont b/elpa/yasnippet-20160131.948/snippets/snippet-mode/cont new file mode 100644 index 0000000..3783d54 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/snippet-mode/cont @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: cont +# key: cont +# -- +# contributor: `user-full-name` \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/snippet-mode/elisp b/elpa/yasnippet-20160131.948/snippets/snippet-mode/elisp new file mode 100644 index 0000000..768e94d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/snippet-mode/elisp @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: elisp +# key: ` +# -- +\`$0\` \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/snippet-mode/field b/elpa/yasnippet-20160131.948/snippets/snippet-mode/field new file mode 100644 index 0000000..12ff0e0 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/snippet-mode/field @@ -0,0 +1,6 @@ +# name : ${ ... } field +# contributor : joaotavora +# key : $f +# key: field +# -- +\${${1:${2:n}:}$3${4:\$(${5:lisp-fn})}\}$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/snippet-mode/group b/elpa/yasnippet-20160131.948/snippets/snippet-mode/group new file mode 100644 index 0000000..3ae8fd2 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/snippet-mode/group @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: group +# key: group +# -- +# group : ${1:group} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/snippet-mode/mirror b/elpa/yasnippet-20160131.948/snippets/snippet-mode/mirror new file mode 100644 index 0000000..2a45042 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/snippet-mode/mirror @@ -0,0 +1,6 @@ +# name : ${n:$(...)} mirror +# key : $m +# contributor : joaotavora +# key: mirror +# -- +\${${2:n}:${4:\$(${5:reflection-fn})}\}$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/snippet-mode/vars b/elpa/yasnippet-20160131.948/snippets/snippet-mode/vars new file mode 100644 index 0000000..ec4e4b6 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/snippet-mode/vars @@ -0,0 +1,13 @@ +# -*- mode: snippet -*- +# name : Snippet header +# contributor : joaotavora +# key: vars +# -- +# name : $1${2: +# key : ${3:trigger-key}}${4: +# keybinding : ${5:keybinding}}${6: +# expand-env : (${7:})} +# contributor : $6 +# key: vars +# -- +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/snippets/ruby-mode/definitions/mod b/elpa/yasnippet-20160131.948/snippets/snippets/ruby-mode/definitions/mod new file mode 100644 index 0000000..118400c --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/snippets/ruby-mode/definitions/mod @@ -0,0 +1,13 @@ +# name: module ... end +# contributor: hitesh , jimeh +# key: mod +# -- +module ${1:`(let ((fn (capitalize (file-name-nondirectory + (file-name-sans-extension + (or (buffer-file-name) + (buffer-name (current-buffer)))))))) + (cond + ((string-match "_" fn) (replace-match "" nil nil fn)) + (t fn)))`} + $0 +end \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/sql-mode/column b/elpa/yasnippet-20160131.948/snippets/sql-mode/column new file mode 100644 index 0000000..90e4963 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/sql-mode/column @@ -0,0 +1,4 @@ +#contributor : Alejandro Espinoza Esparza +#name : , ColumnName ColumnType NOT NULL... +# -- + , ${1:Name} ${2:Type} ${3:NOT NULL} diff --git a/elpa/yasnippet-20160131.948/snippets/sql-mode/constraint b/elpa/yasnippet-20160131.948/snippets/sql-mode/constraint new file mode 100644 index 0000000..989e508 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/sql-mode/constraint @@ -0,0 +1,4 @@ +#contributor : Alejandro Espinoza Esparza +#name : CONSTRAINT [..] PRIMARY KEY ... +# -- +CONSTRAINT [${1:PK_Name}] PRIMARY KEY ${2:CLUSTERED} ([${3:ColumnName}]) diff --git a/elpa/yasnippet-20160131.948/snippets/sql-mode/constraint.1 b/elpa/yasnippet-20160131.948/snippets/sql-mode/constraint.1 new file mode 100644 index 0000000..98d89f0 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/sql-mode/constraint.1 @@ -0,0 +1,4 @@ +#contributor : Alejandro Espinoza Esparza +#name : CONSTRAINT [..] FOREIGN KEY ... +# -- +CONSTRAINT [${1:FK_Name}] FOREIGN KEY ${2:CLUSTERED} ([${3:ColumnName}]) diff --git a/elpa/yasnippet-20160131.948/snippets/sql-mode/create b/elpa/yasnippet-20160131.948/snippets/sql-mode/create new file mode 100644 index 0000000..a34624d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/sql-mode/create @@ -0,0 +1,10 @@ +#contributor : Alejandro Espinoza Esparza +#name : create table ... +# -- +CREATE TABLE [${1:dbo}].[${2:TableName}] +( + ${3:Id} ${4:INT IDENTITY(1,1)} ${5:NOT NULL} +$0 + CONSTRAINT [${6:PK_}] PRIMARY KEY ${7:CLUSTERED} ([$3]) +) +GO diff --git a/elpa/yasnippet-20160131.948/snippets/sql-mode/create.1 b/elpa/yasnippet-20160131.948/snippets/sql-mode/create.1 new file mode 100644 index 0000000..1323daf --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/sql-mode/create.1 @@ -0,0 +1,12 @@ +#contributor : Alejandro Espinoza Esparza +#name : create procedure ... +# -- +CREATE PROCEDURE [${1:dbo}].[${2:Name}] +( + $3 $4 = ${5:NULL} ${6:OUTPUT} +) +AS +BEGIN +$0 +END +GO diff --git a/elpa/yasnippet-20160131.948/snippets/sql-mode/references b/elpa/yasnippet-20160131.948/snippets/sql-mode/references new file mode 100644 index 0000000..f2e4eab --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/sql-mode/references @@ -0,0 +1,4 @@ +#contributor : Alejandro Espinoza Esparza +#name : REFERENCES ... +# -- +REFERENCES ${1:TableName}([${2:ColumnName}]) diff --git a/elpa/yasnippet-20160131.948/snippets/text-mode/.yas-parents b/elpa/yasnippet-20160131.948/snippets/text-mode/.yas-parents new file mode 100644 index 0000000..c3ca481 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/text-mode/.yas-parents @@ -0,0 +1 @@ +fundamental-mode diff --git a/elpa/yasnippet-20160131.948/snippets/tuareg-mode/assert b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/assert new file mode 100644 index 0000000..574f865 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/assert @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: assert +# key: as +# -- +assert $0;; \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/tuareg-mode/docstring b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/docstring new file mode 100644 index 0000000..6738353 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/docstring @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: docstring +# key: d +# -- +(* $0 *) \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/tuareg-mode/for b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/for new file mode 100644 index 0000000..f21b345 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/for @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: for +# key: for +# -- +for ${1:cond} do + $0 +done \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/tuareg-mode/fun b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/fun new file mode 100644 index 0000000..7579a3c --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/fun @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: fun +# key: fun +# -- +fun ${1:args} -> $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/tuareg-mode/guard b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/guard new file mode 100644 index 0000000..13d43fc --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/guard @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: guard +# key: | +# -- +| ${1:match} -> $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/tuareg-mode/ifthen b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/ifthen new file mode 100644 index 0000000..dfb1907 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/ifthen @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: ifthen +# key: if +# -- +if ${1:cond} then + $0 diff --git a/elpa/yasnippet-20160131.948/snippets/tuareg-mode/ifthenelse b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/ifthenelse new file mode 100644 index 0000000..86d409f --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/ifthenelse @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: ifthenelse +# key: if +# -- +if ${1:cond} then + $2 +else + $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/tuareg-mode/let b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/let new file mode 100644 index 0000000..1a0162e --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/let @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: let +# key: let +# -- +let ${1:var} $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/tuareg-mode/list_comprehension b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/list_comprehension new file mode 100644 index 0000000..86d4a53 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/list_comprehension @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: list_comprehension +# key: l +# -- +[? $1 | $0 ?] \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/tuareg-mode/main b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/main new file mode 100644 index 0000000..3351548 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/main @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: main +# key: m +# -- +let main = + $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/tuareg-mode/match b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/match new file mode 100644 index 0000000..18d4caa --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/match @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: match +# key: match +# -- +match ${1:to_match} with + | ${2:matching} -> $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/tuareg-mode/module b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/module new file mode 100644 index 0000000..7e14d14 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/module @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: module +# key: mod +# -- +module ${1:A} = + struct + ${2:type t = { name : string; phone : string }} + $0 +end;; diff --git a/elpa/yasnippet-20160131.948/snippets/tuareg-mode/open b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/open new file mode 100644 index 0000000..cfc71f4 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/open @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: open +# key: op +# -- +open ${1:Module} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/tuareg-mode/printf b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/printf new file mode 100644 index 0000000..71a9a59 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/printf @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: printf +# key: pr +# -- +Printf.printf "${1:string}" ${2:vals};; \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/tuareg-mode/rec b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/rec new file mode 100644 index 0000000..e901eb4 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/rec @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: rec +# key: rec +# -- +let rec ${1:fun} ${2:args} = + $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/tuareg-mode/try b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/try new file mode 100644 index 0000000..9c7faed --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/try @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: try +# key: try +# -- +try + $0 +with + $1 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/tuareg-mode/type b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/type new file mode 100644 index 0000000..a81b0e1 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/type @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: type_record +# key: type +# -- +type ${1:name} = {${2:var}: ${3:int}$0} \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/tuareg-mode/type_type b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/type_type new file mode 100644 index 0000000..c5b4ac9 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/type_type @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: type_type +# key: type +# -- +type ${1:expr} = + | $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/tuareg-mode/val b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/val new file mode 100644 index 0000000..6a565ac --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/val @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: val +# key: val +# -- +val ${1:fun} : $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/tuareg-mode/while b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/while new file mode 100644 index 0000000..e4b1f07 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/tuareg-mode/while @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: while +# key: wh +# -- +while ${1:cond} do + $0 +done \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/typerex-mode b/elpa/yasnippet-20160131.948/snippets/typerex-mode new file mode 100644 index 0000000..e69de29 diff --git a/elpa/yasnippet-20160131.948/snippets/udev-mode/ENV b/elpa/yasnippet-20160131.948/snippets/udev-mode/ENV new file mode 100644 index 0000000..e25b271 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/udev-mode/ENV @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: ENV +# key: env +# -- +ENV{$1}$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/udev-mode/GOTO b/elpa/yasnippet-20160131.948/snippets/udev-mode/GOTO new file mode 100644 index 0000000..2200b5d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/udev-mode/GOTO @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: GOTO +# key: goto +# -- +GOTO="$1" +$0 + +LABEL="$1" \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/udev-mode/KERNEL b/elpa/yasnippet-20160131.948/snippets/udev-mode/KERNEL new file mode 100644 index 0000000..c27d937 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/udev-mode/KERNEL @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: KERNEL +# key: ker +# -- +KERNEL!="$0" \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/udev-mode/add b/elpa/yasnippet-20160131.948/snippets/udev-mode/add new file mode 100644 index 0000000..8cbd63b --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/udev-mode/add @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: add +# key: add +# -- +ACTION=="add", $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/udev-mode/env$ b/elpa/yasnippet-20160131.948/snippets/udev-mode/env$ new file mode 100644 index 0000000..7c743b1 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/udev-mode/env$ @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: env$ +# key: $ +# -- +$env{$1} $0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/udev-mode/run b/elpa/yasnippet-20160131.948/snippets/udev-mode/run new file mode 100644 index 0000000..cc0bb7b --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/udev-mode/run @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: run +# key: run +# -- +RUN+="$0" \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/web-mode b/elpa/yasnippet-20160131.948/snippets/web-mode new file mode 100644 index 0000000..e69de29 diff --git a/elpa/yasnippet-20160131.948/snippets/yaml-mode/entry b/elpa/yasnippet-20160131.948/snippets/yaml-mode/entry new file mode 100644 index 0000000..f9cfbe7 --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/yaml-mode/entry @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: entry +# key: entry +# -- +${1:entry}: ${2:value} +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/yaml-mode/list b/elpa/yasnippet-20160131.948/snippets/yaml-mode/list new file mode 100644 index 0000000..89d97eb --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/yaml-mode/list @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: list +# key: list +# -- +[$1] +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/snippets/yaml-mode/section b/elpa/yasnippet-20160131.948/snippets/yaml-mode/section new file mode 100644 index 0000000..5e8782d --- /dev/null +++ b/elpa/yasnippet-20160131.948/snippets/yaml-mode/section @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: section +# key: -- +# -- +--- # ${1:section} +$0 \ No newline at end of file diff --git a/elpa/yasnippet-20160131.948/yasnippet-autoloads.el b/elpa/yasnippet-20160131.948/yasnippet-autoloads.el new file mode 100644 index 0000000..d187e67 --- /dev/null +++ b/elpa/yasnippet-20160131.948/yasnippet-autoloads.el @@ -0,0 +1,57 @@ +;;; yasnippet-autoloads.el --- automatically extracted autoloads +;; +;;; Code: +(add-to-list 'load-path (directory-file-name (or (file-name-directory #$) (car load-path)))) + +;;;### (autoloads nil "yasnippet" "yasnippet.el" (22215 17796 0 0)) +;;; Generated autoloads from yasnippet.el + +(autoload 'yas-minor-mode "yasnippet" "\ +Toggle YASnippet mode. + +When YASnippet mode is enabled, `yas-expand', normally bound to +the TAB key, expands snippets of code depending on the major +mode. + +With no argument, this command toggles the mode. +positive prefix argument turns on the mode. +Negative prefix argument turns off the mode. + +Key bindings: +\\{yas-minor-mode-map} + +\(fn &optional ARG)" t nil) + +(defvar yas-global-mode nil "\ +Non-nil if Yas-Global mode is enabled. +See the command `yas-global-mode' for a description of this minor mode. +Setting this variable directly does not take effect; +either customize it (see the info node `Easy Customization') +or call the function `yas-global-mode'.") + +(custom-autoload 'yas-global-mode "yasnippet" nil) + +(autoload 'yas-global-mode "yasnippet" "\ +Toggle Yas minor mode in all buffers. +With prefix ARG, enable Yas-Global mode if ARG is positive; +otherwise, disable it. If called from Lisp, enable the mode if +ARG is omitted or nil. + +Yas minor mode is enabled in all buffers where +`yas-minor-mode-on' would do it. +See `yas-minor-mode' for more information on Yas minor mode. + +\(fn &optional ARG)" t nil) + +;;;*** + +;;;### (autoloads nil nil ("yasnippet-pkg.el") (22215 17790 0 0)) + +;;;*** + +;; Local Variables: +;; version-control: never +;; no-byte-compile: t +;; no-update-autoloads: t +;; End: +;;; yasnippet-autoloads.el ends here diff --git a/elpa/yasnippet-20160131.948/yasnippet-pkg.el b/elpa/yasnippet-20160131.948/yasnippet-pkg.el new file mode 100644 index 0000000..732b775 --- /dev/null +++ b/elpa/yasnippet-20160131.948/yasnippet-pkg.el @@ -0,0 +1,5 @@ +(define-package "yasnippet" "20160131.948" "Yet another snippet extension for Emacs." 'nil :url "http://github.com/capitaomorte/yasnippet" :keywords + '("convenience" "emulation")) +;; Local Variables: +;; no-byte-compile: t +;; End: diff --git a/elpa/yasnippet-20160131.948/yasnippet.el b/elpa/yasnippet-20160131.948/yasnippet.el new file mode 100644 index 0000000..69d6b26 --- /dev/null +++ b/elpa/yasnippet-20160131.948/yasnippet.el @@ -0,0 +1,4596 @@ +;;; yasnippet.el --- Yet another snippet extension for Emacs. + +;; Copyright (C) 2008-2013, 2015 Free Software Foundation, Inc. +;; Authors: pluskid , João Távora , Noam Postavsky +;; Maintainer: Noam Postavsky +;; Version: 0.8.1 +;; Package-version: 0.8.0 +;; X-URL: http://github.com/capitaomorte/yasnippet +;; Keywords: convenience, emulation +;; URL: http://github.com/capitaomorte/yasnippet +;; EmacsWiki: YaSnippetMode + +;; This program is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . + +;;; Commentary: +;; +;; Basic steps to setup: +;; +;; (add-to-list 'load-path +;; "~/path-to-yasnippet") +;; (require 'yasnippet) +;; (yas-global-mode 1) +;; +;; +;; Interesting variables are: +;; +;; `yas-snippet-dirs' +;; +;; The directory where user-created snippets are to be +;; stored. Can also be a list of directories. In that case, +;; when used for bulk (re)loading of snippets (at startup or +;; via `yas-reload-all'), directories appearing earlier in +;; the list override other dir's snippets. Also, the first +;; directory is taken as the default for storing the user's +;; new snippets. +;; +;; The deprecated `yas/root-directory' aliases this variable +;; for backward-compatibility. +;; +;; +;; Major commands are: +;; +;; M-x yas-expand +;; +;; Try to expand snippets before point. In `yas-minor-mode', +;; this is normally bound to TAB, but you can customize it in +;; `yas-minor-mode-map'. +;; +;; M-x yas-load-directory +;; +;; Prompts you for a directory hierarchy of snippets to load. +;; +;; M-x yas-activate-extra-mode +;; +;; Prompts you for an extra mode to add snippets for in the +;; current buffer. +;; +;; M-x yas-insert-snippet +;; +;; Prompts you for possible snippet expansion if that is +;; possible according to buffer-local and snippet-local +;; expansion conditions. With prefix argument, ignore these +;; conditions. +;; +;; M-x yas-visit-snippet-file +;; +;; Prompts you for possible snippet expansions like +;; `yas-insert-snippet', but instead of expanding it, takes +;; you directly to the snippet definition's file, if it +;; exists. +;; +;; M-x yas-new-snippet +;; +;; Lets you create a new snippet file in the correct +;; subdirectory of `yas-snippet-dirs', according to the +;; active major mode. +;; +;; M-x yas-load-snippet-buffer +;; +;; When editing a snippet, this loads the snippet. This is +;; bound to "C-c C-c" while in the `snippet-mode' editing +;; mode. +;; +;; M-x yas-tryout-snippet +;; +;; When editing a snippet, this opens a new empty buffer, +;; sets it to the appropriate major mode and inserts the +;; snippet there, so you can see what it looks like. This is +;; bound to "C-c C-t" while in `snippet-mode'. +;; +;; M-x yas-describe-tables +;; +;; Lists known snippets in a separate buffer. User is +;; prompted as to whether only the currently active tables +;; are to be displayed, or all the tables for all major +;; modes. +;; +;; If you have `dropdown-list' installed, you can optionally use it +;; as the preferred "prompting method", putting in your .emacs file, +;; for example: +;; +;; (require 'dropdown-list) +;; (setq yas-prompt-functions '(yas-dropdown-prompt +;; yas-ido-prompt +;; yas-completing-prompt)) +;; +;; Also check out the customization group +;; +;; M-x customize-group RET yasnippet RET +;; +;; If you use the customization group to set variables +;; `yas-snippet-dirs' or `yas-global-mode', make sure the path to +;; "yasnippet.el" is present in the `load-path' *before* the +;; `custom-set-variables' is executed in your .emacs file. +;; +;; For more information and detailed usage, refer to the project page: +;; http://github.com/capitaomorte/yasnippet + +;;; Code: + +(require 'cl) +(require 'cl-lib) +(require 'easymenu) +(require 'help-mode) + +(defvar yas--editing-template) +(defvar yas--guessed-modes) +(defvar yas--indent-original-column) +(defvar yas--scheduled-jit-loads) +(defvar yas-keymap) +(defvar yas-selected-text) +(defvar yas-verbosity) +(defvar yas--current-template) + + +;;; User customizable variables + +(defgroup yasnippet nil + "Yet Another Snippet extension" + :prefix "yas-" + :group 'editing) + +(defvar yas-installed-snippets-dir nil) +(setq yas-installed-snippets-dir + (when load-file-name + (concat (file-name-directory load-file-name) "snippets"))) + +(defconst yas--default-user-snippets-dir + (concat user-emacs-directory "snippets")) + +(defcustom yas-snippet-dirs (remove nil + (list yas--default-user-snippets-dir + 'yas-installed-snippets-dir)) + "List of top-level snippet directories. + +Each element, a string or a symbol whose value is a string, +designates a top-level directory where per-mode snippet +directories can be found. + +Elements appearing earlier in the list override later elements' +snippets. + +The first directory is taken as the default for storing snippet's +created with `yas-new-snippet'. " + :type '(choice (string :tag "Single directory (string)") + (repeat :args (string) :tag "List of directories (strings)")) + :group 'yasnippet + :require 'yasnippet + :set #'(lambda (symbol new) + (let ((old (and (boundp symbol) + (symbol-value symbol)))) + (set-default symbol new) + (unless (or (not (fboundp 'yas-reload-all)) + (equal old new)) + (yas-reload-all))))) + +(defun yas-snippet-dirs () + "Return variable `yas-snippet-dirs' as list of strings." + (cl-loop for e in (if (listp yas-snippet-dirs) + yas-snippet-dirs + (list yas-snippet-dirs)) + collect + (cond ((stringp e) e) + ((and (symbolp e) + (boundp e) + (stringp (symbol-value e))) + (symbol-value e)) + (t + (error "[yas] invalid element %s in `yas-snippet-dirs'" e))))) + +(defvaralias 'yas/root-directory 'yas-snippet-dirs) + +(defcustom yas-new-snippet-default "\ +# -*- mode: snippet -*- +# name: $1 +# key: ${2:${1:$(yas--key-from-desc yas-text)}} +# -- +$0" + "Default snippet to use when creating a new snippet. +If nil, don't use any snippet." + :type 'string + :group 'yasnippet) + +(defcustom yas-prompt-functions '(yas-dropdown-prompt + yas-completing-prompt + yas-maybe-ido-prompt + yas-no-prompt) + "Functions to prompt for keys, templates, etc interactively. + +These functions are called with the following arguments: + +- PROMPT: A string to prompt the user + +- CHOICES: a list of strings or objects. + +- optional DISPLAY-FN : A function that, when applied to each of +the objects in CHOICES will return a string. + +The return value of any function you put here should be one of +the objects in CHOICES, properly formatted with DISPLAY-FN (if +that is passed). + +- To signal that your particular style of prompting is +unavailable at the moment, you can also have the function return +nil. + +- To signal that the user quit the prompting process, you can +signal `quit' with + + (signal 'quit \"user quit!\")." + :type '(repeat function) + :group 'yasnippet) + +(defcustom yas-indent-line 'auto + "Controls indenting applied to a recent snippet expansion. + +The following values are possible: + +- `fixed' Indent the snippet to the current column; + +- `auto' Indent each line of the snippet with `indent-according-to-mode' + +Every other value means don't apply any snippet-side indentation +after expansion (the manual per-line \"$>\" indentation still +applies)." + :type '(choice (const :tag "Nothing" nothing) + (const :tag "Fixed" fixed) + (const :tag "Auto" auto)) + :group 'yasnippet) + +(defcustom yas-also-auto-indent-first-line nil + "Non-nil means also auto indent first line according to mode. + +Naturally this is only valid when `yas-indent-line' is `auto'" + :type 'boolean + :group 'yasnippet) + +(defcustom yas-snippet-revival t + "Non-nil means re-activate snippet fields after undo/redo." + :type 'boolean + :group 'yasnippet) + +(defcustom yas-triggers-in-field nil + "If non-nil, allow stacked expansions (snippets inside snippets). + +Otherwise `yas-next-field-or-maybe-expand' just moves on to the +next field" + :type 'boolean + :group 'yasnippet) + +(defcustom yas-fallback-behavior 'call-other-command + "How to act when `yas-expand' does *not* expand a snippet. + +- `call-other-command' means try to temporarily disable YASnippet + and call the next command bound to whatever key was used to + invoke `yas-expand'. + +- nil or the symbol `return-nil' mean do nothing. (and + `yas-expand' returns nil) + +- A Lisp form (apply COMMAND . ARGS) means interactively call + COMMAND. If ARGS is non-nil, call COMMAND non-interactively + with ARGS as arguments." + :type '(choice (const :tag "Call previous command" call-other-command) + (const :tag "Do nothing" return-nil)) + :group 'yasnippet) + +(defcustom yas-choose-keys-first nil + "If non-nil, prompt for snippet key first, then for template. + +Otherwise prompts for all possible snippet names. + +This affects `yas-insert-snippet' and `yas-visit-snippet-file'." + :type 'boolean + :group 'yasnippet) + +(defcustom yas-choose-tables-first nil + "If non-nil, and multiple eligible snippet tables, prompts user for tables first. + +Otherwise, user chooses between the merging together of all +eligible tables. + +This affects `yas-insert-snippet', `yas-visit-snippet-file'" + :type 'boolean + :group 'yasnippet) + +(defcustom yas-use-menu 'abbreviate + "Display a YASnippet menu in the menu bar. + +When non-nil, submenus for each snippet table will be listed +under the menu \"Yasnippet\". + +- If set to `abbreviate', only the current major-mode +menu and the modes set in `yas--extra-modes' are listed. + +- If set to `full', every submenu is listed + +- If set to `nil', hide the menu. + +Any other non-nil value, every submenu is listed." + :type '(choice (const :tag "Full" full) + (const :tag "Abbreviate" abbreviate) + (const :tag "No menu" nil)) + :group 'yasnippet) + +(defcustom yas-trigger-symbol (or (and (eq window-system 'mac) + (ignore-errors + (char-to-string ?\x21E5))) ;; little ->| sign + " =>") + "The text that will be used in menu to represent the trigger." + :type 'string + :group 'yasnippet) + +(defcustom yas-wrap-around-region nil + "If non-nil, snippet expansion wraps around selected region. + +The wrapping occurs just before the snippet's exit marker. This +can be overridden on a per-snippet basis." + :type 'boolean + :group 'yasnippet) + +(defcustom yas-good-grace t + "If non-nil, don't raise errors in inline elisp evaluation. + +An error string \"[yas] error\" is returned instead." + :type 'boolean + :group 'yasnippet) + +(defcustom yas-visit-from-menu nil + "If non-nil visit snippets's files from menu, instead of expanding them. + +This can only work when snippets are loaded from files." + :type 'boolean + :group 'yasnippet) + +(defcustom yas-expand-only-for-last-commands nil + "List of `last-command' values to restrict tab-triggering to, or nil. + +Leave this set at nil (the default) to be able to trigger an +expansion simply by placing the cursor after a valid tab trigger, +using whichever commands. + +Optionally, set this to something like '(self-insert-command) if +you to wish restrict expansion to only happen when the last +letter of the snippet tab trigger was typed immediately before +the trigger key itself." + :type '(repeat function) + :group 'yasnippet) + +;; Only two faces, and one of them shouldn't even be used... +;; +(defface yas-field-highlight-face + '((t (:inherit 'region))) + "The face used to highlight the currently active field of a snippet" + :group 'yasnippet) + +(defface yas--field-debug-face + '() + "The face used for debugging some overlays normally hidden" + :group 'yasnippet) + + +;;; User-visible variables + +(defvar yas-keymap (let ((map (make-sparse-keymap))) + (define-key map [(tab)] 'yas-next-field-or-maybe-expand) + (define-key map (kbd "TAB") 'yas-next-field-or-maybe-expand) + (define-key map [(shift tab)] 'yas-prev-field) + (define-key map [backtab] 'yas-prev-field) + (define-key map (kbd "C-g") 'yas-abort-snippet) + (define-key map (kbd "C-d") 'yas-skip-and-clear-or-delete-char) + map) + "The active keymap while a snippet expansion is in progress.") + +(defvar yas-key-syntaxes (list "w" "w_" "w_." "w_.()" + #'yas-try-key-from-whitespace) + "Syntaxes and functions to help look for trigger keys before point. + +Each element in this list specifies how to skip buffer positions +backwards and look for the start of a trigger key. + +Each element can be either a string or a function receiving the +original point as an argument. A string element is simply passed +to `skip-syntax-backward' whereas a function element is called +with no arguments and should also place point before the original +position. + +The string between the resulting buffer position and the original +point is matched against the trigger keys in the active snippet +tables. + +If no expandable snippets are found, the next element is the list +is tried, unless a function element returned the symbol `again', +in which case it is called again from the previous position and +may once more reposition point. + +For example, if `yas-key-syntaxes'' value is '(\"w\" \"w_\"), +trigger keys composed exclusively of \"word\"-syntax characters +are looked for first. Failing that, longer keys composed of +\"word\" or \"symbol\" syntax are looked for. Therefore, +triggering after + +foo-bar + +will, according to the \"w\" element first try \"barbaz\". If +that isn't a trigger key, \"foo-barbaz\" is tried, respecting the +second \"w_\" element. Notice that even if \"baz\" is a trigger +key for an active snippet, it won't be expanded, unless a +function is added to `yas-key-syntaxes' that eventually places +point between \"bar\" and \"baz\". + +See also Info node `(elisp) Syntax Descriptors'.") + +(defvar yas-after-exit-snippet-hook + '() + "Hooks to run after a snippet exited. + +The hooks will be run in an environment where some variables bound to +proper values: + +`yas-snippet-beg' : The beginning of the region of the snippet. + +`yas-snippet-end' : Similar to beg. + +Attention: These hooks are not run when exiting nested/stacked snippet expansion!") + +(defvar yas-before-expand-snippet-hook + '() + "Hooks to run just before expanding a snippet.") + +(defvar yas-buffer-local-condition + '(if (and (let ((ppss (syntax-ppss))) + (or (nth 3 ppss) (nth 4 ppss))) + (memq this-command '(yas-expand yas-expand-from-trigger-key + yas-expand-from-keymap))) + '(require-snippet-condition . force-in-comment) + t) + "Snippet expanding condition. + +This variable is a Lisp form which is evaluated every time a +snippet expansion is attempted: + + * If it evaluates to nil, no snippets can be expanded. + + * If it evaluates to the a cons (require-snippet-condition + . REQUIREMENT) + + * Snippets bearing no \"# condition:\" directive are not + considered + + * Snippets bearing conditions that evaluate to nil (or + produce an error) won't be considered. + + * If the snippet has a condition that evaluates to non-nil + RESULT: + + * If REQUIREMENT is t, the snippet is considered + + * If REQUIREMENT is `eq' RESULT, the snippet is + considered + + * Otherwise, the snippet is not considered. + + * If it evaluates to the symbol 'always, all snippets are + considered for expansion, regardless of any conditions. + + * If it evaluates to t or some other non-nil value + + * Snippet bearing no conditions, or conditions that + evaluate to non-nil, are considered for expansion. + + * Otherwise, the snippet is not considered. + +Here's an example preventing snippets from being expanded from +inside comments, in `python-mode' only, with the exception of +snippets returning the symbol 'force-in-comment in their +conditions. + + (add-hook 'python-mode-hook + '(lambda () + (setq yas-buffer-local-condition + '(if (python-in-string/comment) + '(require-snippet-condition . force-in-comment) + t)))) + +The default value is similar, it filters out potential snippet +expansions inside comments and string literals, unless the +snippet itself contains a condition that returns the symbol +`force-in-comment'.") + + +;;; Internal variables + +(defvar yas--version "0.8.0beta") + +(defvar yas--menu-table (make-hash-table) + "A hash table of MAJOR-MODE symbols to menu keymaps.") + +(defvar yas--escaped-characters + '(?\\ ?` ?\" ?' ?$ ?} ?{ ?\( ?\)) + "List of characters which *might* need to be escaped.") + +(defconst yas--field-regexp + "${\\([0-9]+:\\)?\\([^}]*\\)}" + "A regexp to *almost* recognize a field.") + +(defconst yas--multi-dollar-lisp-expression-regexp + "$+[ \t\n]*\\(([^)]*)\\)" + "A regexp to *almost* recognize a \"$(...)\" expression.") + +(defconst yas--backquote-lisp-expression-regexp + "`\\([^`]*\\)`" + "A regexp to recognize a \"`lisp-expression`\" expression." ) + +(defconst yas--transform-mirror-regexp + "${\\(?:\\([0-9]+\\):\\)?$\\([ \t\n]*([^}]*\\)" + "A regexp to *almost* recognize a mirror with a transform.") + +(defconst yas--simple-mirror-regexp + "$\\([0-9]+\\)" + "A regexp to recognize a simple mirror.") + +(defvar yas--snippet-id-seed 0 + "Contains the next id for a snippet.") + +(defun yas--snippet-next-id () + (let ((id yas--snippet-id-seed)) + (cl-incf yas--snippet-id-seed) + id)) + + +;;; Minor mode stuff + +;; XXX: `last-buffer-undo-list' is somehow needed in Carbon Emacs for MacOSX +(defvar last-buffer-undo-list nil) + +(defvar yas--minor-mode-menu nil + "Holds the YASnippet menu.") + +(defvar yas-minor-mode-map + (let ((map (make-sparse-keymap))) + (define-key map [(tab)] 'yas-expand) + (define-key map (kbd "TAB") 'yas-expand) + (define-key map "\C-c&\C-s" 'yas-insert-snippet) + (define-key map "\C-c&\C-n" 'yas-new-snippet) + (define-key map "\C-c&\C-v" 'yas-visit-snippet-file) + map) + "The keymap used when `yas-minor-mode' is active.") + +(easy-menu-define yas--minor-mode-menu + yas-minor-mode-map + "Menu used when `yas-minor-mode' is active." + '("YASnippet" :visible yas-use-menu + "----" + ["Expand trigger" yas-expand + :help "Possibly expand tab trigger before point"] + ["Insert at point..." yas-insert-snippet + :help "Prompt for an expandable snippet and expand it at point"] + ["New snippet..." yas-new-snippet + :help "Create a new snippet in an appropriate directory"] + ["Visit snippet file..." yas-visit-snippet-file + :help "Prompt for an expandable snippet and find its file"] + "----" + ("Snippet menu behaviour" + ["Visit snippets" (setq yas-visit-from-menu t) + :help "Visit snippets from the menu" + :active t :style radio :selected yas-visit-from-menu] + ["Expand snippets" (setq yas-visit-from-menu nil) + :help "Expand snippets from the menu" + :active t :style radio :selected (not yas-visit-from-menu)] + "----" + ["Show all known modes" (setq yas-use-menu 'full) + :help "Show one snippet submenu for each loaded table" + :active t :style radio :selected (eq yas-use-menu 'full)] + ["Abbreviate according to current mode" (setq yas-use-menu 'abbreviate) + :help "Show only snippet submenus for the current active modes" + :active t :style radio :selected (eq yas-use-menu 'abbreviate)]) + ("Indenting" + ["Auto" (setq yas-indent-line 'auto) + :help "Indent each line of the snippet with `indent-according-to-mode'" + :active t :style radio :selected (eq yas-indent-line 'auto)] + ["Fixed" (setq yas-indent-line 'fixed) + :help "Indent the snippet to the current column" + :active t :style radio :selected (eq yas-indent-line 'fixed)] + ["None" (setq yas-indent-line 'none) + :help "Don't apply any particular snippet indentation after expansion" + :active t :style radio :selected (not (member yas-indent-line '(fixed auto)))] + "----" + ["Also auto indent first line" (setq yas-also-auto-indent-first-line + (not yas-also-auto-indent-first-line)) + :help "When auto-indenting also, auto indent the first line menu" + :active (eq yas-indent-line 'auto) + :style toggle :selected yas-also-auto-indent-first-line] + ) + ("Prompting method" + ["System X-widget" (setq yas-prompt-functions + (cons 'yas-x-prompt + (remove 'yas-x-prompt + yas-prompt-functions))) + :help "Use your windowing system's (gtk, mac, windows, etc...) default menu" + :active t :style radio :selected (eq (car yas-prompt-functions) + 'yas-x-prompt)] + ["Dropdown-list" (setq yas-prompt-functions + (cons 'yas-dropdown-prompt + (remove 'yas-dropdown-prompt + yas-prompt-functions))) + :help "Use a special dropdown list" + :active t :style radio :selected (eq (car yas-prompt-functions) + 'yas-dropdown-prompt)] + ["Ido" (setq yas-prompt-functions + (cons 'yas-ido-prompt + (remove 'yas-ido-prompt + yas-prompt-functions))) + :help "Use an ido-style minibuffer prompt" + :active t :style radio :selected (eq (car yas-prompt-functions) + 'yas-ido-prompt)] + ["Completing read" (setq yas-prompt-functions + (cons 'yas-completing-prompt + (remove 'yas-completing-prompt + yas-prompt-functions))) + :help "Use a normal minibuffer prompt" + :active t :style radio :selected (eq (car yas-prompt-functions) + 'yas-completing-prompt)] + ) + ("Misc" + ["Wrap region in exit marker" + (setq yas-wrap-around-region + (not yas-wrap-around-region)) + :help "If non-nil automatically wrap the selected text in the $0 snippet exit" + :style toggle :selected yas-wrap-around-region] + ["Allow stacked expansions " + (setq yas-triggers-in-field + (not yas-triggers-in-field)) + :help "If non-nil allow snippets to be triggered inside other snippet fields" + :style toggle :selected yas-triggers-in-field] + ["Revive snippets on undo " + (setq yas-snippet-revival + (not yas-snippet-revival)) + :help "If non-nil allow snippets to become active again after undo" + :style toggle :selected yas-snippet-revival] + ["Good grace " + (setq yas-good-grace + (not yas-good-grace)) + :help "If non-nil don't raise errors in bad embedded elisp in snippets" + :style toggle :selected yas-good-grace] + ) + "----" + ["Load snippets..." yas-load-directory + :help "Load snippets from a specific directory"] + ["Reload everything" yas-reload-all + :help "Cleanup stuff, reload snippets, rebuild menus"] + ["About" yas-about + :help "Display some information about YASnippet"])) + +(defvar yas--extra-modes nil + "An internal list of modes for which to also lookup snippets. + +This variable probably makes more sense as buffer-local, so +ensure your use `make-local-variable' when you set it.") +(define-obsolete-variable-alias 'yas-extra-modes 'yas--extra-modes "0.8.1") + +(defvar yas--tables (make-hash-table) + "A hash table of mode symbols to `yas--table' objects.") + +(defvar yas--parents (make-hash-table) + "A hash table of mode symbols do lists of direct parent mode symbols. + +This list is populated when reading the \".yas-parents\" files +found when traversing snippet directories with +`yas-load-directory'. + +There might be additional parenting information stored in the +`derived-mode-parent' property of some mode symbols, but that is +not recorded here.") + +(defvar yas--direct-keymaps (list) + "Keymap alist supporting direct snippet keybindings. + +This variable is placed in `emulation-mode-map-alists'. + +Its elements looks like (TABLE-NAME . KEYMAP). They're +instantiated on `yas-reload-all' but KEYMAP is added to only when +loading snippets. `yas--direct-TABLE-NAME' is then a variable set +buffer-locally when entering `yas-minor-mode'. KEYMAP binds all +defined direct keybindings to the command +`yas-expand-from-keymap' which then which snippet to expand.") + +(defun yas-direct-keymaps-reload () + "Force reload the direct keybinding for active snippet tables." + (interactive) + (setq yas--direct-keymaps nil) + (maphash #'(lambda (name table) + (push (cons (intern (format "yas--direct-%s" name)) + (yas--table-direct-keymap table)) + yas--direct-keymaps)) + yas--tables)) + +(defun yas--modes-to-activate (&optional mode) + "Compute list of mode symbols that are active for `yas-expand' +and friends." + (let* ((explored (if mode (list mode) ; Building up list in reverse. + (cons major-mode (reverse yas--extra-modes)))) + (dfs + (lambda (mode) + (cl-loop for neighbour + in (cl-list* (get mode 'derived-mode-parent) + (ignore-errors (symbol-function mode)) + (gethash mode yas--parents)) + when (and neighbour + (not (memq neighbour explored)) + (symbolp neighbour)) + do (push neighbour explored) + (funcall dfs neighbour))))) + (mapcar dfs explored) + (nreverse explored))) + +(defvar yas-minor-mode-hook nil + "Hook run when `yas-minor-mode' is turned on.") + +;;;###autoload +(define-minor-mode yas-minor-mode + "Toggle YASnippet mode. + +When YASnippet mode is enabled, `yas-expand', normally bound to +the TAB key, expands snippets of code depending on the major +mode. + +With no argument, this command toggles the mode. +positive prefix argument turns on the mode. +Negative prefix argument turns off the mode. + +Key bindings: +\\{yas-minor-mode-map}" + nil + ;; The indicator for the mode line. + " yas" + :group 'yasnippet + (cond (yas-minor-mode + ;; Install the direct keymaps in `emulation-mode-map-alists' + ;; (we use `add-hook' even though it's not technically a hook, + ;; but it works). Then define variables named after modes to + ;; index `yas--direct-keymaps'. + ;; + ;; Also install the post-command-hook. + ;; + (add-hook 'emulation-mode-map-alists 'yas--direct-keymaps) + (add-hook 'post-command-hook 'yas--post-command-handler nil t) + ;; Set the `yas--direct-%s' vars for direct keymap expansion + ;; + (dolist (mode (yas--modes-to-activate)) + (let ((name (intern (format "yas--direct-%s" mode)))) + (set-default name nil) + (set (make-local-variable name) t))) + ;; Perform JIT loads + ;; + (yas--load-pending-jits)) + (t + ;; Uninstall the direct keymaps and the post-command hook + ;; + (remove-hook 'post-command-hook 'yas--post-command-handler t) + (remove-hook 'emulation-mode-map-alists 'yas--direct-keymaps)))) + +(defun yas-activate-extra-mode (mode) + "Activates the snippets for the given `mode' in the buffer. + +The function can be called in the hook of a minor mode to +activate snippets associated with that mode." + (interactive + (let (modes + symbol) + (maphash (lambda (k _) + (setq modes (cons (list k) modes))) + yas--parents) + (setq symbol (completing-read + "Activate mode: " modes nil t)) + (list + (when (not (string= "" symbol)) + (intern symbol))))) + (when mode + (add-to-list (make-local-variable 'yas--extra-modes) mode) + (yas--load-pending-jits))) + +(defun yas-deactivate-extra-mode (mode) + "Deactivates the snippets for the given `mode' in the buffer." + (interactive + (list (intern + (completing-read + "Deactivate mode: " (mapcar #'list yas--extra-modes) nil t)))) + (set (make-local-variable 'yas--extra-modes) + (remove mode + yas--extra-modes))) + +(defvar yas-dont-activate '(minibufferp) + "If non-nil don't let `yas-global-mode' affect some buffers. + +If a function of zero arguments, then its result is used. + +If a list of functions, then all functions must return nil to +activate yas for this buffer. + +In Emacsen <= 23, this variable is buffer-local. Because +`yas-minor-mode-on' is called by `yas-global-mode' after +executing the buffer's major mode hook, setting this variable +there is an effective way to define exceptions to the \"global\" +activation behaviour. + +In Emacsen > 23, only the global value is used. To define +per-mode exceptions to the \"global\" activation behaviour, call +`yas-minor-mode' with a negative argument directily in the major +mode's hook.") +(unless (> emacs-major-version 23) + (with-no-warnings + (make-variable-buffer-local 'yas-dont-activate))) + + +(defun yas-minor-mode-on () + "Turn on YASnippet minor mode. + +Honour `yas-dont-activate', which see." + (interactive) + ;; Check `yas-dont-activate' + (unless (cond ((functionp yas-dont-activate) + (funcall yas-dont-activate)) + ((consp yas-dont-activate) + (some #'funcall yas-dont-activate)) + (yas-dont-activate)) + (yas-minor-mode 1))) + +;;;###autoload +(define-globalized-minor-mode yas-global-mode yas-minor-mode yas-minor-mode-on + :group 'yasnippet + :require 'yasnippet) + +(defun yas--global-mode-reload-with-jit-maybe () + "Run `yas-reload-all' when `yas-global-mode' is on." + (when yas-global-mode (yas-reload-all))) + +(add-hook 'yas-global-mode-hook 'yas--global-mode-reload-with-jit-maybe) + + +;;; Major mode stuff + +(defvar yas--font-lock-keywords + (append '(("^#.*$" . font-lock-comment-face)) + lisp-font-lock-keywords-2 + '(("$\\([0-9]+\\)" + (0 font-lock-keyword-face) + (1 font-lock-string-face t)) + ("${\\([0-9]+\\):?" + (0 font-lock-keyword-face) + (1 font-lock-warning-face t)) + ("${" . font-lock-keyword-face) + ("$[0-9]+?" . font-lock-preprocessor-face) + ("\\(\\$(\\)" 1 font-lock-preprocessor-face) + ("}" + (0 font-lock-keyword-face))))) + +(defvar snippet-mode-map + (let ((map (make-sparse-keymap))) + (easy-menu-define nil + map + "Menu used when snippet-mode is active." + (cons "Snippet" + (mapcar #'(lambda (ent) + (when (third ent) + (define-key map (third ent) (second ent))) + (vector (first ent) (second ent) t)) + '(("Load this snippet" yas-load-snippet-buffer "\C-c\C-l") + ("Load and quit window" yas-load-snippet-buffer-and-close "\C-c\C-c") + ("Try out this snippet" yas-tryout-snippet "\C-c\C-t"))))) + map) + "The keymap used when `snippet-mode' is active.") + + +(define-derived-mode snippet-mode text-mode "Snippet" + "A mode for editing yasnippets" + (setq font-lock-defaults '(yas--font-lock-keywords)) + (set (make-local-variable 'require-final-newline) nil) + (set (make-local-variable 'comment-start) "#") + (set (make-local-variable 'comment-start-skip) "#+[\t ]*")) + + + +;;; Internal structs for template management + +(cl-defstruct (yas--template + (:constructor yas--make-template) + ;; Handles `yas-define-snippets' format, plus the + ;; initial TABLE argument. + (:constructor + yas--define-snippets-2 + (table + key content + &optional xname condition group + expand-env load-file xkeybinding xuuid save-file + &aux + (name (or xname + ;; A little redundant: we always get a name + ;; from `yas--parse-template' except when + ;; there isn't a file. + (and load-file (file-name-nondirectory load-file)) + (and save-file (file-name-nondirectory save-file)) + key)) + (keybinding (yas--read-keybinding xkeybinding)) + (uuid (or xuuid name)) + (old (gethash uuid (yas--table-uuidhash table))) + (menu-binding-pair + (and old (yas--template-menu-binding-pair old))) + (perm-group + (and old (yas--template-perm-group old)))))) + "A template for a snippet." + key + content + name + condition + expand-env + load-file + save-file + keybinding + uuid + menu-binding-pair + group ;; as dictated by the #group: directive or .yas-make-groups + perm-group ;; as dictated by `yas-define-menu' + table + ) + +(defstruct (yas--table (:constructor yas--make-snippet-table (name))) + "A table to store snippets for a particular mode. + +Has the following fields: + +`yas--table-name' + + A symbol name normally corresponding to a major mode, but can + also be a pseudo major-mode to be used in + `yas-activate-extra-mode', for example. + +`yas--table-hash' + + A hash table (KEY . NAMEHASH), known as the \"keyhash\". KEY is + a string or a vector, where the former is the snippet's trigger + and the latter means it's a direct keybinding. NAMEHASH is yet + another hash of (NAME . TEMPLATE) where NAME is the snippet's + name and TEMPLATE is a `yas--template' object. + +`yas--table-direct-keymap' + + A keymap for the snippets in this table that have direct + keybindings. This is kept in sync with the keyhash, i.e., all + the elements of the keyhash that are vectors appear here as + bindings to `yas-expand-from-keymap'. + +`yas--table-uuidhash' + + A hash table mapping snippets uuid's to the same `yas--template' + objects. A snippet uuid defaults to the snippet's name." + name + (hash (make-hash-table :test 'equal)) + (uuidhash (make-hash-table :test 'equal)) + (parents nil) + (direct-keymap (make-sparse-keymap))) + +(defun yas--get-template-by-uuid (mode uuid) + "Find the snippet template in MODE by its UUID." + (let* ((table (gethash mode yas--tables mode))) + (when table + (gethash uuid (yas--table-uuidhash table))))) + +;; Apropos storing/updating in TABLE, this works in two steps: +;; +;; 1. `yas--remove-template-by-uuid' removes any +;; keyhash-namehash-template mappings from TABLE, grabbing the +;; snippet by its uuid. Also removes mappings from TABLE's +;; `yas--table-direct-keymap' (FIXME: and should probably take care +;; of potentially stale menu bindings right?.) +;; +;; 2. `yas--add-template' adds this all over again. +;; +;; Create a new or add to an existing keyhash-namehash mapping. +;; +;; For reference on understanding this, consider three snippet +;; definitions: +;; +;; A: # name: The Foo +;; # key: foo +;; # binding: C-c M-l +;; +;; B: # name: Mrs Foo +;; # key: foo +;; +;; C: # name: The Bar +;; # binding: C-c M-l +;; +;; D: # name: Baz +;; # key: baz +;; +;; keyhash namehashes(3) yas--template structs(4) +;; ----------------------------------------------------- +;; __________ +;; / \ +;; "foo" ---> "The Foo" ---> [yas--template A] | +;; "Mrs Foo" ---> [yas--template B] | +;; | +;; [C-c M-l] ---> "The Foo" -------------------------/ +;; "The Bar" ---> [yas--template C] +;; +;; "baz" ---> "Baz" ---> [yas--template D] +;; +;; Additionally, since uuid defaults to the name, we have a +;; `yas--table-uuidhash' for TABLE +;; +;; uuidhash yas--template structs +;; ------------------------------- +;; "The Foo" ---> [yas--template A] +;; "Mrs Foo" ---> [yas--template B] +;; "The Bar" ---> [yas--template C] +;; "Baz" ---> [yas--template D] +;; +;; FIXME: the more I look at this data-structure the more I think I'm +;; stupid. There has to be an easier way (but beware lots of code +;; depends on this). +;; +(defun yas--remove-template-by-uuid (table uuid) + "Remove from TABLE a template identified by UUID." + (let ((template (gethash uuid (yas--table-uuidhash table)))) + (when template + (let* ((name (yas--template-name template)) + (empty-keys nil)) + ;; Remove the name from each of the targeted namehashes + ;; + (maphash #'(lambda (k v) + (let ((template (gethash name v))) + (when (and template + (eq uuid (yas--template-uuid template))) + (remhash name v) + (when (zerop (hash-table-count v)) + (push k empty-keys))))) + (yas--table-hash table)) + ;; Remove the namehash themselves if they've become empty + ;; + (dolist (key empty-keys) + (when (vectorp key) + (define-key (yas--table-direct-keymap table) key nil)) + (remhash key (yas--table-hash table))) + + ;; Finally, remove the uuid from the uuidhash + ;; + (remhash uuid (yas--table-uuidhash table)))))) + +(defun yas--add-template (table template) + "Store in TABLE the snippet template TEMPLATE. + +KEY can be a string (trigger key) of a vector (direct +keybinding)." + (let ((name (yas--template-name template)) + (key (yas--template-key template)) + (keybinding (yas--template-keybinding template)) + (_menu-binding-pair (yas--template-menu-binding-pair-get-create template))) + (dolist (k (remove nil (list key keybinding))) + (puthash name + template + (or (gethash k + (yas--table-hash table)) + (puthash k + (make-hash-table :test 'equal) + (yas--table-hash table)))) + (when (vectorp k) + (define-key (yas--table-direct-keymap table) k 'yas-expand-from-keymap))) + + ;; Update TABLE's `yas--table-uuidhash' + (puthash (yas--template-uuid template) + template + (yas--table-uuidhash table)))) + +(defun yas--update-template (table template) + "Add or update TEMPLATE in TABLE. + +Also takes care of adding and updating to the associated menu. +Return TEMPLATE." + ;; Remove from table by uuid + ;; + (yas--remove-template-by-uuid table (yas--template-uuid template)) + ;; Add to table again + ;; + (yas--add-template table template) + ;; Take care of the menu + ;; + (yas--update-template-menu table template) + template) + +(defun yas--update-template-menu (table template) + "Update every menu-related for TEMPLATE." + (let ((menu-binding-pair (yas--template-menu-binding-pair-get-create template)) + (key (yas--template-key template)) + (keybinding (yas--template-keybinding template))) + ;; The snippet might have changed name or keys, so update + ;; user-visible strings + ;; + (unless (eq (cdr menu-binding-pair) :none) + ;; the menu item name + ;; + (setf (cadar menu-binding-pair) (yas--template-name template)) + ;; the :keys information (also visible to the user) + (setf (getf (cdr (car menu-binding-pair)) :keys) + (or (and keybinding (key-description keybinding)) + (and key (concat key yas-trigger-symbol)))))) + (unless (yas--template-menu-managed-by-yas-define-menu template) + (let ((menu-keymap + (yas--menu-keymap-get-create (yas--table-mode table) + (mapcar #'yas--table-mode + (yas--table-parents table)))) + (group (yas--template-group template))) + ;; Remove from menu keymap + ;; + (assert menu-keymap) + (yas--delete-from-keymap menu-keymap (yas--template-uuid template)) + + ;; Add necessary subgroups as necessary. + ;; + (dolist (subgroup group) + (let ((subgroup-keymap (lookup-key menu-keymap (vector (make-symbol subgroup))))) + (unless (and subgroup-keymap + (keymapp subgroup-keymap)) + (setq subgroup-keymap (make-sparse-keymap)) + (define-key menu-keymap (vector (make-symbol subgroup)) + `(menu-item ,subgroup ,subgroup-keymap))) + (setq menu-keymap subgroup-keymap))) + + ;; Add this entry to the keymap + ;; + (define-key menu-keymap + (vector (make-symbol (yas--template-uuid template))) + (car (yas--template-menu-binding-pair template)))))) + +(defun yas--namehash-templates-alist (namehash) + "Return NAMEHASH as an alist." + (let (alist) + (maphash #'(lambda (k v) + (push (cons k v) alist)) + namehash) + alist)) + +(defun yas--fetch (table key) + "Fetch templates in TABLE by KEY. + +Return a list of cons (NAME . TEMPLATE) where NAME is a +string and TEMPLATE is a `yas--template' structure." + (let* ((keyhash (yas--table-hash table)) + (namehash (and keyhash (gethash key keyhash)))) + (when namehash + (yas--filter-templates-by-condition (yas--namehash-templates-alist namehash))))) + + +;;; Filtering/condition logic + +(defun yas--eval-condition (condition) + (condition-case err + (save-excursion + (save-restriction + (save-match-data + (eval condition)))) + (error (progn + (yas--message 1 "Error in condition evaluation: %s" (error-message-string err)) + nil)))) + + +(defun yas--filter-templates-by-condition (templates) + "Filter the templates using the applicable condition. + +TEMPLATES is a list of cons (NAME . TEMPLATE) where NAME is a +string and TEMPLATE is a `yas--template' structure. + +This function implements the rules described in +`yas-buffer-local-condition'. See that variables documentation." + (let ((requirement (yas--require-template-specific-condition-p))) + (if (eq requirement 'always) + templates + (remove-if-not #'(lambda (pair) + (yas--template-can-expand-p + (yas--template-condition (cdr pair)) requirement)) + templates)))) + +(defun yas--require-template-specific-condition-p () + "Decide if this buffer requests/requires snippet-specific +conditions to filter out potential expansions." + (if (eq 'always yas-buffer-local-condition) + 'always + (let ((local-condition (or (and (consp yas-buffer-local-condition) + (yas--eval-condition yas-buffer-local-condition)) + yas-buffer-local-condition))) + (when local-condition + (if (eq local-condition t) + t + (and (consp local-condition) + (eq 'require-snippet-condition (car local-condition)) + (symbolp (cdr local-condition)) + (cdr local-condition))))))) + +(defun yas--template-can-expand-p (condition requirement) + "Evaluate CONDITION and REQUIREMENT and return a boolean." + (let* ((result (or (null condition) + (yas--eval-condition condition)))) + (cond ((eq requirement t) + result) + (t + (eq requirement result))))) + +(defun yas--table-templates (table) + (when table + (let ((acc (list))) + (maphash #'(lambda (_key namehash) + (maphash #'(lambda (name template) + (push (cons name template) acc)) + namehash)) + (yas--table-hash table)) + (yas--filter-templates-by-condition acc)))) + +(defun yas--templates-for-key-at-point () + "Find `yas--template' objects for any trigger keys preceding point. +Returns (TEMPLATES START END). This function respects +`yas-key-syntaxes', which see." + (save-excursion + (let ((original (point)) + (methods yas-key-syntaxes) + (templates) + (method)) + (while (and methods + (not templates)) + (unless (eq method (car methods)) + ;; TRICKY: `eq'-ness test means we can only be here if + ;; `method' is a function that returned `again', and hence + ;; don't revert back to original position as per + ;; `yas-key-syntaxes'. + (goto-char original)) + (setq method (car methods)) + (cond ((stringp method) + (skip-syntax-backward method) + (setq methods (cdr methods))) + ((functionp method) + (unless (eq (funcall method original) + 'again) + (setq methods (cdr methods)))) + (t + (setq methods (cdr methods)) + (yas--warning "Invalid element `%s' in `yas-key-syntaxes'" method))) + (let ((possible-key (buffer-substring-no-properties (point) original))) + (save-excursion + (goto-char original) + (setq templates + (mapcan #'(lambda (table) + (yas--fetch table possible-key)) + (yas--get-snippet-tables)))))) + (when templates + (list templates (point) original))))) + +(defun yas--table-all-keys (table) + "Get trigger keys of all active snippets in TABLE." + (let ((acc)) + (maphash #'(lambda (key namehash) + (when (yas--filter-templates-by-condition (yas--namehash-templates-alist namehash)) + (push key acc))) + (yas--table-hash table)) + acc)) + +(defun yas--table-mode (table) + (intern (yas--table-name table))) + + +;;; Internal functions and macros: + +(defun yas--handle-error (err) + "Handle error depending on value of `yas-good-grace'." + (let ((msg (yas--format "elisp error: %s" (error-message-string err)))) + (if yas-good-grace msg + (error "%s" msg)))) + +(defun yas--eval-lisp (form) + "Evaluate FORM and convert the result to string." + (let ((retval (catch 'yas--exception + (condition-case err + (save-excursion + (save-restriction + (save-match-data + (widen) + (let ((result (eval form))) + (when result + (format "%s" result)))))) + (error (yas--handle-error err)))))) + (when (and (consp retval) + (eq 'yas--exception (car retval))) + (error (cdr retval))) + retval)) + +(defun yas--eval-lisp-no-saves (form) + (condition-case err + (eval form) + (error (message "%s" (yas--handle-error err))))) + +(defun yas--read-lisp (string &optional nil-on-error) + "Read STRING as a elisp expression and return it. + +In case STRING in an invalid expression and NIL-ON-ERROR is nil, +return an expression that when evaluated will issue an error." + (condition-case err + (read string) + (error (and (not nil-on-error) + `(error (error-message-string ,err)))))) + +(defun yas--read-keybinding (keybinding) + "Read KEYBINDING as a snippet keybinding, return a vector." + (when (and keybinding + (not (string-match "keybinding" keybinding))) + (condition-case err + (let ((res (or (and (string-match "^\\[.*\\]$" keybinding) + (read keybinding)) + (read-kbd-macro keybinding 'need-vector)))) + res) + (error + (yas--message 3 "warning: keybinding \"%s\" invalid since %s." + keybinding (error-message-string err)) + nil)))) + +(defun yas--table-get-create (mode) + "Get or create the snippet table corresponding to MODE." + (let ((table (gethash mode + yas--tables))) + (unless table + (setq table (yas--make-snippet-table (symbol-name mode))) + (puthash mode table yas--tables) + (push (cons (intern (format "yas--direct-%s" mode)) + (yas--table-direct-keymap table)) + yas--direct-keymaps)) + table)) + +(defun yas--get-snippet-tables (&optional mode) + "Get snippet tables for MODE. + +MODE defaults to the current buffer's `major-mode'. + +Return a list of `yas--table' objects. The list of modes to +consider is returned by `yas--modes-to-activate'" + (remove nil + (mapcar #'(lambda (name) + (gethash name yas--tables)) + (yas--modes-to-activate mode)))) + +(defun yas--menu-keymap-get-create (mode &optional parents) + "Get or create the menu keymap for MODE and its PARENTS. + +This may very well create a plethora of menu keymaps and arrange +them all in `yas--menu-table'" + (let* ((menu-keymap (or (gethash mode yas--menu-table) + (puthash mode (make-sparse-keymap) yas--menu-table)))) + (mapc #'yas--menu-keymap-get-create parents) + (define-key yas--minor-mode-menu (vector mode) + `(menu-item ,(symbol-name mode) ,menu-keymap + :visible (yas--show-menu-p ',mode))) + menu-keymap)) + + +;;; Template-related and snippet loading functions + +(defun yas--parse-template (&optional file) + "Parse the template in the current buffer. + +Optional FILE is the absolute file name of the file being +parsed. + +Optional GROUP is the group where the template is to go, +otherwise we attempt to calculate it from FILE. + +Return a snippet-definition, i.e. a list + + (KEY TEMPLATE NAME CONDITION GROUP VARS LOAD-FILE KEYBINDING UUID) + +If the buffer contains a line of \"# --\" then the contents above +this line are ignored. Directives can set most of these with the syntax: + +# directive-name : directive-value + +Here's a list of currently recognized directives: + + * type + * name + * contributor + * condition + * group + * key + * expand-env + * binding + * uuid" + (goto-char (point-min)) + (let* ((type 'snippet) + (name (and file + (file-name-nondirectory file))) + (key nil) + template + bound + condition + (group (and file + (yas--calculate-group file))) + expand-env + binding + uuid) + (if (re-search-forward "^# --\n" nil t) + (progn (setq template + (buffer-substring-no-properties (point) + (point-max))) + (setq bound (point)) + (goto-char (point-min)) + (while (re-search-forward "^# *\\([^ ]+?\\) *: *\\(.*?\\)[[:space:]]*$" bound t) + (when (string= "uuid" (match-string-no-properties 1)) + (setq uuid (match-string-no-properties 2))) + (when (string= "type" (match-string-no-properties 1)) + (setq type (if (string= "command" (match-string-no-properties 2)) + 'command + 'snippet))) + (when (string= "key" (match-string-no-properties 1)) + (setq key (match-string-no-properties 2))) + (when (string= "name" (match-string-no-properties 1)) + (setq name (match-string-no-properties 2))) + (when (string= "condition" (match-string-no-properties 1)) + (setq condition (yas--read-lisp (match-string-no-properties 2)))) + (when (string= "group" (match-string-no-properties 1)) + (setq group (match-string-no-properties 2))) + (when (string= "expand-env" (match-string-no-properties 1)) + (setq expand-env (yas--read-lisp (match-string-no-properties 2) + 'nil-on-error))) + (when (string= "binding" (match-string-no-properties 1)) + (setq binding (match-string-no-properties 2))))) + (setq template + (buffer-substring-no-properties (point-min) (point-max)))) + (unless (or key binding) + (setq key (and file (file-name-nondirectory file)))) + (when (eq type 'command) + (setq template (yas--read-lisp (concat "(progn" template ")")))) + (when group + (setq group (split-string group "\\."))) + (list key template name condition group expand-env file binding uuid))) + +(defun yas--calculate-group (file) + "Calculate the group for snippet file path FILE." + (let* ((dominating-dir (locate-dominating-file file + ".yas-make-groups")) + (extra-path (and dominating-dir + (replace-regexp-in-string (concat "^" + (expand-file-name dominating-dir)) + "" + (expand-file-name file)))) + (extra-dir (and extra-path + (file-name-directory extra-path))) + (group (and extra-dir + (replace-regexp-in-string "/" + "." + (directory-file-name extra-dir))))) + group)) + +(defun yas--subdirs (directory &optional filep) + "Return subdirs or files of DIRECTORY according to FILEP." + (remove-if (lambda (file) + (or (string-match "^\\." + (file-name-nondirectory file)) + (string-match "^#.*#$" + (file-name-nondirectory file)) + (string-match "~$" + (file-name-nondirectory file)) + (if filep + (file-directory-p file) + (not (file-directory-p file))))) + (directory-files directory t))) + +(defun yas--make-menu-binding (template) + (let ((mode (yas--table-mode (yas--template-table template)))) + `(lambda () (interactive) (yas--expand-or-visit-from-menu ',mode ,(yas--template-uuid template))))) + +(defun yas--expand-or-visit-from-menu (mode uuid) + (let* ((table (yas--table-get-create mode)) + (yas--current-template (and table + (gethash uuid (yas--table-uuidhash table))))) + (when yas--current-template + (if yas-visit-from-menu + (yas--visit-snippet-file-1 yas--current-template) + (let ((where (if (region-active-p) + (cons (region-beginning) (region-end)) + (cons (point) (point))))) + (yas-expand-snippet (yas--template-content yas--current-template) + (car where) + (cdr where) + (yas--template-expand-env yas--current-template))))))) + +(defun yas--key-from-desc (text) + "Return a yasnippet key from a description string TEXT." + (replace-regexp-in-string "\\(\\w+\\).*" "\\1" text)) + + +;;; Popping up for keys and templates + +(defun yas--prompt-for-template (templates &optional prompt) + "Interactively choose a template from the list TEMPLATES. + +TEMPLATES is a list of `yas--template'. + +Optional PROMPT sets the prompt to use." + (when templates + (setq templates + (sort templates #'(lambda (t1 t2) + (< (length (yas--template-name t1)) + (length (yas--template-name t2)))))) + (some #'(lambda (fn) + (funcall fn (or prompt "Choose a snippet: ") + templates + #'yas--template-name)) + yas-prompt-functions))) + +(defun yas--prompt-for-keys (keys &optional prompt) + "Interactively choose a template key from the list KEYS. + +Optional PROMPT sets the prompt to use." + (when keys + (some #'(lambda (fn) + (funcall fn (or prompt "Choose a snippet key: ") keys)) + yas-prompt-functions))) + +(defun yas--prompt-for-table (tables &optional prompt) + "Interactively choose a table from the list TABLES. + +Optional PROMPT sets the prompt to use." + (when tables + (some #'(lambda (fn) + (funcall fn (or prompt "Choose a snippet table: ") + tables + #'yas--table-name)) + yas-prompt-functions))) + +(defun yas-x-prompt (prompt choices &optional display-fn) + "Display choices in a x-window prompt." + (when (and window-system choices) + ;; Let window position be recalculated to ensure that + ;; `posn-at-point' returns non-nil. + (redisplay) + (or + (x-popup-menu + (if (fboundp 'posn-at-point) + (let ((x-y (posn-x-y (posn-at-point (point))))) + (list (list (+ (car x-y) 10) + (+ (cdr x-y) 20)) + (selected-window))) + t) + `(,prompt ("title" + ,@(mapcar* (lambda (c d) `(,(concat " " d) . ,c)) + choices + (if display-fn (mapcar display-fn choices) choices))))) + (keyboard-quit)))) + +(defun yas-maybe-ido-prompt (prompt choices &optional display-fn) + (when (bound-and-true-p ido-mode) + (yas-ido-prompt prompt choices display-fn))) + +(defun yas-ido-prompt (prompt choices &optional display-fn) + (require 'ido) + (yas-completing-prompt prompt choices display-fn #'ido-completing-read)) + +(defun yas-dropdown-prompt (_prompt choices &optional display-fn) + (when (fboundp 'dropdown-list) + (let* ((formatted-choices + (if display-fn (mapcar display-fn choices) choices)) + (n (dropdown-list formatted-choices))) + (if n (nth n choices) + (keyboard-quit))))) + +(defun yas-completing-prompt (prompt choices &optional display-fn completion-fn) + (let* ((formatted-choices + (if display-fn (mapcar display-fn choices) choices)) + (chosen (funcall (or completion-fn #'completing-read) + prompt formatted-choices + nil 'require-match nil nil))) + (if (eq choices formatted-choices) + chosen + (nth (or (position chosen formatted-choices :test #'string=) 0) + choices)))) + +(defun yas-no-prompt (_prompt choices &optional _display-fn) + (first choices)) + + +;;; Defining snippets +;; This consists of creating and registering `yas--template' objects in the +;; correct tables. +;; + +(defvar yas--creating-compiled-snippets nil) + +(defun yas--define-snippets-1 (snippet snippet-table) + "Helper for `yas-define-snippets'." + ;; Update the appropriate table. Also takes care of adding the + ;; key indicators in the templates menu entry, if any. + (yas--update-template + snippet-table (apply #'yas--define-snippets-2 snippet-table snippet))) + +(defun yas-define-snippets (mode snippets) + "Define SNIPPETS for MODE. + +SNIPPETS is a list of snippet definitions, each taking the +following form + + (KEY TEMPLATE NAME CONDITION GROUP EXPAND-ENV LOAD-FILE KEYBINDING UUID SAVE-FILE) + +Within these, only KEY and TEMPLATE are actually mandatory. + +TEMPLATE might be a Lisp form or a string, depending on whether +this is a snippet or a snippet-command. + +CONDITION, EXPAND-ENV and KEYBINDING are Lisp forms, they have +been `yas--read-lisp'-ed and will eventually be +`yas--eval-lisp'-ed. + +The remaining elements are strings. + +FILE is probably of very little use if you're programatically +defining snippets. + +UUID is the snippet's \"unique-id\". Loading a second snippet +file with the same uuid would replace the previous snippet. + +You can use `yas--parse-template' to return such lists based on +the current buffers contents." + (if yas--creating-compiled-snippets + (let ((print-length nil)) + (insert ";;; Snippet definitions:\n;;;\n") + (dolist (snippet snippets) + ;; Fill in missing elements with nil. + (setq snippet (append snippet (make-list (- 10 (length snippet)) nil))) + ;; Move LOAD-FILE to SAVE-FILE because we will load from the + ;; compiled file, not LOAD-FILE. + (let ((load-file (nth 6 snippet))) + (setcar (nthcdr 6 snippet) nil) + (setcar (nthcdr 9 snippet) load-file))) + (insert (pp-to-string + `(yas-define-snippets ',mode ',snippets))) + (insert "\n\n")) + ;; Normal case. + (let ((snippet-table (yas--table-get-create mode)) + (template nil)) + (dolist (snippet snippets) + (setq template (yas--define-snippets-1 snippet + snippet-table))) + template))) + + +;;; Loading snippets from files + +(defun yas--template-get-file (template) + "Return TEMPLATE's LOAD-FILE or SAVE-FILE." + (or (yas--template-load-file template) + (let ((file (yas--template-save-file template))) + (when file + (yas--message 2 "%s has no load file, use save file, %s, instead." + (yas--template-name template) file)) + file))) + +(defun yas--load-yas-setup-file (file) + (if (not yas--creating-compiled-snippets) + ;; Normal case. + (load file 'noerror (<= yas-verbosity 2)) + (let ((elfile (concat file ".el"))) + (when (file-exists-p elfile) + (insert ";;; contents of the .yas-setup.el support file:\n;;;\n") + (insert-file-contents elfile) + (goto-char (point-max)))))) + +(defun yas--define-parents (mode parents) + "Add PARENTS to the list of MODE's parents." + (puthash mode (remove-duplicates + (append parents + (gethash mode yas--parents))) + yas--parents)) + +(defun yas-load-directory (top-level-dir &optional use-jit interactive) + "Load snippets in directory hierarchy TOP-LEVEL-DIR. + +Below TOP-LEVEL-DIR each directory should be a mode name. + +With prefix argument USE-JIT do jit-loading of snippets." + (interactive + (list (read-directory-name "Select the root directory: " nil nil t) + current-prefix-arg t)) + (unless yas-snippet-dirs + (setq yas-snippet-dirs top-level-dir)) + (let ((impatient-buffers)) + (dolist (dir (yas--subdirs top-level-dir)) + (let* ((major-mode-and-parents (yas--compute-major-mode-and-parents + (concat dir "/dummy"))) + (mode-sym (car major-mode-and-parents)) + (parents (cdr major-mode-and-parents))) + ;; Attention: The parents and the menus are already defined + ;; here, even if the snippets are later jit-loaded. + ;; + ;; * We need to know the parents at this point since entering a + ;; given mode should jit load for its parents + ;; immediately. This could be reviewed, the parents could be + ;; discovered just-in-time-as well + ;; + ;; * We need to create the menus here to support the `full' + ;; option to `yas-use-menu' (all known snippet menus are shown to the user) + ;; + (yas--define-parents mode-sym parents) + (yas--menu-keymap-get-create mode-sym) + (let ((fun `(lambda () ;; FIXME: Simulating lexical-binding. + (yas--load-directory-1 ',dir ',mode-sym)))) + (if use-jit + (yas--schedule-jit mode-sym fun) + (funcall fun))) + ;; Look for buffers that are already in `mode-sym', and so + ;; need the new snippets immediately... + ;; + (when use-jit + (cl-loop for buffer in (buffer-list) + do (with-current-buffer buffer + (when (eq major-mode mode-sym) + (yas--message 3 "Discovered there was already %s in %s" buffer mode-sym) + (push buffer impatient-buffers))))))) + ;; ...after TOP-LEVEL-DIR has been completely loaded, call + ;; `yas--load-pending-jits' in these impatient buffers. + ;; + (cl-loop for buffer in impatient-buffers + do (with-current-buffer buffer (yas--load-pending-jits)))) + (when interactive + (yas--message 3 "Loaded snippets from %s." top-level-dir))) + +(defun yas--load-directory-1 (directory mode-sym) + "Recursively load snippet templates from DIRECTORY." + (if yas--creating-compiled-snippets + (let ((output-file (expand-file-name ".yas-compiled-snippets.el" + directory))) + (with-temp-file output-file + (insert (format ";;; Compiled snippets and support files for `%s'\n" + mode-sym)) + (yas--load-directory-2 directory mode-sym) + (insert (format ";;; Do not edit! File generated at %s\n" + (current-time-string))))) + ;; Normal case. + (unless (file-exists-p (concat directory "/" ".yas-skip")) + (unless (and (load (expand-file-name ".yas-compiled-snippets" directory) 'noerror (<= yas-verbosity 3)) + (progn (yas--message 2 "Loaded compiled snippets from %s" directory) t)) + (yas--message 2 "Loading snippet files from %s" directory) + (yas--load-directory-2 directory mode-sym))))) + +(defun yas--load-directory-2 (directory mode-sym) + ;; Load .yas-setup.el files wherever we find them + ;; + (yas--load-yas-setup-file (expand-file-name ".yas-setup" directory)) + (let* ((default-directory directory) + (snippet-defs nil)) + ;; load the snippet files + ;; + (with-temp-buffer + (dolist (file (yas--subdirs directory 'no-subdirs-just-files)) + (when (file-readable-p file) + (insert-file-contents file nil nil nil t) + (push (yas--parse-template file) + snippet-defs)))) + (when snippet-defs + (yas-define-snippets mode-sym + snippet-defs)) + ;; now recurse to a lower level + ;; + (dolist (subdir (yas--subdirs directory)) + (yas--load-directory-2 subdir + mode-sym)))) + +(defun yas--load-snippet-dirs (&optional nojit) + "Reload the directories listed in `yas-snippet-dirs' or +prompt the user to select one." + (let (errors) + (if (null yas-snippet-dirs) + (call-interactively 'yas-load-directory) + (when (member yas--default-user-snippets-dir yas-snippet-dirs) + (make-directory yas--default-user-snippets-dir t)) + (dolist (directory (reverse (yas-snippet-dirs))) + (cond ((file-directory-p directory) + (yas-load-directory directory (not nojit)) + (if nojit + (yas--message 3 "Loaded %s" directory) + (yas--message 3 "Prepared just-in-time loading for %s" directory))) + (t + (push (yas--message 0 "Check your `yas-snippet-dirs': %s is not a directory" directory) errors))))) + errors)) + +(defun yas-reload-all (&optional no-jit interactive) + "Reload all snippets and rebuild the YASnippet menu. + +When NO-JIT is non-nil force immediate reload of all known +snippets under `yas-snippet-dirs', otherwise use just-in-time +loading. + +When called interactively, use just-in-time loading when given a +prefix argument." + (interactive (list (not current-prefix-arg) t)) + (catch 'abort + (let ((errors) + (snippet-editing-buffers + (remove-if-not #'(lambda (buffer) + (with-current-buffer buffer yas--editing-template)) + (buffer-list)))) + ;; Warn if there are buffers visiting snippets, since reloading will break + ;; any on-line editing of those buffers. + ;; + (when snippet-editing-buffers + (if interactive + (if (y-or-n-p "Some buffers editing live snippets, close them and proceed with reload? ") + (mapc #'kill-buffer snippet-editing-buffers) + (yas--message 1 "Aborted reload...") + (throw 'abort nil)) + ;; in a non-interactive use, at least set + ;; `yas--editing-template' to nil, make it guess it next time around + (mapc #'(lambda (buffer) + (with-current-buffer buffer + (kill-local-variable 'yas--editing-template))) + (buffer-list)))) + + ;; Empty all snippet tables and parenting info + ;; + (setq yas--tables (make-hash-table)) + (setq yas--parents (make-hash-table)) + + ;; Before killing `yas--menu-table' use its keys to cleanup the + ;; mode menu parts of `yas--minor-mode-menu' (thus also cleaning + ;; up `yas-minor-mode-map', which points to it) + ;; + (maphash #'(lambda (menu-symbol _keymap) + (define-key yas--minor-mode-menu (vector menu-symbol) nil)) + yas--menu-table) + ;; Now empty `yas--menu-table' as well + (setq yas--menu-table (make-hash-table)) + + ;; Cancel all pending 'yas--scheduled-jit-loads' + ;; + (setq yas--scheduled-jit-loads (make-hash-table)) + + ;; Reload the directories listed in `yas-snippet-dirs' or prompt + ;; the user to select one. + ;; + (setq errors (yas--load-snippet-dirs no-jit)) + ;; Reload the direct keybindings + ;; + (yas-direct-keymaps-reload) + + (run-hooks 'yas-after-reload-hook) + (yas--message 3 "Reloaded everything%s...%s." + (if no-jit "" " (snippets will load just-in-time)") + (if errors " (some errors, check *Messages*)" ""))))) + +(defvar yas-after-reload-hook nil + "Hooks run after `yas-reload-all'.") + +(defun yas--load-pending-jits () + (dolist (mode (yas--modes-to-activate)) + (let ((funs (reverse (gethash mode yas--scheduled-jit-loads)))) + ;; must reverse to maintain coherence with `yas-snippet-dirs' + (dolist (fun funs) + (yas--message 3 "Loading for `%s', just-in-time: %s!" mode fun) + (funcall fun)) + (remhash mode yas--scheduled-jit-loads)))) + +;; (when (<= emacs-major-version 22) +;; (add-hook 'after-change-major-mode-hook 'yas--load-pending-jits)) + +(defun yas--quote-string (string) + "Escape and quote STRING. +foo\"bar\\! -> \"foo\\\"bar\\\\!\"" + (concat "\"" + (replace-regexp-in-string "[\\\"]" + "\\\\\\&" + string + t) + "\"")) + +;;; Snippet compilation function + +(defun yas-compile-directory (top-level-dir) + "Create .yas-compiled-snippets.el files under subdirs of TOP-LEVEL-DIR. + +This works by stubbing a few functions, then calling +`yas-load-directory'." + (interactive "DTop level snippet directory?") + (let ((yas--creating-compiled-snippets t)) + (yas-load-directory top-level-dir nil))) + +(defun yas-recompile-all () + "Compile every dir in `yas-snippet-dirs'." + (interactive) + (mapc #'yas-compile-directory (yas-snippet-dirs))) + + +;;; JIT loading +;;; + +(defvar yas--scheduled-jit-loads (make-hash-table) + "Alist of mode-symbols to forms to be evaled when `yas-minor-mode' kicks in.") + +(defun yas--schedule-jit (mode fun) + (push fun (gethash mode yas--scheduled-jit-loads))) + + + +;;; Some user level functions + +(defun yas-about () + (interactive) + (message (concat "yasnippet (version " + yas--version + ") -- pluskid/joaotavora/npostavs"))) + + +;;; Apropos snippet menu: +;; +;; The snippet menu keymaps are store by mode in hash table called +;; `yas--menu-table'. They are linked to the main menu in +;; `yas--menu-keymap-get-create' and are initially created empty, +;; reflecting the table hierarchy. +;; +;; They can be populated in two mutually exclusive ways: (1) by +;; reading `yas--template-group', which in turn is populated by the "# +;; group:" directives of the snippets or the ".yas-make-groups" file +;; or (2) by using a separate `yas-define-menu' call, which declares a +;; menu structure based on snippets uuids. +;; +;; Both situations are handled in `yas--update-template-menu', which +;; uses the predicate `yas--template-menu-managed-by-yas-define-menu' +;; that can tell between the two situations. +;; +;; Note: +;; +;; * if `yas-define-menu' is used it must run before +;; `yas-define-snippets' and the UUIDS must match, otherwise we get +;; duplicate entries. The `yas--template' objects are created in +;; `yas-define-menu', holding nothing but the menu entry, +;; represented by a pair of ((menu-item NAME :keys KEYS) TYPE) and +;; stored in `yas--template-menu-binding-pair'. The (menu-item ...) +;; part is then stored in the menu keymap itself which make the item +;; appear to the user. These limitations could probably be revised. +;; +;; * The `yas--template-perm-group' slot is only used in +;; `yas-describe-tables'. +;; +(defun yas--template-menu-binding-pair-get-create (template &optional type) + "Get TEMPLATE's menu binding or assign it a new one. + +TYPE may be `:stay', signaling this menu binding should be +static in the menu." + (or (yas--template-menu-binding-pair template) + (let (;; (key (yas--template-key template)) + ;; (keybinding (yas--template-keybinding template)) + ) + (setf (yas--template-menu-binding-pair template) + (cons `(menu-item ,(or (yas--template-name template) + (yas--template-uuid template)) + ,(yas--make-menu-binding template) + :keys ,nil) + type))))) +(defun yas--template-menu-managed-by-yas-define-menu (template) + "Non-nil if TEMPLATE's menu entry was included in a `yas-define-menu' call." + (cdr (yas--template-menu-binding-pair template))) + + +(defun yas--show-menu-p (mode) + (cond ((eq yas-use-menu 'abbreviate) + (find mode + (mapcar #'(lambda (table) + (yas--table-mode table)) + (yas--get-snippet-tables)))) + (yas-use-menu t))) + +(defun yas--delete-from-keymap (keymap uuid) + "Recursively delete items with UUID from KEYMAP and its submenus." + + ;; XXX: This used to skip any submenus named \"parent mode\" + ;; + ;; First of all, recursively enter submenus, i.e. the tree is + ;; searched depth first so that stale submenus can be found in the + ;; higher passes. + ;; + (mapc #'(lambda (item) + (when (and (listp (cdr item)) + (keymapp (third (cdr item)))) + (yas--delete-from-keymap (third (cdr item)) uuid))) + (rest keymap)) + ;; Set the uuid entry to nil + ;; + (define-key keymap (vector (make-symbol uuid)) nil) + ;; Destructively modify keymap + ;; + (setcdr keymap (delete-if #'(lambda (item) + (or (null (cdr item)) + (and (keymapp (third (cdr item))) + (null (cdr (third (cdr item))))))) + (rest keymap)))) + +(defun yas-define-menu (mode menu &optional omit-items) + "Define a snippet menu for MODE according to MENU, omitting OMIT-ITEMS. + +MENU is a list, its elements can be: + +- (yas-item UUID) : Creates an entry the snippet identified with + UUID. The menu entry for a snippet thus identified is + permanent, i.e. it will never move (be reordered) in the menu. + +- (yas-separator) : Creates a separator + +- (yas-submenu NAME SUBMENU) : Creates a submenu with NAME, + SUBMENU has the same form as MENU. NAME is also added to the + list of groups of the snippets defined thereafter. + +OMIT-ITEMS is a list of snippet uuid's that will always be +omitted from MODE's menu, even if they're manually loaded." + (let* ((table (yas--table-get-create mode)) + (hash (yas--table-uuidhash table))) + (yas--define-menu-1 table + (yas--menu-keymap-get-create mode) + menu + hash) + (dolist (uuid omit-items) + (let ((template (or (gethash uuid hash) + (puthash uuid + (yas--make-template :table table + :uuid uuid) + hash)))) + (setf (yas--template-menu-binding-pair template) (cons nil :none)))))) + +(defun yas--define-menu-1 (table menu-keymap menu uuidhash &optional group-list) + "Helper for `yas-define-menu'." + (dolist (e (reverse menu)) + (cond ((eq (first e) 'yas-item) + (let ((template (or (gethash (second e) uuidhash) + (puthash (second e) + (yas--make-template + :table table + :perm-group group-list + :uuid (second e)) + uuidhash)))) + (define-key menu-keymap (vector (gensym)) + (car (yas--template-menu-binding-pair-get-create template :stay))))) + ((eq (first e) 'yas-submenu) + (let ((subkeymap (make-sparse-keymap))) + (define-key menu-keymap (vector (gensym)) + `(menu-item ,(second e) ,subkeymap)) + (yas--define-menu-1 table + subkeymap + (third e) + uuidhash + (append group-list (list (second e)))))) + ((eq (first e) 'yas-separator) + (define-key menu-keymap (vector (gensym)) + '(menu-item "----"))) + (t + (yas--message 3 "Don't know anything about menu entry %s" (first e)))))) + +(defun yas--define (mode key template &optional name condition group) + "Define a snippet. Expanding KEY into TEMPLATE. + +NAME is a description to this template. Also update the menu if +`yas-use-menu' is t. CONDITION is the condition attached to +this snippet. If you attach a condition to a snippet, then it +will only be expanded when the condition evaluated to non-nil." + (yas-define-snippets mode + (list (list key template name condition group)))) + +(defun yas-hippie-try-expand (first-time?) + "Integrate with hippie expand. + +Just put this function in `hippie-expand-try-functions-list'." + (when yas-minor-mode + (if (not first-time?) + (let ((yas-fallback-behavior 'return-nil)) + (yas-expand)) + (undo 1) + nil))) + + +;;; Apropos condition-cache: +;;; +;;; +;;; +;;; +(defvar yas--condition-cache-timestamp nil) +(defmacro yas-define-condition-cache (func doc &rest body) + "Define a function FUNC with doc DOC and body BODY. +BODY is executed at most once every snippet expansion attempt, to check +expansion conditions. + +It doesn't make any sense to call FUNC programatically." + `(defun ,func () ,(if (and doc + (stringp doc)) + (concat doc +"\n\nFor use in snippets' conditions. Within each +snippet-expansion routine like `yas-expand', computes actual +value for the first time then always returns a cached value.") + (setq body (cons doc body)) + nil) + (let ((timestamp-and-value (get ',func 'yas--condition-cache))) + (if (equal (car timestamp-and-value) yas--condition-cache-timestamp) + (cdr timestamp-and-value) + (let ((new-value (progn + ,@body + ))) + (put ',func 'yas--condition-cache (cons yas--condition-cache-timestamp new-value)) + new-value))))) + +(defalias 'yas-expand 'yas-expand-from-trigger-key) +(defun yas-expand-from-trigger-key (&optional field) + "Expand a snippet before point. + +If no snippet expansion is possible, fall back to the behaviour +defined in `yas-fallback-behavior'. + +Optional argument FIELD is for non-interactive use and is an +object satisfying `yas--field-p' to restrict the expansion to." + (interactive) + (setq yas--condition-cache-timestamp (current-time)) + (let (templates-and-pos) + (unless (and yas-expand-only-for-last-commands + (not (member last-command yas-expand-only-for-last-commands))) + (setq templates-and-pos (if field + (save-restriction + (narrow-to-region (yas--field-start field) + (yas--field-end field)) + (yas--templates-for-key-at-point)) + (yas--templates-for-key-at-point)))) + (if templates-and-pos + (yas--expand-or-prompt-for-template (first templates-and-pos) + (second templates-and-pos) + (third templates-and-pos)) + (yas--fallback)))) + +(defun yas-expand-from-keymap () + "Directly expand some snippets, searching `yas--direct-keymaps'. + +If expansion fails, execute the previous binding for this key" + (interactive) + (setq yas--condition-cache-timestamp (current-time)) + (let* ((vec (subseq (this-command-keys-vector) (if current-prefix-arg + (length (this-command-keys)) + 0))) + (templates (mapcan #'(lambda (table) + (yas--fetch table vec)) + (yas--get-snippet-tables)))) + (if templates + (yas--expand-or-prompt-for-template templates) + (let ((yas-fallback-behavior 'call-other-command)) + (yas--fallback))))) + +(defun yas--expand-or-prompt-for-template (templates &optional start end) + "Expand one of TEMPLATES from START to END. + +Prompt the user if TEMPLATES has more than one element, else +expand immediately. Common gateway for +`yas-expand-from-trigger-key' and `yas-expand-from-keymap'." + (let ((yas--current-template (or (and (rest templates) ;; more than one + (yas--prompt-for-template (mapcar #'cdr templates))) + (cdar templates)))) + (when yas--current-template + (yas-expand-snippet (yas--template-content yas--current-template) + start + end + (yas--template-expand-env yas--current-template))))) + +;; Apropos the trigger key and the fallback binding: +;; +;; When `yas-minor-mode-map' binds , that correctly overrides +;; org-mode's , for example and searching for fallbacks correctly +;; returns `org-cycle'. However, most other modes bind "TAB". TODO, +;; improve this explanation. +;; +(defun yas--fallback () + "Fallback after expansion has failed. + +Common gateway for `yas-expand-from-trigger-key' and +`yas-expand-from-keymap'." + (cond ((eq yas-fallback-behavior 'return-nil) + ;; return nil + nil) + ((eq yas-fallback-behavior 'yas--fallback) + (error (concat "yasnippet fallback loop!\n" + "This can happen when you bind `yas-expand' " + "outside of the `yas-minor-mode-map'."))) + ((eq yas-fallback-behavior 'call-other-command) + (let* ((yas-fallback-behavior 'yas--fallback) + ;; Also bind `yas-minor-mode' to prevent fallback + ;; loops when other extensions use mechanisms similar + ;; to `yas--keybinding-beyond-yasnippet'. (github #525 + ;; and #526) + ;; + (yas-minor-mode nil) + (beyond-yasnippet (yas--keybinding-beyond-yasnippet))) + (yas--message 4 "Falling back to %s" beyond-yasnippet) + (assert (or (null beyond-yasnippet) (commandp beyond-yasnippet))) + (setq this-command beyond-yasnippet) + (when beyond-yasnippet + (call-interactively beyond-yasnippet)))) + ((and (listp yas-fallback-behavior) + (cdr yas-fallback-behavior) + (eq 'apply (car yas-fallback-behavior))) + (let ((command-or-fn (cadr yas-fallback-behavior)) + (args (cddr yas-fallback-behavior)) + (yas-fallback-behavior 'yas--fallback) + (yas-minor-mode nil)) + (if args + (apply command-or-fn args) + (when (commandp command-or-fn) + (setq this-command command-or-fn) + (call-interactively command-or-fn))))) + (t + ;; also return nil if all the other fallbacks have failed + nil))) + +(defun yas--keybinding-beyond-yasnippet () + "Get current keys's binding as if YASsnippet didn't exist." + (let* ((yas-minor-mode nil) + (yas--direct-keymaps nil) + (keys (this-single-command-keys))) + (or (key-binding keys t) + (key-binding (yas--fallback-translate-input keys) t)))) + +(defun yas--fallback-translate-input (keys) + "Emulate `read-key-sequence', at least what I think it does. + +Keys should be an untranslated key vector. Returns a translated +vector of keys. FIXME not thoroughly tested." + (let ((retval []) + (i 0)) + (while (< i (length keys)) + (let ((j i) + (translated local-function-key-map)) + (while (and (< j (length keys)) + translated + (keymapp translated)) + (setq translated (cdr (assoc (aref keys j) (remove 'keymap translated))) + j (1+ j))) + (setq retval (vconcat retval (cond ((symbolp translated) + `[,translated]) + ((vectorp translated) + translated) + (t + (substring keys i j))))) + (setq i j))) + retval)) + + +;;; Utils for snippet development: + +(defun yas--all-templates (tables) + "Get `yas--template' objects in TABLES, applicable for buffer and point. + +Honours `yas-choose-tables-first', `yas-choose-keys-first' and +`yas-buffer-local-condition'" + (when yas-choose-tables-first + (setq tables (list (yas--prompt-for-table tables)))) + (mapcar #'cdr + (if yas-choose-keys-first + (let ((key (yas--prompt-for-keys + (mapcan #'yas--table-all-keys tables)))) + (when key + (mapcan #'(lambda (table) + (yas--fetch table key)) + tables))) + (remove-duplicates (mapcan #'yas--table-templates tables) + :test #'equal)))) + +(defun yas--lookup-snippet-1 (name mode) + "Get the snippet called NAME in MODE's tables." + (let ((yas-choose-tables-first nil) ; avoid prompts + (yas-choose-keys-first nil)) + (cl-find name (yas--all-templates + (yas--get-snippet-tables mode)) + :key #'yas--template-name :test #'string=))) + +(defun yas-lookup-snippet (name &optional mode noerror) + "Get the snippet content for the snippet NAME in MODE's tables. + +MODE defaults to the current buffer's `major-mode'. If NOERROR +is non-nil, then don't signal an error if there isn't any snippet +called NAME. + +Honours `yas-buffer-local-condition'." + (let ((snippet (yas--lookup-snippet-1 name mode))) + (cond + (snippet (yas--template-content snippet)) + (noerror nil) + (t (error "No snippet named: %s" name))))) + +(defun yas-insert-snippet (&optional no-condition) + "Choose a snippet to expand, pop-up a list of choices according +to `yas-prompt-functions'. + +With prefix argument NO-CONDITION, bypass filtering of snippets +by condition." + (interactive "P") + (setq yas--condition-cache-timestamp (current-time)) + (let* ((yas-buffer-local-condition (or (and no-condition + 'always) + yas-buffer-local-condition)) + (templates (yas--all-templates (yas--get-snippet-tables))) + (yas--current-template (and templates + (or (and (rest templates) ;; more than one template for same key + (yas--prompt-for-template templates)) + (car templates)))) + (where (if (region-active-p) + (cons (region-beginning) (region-end)) + (cons (point) (point))))) + (if yas--current-template + (yas-expand-snippet (yas--template-content yas--current-template) + (car where) + (cdr where) + (yas--template-expand-env yas--current-template)) + (yas--message 3 "No snippets can be inserted here!")))) + +(defun yas-visit-snippet-file () + "Choose a snippet to edit, selection like `yas-insert-snippet'. + +Only success if selected snippet was loaded from a file. Put the +visited file in `snippet-mode'." + (interactive) + (let* ((yas-buffer-local-condition 'always) + (templates (yas--all-templates (yas--get-snippet-tables))) + (template (and templates + (or (yas--prompt-for-template templates + "Choose a snippet template to edit: ") + (car templates))))) + + (if template + (yas--visit-snippet-file-1 template) + (message "No snippets tables active!")))) + +(defun yas--visit-snippet-file-1 (template) + "Helper for `yas-visit-snippet-file'." + (let ((file (yas--template-get-file template))) + (cond ((and file (file-readable-p file)) + (find-file-other-window file) + (snippet-mode) + (set (make-local-variable 'yas--editing-template) template)) + (file + (message "Original file %s no longer exists!" file)) + (t + (switch-to-buffer (format "*%s*"(yas--template-name template))) + (let ((type 'snippet)) + (when (listp (yas--template-content template)) + (insert (format "# type: command\n")) + (setq type 'command)) + (insert (format "# key: %s\n" (yas--template-key template))) + (insert (format "# name: %s\n" (yas--template-name template))) + (when (yas--template-keybinding template) + (insert (format "# binding: %s\n" (yas--template-keybinding template)))) + (when (yas--template-expand-env template) + (insert (format "# expand-env: %s\n" (yas--template-expand-env template)))) + (when (yas--template-condition template) + (insert (format "# condition: %s\n" (yas--template-condition template)))) + (insert "# --\n") + (insert (if (eq type 'command) + (pp-to-string (yas--template-content template)) + (yas--template-content template)))) + (snippet-mode) + (set (make-local-variable 'yas--editing-template) template))))) + +(defun yas--guess-snippet-directories-1 (table) + "Guess possible snippet subdirectories for TABLE." + (cons (yas--table-name table) + (mapcan #'(lambda (parent) + (yas--guess-snippet-directories-1 + parent)) + (yas--table-parents table)))) + +(defun yas--guess-snippet-directories (&optional table) + "Try to guess suitable directories based on the current active +tables (or optional TABLE). + +Returns a list of elements (TABLE . DIRS) where TABLE is a +`yas--table' object and DIRS is a list of all possible directories +where snippets of table might exist." + (let ((main-dir (replace-regexp-in-string + "/+$" "" + (or (first (or (yas-snippet-dirs) + (setq yas-snippet-dirs (list yas--default-user-snippets-dir))))))) + (tables (or (and table + (list table)) + (yas--get-snippet-tables)))) + ;; HACK! the snippet table created here is actually registered! + ;; + (unless (or table (gethash major-mode yas--tables)) + (push (yas--table-get-create major-mode) + tables)) + + (mapcar #'(lambda (table) + (cons table + (mapcar #'(lambda (subdir) + (concat main-dir "/" subdir)) + (yas--guess-snippet-directories-1 table)))) + tables))) + +(defun yas--make-directory-maybe (table-and-dirs &optional main-table-string) + "Return a dir inside TABLE-AND-DIRS, prompts for creation if none exists." + (or (some #'(lambda (dir) (when (file-directory-p dir) dir)) (cdr table-and-dirs)) + (let ((candidate (first (cdr table-and-dirs)))) + (unless (file-writable-p (file-name-directory candidate)) + (error (yas--format "%s is not writable." candidate))) + (if (y-or-n-p (format "Guessed directory (%s) for%s%s table \"%s\" does not exist! Create? " + candidate + (if (gethash (yas--table-mode (car table-and-dirs)) + yas--tables) + "" + " brand new") + (or main-table-string + "") + (yas--table-name (car table-and-dirs)))) + (progn + (make-directory candidate 'also-make-parents) + ;; create the .yas-parents file here... + candidate))))) + +(defun yas-new-snippet (&optional no-template) + "Pops a new buffer for writing a snippet. + +Expands a snippet-writing snippet, unless the optional prefix arg +NO-TEMPLATE is non-nil." + (interactive "P") + (let ((guessed-directories (yas--guess-snippet-directories))) + + (switch-to-buffer "*new snippet*") + (erase-buffer) + (kill-all-local-variables) + (snippet-mode) + (yas-minor-mode 1) + (set (make-local-variable 'yas--guessed-modes) (mapcar #'(lambda (d) + (yas--table-mode (car d))) + guessed-directories)) + (if (and (not no-template) yas-new-snippet-default) + (yas-expand-snippet yas-new-snippet-default)))) + +(defun yas--compute-major-mode-and-parents (file) + "Given FILE, find the nearest snippet directory for a given mode. + +Returns a list (MODE-SYM PARENTS), the mode's symbol and a list +representing one or more of the mode's parents. + +Note that MODE-SYM need not be the symbol of a real major mode, +neither do the elements of PARENTS." + (let* ((file-dir (and file + (directory-file-name (or (some #'(lambda (special) + (locate-dominating-file file special)) + '(".yas-setup.el" + ".yas-make-groups" + ".yas-parents")) + (directory-file-name (file-name-directory file)))))) + (parents-file-name (concat file-dir "/.yas-parents")) + (major-mode-name (and file-dir + (file-name-nondirectory file-dir))) + (major-mode-sym (or (and major-mode-name + (intern major-mode-name)))) + (parents (when (file-readable-p parents-file-name) + (mapcar #'intern + (split-string + (with-temp-buffer + (insert-file-contents parents-file-name) + (buffer-substring-no-properties (point-min) + (point-max)))))))) + (when major-mode-sym + (cons major-mode-sym (remove major-mode-sym parents))))) + +(defvar yas--editing-template nil + "Supporting variable for `yas-load-snippet-buffer' and `yas--visit-snippet'.") + +(defvar yas--current-template nil + "Holds the current template being expanded into a snippet.") + +(defvar yas--guessed-modes nil + "List of guessed modes supporting `yas-load-snippet-buffer'.") + +(defun yas--read-table () + "Ask user for a snippet table, help with some guessing." + (let ((prompt (if (and (featurep 'ido) + ido-mode) + 'ido-completing-read 'completing-read))) + (unless yas--guessed-modes + (set (make-local-variable 'yas--guessed-modes) + (or (yas--compute-major-mode-and-parents buffer-file-name)))) + (intern + (funcall prompt (format "Choose or enter a table (yas guesses %s): " + (if yas--guessed-modes + (first yas--guessed-modes) + "nothing")) + (mapcar #'symbol-name yas--guessed-modes) + nil + nil + nil + nil + (if (first yas--guessed-modes) + (symbol-name (first yas--guessed-modes))))))) + +(defun yas-load-snippet-buffer (table &optional interactive) + "Parse and load current buffer's snippet definition into TABLE. + +TABLE is a symbol naming a passed to `yas--table-get-create'. + +When called interactively, prompt for the table name." + (interactive (list (yas--read-table) t)) + (cond + ;; We have `yas--editing-template', this buffer's content comes from a + ;; template which is already loaded and neatly positioned,... + ;; + (yas--editing-template + (yas--define-snippets-1 (yas--parse-template (yas--template-load-file yas--editing-template)) + (yas--template-table yas--editing-template))) + ;; Try to use `yas--guessed-modes'. If we don't have that use the + ;; value from `yas--compute-major-mode-and-parents' + ;; + (t + (unless yas--guessed-modes + (set (make-local-variable 'yas--guessed-modes) (or (yas--compute-major-mode-and-parents buffer-file-name)))) + (let* ((table (yas--table-get-create table))) + (set (make-local-variable 'yas--editing-template) + (yas--define-snippets-1 (yas--parse-template buffer-file-name) + table))))) + (when interactive + (yas--message 3 "Snippet \"%s\" loaded for %s." + (yas--template-name yas--editing-template) + (yas--table-name (yas--template-table yas--editing-template))))) + +(defun yas-load-snippet-buffer-and-close (table &optional kill) + "Load the snippet with `yas-load-snippet-buffer', possibly + save, then `quit-window' if saved. + +If the snippet is new, ask the user whether (and where) to save +it. If the snippet already has a file, just save it. + +The prefix argument KILL is passed to `quit-window'. + +Don't use this from a Lisp program, call `yas-load-snippet-buffer' +and `kill-buffer' instead." + (interactive (list (yas--read-table) current-prefix-arg)) + (yas-load-snippet-buffer table t) + (let ((file (yas--template-get-file yas--editing-template))) + (when (and (or + ;; Only offer to save this if it looks like a library or new + ;; snippet (loaded from elisp, from a dir in `yas-snippet-dirs' + ;; which is not the first, or from an unwritable file) + ;; + (not file) + (not (file-writable-p file)) + (and (cdr-safe yas-snippet-dirs) + (not (string-prefix-p (expand-file-name (car yas-snippet-dirs)) file)))) + (y-or-n-p (yas--format "Looks like a library or new snippet. Save to new file? "))) + (let* ((option (first (yas--guess-snippet-directories (yas--template-table yas--editing-template)))) + (chosen (and option + (yas--make-directory-maybe option)))) + (when chosen + (let ((default-file-name (or (and file (file-name-nondirectory file)) + (yas--template-name yas--editing-template)))) + (write-file (concat chosen "/" + (read-from-minibuffer (format "File name to create in %s? " chosen) + default-file-name))) + (setf (yas--template-load-file yas--editing-template) buffer-file-name)))))) + (when buffer-file-name + (save-buffer) + (quit-window kill))) + +(defun yas-tryout-snippet (&optional debug) + "Test current buffer's snippet template in other buffer." + (interactive "P") + (let* ((major-mode-and-parent (yas--compute-major-mode-and-parents buffer-file-name)) + (parsed (yas--parse-template)) + (test-mode (or (and (car major-mode-and-parent) + (fboundp (car major-mode-and-parent)) + (car major-mode-and-parent)) + (first yas--guessed-modes) + (intern (read-from-minibuffer (yas--format "Please input a mode: "))))) + (yas--current-template + (and parsed + (fboundp test-mode) + (yas--make-template :table nil ;; no tables for ephemeral snippets + :key (first parsed) + :content (second parsed) + :name (third parsed) + :expand-env (sixth parsed))))) + (cond (yas--current-template + (let ((buffer-name (format "*testing snippet: %s*" (yas--template-name yas--current-template)))) + (kill-buffer (get-buffer-create buffer-name)) + (switch-to-buffer (get-buffer-create buffer-name)) + (setq buffer-undo-list nil) + (condition-case nil (funcall test-mode) (error nil)) + (yas-minor-mode 1) + (setq buffer-read-only nil) + (yas-expand-snippet (yas--template-content yas--current-template) + (point-min) + (point-max) + (yas--template-expand-env yas--current-template)) + (when (and debug + (require 'yasnippet-debug nil t)) + (add-hook 'post-command-hook 'yas-debug-snippet-vars nil t)))) + (t + (yas--message 3 "Cannot test snippet for unknown major mode"))))) + +(defun yas-active-keys () + "Return all active trigger keys for current buffer and point." + (remove-duplicates + (remove-if-not #'stringp (mapcan #'yas--table-all-keys (yas--get-snippet-tables))) + :test #'string=)) + +(defun yas--template-fine-group (template) + (car (last (or (yas--template-group template) + (yas--template-perm-group template))))) + +(defun yas-describe-tables (&optional choose) + "Display snippets for each table." + (interactive "P") + (let* ((by-name-hash (and choose + (y-or-n-p "Show by namehash? "))) + (buffer (get-buffer-create "*YASnippet tables*")) + (active-tables (yas--get-snippet-tables)) + (remain-tables (let ((all)) + (maphash #'(lambda (_k v) + (unless (find v active-tables) + (push v all))) + yas--tables) + all)) + (table-lists (list active-tables remain-tables)) + (original-buffer (current-buffer)) + (continue t) + (yas--condition-cache-timestamp (current-time))) + (with-current-buffer buffer + (setq buffer-read-only nil) + (erase-buffer) + (cond ((not by-name-hash) + (insert "YASnippet tables: \n") + (while (and table-lists + continue) + (dolist (table (car table-lists)) + (yas--describe-pretty-table table original-buffer)) + (setq table-lists (cdr table-lists)) + (when table-lists + (yas--create-snippet-xrefs) + (display-buffer buffer) + (setq continue (and choose (y-or-n-p "Show also non-active tables? "))))) + (yas--create-snippet-xrefs) + (help-mode) + (goto-char 1)) + (t + (insert "\n\nYASnippet tables by NAMEHASH: \n") + (dolist (table (append active-tables remain-tables)) + (insert (format "\nSnippet table `%s':\n\n" (yas--table-name table))) + (let ((keys)) + (maphash #'(lambda (k _v) + (push k keys)) + (yas--table-hash table)) + (dolist (key keys) + (insert (format " key %s maps snippets: %s\n" key + (let ((names)) + (maphash #'(lambda (k _v) + (push k names)) + (gethash key (yas--table-hash table))) + names)))))))) + (goto-char 1) + (setq buffer-read-only t)) + (display-buffer buffer))) + +(defun yas--describe-pretty-table (table &optional original-buffer) + (insert (format "\nSnippet table `%s'" + (yas--table-name table))) + (if (yas--table-parents table) + (insert (format " parents: %s\n" + (mapcar #'yas--table-name + (yas--table-parents table)))) + (insert "\n")) + (insert (make-string 100 ?-) "\n") + (insert "group state name key binding\n") + (let ((groups-hash (make-hash-table :test #'equal))) + (maphash #'(lambda (_k v) + (let ((group (or (yas--template-fine-group v) + "(top level)"))) + (when (yas--template-name v) + (puthash group + (cons v (gethash group groups-hash)) + groups-hash)))) + (yas--table-uuidhash table)) + (maphash + #'(lambda (group templates) + (setq group (truncate-string-to-width group 25 0 ? "...")) + (insert (make-string 100 ?-) "\n") + (dolist (p templates) + (let ((name (truncate-string-to-width (propertize (format "\\\\snippet `%s'" (yas--template-name p)) + 'yasnippet p) + 50 0 ? "...")) + (group (prog1 group + (setq group (make-string (length group) ? )))) + (condition-string (let ((condition (yas--template-condition p))) + (if (and condition + original-buffer) + (with-current-buffer original-buffer + (if (yas--eval-condition condition) + "(y)" + "(s)")) + "(a)")))) + (insert group " ") + (insert condition-string " ") + (insert name + (if (string-match "\\.\\.\\.$" name) + "'" + " ") + " ") + (insert (truncate-string-to-width (or (yas--template-key p) "") + 15 0 ? "...") " ") + (insert (truncate-string-to-width (key-description (yas--template-keybinding p)) + 15 0 ? "...") " ") + (insert "\n")))) + groups-hash))) + + + +;;; User convenience functions, for using in `yas-key-syntaxes' + +(defun yas-try-key-from-whitespace (_start-point) + "As `yas-key-syntaxes' element, look for whitespace delimited key. + +A newline will be considered whitespace even if the mode syntax +marks it as something else (typically comment ender)." + (skip-chars-backward "^[:space:]\n")) + +(defun yas-shortest-key-until-whitespace (_start-point) + "Like `yas-longest-key-from-whitespace' but take the shortest key." + (when (/= (skip-chars-backward "^[:space:]\n" (1- (point))) 0) + 'again)) + +(defun yas-longest-key-from-whitespace (start-point) + "As `yas-key-syntaxes' element, look for longest key between point and whitespace. + +A newline will be considered whitespace even if the mode syntax +marks it as something else (typically comment ender)." + (if (= (point) start-point) + (yas-try-key-from-whitespace start-point) + (forward-char)) + (unless (<= start-point (1+ (point))) + 'again)) + + + +;;; User convenience functions, for using in snippet definitions + +(defvar yas-modified-p nil + "Non-nil if field has been modified by user or transformation.") + +(defvar yas-moving-away-p nil + "Non-nil if user is about to exit field.") + +(defvar yas-text nil + "Contains current field text.") + +(defun yas-substr (str pattern &optional subexp) + "Search PATTERN in STR and return SUBEXPth match. + +If found, the content of subexp group SUBEXP (default 0) is + returned, or else the original STR will be returned." + (let ((grp (or subexp 0))) + (save-match-data + (if (string-match pattern str) + (match-string-no-properties grp str) + str)))) + +(defun yas-choose-value (&rest possibilities) + "Prompt for a string in POSSIBILITIES and return it. + +The last element of POSSIBILITIES may be a list of strings." + (unless (or yas-moving-away-p + yas-modified-p) + (let* ((last-link (last possibilities)) + (last-elem (car last-link))) + (when (listp last-elem) + (setcar last-link (car last-elem)) + (setcdr last-link (cdr last-elem)))) + (some #'(lambda (fn) + (funcall fn "Choose: " possibilities)) + yas-prompt-functions))) + +(defun yas-key-to-value (alist) + (unless (or yas-moving-away-p + yas-modified-p) + (let ((key (read-key-sequence ""))) + (when (stringp key) + (or (cdr (find key alist :key #'car :test #'string=)) + key))))) + +(defun yas-throw (text) + "Throw a yas--exception with TEXT as the reason." + (throw 'yas--exception (cons 'yas--exception text))) + +(defun yas-verify-value (possibilities) + "Verify that the current field value is in POSSIBILITIES. + +Otherwise throw exception." + (when (and yas-moving-away-p (notany #'(lambda (pos) (string= pos yas-text)) possibilities)) + (yas-throw (yas--format "Field only allows %s" possibilities)))) + +(defun yas-field-value (number) + "Get the string for field with NUMBER. + +Use this in primary and mirror transformations to tget." + (let* ((snippet (car (yas--snippets-at-point))) + (field (and snippet + (yas--snippet-find-field snippet number)))) + (when field + (yas--field-text-for-display field)))) + +(defun yas-text () + "Return `yas-text' if that exists and is non-empty, else nil." + (if (and yas-text + (not (string= "" yas-text))) + yas-text)) + +(defun yas-selected-text () + "Return `yas-selected-text' if that exists and is non-empty, else nil." + (if (and yas-selected-text + (not (string= "" yas-selected-text))) + yas-selected-text)) + +(defun yas--get-field-once (number &optional transform-fn) + (unless yas-modified-p + (if transform-fn + (funcall transform-fn (yas-field-value number)) + (yas-field-value number)))) + +(defun yas-default-from-field (number) + (unless yas-modified-p + (yas-field-value number))) + +(defun yas-inside-string () + "Return non-nil if the point is inside a string according to font-lock." + (equal 'font-lock-string-face (get-char-property (1- (point)) 'face))) + +(defun yas-unimplemented (&optional missing-feature) + (if yas--current-template + (if (y-or-n-p (format "This snippet is unimplemented (missing %s) Visit the snippet definition? " + (or missing-feature + "something"))) + (yas--visit-snippet-file-1 yas--current-template)) + (message "No implementation. Missing %s" (or missing-feature "something")))) + + +;;; Snippet expansion and field management + +(defvar yas--active-field-overlay nil + "Overlays the currently active field.") + +(defvar yas--field-protection-overlays nil + "Two overlays protect the current active field.") + +(defvar yas-selected-text nil + "The selected region deleted on the last snippet expansion.") + +(defvar yas--start-column nil + "The column where the snippet expansion started.") + +(make-variable-buffer-local 'yas--active-field-overlay) +(make-variable-buffer-local 'yas--field-protection-overlays) +(put 'yas--active-field-overlay 'permanent-local t) +(put 'yas--field-protection-overlays 'permanent-local t) + +(defstruct (yas--snippet (:constructor yas--make-snippet ())) + "A snippet. + +..." + (fields '()) + (exit nil) + (id (yas--snippet-next-id) :read-only t) + (control-overlay nil) + active-field + ;; stacked expansion: the `previous-active-field' slot saves the + ;; active field where the child expansion took place + previous-active-field + force-exit) + +(defstruct (yas--field (:constructor yas--make-field (number start end parent-field))) + "A field. + +NUMBER is the field number. +START and END are mostly buffer markers, but see \"apropos markers-to-points\". +PARENT-FIELD is a `yas--field' this field is nested under, or nil. +MIRRORS is a list of `yas--mirror's +TRANSFORM is a lisp form. +MODIFIED-P is a boolean set to true once user inputs text. +NEXT is another `yas--field' or `yas--mirror' or `yas--exit'. +" + number + start end + parent-field + (mirrors '()) + (transform nil) + (modified-p nil) + next) + + +(defstruct (yas--mirror (:constructor yas--make-mirror (start end transform))) + "A mirror. + +START and END are mostly buffer markers, but see \"apropos markers-to-points\". +TRANSFORM is a lisp form. +PARENT-FIELD is a `yas--field' this mirror is nested under, or nil. +NEXT is another `yas--field' or `yas--mirror' or `yas--exit' +DEPTH is a count of how many nested mirrors can affect this mirror" + start end + (transform nil) + parent-field + next + depth) + +(defstruct (yas--exit (:constructor yas--make-exit (marker))) + marker + next) + +(defun yas--apply-transform (field-or-mirror field &optional empty-on-nil-p) + "Calculate transformed string for FIELD-OR-MIRROR from FIELD. + +If there is no transform for ht field, return nil. + +If there is a transform but it returns nil, return the empty +string iff EMPTY-ON-NIL-P is true." + (let* ((yas-text (yas--field-text-for-display field)) + (yas-modified-p (yas--field-modified-p field)) + (yas-moving-away-p nil) + (transform (if (yas--mirror-p field-or-mirror) + (yas--mirror-transform field-or-mirror) + (yas--field-transform field-or-mirror))) + (start-point (if (yas--mirror-p field-or-mirror) + (yas--mirror-start field-or-mirror) + (yas--field-start field-or-mirror))) + (transformed (and transform + (save-excursion + (goto-char start-point) + (let ((ret (yas--eval-lisp transform))) + (or ret (and empty-on-nil-p ""))))))) + transformed)) + +(defsubst yas--replace-all (from to &optional text) + "Replace all occurrences from FROM to TO. + +With optional string TEXT do it in that string." + (if text + (replace-regexp-in-string (regexp-quote from) to text t t) + (goto-char (point-min)) + (while (search-forward from nil t) + (replace-match to t t text)))) + +(defun yas--snippet-find-field (snippet number) + (find-if #'(lambda (field) + (eq number (yas--field-number field))) + (yas--snippet-fields snippet))) + +(defun yas--snippet-sort-fields (snippet) + "Sort the fields of SNIPPET in navigation order." + (setf (yas--snippet-fields snippet) + (sort (yas--snippet-fields snippet) + #'yas--snippet-field-compare))) + +(defun yas--snippet-field-compare (field1 field2) + "Compare FIELD1 and FIELD2. + +The field with a number is sorted first. If they both have a +number, compare through the number. If neither have, compare +through the field's start point" + (let ((n1 (yas--field-number field1)) + (n2 (yas--field-number field2))) + (if n1 + (if n2 + (or (zerop n2) (and (not (zerop n1)) + (< n1 n2))) + (not (zerop n1))) + (if n2 + (zerop n2) + (< (yas--field-start field1) + (yas--field-start field2)))))) + +(defun yas--field-probably-deleted-p (snippet field) + "Guess if SNIPPET's FIELD should be skipped." + (and + ;; field must be zero length + ;; + (zerop (- (yas--field-start field) (yas--field-end field))) + ;; field must have been modified + ;; + (yas--field-modified-p field) + ;; either: + (or + ;; 1) it's a nested field + ;; + (yas--field-parent-field field) + ;; 2) ends just before the snippet end + ;; + (and (eq field (car (last (yas--snippet-fields snippet)))) + (= (yas--field-start field) (overlay-end (yas--snippet-control-overlay snippet))))) + ;; the field numbered 0, just before the exit marker, should + ;; never be skipped + ;; + (not (and (yas--field-number field) + (zerop (yas--field-number field)))))) + +(defun yas--snippets-at-point (&optional all-snippets) + "Return a sorted list of snippets at point. + +The most recently-inserted snippets are returned first." + (sort + (delq nil (delete-dups + (mapcar (lambda (ov) (overlay-get ov 'yas--snippet)) + (if all-snippets (overlays-in (point-min) (point-max)) + (nconc (overlays-at (point)) + (overlays-at (1- (point)))))))) + #'(lambda (s1 s2) + (<= (yas--snippet-id s2) (yas--snippet-id s1))))) + +(defun yas-next-field-or-maybe-expand () + "Try to expand a snippet at a key before point. + +Otherwise delegate to `yas-next-field'." + (interactive) + (if yas-triggers-in-field + (let ((yas-fallback-behavior 'return-nil) + (active-field (overlay-get yas--active-field-overlay 'yas--field))) + (when active-field + (unless (yas-expand-from-trigger-key active-field) + (yas-next-field)))) + (yas-next-field))) + +(defun yas-next-field (&optional arg) + "Navigate to the ARGth next field. + +If there's none, exit the snippet." + (interactive) + (let* ((arg (or arg + 1)) + (snippet (first (yas--snippets-at-point))) + (active-field (overlay-get yas--active-field-overlay 'yas--field)) + (live-fields (remove-if #'(lambda (field) + (and (not (eq field active-field)) + (yas--field-probably-deleted-p snippet field))) + (yas--snippet-fields snippet))) + (active-field-pos (position active-field live-fields)) + (target-pos (and active-field-pos (+ arg active-field-pos))) + (target-field (and target-pos (nth target-pos live-fields)))) + ;; First check if we're moving out of a field with a transform + ;; + (when (and active-field + (yas--field-transform active-field)) + (let* ((yas-moving-away-p t) + (yas-text (yas--field-text-for-display active-field)) + (yas-modified-p (yas--field-modified-p active-field))) + ;; primary field transform: exit call to field-transform + (yas--eval-lisp (yas--field-transform active-field)))) + ;; Now actually move... + (cond ((and target-pos (>= target-pos (length live-fields))) + (yas-exit-snippet snippet)) + (target-field + (yas--move-to-field snippet target-field)) + (t + nil)))) + +(defun yas--place-overlays (snippet field) + "Correctly place overlays for SNIPPET's FIELD." + (yas--make-move-field-protection-overlays snippet field) + (yas--make-move-active-field-overlay snippet field)) + +(defun yas--move-to-field (snippet field) + "Update SNIPPET to move to field FIELD. + +Also create some protection overlays" + (goto-char (yas--field-start field)) + (yas--place-overlays snippet field) + (overlay-put yas--active-field-overlay 'yas--field field) + (let ((number (yas--field-number field))) + ;; check for the special ${0: ...} field + (if (and number (zerop number)) + (progn + (set-mark (yas--field-end field)) + (setf (yas--snippet-force-exit snippet) + (or (yas--field-transform field) + t))) + ;; make this field active + (setf (yas--snippet-active-field snippet) field) + ;; primary field transform: first call to snippet transform + (unless (yas--field-modified-p field) + (if (yas--field-update-display field) + (yas--update-mirrors snippet) + (setf (yas--field-modified-p field) nil)))))) + +(defun yas-prev-field () + "Navigate to prev field. If there's none, exit the snippet." + (interactive) + (yas-next-field -1)) + +(defun yas-abort-snippet (&optional snippet) + (interactive) + (let ((snippet (or snippet + (car (yas--snippets-at-point))))) + (when snippet + (setf (yas--snippet-force-exit snippet) t)))) + +(defun yas-exit-snippet (snippet) + "Goto exit-marker of SNIPPET." + (interactive (list (first (yas--snippets-at-point)))) + (when snippet + (setf (yas--snippet-force-exit snippet) t) + (goto-char (if (yas--snippet-exit snippet) + (yas--exit-marker (yas--snippet-exit snippet)) + (overlay-end (yas--snippet-control-overlay snippet)))))) + +(defun yas-exit-all-snippets () + "Exit all snippets." + (interactive) + (mapc #'(lambda (snippet) + (yas-exit-snippet snippet) + (yas--check-commit-snippet)) + (yas--snippets-at-point 'all-snippets))) + + +;;; Some low level snippet-routines: + +(defvar yas--inhibit-overlay-hooks nil + "Bind this temporarily to non-nil to prevent running `yas--on-*-modification'.") + +(defvar yas-snippet-beg nil "Beginning position of the last snippet committed.") +(defvar yas-snippet-end nil "End position of the last snippet committed.") + +(defun yas--commit-snippet (snippet) + "Commit SNIPPET, but leave point as it is. + +This renders the snippet as ordinary text." + + (let ((control-overlay (yas--snippet-control-overlay snippet))) + ;; + ;; Save the end of the moribund snippet in case we need to revive it + ;; its original expansion. + ;; + (when (and control-overlay + (overlay-buffer control-overlay)) + (setq yas-snippet-beg (overlay-start control-overlay)) + (setq yas-snippet-end (overlay-end control-overlay)) + (delete-overlay control-overlay)) + + (let ((yas--inhibit-overlay-hooks t)) + (when yas--active-field-overlay + (delete-overlay yas--active-field-overlay)) + (when yas--field-protection-overlays + (mapc #'delete-overlay yas--field-protection-overlays))) + + ;; stacked expansion: if the original expansion took place from a + ;; field, make sure we advance it here at least to + ;; `yas-snippet-end'... + ;; + (let ((previous-field (yas--snippet-previous-active-field snippet))) + (when (and yas-snippet-end previous-field) + (yas--advance-end-maybe previous-field yas-snippet-end))) + + ;; Convert all markers to points, + ;; + (yas--markers-to-points snippet) + + ;; Take care of snippet revival + ;; + (if yas-snippet-revival + (push `(apply yas--snippet-revive ,yas-snippet-beg ,yas-snippet-end ,snippet) + buffer-undo-list) + ;; Dismember the snippet... this is useful if we get called + ;; again from `yas--take-care-of-redo'.... + (setf (yas--snippet-fields snippet) nil))) + + (yas--message 3 "Snippet %s exited." (yas--snippet-id snippet))) + +(defun yas--safely-run-hooks (hook-var) + (condition-case error + (run-hooks hook-var) + (error + (yas--message 3 "%s error: %s" hook-var (error-message-string error))))) + + +(defun yas--check-commit-snippet () + "Check if point exited the currently active field of the snippet. + +If so cleans up the whole snippet up." + (let* ((snippets (yas--snippets-at-point 'all-snippets)) + (snippets-left snippets) + (snippet-exit-transform)) + (dolist (snippet snippets) + (let ((active-field (yas--snippet-active-field snippet))) + (setq snippet-exit-transform (yas--snippet-force-exit snippet)) + (cond ((or snippet-exit-transform + (not (and active-field (yas--field-contains-point-p active-field)))) + (setq snippets-left (delete snippet snippets-left)) + (setf (yas--snippet-force-exit snippet) nil) + (yas--commit-snippet snippet)) + ((and active-field + (or (not yas--active-field-overlay) + (not (overlay-buffer yas--active-field-overlay)))) + ;; + ;; stacked expansion: this case is mainly for recent + ;; snippet exits that place us back int the field of + ;; another snippet + ;; + (save-excursion + (yas--move-to-field snippet active-field) + (yas--update-mirrors snippet))) + (t + nil)))) + (unless (or (null snippets) snippets-left) + (if snippet-exit-transform + (yas--eval-lisp-no-saves snippet-exit-transform)) + (yas--safely-run-hooks 'yas-after-exit-snippet-hook)))) + +;; Apropos markers-to-points: +;; +;; This was found useful for performance reasons, so that an +;; excessive number of live markers aren't kept around in the +;; `buffer-undo-list'. However, in `markers-to-points', the +;; set-to-nil markers can't simply be discarded and replaced with +;; fresh ones in `points-to-markers'. The original marker that was +;; just set to nil has to be reused. +;; +;; This shouldn't bring horrible problems with undo/redo, but it +;; you never know +;; +(defun yas--markers-to-points (snippet) + "Convert all markers in SNIPPET to a cons (POINT . MARKER) +where POINT is the original position of the marker and MARKER is +the original marker object with the position set to nil." + (dolist (field (yas--snippet-fields snippet)) + (let ((start (marker-position (yas--field-start field))) + (end (marker-position (yas--field-end field)))) + (set-marker (yas--field-start field) nil) + (set-marker (yas--field-end field) nil) + (setf (yas--field-start field) (cons start (yas--field-start field))) + (setf (yas--field-end field) (cons end (yas--field-end field)))) + (dolist (mirror (yas--field-mirrors field)) + (let ((start (marker-position (yas--mirror-start mirror))) + (end (marker-position (yas--mirror-end mirror)))) + (set-marker (yas--mirror-start mirror) nil) + (set-marker (yas--mirror-end mirror) nil) + (setf (yas--mirror-start mirror) (cons start (yas--mirror-start mirror))) + (setf (yas--mirror-end mirror) (cons end (yas--mirror-end mirror)))))) + (let ((snippet-exit (yas--snippet-exit snippet))) + (when snippet-exit + (let ((exit (marker-position (yas--exit-marker snippet-exit)))) + (set-marker (yas--exit-marker snippet-exit) nil) + (setf (yas--exit-marker snippet-exit) (cons exit (yas--exit-marker snippet-exit))))))) + +(defun yas--points-to-markers (snippet) + "Convert all cons (POINT . MARKER) in SNIPPET to markers. + +This is done by setting MARKER to POINT with `set-marker'." + (dolist (field (yas--snippet-fields snippet)) + (setf (yas--field-start field) (set-marker (cdr (yas--field-start field)) + (car (yas--field-start field)))) + (setf (yas--field-end field) (set-marker (cdr (yas--field-end field)) + (car (yas--field-end field)))) + (dolist (mirror (yas--field-mirrors field)) + (setf (yas--mirror-start mirror) (set-marker (cdr (yas--mirror-start mirror)) + (car (yas--mirror-start mirror)))) + (setf (yas--mirror-end mirror) (set-marker (cdr (yas--mirror-end mirror)) + (car (yas--mirror-end mirror)))))) + (let ((snippet-exit (yas--snippet-exit snippet))) + (when snippet-exit + (setf (yas--exit-marker snippet-exit) (set-marker (cdr (yas--exit-marker snippet-exit)) + (car (yas--exit-marker snippet-exit))))))) + +(defun yas--field-contains-point-p (field &optional point) + (let ((point (or point + (point)))) + (and (>= point (yas--field-start field)) + (<= point (yas--field-end field))))) + +(defun yas--field-text-for-display (field) + "Return the propertized display text for field FIELD." + (buffer-substring (yas--field-start field) (yas--field-end field))) + +(defun yas--undo-in-progress () + "True if some kind of undo is in progress." + (or undo-in-progress + (eq this-command 'undo) + (eq this-command 'redo))) + +(defun yas--make-control-overlay (snippet start end) + "Create the control overlay that surrounds the snippet and +holds the keymap." + (let ((overlay (make-overlay start + end + nil + nil + t))) + (overlay-put overlay 'keymap yas-keymap) + (overlay-put overlay 'priority 100) + (overlay-put overlay 'yas--snippet snippet) + overlay)) + +(defun yas-skip-and-clear-or-delete-char (&optional field) + "Clears unmodified field if at field start, skips to next tab. + +Otherwise deletes a character normally by calling `delete-char'." + (interactive) + (let ((field (or field + (and yas--active-field-overlay + (overlay-buffer yas--active-field-overlay) + (overlay-get yas--active-field-overlay 'yas--field))))) + (cond ((and field + (not (yas--field-modified-p field)) + (eq (point) (marker-position (yas--field-start field)))) + (yas--skip-and-clear field) + (yas-next-field 1)) + (t + (call-interactively 'delete-char))))) + +(defun yas--skip-and-clear (field) + "Deletes the region of FIELD and sets it's modified state to t." + ;; Just before skipping-and-clearing the field, mark its children + ;; fields as modified, too. If the children have mirrors-in-fields + ;; this prevents them from updating erroneously (we're skipping and + ;; deleting!). + ;; + (yas--mark-this-and-children-modified field) + (delete-region (yas--field-start field) (yas--field-end field))) + +(defun yas--mark-this-and-children-modified (field) + (setf (yas--field-modified-p field) t) + (let ((fom (yas--field-next field))) + (while (and fom + (yas--fom-parent-field fom)) + (when (and (eq (yas--fom-parent-field fom) field) + (yas--field-p fom)) + (yas--mark-this-and-children-modified fom)) + (setq fom (yas--fom-next fom))))) + +(defun yas--make-move-active-field-overlay (snippet field) + "Place the active field overlay in SNIPPET's FIELD. + +Move the overlay, or create it if it does not exit." + (if (and yas--active-field-overlay + (overlay-buffer yas--active-field-overlay)) + (move-overlay yas--active-field-overlay + (yas--field-start field) + (yas--field-end field)) + (setq yas--active-field-overlay + (make-overlay (yas--field-start field) + (yas--field-end field) + nil nil t)) + (overlay-put yas--active-field-overlay 'priority 100) + (overlay-put yas--active-field-overlay 'face 'yas-field-highlight-face) + (overlay-put yas--active-field-overlay 'yas--snippet snippet) + (overlay-put yas--active-field-overlay 'modification-hooks '(yas--on-field-overlay-modification)) + (overlay-put yas--active-field-overlay 'insert-in-front-hooks + '(yas--on-field-overlay-modification)) + (overlay-put yas--active-field-overlay 'insert-behind-hooks + '(yas--on-field-overlay-modification)))) + +(defun yas--skip-and-clear-field-p (field _beg _end &optional _length) + "Tell if newly modified FIELD should be cleared and skipped. +BEG, END and LENGTH like overlay modification hooks." + (and (not (yas--field-modified-p field)) + (= (point) (yas--field-start field)) + (require 'delsel) + ;; `yank' sets `this-command' to t during execution. + (let ((clearp (get (if (commandp this-command) this-command + this-original-command) + 'delete-selection))) + (when (and (not (memq clearp '(yank supersede kill))) + (functionp clearp)) + (setq clearp (funcall clearp))) + clearp))) + +(defun yas--on-field-overlay-modification (overlay after? beg end &optional length) + "Clears the field and updates mirrors, conditionally. + +Only clears the field if it hasn't been modified and point is at +field start. This hook does nothing if an undo is in progress." + (unless (or yas--inhibit-overlay-hooks + (not (overlayp yas--active-field-overlay)) ; Avoid Emacs bug #21824. + (yas--undo-in-progress)) + (let* ((field (overlay-get overlay 'yas--field)) + (snippet (overlay-get yas--active-field-overlay 'yas--snippet))) + (cond (after? + (yas--advance-end-maybe field (overlay-end overlay)) + (save-excursion + (yas--field-update-display field)) + (yas--update-mirrors snippet)) + (field + (when (yas--skip-and-clear-field-p field beg end) + (yas--skip-and-clear field)) + (setf (yas--field-modified-p field) t)))))) + +;;; Apropos protection overlays: +;; +;; These exist for nasty users who will try to delete parts of the +;; snippet outside the active field. Actual protection happens in +;; `yas--on-protection-overlay-modification'. +;; +;; As of github #537 this no longer inhibits the command by issuing an +;; error: all the snippets at point, including nested snippets, are +;; automatically commited and the current command can proceed. +;; +(defun yas--make-move-field-protection-overlays (snippet field) + "Place protection overlays surrounding SNIPPET's FIELD. + +Move the overlays, or create them if they do not exit." + (let ((start (yas--field-start field)) + (end (yas--field-end field))) + ;; First check if the (1+ end) is contained in the buffer, + ;; otherwise we'll have to do a bit of cheating and silently + ;; insert a newline. the `(1+ (buffer-size))' should prevent this + ;; when using stacked expansion + ;; + (when (< (buffer-size) end) + (save-excursion + (let ((yas--inhibit-overlay-hooks t)) + (goto-char (point-max)) + (newline)))) + ;; go on to normal overlay creation/moving + ;; + (cond ((and yas--field-protection-overlays + (every #'overlay-buffer yas--field-protection-overlays)) + (move-overlay (first yas--field-protection-overlays) (1- start) start) + (move-overlay (second yas--field-protection-overlays) end (1+ end))) + (t + (setq yas--field-protection-overlays + (list (make-overlay (1- start) start nil t nil) + (make-overlay end (1+ end) nil t nil))) + (dolist (ov yas--field-protection-overlays) + (overlay-put ov 'face 'yas--field-debug-face) + (overlay-put ov 'yas--snippet snippet) + ;; (overlay-put ov 'evaporate t) + (overlay-put ov 'modification-hooks '(yas--on-protection-overlay-modification))))))) + +(defun yas--on-protection-overlay-modification (_overlay after? _beg _end &optional _length) + "Signals a snippet violation, then issues error. + +The error should be ignored in `debug-ignored-errors'" + (unless (or yas--inhibit-overlay-hooks + after? + (yas--undo-in-progress)) + (let ((snippets (yas--snippets-at-point))) + (yas--message 3 "Comitting snippets. Action would destroy a protection overlay.") + (cl-loop for snippet in snippets + do (yas--commit-snippet snippet))))) + +(add-to-list 'debug-ignored-errors "^Exit the snippet first!$") + + +;;; Snippet expansion and "stacked" expansion: +;; +;; Stacked expansion is when you try to expand a snippet when already +;; inside a snippet expansion. +;; +;; The parent snippet does not run its fields modification hooks +;; (`yas--on-field-overlay-modification' and +;; `yas--on-protection-overlay-modification') while the child snippet +;; is active. This means, among other things, that the mirrors of the +;; parent snippet are not updated, this only happening when one exits +;; the child snippet. +;; +;; Unfortunately, this also puts some ugly (and not fully-tested) +;; bits of code in `yas-expand-snippet' and +;; `yas--commit-snippet'. I've tried to mark them with "stacked +;; expansion:". +;; +;; This was thought to be safer in an undo/redo perspective, but +;; maybe the correct implementation is to make the globals +;; `yas--active-field-overlay' and `yas--field-protection-overlays' be +;; snippet-local and be active even while the child snippet is +;; running. This would mean a lot of overlay modification hooks +;; running, but if managed correctly (including overlay priorities) +;; they should account for all situations... +;; +(defun yas-expand-snippet (content &optional start end expand-env) + "Expand snippet CONTENT at current point. + +Text between START and END will be deleted before inserting +template. EXPAND-ENV is a list of (SYM VALUE) let-style dynamic bindings +considered when expanding the snippet." + (cl-assert (and yas-minor-mode + (memq 'yas--post-command-handler post-command-hook)) + nil + "[yas] `yas-expand-snippet' needs properly setup `yas-minor-mode'") + (run-hooks 'yas-before-expand-snippet-hook) + + ;; + (let* ((yas-selected-text (or yas-selected-text + (and (region-active-p) + (buffer-substring-no-properties (region-beginning) + (region-end))))) + (start (or start + (and (region-active-p) + (region-beginning)) + (point))) + (end (or end + (and (region-active-p) + (region-end)) + (point))) + (to-delete (and start + end + (buffer-substring-no-properties start end))) + snippet) + (goto-char start) + (setq yas--indent-original-column (current-column)) + ;; Delete the region to delete, this *does* get undo-recorded. + ;; + (when (and to-delete + (> end start)) + (delete-region start end)) + + (cond ((listp content) + ;; x) This is a snippet-command + ;; + (yas--eval-lisp-no-saves content)) + (t + ;; x) This is a snippet-snippet :-) + ;; + ;; Narrow the region down to the content, shoosh the + ;; `buffer-undo-list', and create the snippet, the new + ;; snippet updates its mirrors once, so we are left with + ;; some plain text. The undo action for deleting this + ;; plain text will get recorded at the end. + ;; + ;; stacked expansion: also shoosh the overlay modification hooks + (let ((buffer-undo-list t)) + ;; snippet creation might evaluate users elisp, which + ;; might generate errors, so we have to be ready to catch + ;; them mostly to make the undo information + ;; + (setq yas--start-column (current-column)) + (let ((yas--inhibit-overlay-hooks t)) + (setq snippet + (if expand-env + (eval `(let* ,expand-env + (insert content) + (yas--snippet-create start (point)))) + (insert content) + (yas--snippet-create start (point)))))) + + ;; stacked-expansion: This checks for stacked expansion, save the + ;; `yas--previous-active-field' and advance its boundary. + ;; + (let ((existing-field (and yas--active-field-overlay + (overlay-buffer yas--active-field-overlay) + (overlay-get yas--active-field-overlay 'yas--field)))) + (when existing-field + (setf (yas--snippet-previous-active-field snippet) existing-field) + (yas--advance-end-maybe existing-field (overlay-end yas--active-field-overlay)))) + + ;; Exit the snippet immediately if no fields + ;; + (unless (yas--snippet-fields snippet) + (yas-exit-snippet snippet)) + + ;; Push two undo actions: the deletion of the inserted contents of + ;; the new snippet (without the "key") followed by an apply of + ;; `yas--take-care-of-redo' on the newly inserted snippet boundaries + ;; + ;; A small exception, if `yas-also-auto-indent-first-line' + ;; is t and `yas--indent' decides to indent the line to a + ;; point before the actual expansion point, undo would be + ;; messed up. We call the early point "newstart"". case, + ;; and attempt to fix undo. + ;; + (let ((newstart (overlay-start (yas--snippet-control-overlay snippet))) + (end (overlay-end (yas--snippet-control-overlay snippet)))) + (when (< newstart start) + (push (cons (make-string (- start newstart) ? ) newstart) buffer-undo-list)) + (push (cons newstart end) buffer-undo-list) + (push `(apply yas--take-care-of-redo ,start ,end ,snippet) + buffer-undo-list)) + ;; Now, schedule a move to the first field + ;; + (let ((first-field (car (yas--snippet-fields snippet)))) + (when first-field + (sit-for 0) ;; fix issue 125 + (yas--move-to-field snippet first-field))) + (yas--message 3 "snippet expanded.") + t)))) + +(defun yas--take-care-of-redo (_beg _end snippet) + "Commits SNIPPET, which in turn pushes an undo action for reviving it. + +Meant to exit in the `buffer-undo-list'." + ;; slightly optimize: this action is only needed for snippets with + ;; at least one field + (when (yas--snippet-fields snippet) + (yas--commit-snippet snippet))) + +(defun yas--snippet-revive (beg end snippet) + "Revives SNIPPET and creates a control overlay from BEG to END. + +BEG and END are, we hope, the original snippets boundaries. +All the markers/points exiting existing inside SNIPPET should point +to their correct locations *at the time the snippet is revived*. + +After revival, push the `yas--take-care-of-redo' in the +`buffer-undo-list'" + ;; Reconvert all the points to markers + ;; + (yas--points-to-markers snippet) + ;; When at least one editable field existed in the zombie snippet, + ;; try to revive the whole thing... + ;; + (let ((target-field (or (yas--snippet-active-field snippet) + (car (yas--snippet-fields snippet))))) + (when target-field + (setf (yas--snippet-control-overlay snippet) (yas--make-control-overlay snippet beg end)) + (overlay-put (yas--snippet-control-overlay snippet) 'yas--snippet snippet) + + (yas--move-to-field snippet target-field) + + (push `(apply yas--take-care-of-redo ,beg ,end ,snippet) + buffer-undo-list)))) + +(defun yas--snippet-create (begin end) + "Create a snippet from a template inserted at BEGIN to END. + +Returns the newly created snippet." + (save-restriction + (narrow-to-region begin end) + (let ((snippet (yas--make-snippet))) + (goto-char begin) + (yas--snippet-parse-create snippet) + + ;; Sort and link each field + (yas--snippet-sort-fields snippet) + + ;; Create keymap overlay for snippet + (setf (yas--snippet-control-overlay snippet) + (yas--make-control-overlay snippet (point-min) (point-max))) + + ;; Move to end + (goto-char (point-max)) + + snippet))) + + +;;; Apropos adjacencies and "fom's": +;; +;; Once the $-constructs bits like "$n" and "${:n" are deleted in the +;; recently expanded snippet, we might actually have many fields, +;; mirrors (and the snippet exit) in the very same position in the +;; buffer. Therefore we need to single-link the +;; fields-or-mirrors-or-exit (which I have abbreviated to "fom") +;; according to their original positions in the buffer. +;; +;; Then we have operation `yas--advance-end-maybe' and +;; `yas--advance-start-maybe', which conditionally push the starts and +;; ends of these foms down the chain. +;; +;; This allows for like the printf with the magic ",": +;; +;; printf ("${1:%s}\\n"${1:$(if (string-match "%" text) "," "\);")} \ +;; $2${1:$(if (string-match "%" text) "\);" "")}$0 +;; +(defun yas--fom-start (fom) + (cond ((yas--field-p fom) + (yas--field-start fom)) + ((yas--mirror-p fom) + (yas--mirror-start fom)) + (t + (yas--exit-marker fom)))) + +(defun yas--fom-end (fom) + (cond ((yas--field-p fom) + (yas--field-end fom)) + ((yas--mirror-p fom) + (yas--mirror-end fom)) + (t + (yas--exit-marker fom)))) + +(defun yas--fom-next (fom) + (cond ((yas--field-p fom) + (yas--field-next fom)) + ((yas--mirror-p fom) + (yas--mirror-next fom)) + (t + (yas--exit-next fom)))) + +(defun yas--fom-parent-field (fom) + (cond ((yas--field-p fom) + (yas--field-parent-field fom)) + ((yas--mirror-p fom) + (yas--mirror-parent-field fom)) + (t + nil))) + +(defun yas--calculate-adjacencies (snippet) + "Calculate adjacencies for fields or mirrors of SNIPPET. + +This is according to their relative positions in the buffer, and +has to be called before the $-constructs are deleted." + (let* ((fom-set-next-fom + (lambda (fom nextfom) + (cond ((yas--field-p fom) + (setf (yas--field-next fom) nextfom)) + ((yas--mirror-p fom) + (setf (yas--mirror-next fom) nextfom)) + (t + (setf (yas--exit-next fom) nextfom))))) + (compare-fom-begs + (lambda (fom1 fom2) + (if (= (yas--fom-start fom2) (yas--fom-start fom1)) + (yas--mirror-p fom2) + (>= (yas--fom-start fom2) (yas--fom-start fom1))))) + (link-foms fom-set-next-fom)) + ;; make some yas--field, yas--mirror and yas--exit soup + (let ((soup)) + (when (yas--snippet-exit snippet) + (push (yas--snippet-exit snippet) soup)) + (dolist (field (yas--snippet-fields snippet)) + (push field soup) + (dolist (mirror (yas--field-mirrors field)) + (push mirror soup))) + (setq soup + (sort soup compare-fom-begs)) + (when soup + (reduce link-foms soup))))) + +(defun yas--calculate-mirrors-in-fields (snippet mirror) + "Attempt to assign a parent field of SNIPPET to the mirror MIRROR. + +Use the tightest containing field if more than one field contains +the mirror. Intended to be called *before* the dollar-regions are +deleted." + (let ((min (point-min)) + (max (point-max))) + (dolist (field (yas--snippet-fields snippet)) + (when (and (<= (yas--field-start field) (yas--mirror-start mirror)) + (<= (yas--mirror-end mirror) (yas--field-end field)) + (< min (yas--field-start field)) + (< (yas--field-end field) max)) + (setq min (yas--field-start field) + max (yas--field-end field)) + (setf (yas--mirror-parent-field mirror) field))))) + +(defun yas--advance-end-maybe (fom newend) + "Maybe advance FOM's end to NEWEND if it needs it. + +If it does, also: + +* call `yas--advance-start-maybe' on FOM's next fom. + +* in case FOM is field call `yas--advance-end-maybe' on its parent + field + +Also, if FOM is an exit-marker, always call +`yas--advance-start-maybe' on its next fom. This is because +exit-marker have identical start and end markers." + (cond ((and fom (< (yas--fom-end fom) newend)) + (set-marker (yas--fom-end fom) newend) + (yas--advance-start-maybe (yas--fom-next fom) newend) + (yas--advance-end-of-parents-maybe (yas--fom-parent-field fom) newend)) + ((yas--exit-p fom) + (yas--advance-start-maybe (yas--fom-next fom) newend)))) + +(defun yas--advance-start-maybe (fom newstart) + "Maybe advance FOM's start to NEWSTART if it needs it. + +If it does, also call `yas--advance-end-maybe' on FOM." + (when (and fom (< (yas--fom-start fom) newstart)) + (set-marker (yas--fom-start fom) newstart) + (yas--advance-end-maybe fom newstart))) + +(defun yas--advance-end-of-parents-maybe (field newend) + "Like `yas--advance-end-maybe' but for parent fields. + +Only works for fields and doesn't care about the start of the +next FOM. Works its way up recursively for parents of parents." + (when (and field + (< (yas--field-end field) newend)) + (set-marker (yas--field-end field) newend) + (yas--advance-end-of-parents-maybe (yas--field-parent-field field) newend))) + +(defvar yas--dollar-regions nil + "When expanding the snippet the \"parse-create\" functions add +cons cells to this var.") + +(defvar yas--backquote-markers-and-strings nil + "List of (MARKER . STRING) marking where the values from +backquoted Lisp expressions should be inserted at the end of +expansion.") + +(defun yas--snippet-parse-create (snippet) + "Parse a recently inserted snippet template, creating all +necessary fields, mirrors and exit points. + +Meant to be called in a narrowed buffer, does various passes" + (let ((parse-start (point))) + ;; Reset the yas--dollar-regions + ;; + (setq yas--dollar-regions nil) + ;; protect just the backquotes + ;; + (yas--protect-escapes nil '(?`)) + ;; replace all backquoted expressions + ;; + (goto-char parse-start) + (yas--save-backquotes) + ;; protect escaped characters + ;; + (yas--protect-escapes) + ;; parse fields with {} + ;; + (goto-char parse-start) + (yas--field-parse-create snippet) + ;; parse simple mirrors and fields + ;; + (goto-char parse-start) + (yas--simple-mirror-parse-create snippet) + ;; parse mirror transforms + ;; + (goto-char parse-start) + (yas--transform-mirror-parse-create snippet) + ;; calculate adjacencies of fields and mirrors + ;; + (yas--calculate-adjacencies snippet) + ;; Delete $-constructs + ;; + (save-restriction (widen) (yas--delete-regions yas--dollar-regions)) + ;; restore backquoted expression values + ;; + (yas--restore-backquotes) + ;; restore escapes + ;; + (goto-char parse-start) + (yas--restore-escapes) + ;; update mirrors for the first time + ;; + (yas--update-mirrors snippet) + ;; indent the best we can + ;; + (goto-char parse-start) + (yas--indent snippet))) + +(defun yas--indent-according-to-mode (snippet-markers) + "Indent current line according to mode, preserving SNIPPET-MARKERS." + ;;; Apropos indenting problems.... + ;; + ;; `indent-according-to-mode' uses whatever `indent-line-function' + ;; is available. Some implementations of these functions delete text + ;; before they insert. If there happens to be a marker just after + ;; the text being deleted, the insertion actually happens after the + ;; marker, which misplaces it. + ;; + ;; This would also happen if we had used overlays with the + ;; `front-advance' property set to nil. + ;; + ;; This is why I have these `trouble-markers', they are the ones at + ;; they are the ones at the first non-whitespace char at the line + ;; (i.e. at `yas--real-line-beginning'. After indentation takes place + ;; we should be at the correct to restore them to. All other + ;; non-trouble-markers have been *pushed* and don't need special + ;; attention. + ;; + (goto-char (yas--real-line-beginning)) + (let ((trouble-markers (remove-if-not #'(lambda (marker) + (= marker (point))) + snippet-markers))) + (save-restriction + (widen) + (condition-case _ + (indent-according-to-mode) + (error (yas--message 3 "Warning: `yas--indent-according-to-mode' having problems running %s" indent-line-function) + nil))) + (mapc #'(lambda (marker) + (set-marker marker (point))) + trouble-markers))) + +(defvar yas--indent-original-column nil) +(defun yas--indent (snippet) + (let ((snippet-markers (yas--collect-snippet-markers snippet))) + ;; Look for those $> + (save-excursion + (while (re-search-forward "$>" nil t) + (delete-region (match-beginning 0) (match-end 0)) + (when (not (eq yas-indent-line 'auto)) + (yas--indent-according-to-mode snippet-markers)))) + ;; Now do stuff for 'fixed and 'auto + (save-excursion + (cond ((eq yas-indent-line 'fixed) + (while (and (zerop (forward-line)) + (zerop (current-column))) + (indent-to-column yas--indent-original-column))) + ((eq yas-indent-line 'auto) + (let ((end (set-marker (make-marker) (point-max))) + (indent-first-line-p yas-also-auto-indent-first-line)) + (while (and (zerop (if indent-first-line-p + (prog1 + (forward-line 0) + (setq indent-first-line-p nil)) + (forward-line 1))) + (not (eobp)) + (<= (point) end)) + (yas--indent-according-to-mode snippet-markers)))) + (t + nil))))) + +(defun yas--collect-snippet-markers (snippet) + "Make a list of all the markers used by SNIPPET." + (let (markers) + (dolist (field (yas--snippet-fields snippet)) + (push (yas--field-start field) markers) + (push (yas--field-end field) markers) + (dolist (mirror (yas--field-mirrors field)) + (push (yas--mirror-start mirror) markers) + (push (yas--mirror-end mirror) markers))) + (let ((snippet-exit (yas--snippet-exit snippet))) + (when (and snippet-exit + (marker-buffer (yas--exit-marker snippet-exit))) + (push (yas--exit-marker snippet-exit) markers))) + markers)) + +(defun yas--real-line-beginning () + (let ((c (char-after (line-beginning-position))) + (n (line-beginning-position))) + (while (or (eql c ?\ ) + (eql c ?\t)) + (cl-incf n) + (setq c (char-after n))) + n)) + +(defun yas--escape-string (escaped) + (concat "YASESCAPE" (format "%d" escaped) "PROTECTGUARD")) + +(defun yas--protect-escapes (&optional text escaped) + "Protect all escaped characters with their numeric ASCII value. + +With optional string TEXT do it in string instead of buffer." + (let ((changed-text text) + (text-provided-p text)) + (mapc #'(lambda (escaped) + (setq changed-text + (yas--replace-all (concat "\\" (char-to-string escaped)) + (yas--escape-string escaped) + (when text-provided-p changed-text)))) + (or escaped yas--escaped-characters)) + changed-text)) + +(defun yas--restore-escapes (&optional text escaped) + "Restore all escaped characters from their numeric ASCII value. + +With optional string TEXT do it in string instead of the buffer." + (let ((changed-text text) + (text-provided-p text)) + (mapc #'(lambda (escaped) + (setq changed-text + (yas--replace-all (yas--escape-string escaped) + (char-to-string escaped) + (when text-provided-p changed-text)))) + (or escaped yas--escaped-characters)) + changed-text)) + +(defun yas--save-backquotes () + "Save all the \"`(lisp-expression)`\"-style expressions +with their evaluated value into `yas--backquote-markers-and-strings'." + (while (re-search-forward yas--backquote-lisp-expression-regexp nil t) + (let ((current-string (match-string-no-properties 1)) transformed) + (save-restriction (widen) + (delete-region (match-beginning 0) (match-end 0))) + (setq transformed (yas--eval-lisp (yas--read-lisp (yas--restore-escapes current-string '(?`))))) + (goto-char (match-beginning 0)) + (when transformed + (let ((marker (make-marker))) + (save-restriction + (widen) + (insert "Y") ;; quite horrendous, I love it :) + (set-marker marker (point)) + (insert "Y")) + (push (cons marker transformed) yas--backquote-markers-and-strings)))))) + +(defun yas--restore-backquotes () + "Replace markers in `yas--backquote-markers-and-strings' with their values." + (while yas--backquote-markers-and-strings + (let* ((marker-and-string (pop yas--backquote-markers-and-strings)) + (marker (car marker-and-string)) + (string (cdr marker-and-string))) + (save-excursion + (goto-char marker) + (save-restriction + (widen) + (delete-char -1) + (insert string) + (delete-char 1)) + (set-marker marker nil))))) + +(defun yas--scan-sexps (from count) + (ignore-errors + (save-match-data ; `scan-sexps' may modify match data. + (with-syntax-table (standard-syntax-table) + (scan-sexps from count))))) + +(defun yas--make-marker (pos) + "Create a marker at POS with nil `marker-insertion-type'." + (let ((marker (set-marker (make-marker) pos))) + (set-marker-insertion-type marker nil) + marker)) + +(defun yas--field-parse-create (snippet &optional parent-field) + "Parse most field expressions in SNIPPET, except for the simple one \"$n\". + +The following count as a field: + +* \"${n: text}\", for a numbered field with default text, as long as N is not 0; + +* \"${n: text$(expression)}, the same with a Lisp expression; + this is caught with the curiously named `yas--multi-dollar-lisp-expression-regexp' + +* the same as above but unnumbered, (no N:) and number is calculated automatically. + +When multiple expressions are found, only the last one counts." + ;; + (save-excursion + (while (re-search-forward yas--field-regexp nil t) + (let* ((real-match-end-0 (yas--scan-sexps (1+ (match-beginning 0)) 1)) + (number (and (match-string-no-properties 1) + (string-to-number (match-string-no-properties 1)))) + (brand-new-field (and real-match-end-0 + ;; break if on "$(" immediately + ;; after the ":", this will be + ;; caught as a mirror with + ;; transform later. + (not (string-match-p "\\`\\$[ \t\n]*(" + (match-string-no-properties 2))) + ;; allow ${0: some exit text} + ;; (not (and number (zerop number))) + (yas--make-field number + (yas--make-marker (match-beginning 2)) + (yas--make-marker (1- real-match-end-0)) + parent-field)))) + (when brand-new-field + (goto-char real-match-end-0) + (push (cons (1- real-match-end-0) real-match-end-0) + yas--dollar-regions) + (push (cons (match-beginning 0) (match-beginning 2)) + yas--dollar-regions) + (push brand-new-field (yas--snippet-fields snippet)) + (save-excursion + (save-restriction + (narrow-to-region (yas--field-start brand-new-field) (yas--field-end brand-new-field)) + (goto-char (point-min)) + (yas--field-parse-create snippet brand-new-field))))))) + ;; if we entered from a parent field, now search for the + ;; `yas--multi-dollar-lisp-expression-regexp'. This is used for + ;; primary field transformations + ;; + (when parent-field + (save-excursion + (while (re-search-forward yas--multi-dollar-lisp-expression-regexp nil t) + (let* ((real-match-end-1 (yas--scan-sexps (match-beginning 1) 1))) + ;; commit the primary field transformation if: + ;; + ;; 1. we don't find it in yas--dollar-regions (a subnested + ;; field) might have already caught it. + ;; + ;; 2. we really make sure we have either two '$' or some + ;; text and a '$' after the colon ':'. This is a FIXME: work + ;; my regular expressions and end these ugly hacks. + ;; + (when (and real-match-end-1 + (not (member (cons (match-beginning 0) + real-match-end-1) + yas--dollar-regions)) + (not (eq ?: + (char-before (1- (match-beginning 1)))))) + (let ((lisp-expression-string (buffer-substring-no-properties (match-beginning 1) + real-match-end-1))) + (setf (yas--field-transform parent-field) + (yas--read-lisp (yas--restore-escapes lisp-expression-string)))) + (push (cons (match-beginning 0) real-match-end-1) + yas--dollar-regions))))))) + +(defun yas--transform-mirror-parse-create (snippet) + "Parse the \"${n:$(lisp-expression)}\" mirror transformations in SNIPPET." + (while (re-search-forward yas--transform-mirror-regexp nil t) + (let* ((real-match-end-0 (yas--scan-sexps (1+ (match-beginning 0)) 1)) + (number (string-to-number (match-string-no-properties 1))) + (field (and number + (not (zerop number)) + (yas--snippet-find-field snippet number))) + (brand-new-mirror + (and real-match-end-0 + field + (yas--make-mirror (yas--make-marker (match-beginning 0)) + (yas--make-marker (match-beginning 0)) + (yas--read-lisp + (yas--restore-escapes + (buffer-substring-no-properties (match-beginning 2) + (1- real-match-end-0)))))))) + (when brand-new-mirror + (push brand-new-mirror + (yas--field-mirrors field)) + (yas--calculate-mirrors-in-fields snippet brand-new-mirror) + (push (cons (match-beginning 0) real-match-end-0) yas--dollar-regions))))) + +(defun yas--simple-mirror-parse-create (snippet) + "Parse the simple \"$n\" fields/mirrors/exitmarkers in SNIPPET." + (while (re-search-forward yas--simple-mirror-regexp nil t) + (let ((number (string-to-number (match-string-no-properties 1)))) + (cond ((zerop number) + + (setf (yas--snippet-exit snippet) + (yas--make-exit (yas--make-marker (match-end 0)))) + (save-excursion + (goto-char (match-beginning 0)) + (when yas-wrap-around-region + (cond (yas-selected-text + (insert yas-selected-text)) + ((and (eq yas-wrap-around-region 'cua) + cua-mode + (get-register ?0)) + (insert (prog1 (get-register ?0) + (set-register ?0 nil)))))) + (push (cons (point) (yas--exit-marker (yas--snippet-exit snippet))) + yas--dollar-regions))) + (t + (let ((field (yas--snippet-find-field snippet number))) + (if field + (let ((brand-new-mirror (yas--make-mirror + (yas--make-marker (match-beginning 0)) + (yas--make-marker (match-beginning 0)) + nil))) + (push brand-new-mirror + (yas--field-mirrors field)) + (yas--calculate-mirrors-in-fields snippet brand-new-mirror)) + (push (yas--make-field number + (yas--make-marker (match-beginning 0)) + (yas--make-marker (match-beginning 0)) + nil) + (yas--snippet-fields snippet)))) + (push (cons (match-beginning 0) (match-end 0)) + yas--dollar-regions)))))) + +(defun yas--delete-regions (regions) + "Sort disjuct REGIONS by start point, then delete from the back." + (mapc #'(lambda (reg) + (delete-region (car reg) (cdr reg))) + (sort regions + #'(lambda (r1 r2) + (>= (car r1) (car r2)))))) + +(defun yas--calculate-mirror-depth (mirror &optional traversed) + (let* ((parent (yas--mirror-parent-field mirror)) + (parents-mirrors (and parent + (yas--field-mirrors parent)))) + (or (yas--mirror-depth mirror) + (setf (yas--mirror-depth mirror) + (cond ((memq mirror traversed) + 0) + ((and parent parents-mirrors) + (1+ (reduce #'max + (mapcar #'(lambda (m) + (yas--calculate-mirror-depth m + (cons mirror + traversed))) + parents-mirrors)))) + (parent + 1) + (t + 0)))))) + +(defun yas--update-mirrors (snippet) + "Update all the mirrors of SNIPPET." + (save-excursion + (dolist (field-and-mirror (sort + ;; make a list of ((F1 . M1) (F1 . M2) (F2 . M3) (F2 . M4) ...) + ;; where F is the field that M is mirroring + ;; + (mapcan #'(lambda (field) + (mapcar #'(lambda (mirror) + (cons field mirror)) + (yas--field-mirrors field))) + (yas--snippet-fields snippet)) + ;; then sort this list so that entries with mirrors with parent + ;; fields appear before. This was important for fixing #290, and + ;; luckily also handles the case where a mirror in a field causes + ;; another mirror to need reupdating + ;; + #'(lambda (field-and-mirror1 field-and-mirror2) + (> (yas--calculate-mirror-depth (cdr field-and-mirror1)) + (yas--calculate-mirror-depth (cdr field-and-mirror2)))))) + (let* ((field (car field-and-mirror)) + (mirror (cdr field-and-mirror)) + (parent-field (yas--mirror-parent-field mirror))) + ;; before updating a mirror with a parent-field, maybe advance + ;; its start (#290) + ;; + (when parent-field + (yas--advance-start-maybe mirror (yas--fom-start parent-field))) + ;; update this mirror + ;; + (yas--mirror-update-display mirror field) + ;; `yas--place-overlays' is needed if the active field and + ;; protected overlays have been changed because of insertions + ;; in `yas--mirror-update-display' + ;; + (when (eq field (yas--snippet-active-field snippet)) + (yas--place-overlays snippet field)))))) + +(defun yas--mirror-update-display (mirror field) + "Update MIRROR according to FIELD (and mirror transform)." + + (let* ((mirror-parent-field (yas--mirror-parent-field mirror)) + (reflection (and (not (and mirror-parent-field + (yas--field-modified-p mirror-parent-field))) + (or (yas--apply-transform mirror field 'empty-on-nil) + (yas--field-text-for-display field))))) + (when (and reflection + (not (string= reflection (buffer-substring-no-properties (yas--mirror-start mirror) + (yas--mirror-end mirror))))) + (goto-char (yas--mirror-start mirror)) + (let ((yas--inhibit-overlay-hooks t)) + (insert reflection)) + (if (> (yas--mirror-end mirror) (point)) + (delete-region (point) (yas--mirror-end mirror)) + (set-marker (yas--mirror-end mirror) (point)) + (yas--advance-start-maybe (yas--mirror-next mirror) (point)) + ;; super-special advance + (yas--advance-end-of-parents-maybe mirror-parent-field (point)))))) + +(defun yas--field-update-display (field) + "Much like `yas--mirror-update-display', but for fields." + (when (yas--field-transform field) + (let ((transformed (and (not (eq (yas--field-number field) 0)) + (yas--apply-transform field field)))) + (when (and transformed + (not (string= transformed (buffer-substring-no-properties (yas--field-start field) + (yas--field-end field))))) + (setf (yas--field-modified-p field) t) + (goto-char (yas--field-start field)) + (let ((yas--inhibit-overlay-hooks t)) + (insert transformed) + (if (> (yas--field-end field) (point)) + (delete-region (point) (yas--field-end field)) + (set-marker (yas--field-end field) (point)) + (yas--advance-start-maybe (yas--field-next field) (point))) + t))))) + + +;;; Post-command hook: +;; +(defun yas--post-command-handler () + "Handles various yasnippet conditions after each command." + (cond ((eq 'undo this-command) + ;; + ;; After undo revival the correct field is sometimes not + ;; restored correctly, this condition handles that + ;; + (let* ((snippet (car (yas--snippets-at-point))) + (target-field (and snippet + (find-if-not #'(lambda (field) + (yas--field-probably-deleted-p snippet field)) + (remove nil + (cons (yas--snippet-active-field snippet) + (yas--snippet-fields snippet))))))) + (when target-field + (yas--move-to-field snippet target-field)))) + ((not (yas--undo-in-progress)) + ;; When not in an undo, check if we must commit the snippet + ;; (user exited it). + (yas--check-commit-snippet)))) + +;;; Fancy docs: +;; +;; The docstrings for some functions are generated dynamically +;; depending on the context. +;; +(put 'yas-expand 'function-documentation + '(yas--expand-from-trigger-key-doc t)) +(defun yas--expand-from-trigger-key-doc (context) + "A doc synthesizer for `yas--expand-from-trigger-key-doc'." + (let* ((yas-fallback-behavior (and context yas-fallback-behavior)) + (fallback-description + (cond ((eq yas-fallback-behavior 'call-other-command) + (let* ((fallback (yas--keybinding-beyond-yasnippet))) + (or (and fallback + (format "call command `%s'." + (pp-to-string fallback))) + "do nothing (`yas-expand' doesn't override\nanything)."))) + ((eq yas-fallback-behavior 'return-nil) + "do nothing.") + (t "defer to `yas-fallback-behavior' (which see).")))) + (concat "Expand a snippet before point. If no snippet +expansion is possible, " + fallback-description + "\n\nOptional argument FIELD is for non-interactive use and is an +object satisfying `yas--field-p' to restrict the expansion to."))) + +(put 'yas-expand-from-keymap 'function-documentation + '(yas--expand-from-keymap-doc t)) +(defun yas--expand-from-keymap-doc (context) + "A doc synthesizer for `yas--expand-from-keymap-doc'." + (add-hook 'temp-buffer-show-hook 'yas--snippet-description-finish-runonce) + (concat "Expand/run snippets from keymaps, possibly falling back to original binding.\n" + (when (and context (eq this-command 'describe-key)) + (let* ((vec (this-single-command-keys)) + (templates (mapcan #'(lambda (table) + (yas--fetch table vec)) + (yas--get-snippet-tables))) + (yas--direct-keymaps nil) + (fallback (key-binding vec))) + (concat "In this case, " + (when templates + (concat "these snippets are bound to this key:\n" + (yas--template-pretty-list templates) + "\n\nIf none of these expands, ")) + (or (and fallback + (format "fallback `%s' will be called." (pp-to-string fallback))) + "no fallback keybinding is called.")))))) + +(defun yas--template-pretty-list (templates) + (let ((acc) + (yas-buffer-local-condition 'always)) + (dolist (plate templates) + (setq acc (concat acc "\n*) " + (propertize (concat "\\\\snippet `" (car plate) "'") + 'yasnippet (cdr plate))))) + acc)) + +(define-button-type 'help-snippet-def + :supertype 'help-xref + 'help-function (lambda (template) (yas--visit-snippet-file-1 template)) + 'help-echo (purecopy "mouse-2, RET: find snippets's definition")) + +(defun yas--snippet-description-finish-runonce () + "Final adjustments for the help buffer when snippets are concerned." + (yas--create-snippet-xrefs) + (remove-hook 'temp-buffer-show-hook 'yas--snippet-description-finish-runonce)) + +(defun yas--create-snippet-xrefs () + (save-excursion + (goto-char (point-min)) + (while (search-forward-regexp "\\\\\\\\snippet[ \s\t]+`\\([^']+\\)'" nil t) + (let ((template (get-text-property (match-beginning 1) + 'yasnippet))) + (when template + (help-xref-button 1 'help-snippet-def template) + (kill-region (match-end 1) (match-end 0)) + (kill-region (match-beginning 0) (match-beginning 1))))))) + +;;; Utils + +(defvar yas-verbosity 4 + "Log level for `yas--message' 4 means trace most anything, 0 means nothing.") + +(defun yas--message (level message &rest args) + "When LEVEL is above `yas-verbosity-level', log MESSAGE and ARGS." + (when (> yas-verbosity level) + (message "%s" (apply #'yas--format message args)))) + +(defun yas--warning (format-control &rest format-args) + (let ((msg (apply #'format format-control format-args))) + (display-warning 'yasnippet msg :warning) + (yas--message 1 msg))) + +(defun yas--format (format-control &rest format-args) + (apply #'format (concat "[yas] " format-control) format-args)) + + +;;; Some hacks: +;; +;; The functions +;; +;; `locate-dominating-file' +;; `region-active-p' +;; +;; added for compatibility in emacsen < 23 +(unless (>= emacs-major-version 23) + (unless (fboundp 'region-active-p) + (defun region-active-p () (and transient-mark-mode mark-active))) + + (unless (fboundp 'locate-dominating-file) + (defvar locate-dominating-stop-dir-regexp + "\\`\\(?:[\\/][\\/][^\\/]+[\\/]\\|/\\(?:net\\|afs\\|\\.\\.\\.\\)/\\)\\'" + "Regexp of directory names which stop the search in `locate-dominating-file'. +Any directory whose name matches this regexp will be treated like +a kind of root directory by `locate-dominating-file' which will stop its search +when it bumps into it. +The default regexp prevents fruitless and time-consuming attempts to find +special files in directories in which filenames are interpreted as hostnames, +or mount points potentially requiring authentication as a different user.") + + (defun locate-dominating-file (file name) + "Look up the directory hierarchy from FILE for a file named NAME. +Stop at the first parent directory containing a file NAME, +and return the directory. Return nil if not found." + ;; We used to use the above locate-dominating-files code, but the + ;; directory-files call is very costly, so we're much better off doing + ;; multiple calls using the code in here. + ;; + ;; Represent /home/luser/foo as ~/foo so that we don't try to look for + ;; `name' in /home or in /. + (setq file (abbreviate-file-name file)) + (let ((root nil) + try) + (while (not (or root + (null file) + ;; FIXME: Disabled this heuristic because it is sometimes + ;; inappropriate. + ;; As a heuristic, we stop looking up the hierarchy of + ;; directories as soon as we find a directory belonging + ;; to another user. This should save us from looking in + ;; things like /net and /afs. This assumes that all the + ;; files inside a project belong to the same user. + ;; (let ((prev-user user)) + ;; (setq user (nth 2 (file-attributes file))) + ;; (and prev-user (not (equal user prev-user)))) + (string-match locate-dominating-stop-dir-regexp file))) + (setq try (file-exists-p (expand-file-name name file))) + (cond (try (setq root file)) + ((equal file (setq file (file-name-directory + (directory-file-name file)))) + (setq file nil)))) + root)))) + + +;;; Backward compatibility to yasnippet <= 0.7 + +(defun yas-initialize () + "For backward compatibility, enable `yas-minor-mode' globally." + (declare (obsolete "Use (yas-global-mode 1) instead." "0.8")) + (yas-global-mode 1)) + +(defvar yas--backported-syms '(;; `defcustom's + ;; + yas-snippet-dirs + yas-prompt-functions + yas-indent-line + yas-also-auto-indent-first-line + yas-snippet-revival + yas-triggers-in-field + yas-fallback-behavior + yas-choose-keys-first + yas-choose-tables-first + yas-use-menu + yas-trigger-symbol + yas-wrap-around-region + yas-good-grace + yas-visit-from-menu + yas-expand-only-for-last-commands + yas-field-highlight-face + + ;; these vars can be customized as well + ;; + yas-keymap + yas-verbosity + yas-extra-modes + yas-key-syntaxes + yas-after-exit-snippet-hook + yas-before-expand-snippet-hook + yas-buffer-local-condition + yas-dont-activate + + ;; prompting functions + ;; + yas-x-prompt + yas-ido-prompt + yas-no-prompt + yas-completing-prompt + yas-dropdown-prompt + + ;; interactive functions + ;; + yas-expand + yas-minor-mode + yas-global-mode + yas-direct-keymaps-reload + yas-minor-mode-on + yas-load-directory + yas-reload-all + yas-compile-directory + yas-recompile-all + yas-about + yas-expand-from-trigger-key + yas-expand-from-keymap + yas-insert-snippet + yas-visit-snippet-file + yas-new-snippet + yas-load-snippet-buffer + yas-tryout-snippet + yas-describe-tables + yas-next-field-or-maybe-expand + yas-next-field + yas-prev-field + yas-abort-snippet + yas-exit-snippet + yas-exit-all-snippets + yas-skip-and-clear-or-delete-char + yas-initialize + + ;; symbols that I "exported" for use + ;; in snippets and hookage + ;; + yas-expand-snippet + yas-define-snippets + yas-define-menu + yas-snippet-beg + yas-snippet-end + yas-modified-p + yas-moving-away-p + yas-substr + yas-choose-value + yas-key-to-value + yas-throw + yas-verify-value + yas-field-value + yas-text + yas-selected-text + yas-default-from-field + yas-inside-string + yas-unimplemented + yas-define-condition-cache + yas-hippie-try-expand + + ;; debug definitions + ;; yas-debug-snippet-vars + ;; yas-exterminate-package + ;; yas-debug-test + + ;; testing definitions + ;; yas-should-expand + ;; yas-should-not-expand + ;; yas-mock-insert + ;; yas-make-file-or-dirs + ;; yas-variables + ;; yas-saving-variables + ;; yas-call-with-snippet-dirs + ;; yas-with-snippet-dirs +) + "Backported yasnippet symbols. + +They are mapped to \"yas/*\" variants.") + +(dolist (sym yas--backported-syms) + (let ((backported (intern (replace-regexp-in-string "^yas-" "yas/" (symbol-name sym))))) + (when (boundp sym) + (make-obsolete-variable backported sym "yasnippet 0.8") + (defvaralias backported sym)) + (when (fboundp sym) + (make-obsolete backported sym "yasnippet 0.8") + (defalias backported sym)))) + +(defvar yas--exported-syms + (let (exported) + (mapatoms (lambda (atom) + (if (and (or (and (boundp atom) + (not (get atom 'byte-obsolete-variable))) + (and (fboundp atom) + (not (get atom 'byte-obsolete-info)))) + (string-match-p "^yas-[^-]" (symbol-name atom))) + (push atom exported)))) + exported) + "Exported yasnippet symbols. + +i.e. the ones with \"yas-\" single dash prefix. I will try to +keep them in future yasnippet versions and other elisp libraries +can more or less safely rely upon them.") + + +(provide 'yasnippet) +;; Local Variables: +;; coding: utf-8 +;; indent-tabs-mode: nil +;; byte-compile-warnings: (not cl-functions) +;; End: +;;; yasnippet.el ends here diff --git a/elpa/yasnippet-20160131.948/yasnippet.elc b/elpa/yasnippet-20160131.948/yasnippet.elc new file mode 100644 index 0000000000000000000000000000000000000000..fb2bef95aee382576139aaeb92b98b6295752426 GIT binary patch literal 191804 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

F%DS#OZu55J*f2IXsDsDI-uaz6`D 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 literal 0 HcmV?d00001 diff --git a/emacs-color-theme-solarized b/emacs-color-theme-solarized deleted file mode 160000 index ec7dc87..0000000 --- a/emacs-color-theme-solarized +++ /dev/null @@ -1 +0,0 @@ -Subproject commit ec7dc872858bed95e71a7d23ddba5488699cdf58 diff --git a/find_python_file.py b/find_python_file.py deleted file mode 100644 index c56fcb3..0000000 --- a/find_python_file.py +++ /dev/null @@ -1,37 +0,0 @@ -import os, sys -import imp - -# Using common_env is way to slow so manually add the paths -pj = os.path.join -abspath = os.path.abspath - -taccs_base = os.environ['TACCS_BASE_DIR'] -add_path = lambda sub: sys.path.append(abspath(pj(taccs_base, sub))) - -add_path('taccs/packages') -add_path('plugins/p5_common/packages/') -add_path('plugins/glpcc4/packages/') -add_path('plugins/cots/packages/') -add_path('plugins/demo/packages/') -add_path('plugins/amtrak/packages/') -add_path('plugins/actic/packages/') -add_path('plugins/isave/packages/') -add_path('plugins/kdas/packages/') - -import_path = sys.argv[1] -parts = import_path.split('.', 1) -root = parts[0] -sub = '' -if len(parts) > 1: - sub = parts[1] - -_, dirpath, _ = imp.find_module(root) - -sub_path = sub.replace('.', '/') -mod_path = abspath(pj(dirpath, sub_path)) -if os.path.isdir(mod_path): - mod_path = pj(mod_path, '__init__.py') -else: - mod_path = mod_path + '.py' - -sys.stdout.write(mod_path) diff --git a/init.el b/init.el index a537821..dc4a0b8 100644 --- a/init.el +++ b/init.el @@ -1,157 +1,21 @@ -(defvar emacs-root (concat (getenv "HOME") "/.emacs.d/")) +(byte-recompile-directory (expand-file-name "~/.emacs.d/elpa") 0) -(defun add-path (p) - (add-to-list 'load-path (concat emacs-root p))) +(require 'package) +(add-to-list 'package-archives + '("melpa" . "http://melpa.milkbox.net/packages/") t) +;(add-to-list 'package-archives +; '("elpy" . "http://jorgenschaefer.github.io/packages/") t) -(defvar *emacs-load-start* (current-time)) - -;; Set the whitespace rules I must follow -;; - Do this before loading other things encase they cash them -(setq-default py-indent-offset 3) -(setq-default indent-tabs-mode nil) -(setq js-indent-level 3) -(setq-default indent-tabs-mode nil) ; always replace tabs with spaces -(setq-default tab-width 3) ; set tab width to 3 for all buffers -(setq-default c-basic-offset 3) - -(add-hook 'python-mode-hook '(lambda () - (setq python-indent 3))) - -;; Setup theming -;;(add-path "color-theme") -;;(require 'color-theme) -;;(eval-after-load "color-theme" -;; '(progn -;; (color-theme-initialize) -;; (color-theme-charcoal-black))) - -(add-to-list 'custom-theme-load-path (concat emacs-root "emacs-color-theme-solarized")) -(load-theme 'solarized-dark t) - - -;; Spell checking -(add-to-list 'exec-path "C:/Program Files (x86)/Aspell/bin/") -(setq ispell-program-name "aspell") -(require 'ispell) - -;; SmartTab -;;(add-path "smart-tab") -;;(require 'smart-tab) - -;; Add the packages I care about -;; -JavaScript -(add-path "js2-mode") -(autoload 'js2-mode "js2-mode" nil t) -(add-to-list 'auto-mode-alist '("\\.js$" . js2-mode)) - -;; CoffeeScript -(add-path "coffee-mode") -(require 'coffee-mode) -(add-to-list 'auto-mode-alist '("\\.coffee$" . coffee-mode)) - -;; SCSS -(add-path "scss-mode") -(require 'scss-mode) -(setq scss-compile-at-save nil) -(add-to-list 'auto-mode-alist '("\\.scss$" . scss-mode)) -(setq scss-compile-at-save nil) - -;; Python -(defun flymake-create-temp-intemp (file-name prefix) - "Return file name in temporary directory for checking FILE-NAME. - This is a replacement for `flymake-create-temp-inplace'. The - difference is that it gives a file name in - `temporary-file-directory' instead of the same directory as - FILE-NAME. - - For the use of PREFIX see that function. - - Note that not making the temporary file in another directory - \(like here) will not if the file you are checking depends on - relative paths to other files \(for the type of checks flymake - makes)." - (unless (stringp file-name) - (error "Invalid file-name")) - (or prefix - (setq prefix "flymake")) - (let* ((name (concat - (file-name-nondirectory - (file-name-sans-extension file-name)) - "_" prefix)) - (ext (concat "." (file-name-extension file-name))) - (temp-name (make-temp-file name nil ext)) - ) - (flymake-log 3 "create-temp-intemp: file=%s temp=%s" file-name temp-name) - temp-name)) - -(eval-after-load "flymake" - '(progn - (defun flymake-after-change-function (start stop len) - "Start syntax check for current buffer if it isn't already running." - ;; Do nothing, don't want to run checks until I save. - ))) - -(when (load "flymake" t) - (defun flymake-pyflakes-init () - (let* ((temp-file (flymake-init-create-temp-buffer-copy - 'flymake-create-temp-intemp)) - (local-file (file-relative-name - temp-file - (file-name-directory buffer-file-name)))) - (list "pyflakes" (list local-file)))) - - (add-to-list 'flymake-allowed-file-name-masks - '("\\.py\\'" flymake-pyflakes-init))) - -(setq temporary-file-directory "~/.emacs.d/tmp/") -(add-hook 'python-mode-hook 'flymake-mode) - -;; Enable spell check -;;(mapcar (lambda (mode-hook) (add-hook mode-hook 'flyspell-prog-mode)) -;; '(python-mode-hook)) - - -;; Handlebars -;;(add-path "handlebars-mode") -;;(require 'handlebars-mode) -;;(add-to-list 'auto-mode-alist '("\\.handlebar$" . handlebars-mode)) - -;; Markdown editing -;;(add-path "markdown-mode") -;;(require 'markdown-mode) -;;(add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-mode)) - -;; - Tell me when I make stupid whitespaces -(setq-default show-trailing-whitespace t) -;; - Provide a simple way to fix white space -(global-set-key (kbd "C-c w") 'delete-trailing-whitespace) - -;; Setup the UI the way i like it -;; - move the scrollbars -(setq scroll-bar-mode-explicit t) -(set-scroll-bar-mode `right) +(package-initialize) ;; - There is no reason for the toolbar (tool-bar-mode -1) -;; - Why would I want to see the splash screen -(setq inhibit-splash-screen t) - -;; - Keep the menus upto date. -(setq imenu-auto-rescan 1) - ;; - Show the column count in the mode line (column-number-mode t) -;; Key Bindings -(global-set-key "\C-x\C-m" 'execute-extended-command) -(global-set-key "\C-x\C-k" 'kill-region) -(global-set-key "\r" 'newline-and-indent) - -;; Easier File Finder (C-x C-f) -(require 'ido) -(ido-mode t) -(setq ido-max-directory-size 100000) +(setq-default show-trailing-whitespace t) +(global-set-key (kbd "C-c w") 'delete-trailing-whitespace) ;; Auto revert files (global-auto-revert-mode 1) @@ -160,29 +24,26 @@ (setq make-backup-files -1) (setq version-control -1) -;; Set the whitespace rules I must follow -;; - Do this before loading other things encase they cash them -(setq py-indent-offset 3) -(setq indent-tabs-mode nil) -(setq js-indent-level 3) -(setq indent-tabs-mode nil) ; always replace tabs with spaces -(setq tab-width 3) ; set tab width to 3 for all buffers -(setq c-basic-offset 3) - - -(defun open-selected-py-import-file () - "Locates the file for the current import path and opens its buffer" - (interactive) - (open-py-import-file (buffer-substring (region-beginning ) (region-end )))) - -(defvar find-py-script-path (concat emacs-root "/find_python_file.py")) -(defun open-py-import-file (import-path) - "Opens the supplied import path as a buffer" - (interactive) - (message import-path) - (let ((py-out (shell-command-to-string (concat "python " find-py-script-path " " import-path)))) - (message py-out) - (if (file-exists-p py-out) - (find-file py-out)))) +;; Hide file menu +(menu-bar-mode -1) + +(add-hook 'after-init-hook (lambda () (load "~/.emacs.d/after_package.el"))) + +(custom-set-variables + ;; custom-set-variables was added by Custom. + ;; If you edit it by hand, you could mess it up, so be careful. + ;; Your init file should contain only one such instance. + ;; If there is more than one, they won't work right. + '(custom-safe-themes + (quote + ("98a619757483dc6614c266107ab6b19d315f93267e535ec89b7af3d62fb83cad" default))) + '(package-selected-packages + (quote + (mmm-mode markdown-mode+ markdown-mode typescript-mode flymake-python-pyflakes helm-fuzzy-find helm-git-files js2-refactor js2-highlight-vars ac-js2 js2-mode multi-term helm-ls-git helm-cmd-t auto-complete helm darktooth-theme elpy)))) +(custom-set-faces + ;; custom-set-faces was added by Custom. + ;; If you edit it by hand, you could mess it up, so be careful. + ;; Your init file should contain only one such instance. + ;; If there is more than one, they won't work right. + ) -(global-set-key (kbd "C-c p") 'open-selected-py-import-file) diff --git a/js2-mode b/js2-mode deleted file mode 160000 index 5c3f8ac..0000000 --- a/js2-mode +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 5c3f8acb7acb3214cf693e9842c5288fe810c5dc diff --git a/scss-mode b/scss-mode deleted file mode 160000 index 3452e92..0000000 --- a/scss-mode +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 3452e92800c345690195f55a74ba4118c5c4d004 diff --git a/smart-tab b/smart-tab deleted file mode 160000 index da4168b..0000000 --- a/smart-tab +++ /dev/null @@ -1 +0,0 @@ -Subproject commit da4168baeb5fd213f1c3b8f7656648aaae79fbcf