From 8e93ca7a95bf16b168a44e19073d17c2ba9ee9b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mika=C3=ABl=20Capelle?= Date: Thu, 18 Feb 2016 14:53:30 +0100 Subject: [PATCH] Initial commit. --- .bashrc | 115 + .emacs.d/ac-comphist.dat | 254 + .../auto-save-list/.saves-1032-SPRINGSTEEN~ | 2 + .../auto-save-list/.saves-1136-SPRINGSTEEN~ | 2 + .../.saves-12370-pinkfloyd.laas.fr~ | 6 + .../.saves-12374-pinkfloyd.laas.fr~ | 14 + .emacs.d/auto-save-list/.saves-1540-PIXIES~ | 2 + .../.saves-17826-pinkfloyd.laas.fr~ | 4 + .emacs.d/auto-save-list/.saves-1840-PIXIES~ | 2 + .../auto-save-list/.saves-2128-SPRINGSTEEN~ | 6 + .../auto-save-list/.saves-2152-SPRINGSTEEN~ | 2 + .../auto-save-list/.saves-2232-SPRINGSTEEN~ | 2 + .../auto-save-list/.saves-2356-SPRINGSTEEN~ | 8 + .../.saves-29259-pinkfloyd.laas.fr~ | 6 + .../auto-save-list/.saves-3332-SPRINGSTEEN~ | 4 + .../auto-save-list/.saves-3380-SPRINGSTEEN~ | 10 + .../.saves-3416-pinkfloyd.laas.fr~ | 12 + .../auto-save-list/.saves-3936-SPRINGSTEEN~ | 2 + .emacs.d/auto-save-list/.saves-4088-PIXIES~ | 18 + .../auto-save-list/.saves-4164-SPRINGSTEEN~ | 4 + .emacs.d/auto-save-list/.saves-4220-PIXIES~ | 2 + .emacs.d/auto-save-list/.saves-4260-PIXIES~ | 0 .emacs.d/auto-save-list/.saves-4268-PIXIES~ | 8 + .../auto-save-list/.saves-4572-SPRINGSTEEN~ | 4 + .../auto-save-list/.saves-4816-SPRINGSTEEN~ | 2 + .emacs.d/auto-save-list/.saves-4880-PIXIES~ | 6 + .emacs.d/auto-save-list/.saves-5296-PIXIES~ | 10 + .emacs.d/auto-save-list/.saves-5400-PIXIES~ | 4 + .../auto-save-list/.saves-5904-SPRINGSTEEN~ | 2 + .emacs.d/auto-save-list/.saves-5960-PIXIES~ | 34 + .emacs.d/auto-save-list/.saves-6292-PIXIES~ | 8 + .emacs.d/auto-save-list/.saves-6632-PIXIES~ | 2 + .../auto-save-list/.saves-7132-SPRINGSTEEN~ | 2 + .../.saves-7253-pinkfloyd.laas.fr~ | 2 + .emacs.d/clang-complete | Bin 0 -> 58894 bytes .../2048-game-autoloads.el | 22 + .../2048-game-autoloads.el~ | 11 + .../2048-game-20151026.1233/2048-game-pkg.el | 1 + .../2048-game-20151026.1233/2048-game-pkg.elc | Bin 0 -> 516 bytes .../elpa/2048-game-20151026.1233/2048-game.el | 538 + .../2048-game-20151026.1233/2048-game.elc | Bin 0 -> 19221 bytes .../ac-c-headers-autoloads.el | 16 + .../ac-c-headers-autoloads.el~ | 11 + .../ac-c-headers-pkg.el | 1 + .../ac-c-headers-pkg.elc | Bin 0 -> 550 bytes .../ac-c-headers-20151021.134/ac-c-headers.el | 174 + .../ac-c-headers.elc | Bin 0 -> 3481 bytes .../ac-clang-autoloads.el | 16 + .../ac-clang-autoloads.el~ | 11 + .../ac-clang-20150906.1008/ac-clang-pkg.el | 11 + .../elpa/ac-clang-20150906.1008/ac-clang.el | 1406 + .../elpa/ac-clang-20150906.1008/ac-clang.elc | Bin 0 -> 51514 bytes .../build/builder_sample.bat | 26 + .../build/builder_sample.sh | 28 + .../clang-server/.nosearch | 0 .../clang-server/CMakeLists.txt | 383 + .../clang-server/ClangServer.cpp | 439 + .../clang-server/ClangServer.hpp | 132 + .../clang-server/ClangSession.cpp | 739 + .../clang-server/ClangSession.hpp | 133 + .../clang-server/CommandLine.hpp | 607 + .../clang-server/Common.cpp | 284 + .../clang-server/Common.hpp | 371 + .../clang-server/changes.org | 32 + .../clang-server/clang-c/BuildSystem.h | 156 + .../clang-c/CXCompilationDatabase.h | 170 + .../clang-server/clang-c/CXErrorCode.h | 64 + .../clang-server/clang-c/CXString.h | 61 + .../clang-server/clang-c/Documentation.h | 554 + .../clang-server/clang-c/Index.h | 5755 +++ .../clang-server/clang-c/Makefile | 38 + .../clang-server/clang-c/Platform.h | 45 + .../clang-server/clang-c/module.modulemap | 4 + .../library/x86_32/debug/.gitkeep | 0 .../library/x86_32/release/.gitkeep | 0 .../library/x86_64/debug/.gitkeep | 0 .../library/x86_64/release/.gitkeep | 0 .../clang-server/main.cpp | 176 + .../clang-server/patch/invalidate-mmap.patch | 22 + .../clang-server/patch/libclang-x86_64.patch | 29 + .../clang-server/readme.ja.md | 381 + .../clang-server/readme.ja.org | 297 + .../clang-server/readme.md | 392 + .../clang-server/readme.org | 314 + .../sample-pic-complete.png | Bin 0 -> 60125 bytes .../ac-math-autoloads.el | 23 + .../ac-math-autoloads.el~ | 11 + .../elpa/ac-math-20141116.1327/ac-math-pkg.el | 1 + .../ac-math-20141116.1327/ac-math-pkg.elc | Bin 0 -> 672 bytes .../elpa/ac-math-20141116.1327/ac-math.el | 173 + .../elpa/ac-math-20141116.1327/ac-math.elc | Bin 0 -> 3764 bytes .../ac-octave-autoloads.el | 15 + .../ac-octave-autoloads.el~ | 11 + .../ac-octave-20150111.1708/ac-octave-pkg.el | 1 + .../elpa/ac-octave-20150111.1708/ac-octave.el | 139 + .emacs.d/elpa/archives/gnu/archive-contents | 863 + .../elpa/archives/gnu/archive-contents.signed | 1 + .emacs.d/elpa/archives/gnu/archive-contents~ | 858 + .emacs.d/elpa/archives/melpa/archive-contents | 2 + .emacs.d/elpa/auctex-11.89.1/.elpaignore | 10 + .emacs.d/elpa/auctex-11.89.1/COPYING | 674 + .emacs.d/elpa/auctex-11.89.1/ChangeLog | 41984 ++++++++++++++++ .../elpa/auctex-11.89.1/ChangeLog-preview | 1881 + .../elpa/auctex-11.89.1/ChangeLog-preview.1 | 3736 ++ .emacs.d/elpa/auctex-11.89.1/ChangeLog.1 | 18320 +++++++ .emacs.d/elpa/auctex-11.89.1/GNUmakefile | 88 + .emacs.d/elpa/auctex-11.89.1/README | 240 + .emacs.d/elpa/auctex-11.89.1/README.GIT | 37 + .emacs.d/elpa/auctex-11.89.1/RELEASE | 167 + .../elpa/auctex-11.89.1/auctex-autoloads.el | 384 + .../elpa/auctex-11.89.1/auctex-autoloads.el~ | 11 + .emacs.d/elpa/auctex-11.89.1/auctex-pkg.el | 2 + .emacs.d/elpa/auctex-11.89.1/auctex-pkg.elc | Bin 0 -> 537 bytes .emacs.d/elpa/auctex-11.89.1/auctex.el | 35 + .emacs.d/elpa/auctex-11.89.1/auctex.elc | Bin 0 -> 552 bytes .emacs.d/elpa/auctex-11.89.1/auctex.info | 8357 +++ .emacs.d/elpa/auctex-11.89.1/bib-cite.el | 2607 + .emacs.d/elpa/auctex-11.89.1/bib-cite.elc | Bin 0 -> 49333 bytes .../build-aux/gitlog-to-changelog | 492 + .emacs.d/elpa/auctex-11.89.1/circ.tex | 479 + .emacs.d/elpa/auctex-11.89.1/context-en.el | 224 + .emacs.d/elpa/auctex-11.89.1/context-en.elc | Bin 0 -> 6836 bytes .emacs.d/elpa/auctex-11.89.1/context-nl.el | 200 + .emacs.d/elpa/auctex-11.89.1/context-nl.elc | Bin 0 -> 6539 bytes .emacs.d/elpa/auctex-11.89.1/context.el | 1812 + .emacs.d/elpa/auctex-11.89.1/context.elc | Bin 0 -> 50872 bytes .emacs.d/elpa/auctex-11.89.1/dir | 25 + .emacs.d/elpa/auctex-11.89.1/doc/auctex.texi | 5362 ++ .emacs.d/elpa/auctex-11.89.1/doc/changes.texi | 1042 + .emacs.d/elpa/auctex-11.89.1/doc/copying.texi | 48 + .emacs.d/elpa/auctex-11.89.1/doc/faq.texi | 153 + .emacs.d/elpa/auctex-11.89.1/doc/fdl.texi | 506 + .emacs.d/elpa/auctex-11.89.1/doc/history.texi | 1918 + .emacs.d/elpa/auctex-11.89.1/doc/install.texi | 595 + .emacs.d/elpa/auctex-11.89.1/doc/intro.texi | 106 + .emacs.d/elpa/auctex-11.89.1/doc/macros.texi | 81 + .../elpa/auctex-11.89.1/doc/preview-dtxdoc.pl | 152 + .../elpa/auctex-11.89.1/doc/preview-faq.texi | 340 + .../auctex-11.89.1/doc/preview-latex.texi | 841 + .../auctex-11.89.1/doc/preview-problems.texi | 144 + .../auctex-11.89.1/doc/preview-readme.texi | 230 + .../elpa/auctex-11.89.1/doc/preview-todo.texi | 118 + .../elpa/auctex-11.89.1/doc/quickstart.texi | 321 + .emacs.d/elpa/auctex-11.89.1/doc/tex-ref.tex | 681 + .emacs.d/elpa/auctex-11.89.1/doc/todo.texi | 304 + .../elpa/auctex-11.89.1/doc/wininstall.texi | 386 + .emacs.d/elpa/auctex-11.89.1/font-latex.el | 2045 + .emacs.d/elpa/auctex-11.89.1/font-latex.elc | Bin 0 -> 59200 bytes .../elpa/auctex-11.89.1/images/amstex.xpm | 207 + .../elpa/auctex-11.89.1/images/bibtex.xpm | 82 + .../elpa/auctex-11.89.1/images/dropdown.xpm | 30 + .../elpa/auctex-11.89.1/images/dvipdf.xpm | 65 + .emacs.d/elpa/auctex-11.89.1/images/dvips.xpm | 89 + .emacs.d/elpa/auctex-11.89.1/images/error.xpm | 35 + .emacs.d/elpa/auctex-11.89.1/images/exec.xpm | 68 + .../elpa/auctex-11.89.1/images/execbibtex.xpm | 127 + .../elpa/auctex-11.89.1/images/execdvips.xpm | 52 + .../elpa/auctex-11.89.1/images/execerror.xpm | 49 + .../elpa/auctex-11.89.1/images/execpdftex.xpm | 205 + .../elpa/auctex-11.89.1/images/exectex.xpm | 203 + .../auctex-11.89.1/images/execviewdvi.xpm | 46 + .../auctex-11.89.1/images/execviewpdf.xpm | 42 + .../elpa/auctex-11.89.1/images/execviewps.xpm | 42 + .emacs.d/elpa/auctex-11.89.1/images/gv.xpm | 158 + .../elpa/auctex-11.89.1/images/jumpdvi.xpm | 74 + .../images/ltx-symb-turn-off.xpm | 47 + .../images/ltx-symb-turn-on.xpm | 46 + .../elpa/auctex-11.89.1/images/pdftex.xpm | 206 + .../elpa/auctex-11.89.1/images/prverr16.xpm | 31 + .../elpa/auctex-11.89.1/images/prverr20.xpm | 35 + .../elpa/auctex-11.89.1/images/prverr24.xbm | 9 + .../elpa/auctex-11.89.1/images/prverr24.xpm | 39 + .../auctex-11.89.1/images/prvtex-cap-up.xpm | 48 + .../elpa/auctex-11.89.1/images/prvtex12.xbm | 6 + .../elpa/auctex-11.89.1/images/prvtex12.xpm | 32 + .../elpa/auctex-11.89.1/images/prvtex16.xbm | 7 + .../elpa/auctex-11.89.1/images/prvtex16.xpm | 36 + .../elpa/auctex-11.89.1/images/prvtex20.xpm | 40 + .../elpa/auctex-11.89.1/images/prvtex24.xbm | 10 + .../elpa/auctex-11.89.1/images/prvtex24.xpm | 37 + .../elpa/auctex-11.89.1/images/prvwrk12.xpm | 32 + .../elpa/auctex-11.89.1/images/prvwrk14.xpm | 34 + .../elpa/auctex-11.89.1/images/prvwrk16.xpm | 36 + .../elpa/auctex-11.89.1/images/prvwrk20.xpm | 40 + .../elpa/auctex-11.89.1/images/prvwrk24.xbm | 12 + .../elpa/auctex-11.89.1/images/prvwrk24.xpm | 44 + .emacs.d/elpa/auctex-11.89.1/images/pspdf.xpm | 83 + .emacs.d/elpa/auctex-11.89.1/images/sep.xpm | 29 + .emacs.d/elpa/auctex-11.89.1/images/spell.xpm | 64 + .emacs.d/elpa/auctex-11.89.1/images/tex.xpm | 260 + .emacs.d/elpa/auctex-11.89.1/images/view.xpm | 31 + .../elpa/auctex-11.89.1/images/viewdvi.xpm | 58 + .../elpa/auctex-11.89.1/images/viewpdf.xpm | 54 + .../elpa/auctex-11.89.1/images/viewps.xpm | 54 + .emacs.d/elpa/auctex-11.89.1/latex.el | 6456 +++ .emacs.d/elpa/auctex-11.89.1/latex.elc | Bin 0 -> 201751 bytes .emacs.d/elpa/auctex-11.89.1/latex/README | 64 + .../elpa/auctex-11.89.1/latex/bootstrap.ins | 4 + .../elpa/auctex-11.89.1/latex/prauctex.cfg | 48 + .../elpa/auctex-11.89.1/latex/prauctex.def | 61 + .../elpa/auctex-11.89.1/latex/prcounters.def | 38 + .../elpa/auctex-11.89.1/latex/preview.dtx | 1872 + .../elpa/auctex-11.89.1/latex/preview.sty | 391 + .../elpa/auctex-11.89.1/latex/prfootnotes.def | 28 + .emacs.d/elpa/auctex-11.89.1/latex/prlyx.def | 32 + .../elpa/auctex-11.89.1/latex/prshowbox.def | 32 + .../auctex-11.89.1/latex/prshowlabels.def | 67 + .../elpa/auctex-11.89.1/latex/prtightpage.def | 146 + .../auctex-11.89.1/latex/prtracingall.def | 30 + .emacs.d/elpa/auctex-11.89.1/multi-prompt.el | 224 + .emacs.d/elpa/auctex-11.89.1/multi-prompt.elc | Bin 0 -> 5216 bytes .emacs.d/elpa/auctex-11.89.1/plain-tex.el | 321 + .emacs.d/elpa/auctex-11.89.1/plain-tex.elc | Bin 0 -> 8926 bytes .../elpa/auctex-11.89.1/preview-latex.info | 2560 + .emacs.d/elpa/auctex-11.89.1/preview.el | 3595 ++ .emacs.d/elpa/auctex-11.89.1/preview.elc | Bin 0 -> 106191 bytes .emacs.d/elpa/auctex-11.89.1/prv-emacs.el | 600 + .emacs.d/elpa/auctex-11.89.1/prv-emacs.elc | Bin 0 -> 19093 bytes .emacs.d/elpa/auctex-11.89.1/prv-xemacs.el | 743 + .emacs.d/elpa/auctex-11.89.1/prv-xemacs.elc | Bin 0 -> 19935 bytes .emacs.d/elpa/auctex-11.89.1/style/.nosearch | 1 + .../elpa/auctex-11.89.1/style/Alegreya.el | 98 + .../elpa/auctex-11.89.1/style/Alegreya.elc | Bin 0 -> 1894 bytes .../elpa/auctex-11.89.1/style/AlegreyaSans.el | 110 + .../auctex-11.89.1/style/AlegreyaSans.elc | Bin 0 -> 2316 bytes .../elpa/auctex-11.89.1/style/AnonymousPro.el | 90 + .../auctex-11.89.1/style/AnonymousPro.elc | Bin 0 -> 1409 bytes .emacs.d/elpa/auctex-11.89.1/style/CJK.el | 94 + .emacs.d/elpa/auctex-11.89.1/style/CJK.elc | Bin 0 -> 2030 bytes .emacs.d/elpa/auctex-11.89.1/style/CJKutf8.el | 39 + .../elpa/auctex-11.89.1/style/CJKutf8.elc | Bin 0 -> 503 bytes .../elpa/auctex-11.89.1/style/MinionPro.el | 69 + .../elpa/auctex-11.89.1/style/MinionPro.elc | Bin 0 -> 1277 bytes .../elpa/auctex-11.89.1/style/MyriadPro.el | 94 + .../elpa/auctex-11.89.1/style/MyriadPro.elc | Bin 0 -> 1615 bytes .../elpa/auctex-11.89.1/style/XCharter.el | 76 + .../elpa/auctex-11.89.1/style/XCharter.elc | Bin 0 -> 1179 bytes .emacs.d/elpa/auctex-11.89.1/style/acro.el | 294 + .emacs.d/elpa/auctex-11.89.1/style/acro.elc | Bin 0 -> 10287 bytes .emacs.d/elpa/auctex-11.89.1/style/acronym.el | 179 + .../elpa/auctex-11.89.1/style/acronym.elc | Bin 0 -> 6561 bytes .../elpa/auctex-11.89.1/style/afterpage.el | 43 + .../elpa/auctex-11.89.1/style/afterpage.elc | Bin 0 -> 604 bytes .emacs.d/elpa/auctex-11.89.1/style/alltt.el | 54 + .emacs.d/elpa/auctex-11.89.1/style/alltt.elc | Bin 0 -> 948 bytes .../elpa/auctex-11.89.1/style/alphanum.el | 100 + .../elpa/auctex-11.89.1/style/alphanum.elc | Bin 0 -> 1551 bytes .emacs.d/elpa/auctex-11.89.1/style/amsart.el | 12 + .emacs.d/elpa/auctex-11.89.1/style/amsart.elc | Bin 0 -> 567 bytes .emacs.d/elpa/auctex-11.89.1/style/amsbook.el | 12 + .../elpa/auctex-11.89.1/style/amsbook.elc | Bin 0 -> 568 bytes .emacs.d/elpa/auctex-11.89.1/style/amsbsy.el | 19 + .emacs.d/elpa/auctex-11.89.1/style/amsbsy.elc | Bin 0 -> 637 bytes .emacs.d/elpa/auctex-11.89.1/style/amsmath.el | 226 + .../elpa/auctex-11.89.1/style/amsmath.elc | Bin 0 -> 6859 bytes .emacs.d/elpa/auctex-11.89.1/style/amsopn.el | 53 + .emacs.d/elpa/auctex-11.89.1/style/amsopn.elc | Bin 0 -> 1011 bytes .emacs.d/elpa/auctex-11.89.1/style/amssymb.el | 249 + .../elpa/auctex-11.89.1/style/amssymb.elc | Bin 0 -> 4446 bytes .emacs.d/elpa/auctex-11.89.1/style/amstex.el | 61 + .emacs.d/elpa/auctex-11.89.1/style/amstex.elc | Bin 0 -> 864 bytes .emacs.d/elpa/auctex-11.89.1/style/amstext.el | 17 + .../elpa/auctex-11.89.1/style/amstext.elc | Bin 0 -> 605 bytes .emacs.d/elpa/auctex-11.89.1/style/amsthm.el | 200 + .emacs.d/elpa/auctex-11.89.1/style/amsthm.elc | Bin 0 -> 8367 bytes .emacs.d/elpa/auctex-11.89.1/style/array.el | 105 + .emacs.d/elpa/auctex-11.89.1/style/array.elc | Bin 0 -> 3940 bytes .emacs.d/elpa/auctex-11.89.1/style/article.el | 21 + .../elpa/auctex-11.89.1/style/article.elc | Bin 0 -> 1077 bytes .../elpa/auctex-11.89.1/style/attachfile.el | 119 + .../elpa/auctex-11.89.1/style/attachfile.elc | Bin 0 -> 2144 bytes .../elpa/auctex-11.89.1/style/austrian.el | 40 + .../elpa/auctex-11.89.1/style/austrian.elc | Bin 0 -> 507 bytes .emacs.d/elpa/auctex-11.89.1/style/babel.el | 196 + .emacs.d/elpa/auctex-11.89.1/style/babel.elc | Bin 0 -> 4417 bytes .../elpa/auctex-11.89.1/style/baskervaldx.el | 84 + .../elpa/auctex-11.89.1/style/baskervaldx.elc | Bin 0 -> 1383 bytes .emacs.d/elpa/auctex-11.89.1/style/beamer.el | 368 + .emacs.d/elpa/auctex-11.89.1/style/beamer.elc | Bin 0 -> 11347 bytes .../elpa/auctex-11.89.1/style/biblatex.el | 530 + .../elpa/auctex-11.89.1/style/biblatex.elc | Bin 0 -> 18386 bytes .../elpa/auctex-11.89.1/style/bidibeamer.el | 40 + .../elpa/auctex-11.89.1/style/bidibeamer.elc | Bin 0 -> 509 bytes .../elpa/auctex-11.89.1/style/bigdelim.el | 53 + .../elpa/auctex-11.89.1/style/bigdelim.elc | Bin 0 -> 1109 bytes .../elpa/auctex-11.89.1/style/bigstrut.el | 51 + .../elpa/auctex-11.89.1/style/bigstrut.elc | Bin 0 -> 964 bytes .emacs.d/elpa/auctex-11.89.1/style/bm.el | 55 + .emacs.d/elpa/auctex-11.89.1/style/bm.elc | Bin 0 -> 1072 bytes .emacs.d/elpa/auctex-11.89.1/style/book.el | 21 + .emacs.d/elpa/auctex-11.89.1/style/book.elc | Bin 0 -> 1058 bytes .../elpa/auctex-11.89.1/style/booktabs.el | 79 + .../elpa/auctex-11.89.1/style/booktabs.elc | Bin 0 -> 1607 bytes .../elpa/auctex-11.89.1/style/bulgarian.el | 55 + .../elpa/auctex-11.89.1/style/bulgarian.elc | Bin 0 -> 1091 bytes .../elpa/auctex-11.89.1/style/captcont.el | 47 + .../elpa/auctex-11.89.1/style/captcont.elc | Bin 0 -> 832 bytes .emacs.d/elpa/auctex-11.89.1/style/caption.el | 378 + .../elpa/auctex-11.89.1/style/caption.elc | Bin 0 -> 11936 bytes .../elpa/auctex-11.89.1/style/cleveref.el | 108 + .../elpa/auctex-11.89.1/style/cleveref.elc | Bin 0 -> 3127 bytes .emacs.d/elpa/auctex-11.89.1/style/color.el | 309 + .emacs.d/elpa/auctex-11.89.1/style/color.elc | Bin 0 -> 9434 bytes .../elpa/auctex-11.89.1/style/colortbl.el | 74 + .../elpa/auctex-11.89.1/style/colortbl.elc | Bin 0 -> 1327 bytes .emacs.d/elpa/auctex-11.89.1/style/comment.el | 70 + .../elpa/auctex-11.89.1/style/comment.elc | Bin 0 -> 1348 bytes .../elpa/auctex-11.89.1/style/csquotes.el | 246 + .../elpa/auctex-11.89.1/style/csquotes.elc | Bin 0 -> 7637 bytes .../elpa/auctex-11.89.1/style/currvita.el | 94 + .../elpa/auctex-11.89.1/style/currvita.elc | Bin 0 -> 1791 bytes .emacs.d/elpa/auctex-11.89.1/style/czech.el | 9 + .emacs.d/elpa/auctex-11.89.1/style/czech.elc | Bin 0 -> 604 bytes .emacs.d/elpa/auctex-11.89.1/style/danish.el | 18 + .emacs.d/elpa/auctex-11.89.1/style/danish.elc | Bin 0 -> 745 bytes .../elpa/auctex-11.89.1/style/dinbrief.el | 277 + .../elpa/auctex-11.89.1/style/dinbrief.elc | Bin 0 -> 6447 bytes .emacs.d/elpa/auctex-11.89.1/style/dk-bib.el | 62 + .emacs.d/elpa/auctex-11.89.1/style/dk-bib.elc | Bin 0 -> 1158 bytes .emacs.d/elpa/auctex-11.89.1/style/dk.el | 10 + .emacs.d/elpa/auctex-11.89.1/style/dk.elc | Bin 0 -> 503 bytes .emacs.d/elpa/auctex-11.89.1/style/doc.el | 159 + .emacs.d/elpa/auctex-11.89.1/style/doc.elc | Bin 0 -> 3317 bytes .emacs.d/elpa/auctex-11.89.1/style/dutch.el | 10 + .emacs.d/elpa/auctex-11.89.1/style/dutch.elc | Bin 0 -> 506 bytes .emacs.d/elpa/auctex-11.89.1/style/emp.el | 85 + .emacs.d/elpa/auctex-11.89.1/style/emp.elc | Bin 0 -> 1884 bytes .emacs.d/elpa/auctex-11.89.1/style/english.el | 11 + .../elpa/auctex-11.89.1/style/english.elc | Bin 0 -> 508 bytes .../elpa/auctex-11.89.1/style/enumitem.el | 429 + .../elpa/auctex-11.89.1/style/enumitem.elc | Bin 0 -> 14543 bytes .emacs.d/elpa/auctex-11.89.1/style/environ.el | 127 + .../elpa/auctex-11.89.1/style/environ.elc | Bin 0 -> 2621 bytes .../elpa/auctex-11.89.1/style/epigraph.el | 74 + .../elpa/auctex-11.89.1/style/epigraph.elc | Bin 0 -> 1480 bytes .emacs.d/elpa/auctex-11.89.1/style/epsf.el | 38 + .emacs.d/elpa/auctex-11.89.1/style/epsf.elc | Bin 0 -> 1314 bytes .emacs.d/elpa/auctex-11.89.1/style/erewhon.el | 91 + .../elpa/auctex-11.89.1/style/erewhon.elc | Bin 0 -> 1517 bytes .emacs.d/elpa/auctex-11.89.1/style/eso-pic.el | 90 + .../elpa/auctex-11.89.1/style/eso-pic.elc | Bin 0 -> 1669 bytes .../elpa/auctex-11.89.1/style/everysel.el | 45 + .../elpa/auctex-11.89.1/style/everysel.elc | Bin 0 -> 647 bytes .../elpa/auctex-11.89.1/style/exercise.el | 63 + .../elpa/auctex-11.89.1/style/exercise.elc | Bin 0 -> 1131 bytes .emacs.d/elpa/auctex-11.89.1/style/expl3.el | 51 + .emacs.d/elpa/auctex-11.89.1/style/expl3.elc | Bin 0 -> 861 bytes .../elpa/auctex-11.89.1/style/fancyhdr.el | 114 + .../elpa/auctex-11.89.1/style/fancyhdr.elc | Bin 0 -> 2625 bytes .../elpa/auctex-11.89.1/style/fancynum.el | 47 + .../elpa/auctex-11.89.1/style/fancynum.elc | Bin 0 -> 726 bytes .../elpa/auctex-11.89.1/style/fancyref.el | 128 + .../elpa/auctex-11.89.1/style/fancyref.elc | Bin 0 -> 2911 bytes .../elpa/auctex-11.89.1/style/fancyvrb.el | 202 + .../elpa/auctex-11.89.1/style/fancyvrb.elc | Bin 0 -> 5627 bytes .emacs.d/elpa/auctex-11.89.1/style/fbb.el | 81 + .emacs.d/elpa/auctex-11.89.1/style/fbb.elc | Bin 0 -> 1281 bytes .../elpa/auctex-11.89.1/style/filecontents.el | 61 + .../auctex-11.89.1/style/filecontents.elc | Bin 0 -> 1137 bytes .../elpa/auctex-11.89.1/style/flashcards.el | 61 + .../elpa/auctex-11.89.1/style/flashcards.elc | Bin 0 -> 1151 bytes .emacs.d/elpa/auctex-11.89.1/style/foils.el | 66 + .emacs.d/elpa/auctex-11.89.1/style/foils.elc | Bin 0 -> 1594 bytes .../elpa/auctex-11.89.1/style/fontaxes.el | 114 + .../elpa/auctex-11.89.1/style/fontaxes.elc | Bin 0 -> 2144 bytes .emacs.d/elpa/auctex-11.89.1/style/fontenc.el | 52 + .../elpa/auctex-11.89.1/style/fontenc.elc | Bin 0 -> 857 bytes .../elpa/auctex-11.89.1/style/fontspec.el | 236 + .../elpa/auctex-11.89.1/style/fontspec.elc | Bin 0 -> 5404 bytes .../elpa/auctex-11.89.1/style/footmisc.el | 73 + .../elpa/auctex-11.89.1/style/footmisc.elc | Bin 0 -> 1530 bytes .../elpa/auctex-11.89.1/style/francais.el | 42 + .../elpa/auctex-11.89.1/style/francais.elc | Bin 0 -> 508 bytes .emacs.d/elpa/auctex-11.89.1/style/french.el | 49 + .emacs.d/elpa/auctex-11.89.1/style/french.elc | Bin 0 -> 624 bytes .emacs.d/elpa/auctex-11.89.1/style/frenchb.el | 79 + .../elpa/auctex-11.89.1/style/frenchb.elc | Bin 0 -> 1054 bytes .../elpa/auctex-11.89.1/style/geometry.el | 151 + .../elpa/auctex-11.89.1/style/geometry.elc | Bin 0 -> 6523 bytes .emacs.d/elpa/auctex-11.89.1/style/german.el | 50 + .emacs.d/elpa/auctex-11.89.1/style/german.elc | Bin 0 -> 1400 bytes .../auctex-11.89.1/style/gloss-italian.el | 68 + .../auctex-11.89.1/style/gloss-italian.elc | Bin 0 -> 1421 bytes .../elpa/auctex-11.89.1/style/graphics.el | 11 + .../elpa/auctex-11.89.1/style/graphics.elc | Bin 0 -> 509 bytes .../elpa/auctex-11.89.1/style/graphicx.el | 303 + .../elpa/auctex-11.89.1/style/graphicx.elc | Bin 0 -> 5994 bytes .emacs.d/elpa/auctex-11.89.1/style/harvard.el | 129 + .../elpa/auctex-11.89.1/style/harvard.elc | Bin 0 -> 3642 bytes .emacs.d/elpa/auctex-11.89.1/style/hologo.el | 233 + .emacs.d/elpa/auctex-11.89.1/style/hologo.elc | Bin 0 -> 4382 bytes .../elpa/auctex-11.89.1/style/hyperref.el | 317 + .../elpa/auctex-11.89.1/style/hyperref.elc | Bin 0 -> 7825 bytes .../elpa/auctex-11.89.1/style/icelandic.el | 54 + .../elpa/auctex-11.89.1/style/icelandic.elc | Bin 0 -> 1074 bytes .../elpa/auctex-11.89.1/style/ifluatex.el | 61 + .../elpa/auctex-11.89.1/style/ifluatex.elc | Bin 0 -> 1181 bytes .../elpa/auctex-11.89.1/style/imakeidx.el | 100 + .../elpa/auctex-11.89.1/style/imakeidx.elc | Bin 0 -> 2149 bytes .emacs.d/elpa/auctex-11.89.1/style/index.el | 84 + .emacs.d/elpa/auctex-11.89.1/style/index.elc | Bin 0 -> 1529 bytes .../elpa/auctex-11.89.1/style/inputenc.el | 87 + .../elpa/auctex-11.89.1/style/inputenc.elc | Bin 0 -> 1511 bytes .emacs.d/elpa/auctex-11.89.1/style/italian.el | 60 + .../elpa/auctex-11.89.1/style/italian.elc | Bin 0 -> 913 bytes .../elpa/auctex-11.89.1/style/j-article.el | 11 + .../elpa/auctex-11.89.1/style/j-article.elc | Bin 0 -> 513 bytes .emacs.d/elpa/auctex-11.89.1/style/j-book.el | 11 + .emacs.d/elpa/auctex-11.89.1/style/j-book.elc | Bin 0 -> 510 bytes .../elpa/auctex-11.89.1/style/j-report.el | 11 + .../elpa/auctex-11.89.1/style/j-report.elc | Bin 0 -> 512 bytes .../elpa/auctex-11.89.1/style/jarticle.el | 11 + .../elpa/auctex-11.89.1/style/jarticle.elc | Bin 0 -> 512 bytes .emacs.d/elpa/auctex-11.89.1/style/jbook.el | 11 + .emacs.d/elpa/auctex-11.89.1/style/jbook.elc | Bin 0 -> 509 bytes .emacs.d/elpa/auctex-11.89.1/style/jreport.el | 12 + .../elpa/auctex-11.89.1/style/jreport.elc | Bin 0 -> 511 bytes .../elpa/auctex-11.89.1/style/jsarticle.el | 11 + .../elpa/auctex-11.89.1/style/jsarticle.elc | Bin 0 -> 513 bytes .emacs.d/elpa/auctex-11.89.1/style/jsbook.el | 11 + .emacs.d/elpa/auctex-11.89.1/style/jsbook.elc | Bin 0 -> 510 bytes .emacs.d/elpa/auctex-11.89.1/style/jura.el | 40 + .emacs.d/elpa/auctex-11.89.1/style/jura.elc | Bin 0 -> 505 bytes .emacs.d/elpa/auctex-11.89.1/style/jurabib.el | 635 + .../elpa/auctex-11.89.1/style/jurabib.elc | Bin 0 -> 14073 bytes .../elpa/auctex-11.89.1/style/kantlipsum.el | 46 + .../elpa/auctex-11.89.1/style/kantlipsum.elc | Bin 0 -> 823 bytes .emacs.d/elpa/auctex-11.89.1/style/kpfonts.el | 599 + .../elpa/auctex-11.89.1/style/kpfonts.elc | Bin 0 -> 20771 bytes .../elpa/auctex-11.89.1/style/latexinfo.el | 181 + .../elpa/auctex-11.89.1/style/latexinfo.elc | Bin 0 -> 4234 bytes .emacs.d/elpa/auctex-11.89.1/style/letter.el | 185 + .emacs.d/elpa/auctex-11.89.1/style/letter.elc | Bin 0 -> 3692 bytes .../elpa/auctex-11.89.1/style/lettrine.el | 75 + .../elpa/auctex-11.89.1/style/lettrine.elc | Bin 0 -> 1328 bytes .emacs.d/elpa/auctex-11.89.1/style/lipsum.el | 46 + .emacs.d/elpa/auctex-11.89.1/style/lipsum.elc | Bin 0 -> 786 bytes .../elpa/auctex-11.89.1/style/listings.el | 379 + .../elpa/auctex-11.89.1/style/listings.elc | Bin 0 -> 9964 bytes .../elpa/auctex-11.89.1/style/longtable.el | 94 + .../elpa/auctex-11.89.1/style/longtable.elc | Bin 0 -> 1725 bytes .emacs.d/elpa/auctex-11.89.1/style/lscape.el | 45 + .emacs.d/elpa/auctex-11.89.1/style/lscape.elc | Bin 0 -> 662 bytes .emacs.d/elpa/auctex-11.89.1/style/ltablex.el | 49 + .../elpa/auctex-11.89.1/style/ltablex.elc | Bin 0 -> 701 bytes .../elpa/auctex-11.89.1/style/ltx-base.el | 87 + .../elpa/auctex-11.89.1/style/ltx-base.elc | Bin 0 -> 2046 bytes .emacs.d/elpa/auctex-11.89.1/style/ltxdoc.el | 41 + .emacs.d/elpa/auctex-11.89.1/style/ltxdoc.elc | Bin 0 -> 526 bytes .../elpa/auctex-11.89.1/style/ltxtable.el | 51 + .../elpa/auctex-11.89.1/style/ltxtable.elc | Bin 0 -> 847 bytes .emacs.d/elpa/auctex-11.89.1/style/luacode.el | 63 + .../elpa/auctex-11.89.1/style/luacode.elc | Bin 0 -> 1076 bytes .../elpa/auctex-11.89.1/style/luatextra.el | 44 + .../elpa/auctex-11.89.1/style/luatextra.elc | Bin 0 -> 658 bytes .emacs.d/elpa/auctex-11.89.1/style/makeidx.el | 49 + .../elpa/auctex-11.89.1/style/makeidx.elc | Bin 0 -> 784 bytes .../elpa/auctex-11.89.1/style/mathtools.el | 199 + .../elpa/auctex-11.89.1/style/mathtools.elc | Bin 0 -> 5345 bytes .../elpa/auctex-11.89.1/style/mdsymbol.el | 99 + .../elpa/auctex-11.89.1/style/mdsymbol.elc | Bin 0 -> 1741 bytes .emacs.d/elpa/auctex-11.89.1/style/mdwlist.el | 64 + .../elpa/auctex-11.89.1/style/mdwlist.elc | Bin 0 -> 1328 bytes .emacs.d/elpa/auctex-11.89.1/style/memoir.el | 85 + .emacs.d/elpa/auctex-11.89.1/style/memoir.elc | Bin 0 -> 1947 bytes .../elpa/auctex-11.89.1/style/metalogo.el | 85 + .../elpa/auctex-11.89.1/style/metalogo.elc | Bin 0 -> 1513 bytes .emacs.d/elpa/auctex-11.89.1/style/mflogo.el | 49 + .emacs.d/elpa/auctex-11.89.1/style/mflogo.elc | Bin 0 -> 803 bytes .emacs.d/elpa/auctex-11.89.1/style/minted.el | 242 + .emacs.d/elpa/auctex-11.89.1/style/minted.elc | Bin 0 -> 6671 bytes .emacs.d/elpa/auctex-11.89.1/style/mn2e.el | 175 + .emacs.d/elpa/auctex-11.89.1/style/mn2e.elc | Bin 0 -> 2916 bytes .emacs.d/elpa/auctex-11.89.1/style/mnras.el | 176 + .emacs.d/elpa/auctex-11.89.1/style/mnras.elc | Bin 0 -> 2660 bytes .../elpa/auctex-11.89.1/style/multicol.el | 63 + .../elpa/auctex-11.89.1/style/multicol.elc | Bin 0 -> 1246 bytes .emacs.d/elpa/auctex-11.89.1/style/multido.el | 53 + .../elpa/auctex-11.89.1/style/multido.elc | Bin 0 -> 862 bytes .emacs.d/elpa/auctex-11.89.1/style/multind.el | 62 + .../elpa/auctex-11.89.1/style/multind.elc | Bin 0 -> 1128 bytes .../elpa/auctex-11.89.1/style/multirow.el | 52 + .../elpa/auctex-11.89.1/style/multirow.elc | Bin 0 -> 921 bytes .emacs.d/elpa/auctex-11.89.1/style/nameref.el | 57 + .../elpa/auctex-11.89.1/style/nameref.elc | Bin 0 -> 987 bytes .emacs.d/elpa/auctex-11.89.1/style/natbib.el | 132 + .emacs.d/elpa/auctex-11.89.1/style/natbib.elc | Bin 0 -> 2726 bytes .../elpa/auctex-11.89.1/style/naustrian.el | 40 + .../elpa/auctex-11.89.1/style/naustrian.elc | Bin 0 -> 509 bytes .../elpa/auctex-11.89.1/style/newfloat.el | 216 + .../elpa/auctex-11.89.1/style/newfloat.elc | Bin 0 -> 7136 bytes .../elpa/auctex-11.89.1/style/newpxmath.el | 74 + .../elpa/auctex-11.89.1/style/newpxmath.elc | Bin 0 -> 1100 bytes .../elpa/auctex-11.89.1/style/newpxtext.el | 81 + .../elpa/auctex-11.89.1/style/newpxtext.elc | Bin 0 -> 1410 bytes .../elpa/auctex-11.89.1/style/newtxmath.el | 84 + .../elpa/auctex-11.89.1/style/newtxmath.elc | Bin 0 -> 1214 bytes .emacs.d/elpa/auctex-11.89.1/style/newtxsf.el | 57 + .../elpa/auctex-11.89.1/style/newtxsf.elc | Bin 0 -> 776 bytes .../elpa/auctex-11.89.1/style/newtxtext.el | 80 + .../elpa/auctex-11.89.1/style/newtxtext.elc | Bin 0 -> 1372 bytes .../elpa/auctex-11.89.1/style/newtxttt.el | 62 + .../elpa/auctex-11.89.1/style/newtxttt.elc | Bin 0 -> 988 bytes .emacs.d/elpa/auctex-11.89.1/style/ngerman.el | 50 + .../elpa/auctex-11.89.1/style/ngerman.elc | Bin 0 -> 1402 bytes .../elpa/auctex-11.89.1/style/nicefrac.el | 46 + .../elpa/auctex-11.89.1/style/nicefrac.elc | Bin 0 -> 832 bytes .emacs.d/elpa/auctex-11.89.1/style/nomencl.el | 71 + .../elpa/auctex-11.89.1/style/nomencl.elc | Bin 0 -> 1458 bytes .../elpa/auctex-11.89.1/style/ntheorem.el | 426 + .../elpa/auctex-11.89.1/style/ntheorem.elc | Bin 0 -> 15626 bytes .../elpa/auctex-11.89.1/style/paralist.el | 107 + .../elpa/auctex-11.89.1/style/paralist.elc | Bin 0 -> 2587 bytes .../elpa/auctex-11.89.1/style/pdfpages.el | 135 + .../elpa/auctex-11.89.1/style/pdfpages.elc | Bin 0 -> 2657 bytes .emacs.d/elpa/auctex-11.89.1/style/pdfsync.el | 90 + .../elpa/auctex-11.89.1/style/pdfsync.elc | Bin 0 -> 1925 bytes .../elpa/auctex-11.89.1/style/placeins.el | 43 + .../elpa/auctex-11.89.1/style/placeins.elc | Bin 0 -> 639 bytes .emacs.d/elpa/auctex-11.89.1/style/plext.el | 78 + .emacs.d/elpa/auctex-11.89.1/style/plext.elc | Bin 0 -> 1436 bytes .emacs.d/elpa/auctex-11.89.1/style/plfonts.el | 30 + .../elpa/auctex-11.89.1/style/plfonts.elc | Bin 0 -> 1028 bytes .emacs.d/elpa/auctex-11.89.1/style/plhb.el | 30 + .emacs.d/elpa/auctex-11.89.1/style/plhb.elc | Bin 0 -> 1013 bytes .emacs.d/elpa/auctex-11.89.1/style/polish.el | 53 + .emacs.d/elpa/auctex-11.89.1/style/polish.elc | Bin 0 -> 1011 bytes .emacs.d/elpa/auctex-11.89.1/style/polski.el | 56 + .emacs.d/elpa/auctex-11.89.1/style/polski.elc | Bin 0 -> 910 bytes .../elpa/auctex-11.89.1/style/polyglossia.el | 355 + .../elpa/auctex-11.89.1/style/polyglossia.elc | Bin 0 -> 11817 bytes .emacs.d/elpa/auctex-11.89.1/style/prosper.el | 192 + .../elpa/auctex-11.89.1/style/prosper.elc | Bin 0 -> 3892 bytes .emacs.d/elpa/auctex-11.89.1/style/psfig.el | 82 + .emacs.d/elpa/auctex-11.89.1/style/psfig.elc | Bin 0 -> 2112 bytes .../elpa/auctex-11.89.1/style/pst-grad.el | 66 + .../elpa/auctex-11.89.1/style/pst-grad.elc | Bin 0 -> 1174 bytes .../elpa/auctex-11.89.1/style/pst-node.el | 193 + .../elpa/auctex-11.89.1/style/pst-node.elc | Bin 0 -> 7335 bytes .../elpa/auctex-11.89.1/style/pst-plot.el | 139 + .../elpa/auctex-11.89.1/style/pst-plot.elc | Bin 0 -> 3712 bytes .../elpa/auctex-11.89.1/style/pst-slpe.el | 68 + .../elpa/auctex-11.89.1/style/pst-slpe.elc | Bin 0 -> 1195 bytes .../elpa/auctex-11.89.1/style/pstricks.el | 871 + .../elpa/auctex-11.89.1/style/pstricks.elc | Bin 0 -> 26031 bytes .../elpa/auctex-11.89.1/style/ragged2e.el | 65 + .../elpa/auctex-11.89.1/style/ragged2e.elc | Bin 0 -> 1323 bytes .emacs.d/elpa/auctex-11.89.1/style/relsize.el | 69 + .../elpa/auctex-11.89.1/style/relsize.elc | Bin 0 -> 1181 bytes .emacs.d/elpa/auctex-11.89.1/style/report.el | 22 + .emacs.d/elpa/auctex-11.89.1/style/report.elc | Bin 0 -> 1111 bytes .emacs.d/elpa/auctex-11.89.1/style/ruby.el | 50 + .emacs.d/elpa/auctex-11.89.1/style/ruby.elc | Bin 0 -> 757 bytes .../elpa/auctex-11.89.1/style/scrartcl.el | 27 + .../elpa/auctex-11.89.1/style/scrartcl.elc | Bin 0 -> 602 bytes .emacs.d/elpa/auctex-11.89.1/style/scrbase.el | 225 + .../elpa/auctex-11.89.1/style/scrbase.elc | Bin 0 -> 6038 bytes .emacs.d/elpa/auctex-11.89.1/style/scrbook.el | 63 + .../elpa/auctex-11.89.1/style/scrbook.elc | Bin 0 -> 1239 bytes .../elpa/auctex-11.89.1/style/scrlttr2.el | 240 + .../elpa/auctex-11.89.1/style/scrlttr2.elc | Bin 0 -> 6022 bytes .../elpa/auctex-11.89.1/style/scrpage2.el | 130 + .../elpa/auctex-11.89.1/style/scrpage2.elc | Bin 0 -> 3736 bytes .../elpa/auctex-11.89.1/style/scrreprt.el | 65 + .../elpa/auctex-11.89.1/style/scrreprt.elc | Bin 0 -> 1287 bytes .../elpa/auctex-11.89.1/style/setspace.el | 62 + .../elpa/auctex-11.89.1/style/setspace.elc | Bin 0 -> 1183 bytes .../elpa/auctex-11.89.1/style/shortvrb.el | 83 + .../elpa/auctex-11.89.1/style/shortvrb.elc | Bin 0 -> 1613 bytes .emacs.d/elpa/auctex-11.89.1/style/siunitx.el | 625 + .../elpa/auctex-11.89.1/style/siunitx.elc | Bin 0 -> 15727 bytes .emacs.d/elpa/auctex-11.89.1/style/slides.el | 51 + .emacs.d/elpa/auctex-11.89.1/style/slides.elc | Bin 0 -> 964 bytes .emacs.d/elpa/auctex-11.89.1/style/slovak.el | 12 + .emacs.d/elpa/auctex-11.89.1/style/slovak.elc | Bin 0 -> 712 bytes .../elpa/auctex-11.89.1/style/subcaption.el | 158 + .../elpa/auctex-11.89.1/style/subcaption.elc | Bin 0 -> 4113 bytes .../elpa/auctex-11.89.1/style/subfigure.el | 79 + .../elpa/auctex-11.89.1/style/subfigure.elc | Bin 0 -> 1672 bytes .emacs.d/elpa/auctex-11.89.1/style/swedish.el | 15 + .../elpa/auctex-11.89.1/style/swedish.elc | Bin 0 -> 648 bytes .../elpa/auctex-11.89.1/style/tabularx.el | 65 + .../elpa/auctex-11.89.1/style/tabularx.elc | Bin 0 -> 995 bytes .../elpa/auctex-11.89.1/style/tabulary.el | 62 + .../elpa/auctex-11.89.1/style/tabulary.elc | Bin 0 -> 1003 bytes .../elpa/auctex-11.89.1/style/tcolorbox.el | 82 + .../elpa/auctex-11.89.1/style/tcolorbox.elc | Bin 0 -> 1352 bytes .../elpa/auctex-11.89.1/style/textcomp.el | 178 + .../elpa/auctex-11.89.1/style/textcomp.elc | Bin 0 -> 4043 bytes .emacs.d/elpa/auctex-11.89.1/style/textpos.el | 111 + .../elpa/auctex-11.89.1/style/textpos.elc | Bin 0 -> 2528 bytes .emacs.d/elpa/auctex-11.89.1/style/theorem.el | 174 + .../elpa/auctex-11.89.1/style/theorem.elc | Bin 0 -> 5817 bytes .../elpa/auctex-11.89.1/style/transparent.el | 53 + .../elpa/auctex-11.89.1/style/transparent.elc | Bin 0 -> 944 bytes .emacs.d/elpa/auctex-11.89.1/style/ulem.el | 107 + .emacs.d/elpa/auctex-11.89.1/style/ulem.elc | Bin 0 -> 2475 bytes .../elpa/auctex-11.89.1/style/unicode-math.el | 74 + .../auctex-11.89.1/style/unicode-math.elc | Bin 0 -> 1944 bytes .emacs.d/elpa/auctex-11.89.1/style/units.el | 50 + .emacs.d/elpa/auctex-11.89.1/style/units.elc | Bin 0 -> 914 bytes .emacs.d/elpa/auctex-11.89.1/style/url.el | 96 + .emacs.d/elpa/auctex-11.89.1/style/url.elc | Bin 0 -> 1879 bytes .../elpa/auctex-11.89.1/style/varioref.el | 84 + .../elpa/auctex-11.89.1/style/varioref.elc | Bin 0 -> 2318 bytes .../elpa/auctex-11.89.1/style/verbatim.el | 44 + .../elpa/auctex-11.89.1/style/verbatim.elc | Bin 0 -> 674 bytes .emacs.d/elpa/auctex-11.89.1/style/virtex.el | 83 + .emacs.d/elpa/auctex-11.89.1/style/virtex.elc | Bin 0 -> 5464 bytes .emacs.d/elpa/auctex-11.89.1/style/vwcol.el | 71 + .emacs.d/elpa/auctex-11.89.1/style/vwcol.elc | Bin 0 -> 1347 bytes .emacs.d/elpa/auctex-11.89.1/style/wrapfig.el | 118 + .../elpa/auctex-11.89.1/style/wrapfig.elc | Bin 0 -> 2398 bytes .emacs.d/elpa/auctex-11.89.1/style/xparse.el | 114 + .emacs.d/elpa/auctex-11.89.1/style/xparse.elc | Bin 0 -> 3106 bytes .emacs.d/elpa/auctex-11.89.1/style/xspace.el | 53 + .emacs.d/elpa/auctex-11.89.1/style/xspace.elc | Bin 0 -> 867 bytes .emacs.d/elpa/auctex-11.89.1/style/zlmtt.el | 58 + .emacs.d/elpa/auctex-11.89.1/style/zlmtt.elc | Bin 0 -> 890 bytes .emacs.d/elpa/auctex-11.89.1/tests/Makefile | 89 + .../tests/latex/latex-filling-in.tex | 1 + .../tests/latex/latex-filling-out.tex | 5 + .../auctex-11.89.1/tests/latex/latex-test.el | 109 + .../auctex-11.89.1/tests/latex/latex-test.elc | Bin 0 -> 6341 bytes .../tests/latex/math-indent-in.tex | 17 + .../tests/latex/math-indent-out.tex | 17 + .../auctex-11.89.1/tests/latex/tabular-in.tex | 41 + .../tests/latex/tabular-out.tex | 41 + .../tests/tex/command-expansion.el | 36 + .../tests/tex/command-expansion.elc | Bin 0 -> 1498 bytes .emacs.d/elpa/auctex-11.89.1/tex-bar.el | 527 + .emacs.d/elpa/auctex-11.89.1/tex-bar.elc | Bin 0 -> 13825 bytes .emacs.d/elpa/auctex-11.89.1/tex-buf.el | 3437 ++ .emacs.d/elpa/auctex-11.89.1/tex-buf.elc | Bin 0 -> 107562 bytes .emacs.d/elpa/auctex-11.89.1/tex-fold.el | 986 + .emacs.d/elpa/auctex-11.89.1/tex-fold.elc | Bin 0 -> 29439 bytes .emacs.d/elpa/auctex-11.89.1/tex-font.el | 173 + .emacs.d/elpa/auctex-11.89.1/tex-font.elc | Bin 0 -> 3293 bytes .emacs.d/elpa/auctex-11.89.1/tex-info.el | 846 + .emacs.d/elpa/auctex-11.89.1/tex-info.elc | Bin 0 -> 25429 bytes .emacs.d/elpa/auctex-11.89.1/tex-jp.el | 847 + .emacs.d/elpa/auctex-11.89.1/tex-jp.elc | Bin 0 -> 34368 bytes .emacs.d/elpa/auctex-11.89.1/tex-mik.el | 71 + .emacs.d/elpa/auctex-11.89.1/tex-mik.elc | Bin 0 -> 1075 bytes .emacs.d/elpa/auctex-11.89.1/tex-site.el | 172 + .emacs.d/elpa/auctex-11.89.1/tex-site.elc | Bin 0 -> 4059 bytes .emacs.d/elpa/auctex-11.89.1/tex-style.el | 403 + .emacs.d/elpa/auctex-11.89.1/tex-style.elc | Bin 0 -> 10255 bytes .emacs.d/elpa/auctex-11.89.1/tex-wizard.el | 111 + .emacs.d/elpa/auctex-11.89.1/tex-wizard.elc | Bin 0 -> 3183 bytes .emacs.d/elpa/auctex-11.89.1/tex.el | 6340 +++ .emacs.d/elpa/auctex-11.89.1/tex.elc | Bin 0 -> 197067 bytes .emacs.d/elpa/auctex-11.89.1/texmathp.el | 415 + .emacs.d/elpa/auctex-11.89.1/texmathp.elc | Bin 0 -> 9759 bytes .emacs.d/elpa/auctex-11.89.1/toolbar-x.el | 2155 + .emacs.d/elpa/auctex-11.89.1/toolbar-x.elc | Bin 0 -> 53235 bytes .../auto-complete-autoloads.el | 64 + .../auto-complete-autoloads.el~ | 11 + .../auto-complete-config.el | 543 + .../auto-complete-config.elc | Bin 0 -> 16621 bytes .../auto-complete-pkg.el | 6 + .../auto-complete-20160107.8/auto-complete.el | 2163 + .../auto-complete.elc | Bin 0 -> 66290 bytes .../auto-complete-20160107.8/dict/ada-mode | 72 + .../auto-complete-20160107.8/dict/c++-mode | 99 + .../elpa/auto-complete-20160107.8/dict/c-mode | 55 + .../auto-complete-20160107.8/dict/caml-mode | 231 + .../dict/clojure-mode | 580 + .../dict/clojurescript-mode | 475 + .../auto-complete-20160107.8/dict/coq-mode | 278 + .../auto-complete-20160107.8/dict/css-mode | 874 + .../auto-complete-20160107.8/dict/erlang-mode | 216 + .../auto-complete-20160107.8/dict/go-mode | 25 + .../dict/haskell-mode | 679 + .../auto-complete-20160107.8/dict/java-mode | 53 + .../auto-complete-20160107.8/dict/js-mode | 148 + .../auto-complete-20160107.8/dict/lua-mode | 21 + .../auto-complete-20160107.8/dict/octave-mode | 46 + .../auto-complete-20160107.8/dict/php-mode | 6144 +++ .../auto-complete-20160107.8/dict/python-mode | 379 + .../auto-complete-20160107.8/dict/qml-mode | 183 + .../auto-complete-20160107.8/dict/ruby-mode | 181 + .../auto-complete-20160107.8/dict/scala-mode | 1347 + .../auto-complete-20160107.8/dict/scheme-mode | 216 + .../auto-complete-20160107.8/dict/sclang-mode | 1481 + .../auto-complete-20160107.8/dict/sh-mode | 182 + .../auto-complete-20160107.8/dict/tcl-mode | 172 + .../auto-complete-20160107.8/dict/ts-mode | 797 + .../auto-complete-20160107.8/dict/tuareg-mode | 231 + .../dict/verilog-mode | 313 + .../auto-complete-clang-async-autoloads.el | 16 + .../auto-complete-clang-async-autoloads.el~ | 11 + .../auto-complete-clang-async-pkg.el | 1 + .../auto-complete-clang-async-pkg.elc | Bin 0 -> 558 bytes .../auto-complete-clang-async.el | 639 + .../auto-complete-clang-async.elc | Bin 0 -> 17883 bytes .../autopair-autoloads.el | 43 + .../autopair-autoloads.el~ | 11 + .../autopair-20140825.427/autopair-pkg.el | 1 + .../autopair-20140825.427/autopair-pkg.elc | Bin 0 -> 597 bytes .../elpa/autopair-20140825.427/autopair.el | 1134 + .../elpa/autopair-20140825.427/autopair.elc | Bin 0 -> 31665 bytes .emacs.d/elpa/company-0.8.12/.dir-locals.el | 4 + .emacs.d/elpa/company-0.8.12/.elpaignore | 5 + .emacs.d/elpa/company-0.8.12/ChangeLog | 310 + .emacs.d/elpa/company-0.8.12/NEWS.md | 329 + .emacs.d/elpa/company-0.8.12/README.md | 4 + .../elpa/company-0.8.12/company-abbrev.el | 51 + .../elpa/company-0.8.12/company-abbrev.elc | Bin 0 -> 1348 bytes .../elpa/company-0.8.12/company-autoloads.el | 296 + .../elpa/company-0.8.12/company-autoloads.el~ | 13 + .emacs.d/elpa/company-0.8.12/company-bbdb.el | 61 + .emacs.d/elpa/company-0.8.12/company-bbdb.elc | Bin 0 -> 1846 bytes .emacs.d/elpa/company-0.8.12/company-capf.el | 153 + .emacs.d/elpa/company-0.8.12/company-capf.elc | Bin 0 -> 3282 bytes .emacs.d/elpa/company-0.8.12/company-clang.el | 335 + .../elpa/company-0.8.12/company-clang.elc | Bin 0 -> 13503 bytes .emacs.d/elpa/company-0.8.12/company-cmake.el | 198 + .../elpa/company-0.8.12/company-cmake.elc | Bin 0 -> 5997 bytes .emacs.d/elpa/company-0.8.12/company-css.el | 438 + .emacs.d/elpa/company-0.8.12/company-css.elc | Bin 0 -> 17094 bytes .../company-0.8.12/company-dabbrev-code.el | 104 + .../company-0.8.12/company-dabbrev-code.elc | Bin 0 -> 3937 bytes .../elpa/company-0.8.12/company-dabbrev.el | 163 + .../elpa/company-0.8.12/company-dabbrev.elc | Bin 0 -> 6545 bytes .emacs.d/elpa/company-0.8.12/company-eclim.el | 183 + .../elpa/company-0.8.12/company-eclim.elc | Bin 0 -> 5629 bytes .emacs.d/elpa/company-0.8.12/company-elisp.el | 225 + .../elpa/company-0.8.12/company-elisp.elc | Bin 0 -> 7805 bytes .emacs.d/elpa/company-0.8.12/company-etags.el | 94 + .../elpa/company-0.8.12/company-etags.elc | Bin 0 -> 2874 bytes .emacs.d/elpa/company-0.8.12/company-files.el | 105 + .../elpa/company-0.8.12/company-files.elc | Bin 0 -> 3239 bytes .emacs.d/elpa/company-0.8.12/company-gtags.el | 115 + .../elpa/company-0.8.12/company-gtags.elc | Bin 0 -> 3787 bytes .../elpa/company-0.8.12/company-ispell.el | 76 + .../elpa/company-0.8.12/company-ispell.elc | Bin 0 -> 2025 bytes .../elpa/company-0.8.12/company-keywords.el | 236 + .../elpa/company-0.8.12/company-keywords.elc | Bin 0 -> 14849 bytes .emacs.d/elpa/company-0.8.12/company-nxml.el | 142 + .emacs.d/elpa/company-0.8.12/company-nxml.elc | Bin 0 -> 4357 bytes .../elpa/company-0.8.12/company-oddmuse.el | 57 + .../elpa/company-0.8.12/company-oddmuse.elc | Bin 0 -> 1561 bytes .emacs.d/elpa/company-0.8.12/company-pkg.el | 2 + .emacs.d/elpa/company-0.8.12/company-pkg.elc | Bin 0 -> 726 bytes .../elpa/company-0.8.12/company-pysmell.el | 69 + .../elpa/company-0.8.12/company-pysmell.elc | Bin 0 -> 1734 bytes .../elpa/company-0.8.12/company-ropemacs.el | 72 + .../elpa/company-0.8.12/company-ropemacs.elc | Bin 0 -> 2491 bytes .../elpa/company-0.8.12/company-semantic.el | 156 + .../elpa/company-0.8.12/company-semantic.elc | Bin 0 -> 4959 bytes .../elpa/company-0.8.12/company-template.el | 195 + .../elpa/company-0.8.12/company-template.elc | Bin 0 -> 6063 bytes .emacs.d/elpa/company-0.8.12/company-tempo.el | 63 + .../elpa/company-0.8.12/company-tempo.elc | Bin 0 -> 2057 bytes .emacs.d/elpa/company-0.8.12/company-xcode.el | 123 + .../elpa/company-0.8.12/company-xcode.elc | Bin 0 -> 3893 bytes .../elpa/company-0.8.12/company-yasnippet.el | 104 + .../elpa/company-0.8.12/company-yasnippet.elc | Bin 0 -> 2529 bytes .emacs.d/elpa/company-0.8.12/company.el | 2784 + .emacs.d/elpa/company-0.8.12/company.elc | Bin 0 -> 93424 bytes .emacs.d/elpa/company-0.8.12/test/all.el | 28 + .emacs.d/elpa/company-0.8.12/test/all.elc | Bin 0 -> 817 bytes .../elpa/company-0.8.12/test/async-tests.el | 217 + .../elpa/company-0.8.12/test/clang-tests.el | 46 + .../elpa/company-0.8.12/test/core-tests.el | 481 + .../elpa/company-0.8.12/test/elisp-tests.el | 190 + .../company-0.8.12/test/frontends-tests.el | 332 + .../company-0.8.12/test/keywords-tests.el | 32 + .../company-0.8.12/test/keywords-tests.elc | Bin 0 -> 1815 bytes .../company-0.8.12/test/template-tests.el | 91 + .../company-0.8.12/test/transformers-tests.el | 58 + .../company-20160211.520/company-abbrev.el | 50 + .../company-20160211.520/company-abbrev.elc | Bin 0 -> 1312 bytes .../company-20160211.520/company-autoloads.el | 287 + .../company-autoloads.el~ | 13 + .../elpa/company-20160211.520/company-bbdb.el | 61 + .../company-20160211.520/company-bbdb.elc | Bin 0 -> 1858 bytes .../elpa/company-20160211.520/company-capf.el | 167 + .../company-20160211.520/company-capf.elc | Bin 0 -> 3615 bytes .../company-20160211.520/company-clang.el | 331 + .../company-20160211.520/company-clang.elc | Bin 0 -> 13448 bytes .../company-20160211.520/company-cmake.el | 198 + .../company-20160211.520/company-cmake.elc | Bin 0 -> 6001 bytes .../elpa/company-20160211.520/company-css.el | 442 + .../elpa/company-20160211.520/company-css.elc | Bin 0 -> 17174 bytes .../company-dabbrev-code.el | 104 + .../company-dabbrev-code.elc | Bin 0 -> 3786 bytes .../company-20160211.520/company-dabbrev.el | 188 + .../company-20160211.520/company-dabbrev.elc | Bin 0 -> 7316 bytes .../company-20160211.520/company-eclim.el | 185 + .../company-20160211.520/company-eclim.elc | Bin 0 -> 5669 bytes .../company-20160211.520/company-elisp.el | 225 + .../company-20160211.520/company-elisp.elc | Bin 0 -> 7809 bytes .../company-20160211.520/company-etags.el | 107 + .../company-20160211.520/company-etags.elc | Bin 0 -> 3248 bytes .../company-20160211.520/company-files.el | 122 + .../company-20160211.520/company-files.elc | Bin 0 -> 3681 bytes .../company-20160211.520/company-gtags.el | 116 + .../company-20160211.520/company-gtags.elc | Bin 0 -> 3821 bytes .../company-20160211.520/company-ispell.el | 82 + .../company-20160211.520/company-ispell.elc | Bin 0 -> 2203 bytes .../company-20160211.520/company-keywords.el | 242 + .../company-20160211.520/company-keywords.elc | Bin 0 -> 15180 bytes .../elpa/company-20160211.520/company-nxml.el | 142 + .../company-20160211.520/company-nxml.elc | Bin 0 -> 4362 bytes .../company-20160211.520/company-oddmuse.el | 57 + .../company-20160211.520/company-oddmuse.elc | Bin 0 -> 1566 bytes .../elpa/company-20160211.520/company-pkg.el | 8 + .../company-20160211.520/company-semantic.el | 167 + .../company-20160211.520/company-semantic.elc | Bin 0 -> 5444 bytes .../company-20160211.520/company-template.el | 214 + .../company-20160211.520/company-template.elc | Bin 0 -> 6566 bytes .../company-20160211.520/company-tempo.el | 71 + .../company-20160211.520/company-tempo.elc | Bin 0 -> 2375 bytes .../company-20160211.520/company-xcode.el | 123 + .../company-20160211.520/company-xcode.elc | Bin 0 -> 3897 bytes .../company-20160211.520/company-yasnippet.el | 147 + .../company-yasnippet.elc | Bin 0 -> 3445 bytes .emacs.d/elpa/company-20160211.520/company.el | 3007 ++ .../elpa/company-20160211.520/company.elc | Bin 0 -> 100773 bytes .../company-irony-autoloads.el | 33 + .../company-irony-autoloads.el~ | 11 + .../company-irony-pkg.el | 1 + .../company-irony-pkg.elc | Bin 0 -> 646 bytes .../company-irony.el | 140 + .../company-irony.elc | Bin 0 -> 3689 bytes .emacs.d/elpa/ess-20160208.453/.dir-locals.el | 7 + .emacs.d/elpa/ess-20160208.453/allnews.info | 1524 + .emacs.d/elpa/ess-20160208.453/announc.info | 1034 + .emacs.d/elpa/ess-20160208.453/authors.info | 18 + .emacs.d/elpa/ess-20160208.453/bugrept.info | 25 + .emacs.d/elpa/ess-20160208.453/bugs-ms.info | 52 + .emacs.d/elpa/ess-20160208.453/credits.info | 80 + .emacs.d/elpa/ess-20160208.453/currfeat.info | 42 + .emacs.d/elpa/ess-20160208.453/dir | 19 + .../elpa/ess-20160208.453/ess-autoloads.el | 80 + .../elpa/ess-20160208.453/ess-autoloads.elc | Bin 0 -> 974 bytes .../elpa/ess-20160208.453/ess-autoloads.el~ | 76 + .emacs.d/elpa/ess-20160208.453/ess-defs.info | 8 + .emacs.d/elpa/ess-20160208.453/ess-pkg.el | 6 + .emacs.d/elpa/ess-20160208.453/ess.info | 5689 +++ .../elpa/ess-20160208.453/etc/BACKBUG5.BAT | 26 + .../elpa/ess-20160208.453/etc/BACKBUGS.BAT | 32 + .../elpa/ess-20160208.453/etc/C-cC-c-probl.R | 122 + .../elpa/ess-20160208.453/etc/ESSR/BUILDESSR | 18 + .../elpa/ess-20160208.453/etc/ESSR/LOADREMOTE | 23 + .../elpa/ess-20160208.453/etc/ESSR/R/.basic.R | 85 + .../elpa/ess-20160208.453/etc/ESSR/R/.load.R | 53 + .../ess-20160208.453/etc/ESSR/R/completion.R | 100 + .../elpa/ess-20160208.453/etc/ESSR/R/debug.R | 187 + .../ess-20160208.453/etc/ESSR/R/developer.R | 295 + .../elpa/ess-20160208.453/etc/ESSR/R/misc.R | 116 + .../elpa/ess-20160208.453/etc/ESSR/VERSION | 1 + .../ess-20160208.453/etc/Extract.factor.Rd | 56 + .emacs.d/elpa/ess-20160208.453/etc/Makefile | 69 + .../elpa/ess-20160208.453/etc/R-ESS-bugs.R | 868 + .../elpa/ess-20160208.453/etc/R-ESS-bugs.el | 91 + .../elpa/ess-20160208.453/etc/R-ESS-bugs.elc | Bin 0 -> 3008 bytes .../elpa/ess-20160208.453/etc/R-oxygen-ex.R | 24 + .emacs.d/elpa/ess-20160208.453/etc/R-pager.R | 18 + .../ess-20160208.453/etc/R_error_patterns.R | 60 + .../ess-20160208.453/etc/Rnw-ess-bugs.Rnw | 31 + .../elpa/ess-20160208.453/etc/SAS-bugs.sas | 31 + .emacs.d/elpa/ess-20160208.453/etc/TODO.org | 200 + .emacs.d/elpa/ess-20160208.453/etc/backbug5 | 27 + .../elpa/ess-20160208.453/etc/backbug5.sparc | 20 + .emacs.d/elpa/ess-20160208.453/etc/backbugs | 27 + .../elpa/ess-20160208.453/etc/backbugs.sparc | 20 + .../elpa/ess-20160208.453/etc/checkTriple.Rd | 67 + .../elpa/ess-20160208.453/etc/chol2inv-ex.Rd | 20 + .../ess-20160208.453/etc/completion_ideas.R | 30 + .../elpa/ess-20160208.453/etc/config.guess | 1560 + .../elpa/ess-20160208.453/etc/ess-julia.jl | 114 + .../ess-20160208.453/etc/ess-roxy-tests.R | 221 + .../etc/ess-rutils-help-start.R | 15 + .emacs.d/elpa/ess-20160208.453/etc/ess-s4.S | 56 + .../ess-20160208.453/etc/ess-sas-sh-command | 76 + .emacs.d/elpa/ess-20160208.453/etc/ess-sp3.S | 49 + .../ess-20160208.453/etc/function-outline.S | 8 + .emacs.d/elpa/ess-20160208.453/etc/gpl-check | 56 + .../elpa/ess-20160208.453/etc/icons/README | 31 + .../ess-20160208.453/etc/icons/rbuffer.xpm | 30 + .../ess-20160208.453/etc/icons/rfunction.xpm | 45 + .../elpa/ess-20160208.453/etc/icons/rline.xpm | 30 + .../ess-20160208.453/etc/icons/rregion.xpm | 30 + .../etc/icons/splus_letter_small.xpm | 173 + .../etc/icons/splus_letters_large.png | Bin 0 -> 4269 bytes .../etc/icons/splus_letters_large.xpm | 281 + .../ess-20160208.453/etc/icons/spluslogo.xpm | 37 + .../etc/icons/spluslogo.xpm.safe | 44 + .../ess-20160208.453/etc/icons/startr.xpm | 161 + .../ess-20160208.453/etc/icons/switch_ess.xpm | 40 + .../ess-20160208.453/etc/icons/switchr.xpm | 112 + .../ess-20160208.453/etc/icons/switchs.xpm | 32 + .../ess-20160208.453/etc/in-string-bug-ex.Rnw | 25 + .../etc/other/S-spread/README | 72 + .../etc/other/S-spread/S-spread.el | 337 + .../etc/other/S-spread/S-spread.elc | Bin 0 -> 8577 bytes .../etc/other/S-spread/asaprc.ps | 30845 ++++++++++++ .../etc/other/S-spread/gradexmp.s | 18 + .../etc/other/S-spread/sprd-emc.s | 280 + .../etc/other/S-spread/sprd-grd.s | 49 + .../etc/other/S-spread/sprd-int.el | 336 + .../etc/other/S-spread/sprd-int.elc | Bin 0 -> 8574 bytes .../etc/other/S-spread/sprd-spr.s | 329 + .../etc/other/S-spread/sprd-txt.s | 114 + .../etc/other/S-spread/sprd3d.how | 197 + .emacs.d/elpa/ess-20160208.453/etc/other/test | 2 + .../elpa/ess-20160208.453/etc/pkg-Maintainers | 4 + .../ess-20160208.453/etc/pkg1/DESCRIPTION | 9 + .../elpa/ess-20160208.453/etc/pkg1/NAMESPACE | 1 + .../elpa/ess-20160208.453/etc/pkg1/R/D1tr.R | 20 + .../ess-20160208.453/etc/pkg1/man/D1tr.Rd | 36 + .../elpa/ess-20160208.453/etc/sas-keys.doc | Bin 0 -> 16896 bytes .../elpa/ess-20160208.453/etc/sas-keys.ps | 2569 + .../elpa/ess-20160208.453/etc/sas-keys.rtf | 137 + .../ess-20160208.453/etc/sje-ess-notes.txt | 283 + .../ess-20160208.453/etc/slow-long-output.R | 55 + .emacs.d/elpa/ess-20160208.453/inst_svn.info | 38 + .../elpa/ess-20160208.453/installation.info | 57 + .emacs.d/elpa/ess-20160208.453/license.info | 17 + .../elpa/ess-20160208.453/lisp/ess-arc-d.el | 100 + .../elpa/ess-20160208.453/lisp/ess-arc-d.elc | Bin 0 -> 1670 bytes .../elpa/ess-20160208.453/lisp/ess-bugs-d.el | 265 + .../elpa/ess-20160208.453/lisp/ess-bugs-d.elc | Bin 0 -> 6047 bytes .../elpa/ess-20160208.453/lisp/ess-bugs-l.el | 277 + .../elpa/ess-20160208.453/lisp/ess-bugs-l.elc | Bin 0 -> 7746 bytes .../elpa/ess-20160208.453/lisp/ess-comp.el | 67 + .../elpa/ess-20160208.453/lisp/ess-comp.elc | Bin 0 -> 1022 bytes .../elpa/ess-20160208.453/lisp/ess-compat.el | 298 + .../elpa/ess-20160208.453/lisp/ess-compat.elc | Bin 0 -> 6250 bytes .../elpa/ess-20160208.453/lisp/ess-custom.el | 3131 ++ .../elpa/ess-20160208.453/lisp/ess-custom.elc | Bin 0 -> 91834 bytes .../elpa/ess-20160208.453/lisp/ess-dde.el | 173 + .../elpa/ess-20160208.453/lisp/ess-dde.elc | Bin 0 -> 4148 bytes .../elpa/ess-20160208.453/lisp/ess-debug.el | 92 + .../elpa/ess-20160208.453/lisp/ess-debug.elc | Bin 0 -> 1523 bytes .../ess-20160208.453/lisp/ess-developer.el | 472 + .../ess-20160208.453/lisp/ess-developer.elc | Bin 0 -> 14604 bytes .../elpa/ess-20160208.453/lisp/ess-eldoc.el | 176 + .../elpa/ess-20160208.453/lisp/ess-eldoc.elc | Bin 0 -> 551 bytes .../ess-20160208.453/lisp/ess-font-lock.el | 167 + .../ess-20160208.453/lisp/ess-font-lock.elc | Bin 0 -> 4218 bytes .../elpa/ess-20160208.453/lisp/ess-gretl.el | 657 + .../elpa/ess-20160208.453/lisp/ess-gretl.elc | Bin 0 -> 17120 bytes .../elpa/ess-20160208.453/lisp/ess-help.el | 1090 + .../elpa/ess-20160208.453/lisp/ess-help.elc | Bin 0 -> 33104 bytes .../elpa/ess-20160208.453/lisp/ess-inf.el | 3465 ++ .../elpa/ess-20160208.453/lisp/ess-inf.elc | Bin 0 -> 95484 bytes .../elpa/ess-20160208.453/lisp/ess-install.el | 236 + .../ess-20160208.453/lisp/ess-install.elc | Bin 0 -> 3360 bytes .../elpa/ess-20160208.453/lisp/ess-jags-d.el | 260 + .../elpa/ess-20160208.453/lisp/ess-jags-d.elc | Bin 0 -> 6146 bytes .../elpa/ess-20160208.453/lisp/ess-julia.el | 414 + .../elpa/ess-20160208.453/lisp/ess-julia.elc | Bin 0 -> 14588 bytes .../elpa/ess-20160208.453/lisp/ess-lsp-l.el | 82 + .../elpa/ess-20160208.453/lisp/ess-lsp-l.elc | Bin 0 -> 1282 bytes .../elpa/ess-20160208.453/lisp/ess-menu.el | 162 + .../elpa/ess-20160208.453/lisp/ess-menu.elc | Bin 0 -> 486 bytes .../elpa/ess-20160208.453/lisp/ess-mode.el | 1143 + .../elpa/ess-20160208.453/lisp/ess-mode.elc | Bin 0 -> 28258 bytes .../elpa/ess-20160208.453/lisp/ess-mouse.el | 257 + .../elpa/ess-20160208.453/lisp/ess-mouse.elc | Bin 0 -> 6125 bytes .../lisp/ess-noweb-font-lock-mode.el | 400 + .../lisp/ess-noweb-font-lock-mode.elc | Bin 0 -> 7450 bytes .../ess-20160208.453/lisp/ess-noweb-mode.el | 1941 + .../ess-20160208.453/lisp/ess-noweb-mode.elc | Bin 0 -> 46929 bytes .../elpa/ess-20160208.453/lisp/ess-noweb.el | 150 + .../elpa/ess-20160208.453/lisp/ess-noweb.elc | Bin 0 -> 2436 bytes .../elpa/ess-20160208.453/lisp/ess-omg-d.el | 126 + .../elpa/ess-20160208.453/lisp/ess-omg-d.elc | Bin 0 -> 2531 bytes .../elpa/ess-20160208.453/lisp/ess-omg-l.el | 345 + .../elpa/ess-20160208.453/lisp/ess-omg-l.elc | Bin 0 -> 2923 bytes .../elpa/ess-20160208.453/lisp/ess-r-a.el | 164 + .../elpa/ess-20160208.453/lisp/ess-r-a.elc | Bin 0 -> 2772 bytes .../elpa/ess-20160208.453/lisp/ess-r-args.el | 331 + .../elpa/ess-20160208.453/lisp/ess-r-args.elc | Bin 0 -> 2964 bytes .../ess-20160208.453/lisp/ess-r-completion.el | 485 + .../lisp/ess-r-completion.elc | Bin 0 -> 14944 bytes .../elpa/ess-20160208.453/lisp/ess-r-d.el | 1849 + .../elpa/ess-20160208.453/lisp/ess-r-d.elc | Bin 0 -> 47231 bytes .../elpa/ess-20160208.453/lisp/ess-r-gui.el | 193 + .../elpa/ess-20160208.453/lisp/ess-r-gui.elc | Bin 0 -> 5566 bytes .../ess-20160208.453/lisp/ess-r-syntax.el | 1008 + .../ess-20160208.453/lisp/ess-r-syntax.elc | Bin 0 -> 24646 bytes .emacs.d/elpa/ess-20160208.453/lisp/ess-rd.el | 542 + .../elpa/ess-20160208.453/lisp/ess-rd.elc | Bin 0 -> 14053 bytes .../elpa/ess-20160208.453/lisp/ess-rdired.el | 508 + .../elpa/ess-20160208.453/lisp/ess-rdired.elc | Bin 0 -> 10255 bytes .../elpa/ess-20160208.453/lisp/ess-roxy.el | 884 + .../elpa/ess-20160208.453/lisp/ess-roxy.elc | Bin 0 -> 24419 bytes .../elpa/ess-20160208.453/lisp/ess-rutils.el | 452 + .../elpa/ess-20160208.453/lisp/ess-rutils.elc | Bin 0 -> 11719 bytes .../elpa/ess-20160208.453/lisp/ess-s-l.el | 903 + .../elpa/ess-20160208.453/lisp/ess-s-l.elc | Bin 0 -> 19103 bytes .../elpa/ess-20160208.453/lisp/ess-s3-d.el | 99 + .../elpa/ess-20160208.453/lisp/ess-s3-d.elc | Bin 0 -> 1782 bytes .../elpa/ess-20160208.453/lisp/ess-s4-d.el | 297 + .../elpa/ess-20160208.453/lisp/ess-s4-d.elc | Bin 0 -> 1911 bytes .../elpa/ess-20160208.453/lisp/ess-sas-a.el | 1484 + .../elpa/ess-20160208.453/lisp/ess-sas-a.elc | Bin 0 -> 39197 bytes .../elpa/ess-20160208.453/lisp/ess-sas-d.el | 334 + .../elpa/ess-20160208.453/lisp/ess-sas-d.elc | Bin 0 -> 6530 bytes .../elpa/ess-20160208.453/lisp/ess-sas-l.el | 1915 + .../elpa/ess-20160208.453/lisp/ess-sas-l.elc | Bin 0 -> 41343 bytes .../elpa/ess-20160208.453/lisp/ess-send.el | 74 + .../elpa/ess-20160208.453/lisp/ess-send.elc | Bin 0 -> 1121 bytes .../elpa/ess-20160208.453/lisp/ess-send2.el | 54 + .../elpa/ess-20160208.453/lisp/ess-send2.elc | Bin 0 -> 1283 bytes .../elpa/ess-20160208.453/lisp/ess-site.el | 792 + .../elpa/ess-20160208.453/lisp/ess-site.elc | Bin 0 -> 10123 bytes .../elpa/ess-20160208.453/lisp/ess-sp3-d.el | 105 + .../elpa/ess-20160208.453/lisp/ess-sp3-d.elc | Bin 0 -> 1998 bytes .../elpa/ess-20160208.453/lisp/ess-sp4-d.el | 421 + .../elpa/ess-20160208.453/lisp/ess-sp4-d.elc | Bin 0 -> 10622 bytes .../elpa/ess-20160208.453/lisp/ess-sp5-d.el | 126 + .../elpa/ess-20160208.453/lisp/ess-sp5-d.elc | Bin 0 -> 2021 bytes .../elpa/ess-20160208.453/lisp/ess-sp6-d.el | 314 + .../elpa/ess-20160208.453/lisp/ess-sp6-d.elc | Bin 0 -> 7573 bytes .../elpa/ess-20160208.453/lisp/ess-sp6w-d.el | 602 + .../elpa/ess-20160208.453/lisp/ess-sp6w-d.elc | Bin 0 -> 17404 bytes .../elpa/ess-20160208.453/lisp/ess-sta-d.el | 176 + .../elpa/ess-20160208.453/lisp/ess-sta-d.elc | Bin 0 -> 4358 bytes .../elpa/ess-20160208.453/lisp/ess-sta-l.el | 1307 + .../elpa/ess-20160208.453/lisp/ess-sta-l.elc | Bin 0 -> 22552 bytes .../elpa/ess-20160208.453/lisp/ess-swv.el | 442 + .../elpa/ess-20160208.453/lisp/ess-swv.elc | Bin 0 -> 10750 bytes .../elpa/ess-20160208.453/lisp/ess-toolbar.el | 253 + .../ess-20160208.453/lisp/ess-toolbar.elc | Bin 0 -> 6130 bytes .../ess-20160208.453/lisp/ess-tracebug.el | 2785 + .../ess-20160208.453/lisp/ess-tracebug.elc | Bin 0 -> 85172 bytes .../elpa/ess-20160208.453/lisp/ess-trns.el | 352 + .../elpa/ess-20160208.453/lisp/ess-trns.elc | Bin 0 -> 8710 bytes .../elpa/ess-20160208.453/lisp/ess-utils.el | 1157 + .../elpa/ess-20160208.453/lisp/ess-utils.elc | Bin 0 -> 29056 bytes .../elpa/ess-20160208.453/lisp/ess-vst-d.el | 98 + .../elpa/ess-20160208.453/lisp/ess-vst-d.elc | Bin 0 -> 1612 bytes .../elpa/ess-20160208.453/lisp/ess-xls-d.el | 116 + .../elpa/ess-20160208.453/lisp/ess-xls-d.elc | Bin 0 -> 2173 bytes .emacs.d/elpa/ess-20160208.453/lisp/ess.el | 573 + .emacs.d/elpa/ess-20160208.453/lisp/ess.elc | Bin 0 -> 9757 bytes .../elpa/ess-20160208.453/lisp/essd-els.el | 245 + .../elpa/ess-20160208.453/lisp/essd-els.elc | Bin 0 -> 6400 bytes .../elpa/ess-20160208.453/lisp/make-regexp.el | 238 + .../ess-20160208.453/lisp/make-regexp.elc | Bin 0 -> 3253 bytes .../elpa/ess-20160208.453/lisp/mouseme.el | 355 + .../elpa/ess-20160208.453/lisp/mouseme.elc | Bin 0 -> 9283 bytes .emacs.d/elpa/ess-20160208.453/lisp/msdos.el | 170 + .emacs.d/elpa/ess-20160208.453/lisp/msdos.elc | Bin 0 -> 4210 bytes .emacs.d/elpa/ess-20160208.453/mailing.info | 21 + .emacs.d/elpa/ess-20160208.453/news.info | 810 + .emacs.d/elpa/ess-20160208.453/onews.info | 720 + .emacs.d/elpa/ess-20160208.453/readme.info | 1114 + .emacs.d/elpa/ess-20160208.453/requires.info | 27 + .emacs.d/elpa/ess-20160208.453/stabilty.info | 15 + .emacs.d/elpa/gnupg/pubring.gpg | Bin 0 -> 999 bytes .emacs.d/elpa/gnupg/pubring.gpg~ | 0 .emacs.d/elpa/gnupg/secring.gpg | 0 .emacs.d/elpa/gnupg/trustdb.gpg | Bin 0 -> 1200 bytes .../elpa/irony-20160203.1207/.dir-locals.el | 10 + .../irony-20160203.1207/irony-autoloads.el | 137 + .../irony-20160203.1207/irony-autoloads.el~ | 13 + .../irony-cdb-clang-complete.el | 66 + .../irony-cdb-clang-complete.elc | Bin 0 -> 1684 bytes .../irony-20160203.1207/irony-cdb-json.el | 266 + .../irony-20160203.1207/irony-cdb-json.elc | Bin 0 -> 8170 bytes .../irony-20160203.1207/irony-cdb-libclang.el | 70 + .../irony-cdb-libclang.elc | Bin 0 -> 1863 bytes .../elpa/irony-20160203.1207/irony-cdb.el | 211 + .../elpa/irony-20160203.1207/irony-cdb.elc | Bin 0 -> 6162 bytes .../irony-20160203.1207/irony-completion.el | 364 + .../irony-20160203.1207/irony-completion.elc | Bin 0 -> 9245 bytes .../irony-20160203.1207/irony-diagnostics.el | 108 + .../irony-20160203.1207/irony-diagnostics.elc | Bin 0 -> 2743 bytes .../elpa/irony-20160203.1207/irony-pkg.el | 8 + .../elpa/irony-20160203.1207/irony-snippet.el | 135 + .../irony-20160203.1207/irony-snippet.elc | Bin 0 -> 3138 bytes .emacs.d/elpa/irony-20160203.1207/irony.el | 822 + .emacs.d/elpa/irony-20160203.1207/irony.elc | Bin 0 -> 21872 bytes .../irony-20160203.1207/server/.clang-format | 8 + .../irony-20160203.1207/server/CMakeLists.txt | 69 + .../CheckLibClangBuiltinHeadersDir.cmake | 95 + .../cmake/LibClangDiagnosticsChecker.cpp | 47 + .../server/cmake/modules/FindLibClang.cmake | 92 + .../server/cmake/utils.cmake | 139 + .../server/docs/CMakeLists.txt | 15 + .../server/docs/irony-server.cfg.in | 291 + .../server/src/CMakeLists.txt | 70 + .../server/src/Command.cpp | 288 + .../irony-20160203.1207/server/src/Command.h | 70 + .../server/src/Commands.def | 28 + .../irony-20160203.1207/server/src/Irony.cpp | 436 + .../irony-20160203.1207/server/src/Irony.h | 126 + .../server/src/TUManager.cpp | 180 + .../server/src/TUManager.h | 109 + .../irony-20160203.1207/server/src/main.cpp | 235 + .../server/src/support/CIndex.h | 33 + .../server/src/support/CommandLineParser.cpp | 119 + .../server/src/support/CommandLineParser.h | 21 + .../server/src/support/NonCopyable.h | 34 + .../server/src/support/TemporaryFile.cpp | 74 + .../server/src/support/TemporaryFile.h | 36 + .../server/src/support/arraysize.h | 39 + .../server/src/support/iomanip_quoted.h | 52 + .../server/test/CMakeLists.txt | 3 + .../server/test/elisp/CMakeLists.txt | 43 + .../server/test/elisp/irony-cdb-json.el | 87 + .../server/test/elisp/irony.el | 117 + .../server/test/elisp/support/ert.el | 2544 + .../server/test/elisp/support/ert.elc | Bin 0 -> 174063 bytes .../server/test/elisp/test-config.el | 18 + .../julia-mode-autoloads.el | 32 + .../julia-mode-autoloads.el~ | 11 + .../julia-mode-20150912.800/julia-mode-pkg.el | 1 + .../julia-mode-pkg.elc | Bin 0 -> 564 bytes .../julia-mode-20150912.800/julia-mode.el | 3254 ++ .../julia-mode-20150912.800/julia-mode.elc | Bin 0 -> 143503 bytes .../markdown-mode-autoloads.el | 33 + .../markdown-mode-autoloads.el~ | 11 + .../markdown-mode-pkg.el | 1 + .../markdown-mode-pkg.elc | Bin 0 -> 632 bytes .../markdown-mode.el | 6234 +++ .../markdown-mode.elc | Bin 0 -> 181364 bytes .../math-symbol-lists-autoloads.el | 16 + .../math-symbol-lists-autoloads.el~ | 11 + .../math-symbol-lists-pkg.el | 1 + .../math-symbol-lists-pkg.elc | Bin 0 -> 611 bytes .../math-symbol-lists.el | 3069 ++ .../math-symbol-lists.elc | Bin 0 -> 91317 bytes .../openwith-autoloads.el | 31 + .../openwith-autoloads.el~ | 11 + .../openwith-20120531.1436/openwith-pkg.el | 1 + .../openwith-20120531.1436/openwith-pkg.elc | Bin 0 -> 568 bytes .../elpa/openwith-20120531.1436/openwith.el | 144 + .../elpa/openwith-20120531.1436/openwith.elc | Bin 0 -> 5252 bytes .../elpa/php-mode-20151002.2030/php-array.el | 718 + .../elpa/php-mode-20151002.2030/php-array.elc | Bin 0 -> 69522 bytes .../php-mode-20151002.2030/php-classobj.el | 172 + .../php-mode-20151002.2030/php-classobj.elc | Bin 0 -> 16300 bytes .../php-control-structures.el | 124 + .../php-control-structures.elc | Bin 0 -> 9159 bytes .../elpa/php-mode-20151002.2030/php-crack.el | 57 + .../elpa/php-mode-20151002.2030/php-crack.elc | Bin 0 -> 3624 bytes .../elpa/php-mode-20151002.2030/php-dio.el | 102 + .../elpa/php-mode-20151002.2030/php-dio.elc | Bin 0 -> 8104 bytes .../elpa/php-mode-20151002.2030/php-dom.el | 65 + .../elpa/php-mode-20151002.2030/php-dom.elc | Bin 0 -> 5212 bytes .../php-mode-20151002.2030/php-exceptions.el | 54 + .../php-mode-20151002.2030/php-exceptions.elc | Bin 0 -> 2004 bytes .../elpa/php-mode-20151002.2030/php-exif.el | 57 + .../elpa/php-mode-20151002.2030/php-exif.elc | Bin 0 -> 4063 bytes .../elpa/php-mode-20151002.2030/php-ext.el | 132 + .../elpa/php-mode-20151002.2030/php-ext.elc | Bin 0 -> 2812 bytes .../php-mode-20151002.2030/php-filesystem.el | 590 + .../php-mode-20151002.2030/php-filesystem.elc | Bin 0 -> 63636 bytes .../elpa/php-mode-20151002.2030/php-gd.el | 1097 + .../elpa/php-mode-20151002.2030/php-gd.elc | Bin 0 -> 109276 bytes .../elpa/php-mode-20151002.2030/php-math.el | 355 + .../elpa/php-mode-20151002.2030/php-math.elc | Bin 0 -> 38666 bytes .../php-mode-autoloads.el | 44 + .../php-mode-autoloads.el~ | 11 + .../php-mode-20151002.2030/php-mode-pkg.el | 4 + .../elpa/php-mode-20151002.2030/php-mode.el | 1547 + .../elpa/php-mode-20151002.2030/php-mode.elc | Bin 0 -> 101113 bytes .../elpa/php-mode-20151002.2030/php-pcre.el | 103 + .../elpa/php-mode-20151002.2030/php-pcre.elc | Bin 0 -> 9338 bytes .../elpa/php-mode-20151002.2030/php-regex.el | 82 + .../elpa/php-mode-20151002.2030/php-regex.elc | Bin 0 -> 6421 bytes .../php-mode-20151002.2030/php-simplexml.el | 54 + .../php-mode-20151002.2030/php-simplexml.elc | Bin 0 -> 3380 bytes .../php-mode-20151002.2030/php-strings.el | 768 + .../php-mode-20151002.2030/php-strings.elc | Bin 0 -> 82686 bytes .../elpa/php-mode-20151002.2030/php-var.el | 263 + .../elpa/php-mode-20151002.2030/php-var.elc | Bin 0 -> 26736 bytes .../php-mode-20151002.2030/php-xmlparser.el | 194 + .../php-mode-20151002.2030/php-xmlparser.elc | Bin 0 -> 20555 bytes .../php-mode-20151002.2030/php-xmlreader.el | 15 + .../php-mode-20151002.2030/php-xmlreader.elc | Bin 0 -> 1939 bytes .../popup-20151222.1339/popup-autoloads.el | 15 + .../popup-20151222.1339/popup-autoloads.el~ | 11 + .../elpa/popup-20151222.1339/popup-pkg.el | 1 + .../elpa/popup-20151222.1339/popup-pkg.elc | Bin 0 -> 514 bytes .emacs.d/elpa/popup-20151222.1339/popup.el | 1428 + .emacs.d/elpa/popup-20151222.1339/popup.elc | Bin 0 -> 75809 bytes .../pos-tip-20150318.813/pos-tip-autoloads.el | 15 + .../pos-tip-autoloads.el~ | 11 + .../elpa/pos-tip-20150318.813/pos-tip-pkg.el | 1 + .../elpa/pos-tip-20150318.813/pos-tip-pkg.elc | Bin 0 -> 498 bytes .emacs.d/elpa/pos-tip-20150318.813/pos-tip.el | 980 + .../elpa/pos-tip-20150318.813/pos-tip.elc | Bin 0 -> 25488 bytes .../snippets/.gitignore | 1 + .../yasnippet-20160131.948/snippets/.nosearch | 1 + .../snippets/CONTRIBUTORS.txt | 4 + .../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/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_[] | 7 + .../snippets/c++-mode/const_[]~ | 8 + .../snippets/c++-mode/constructor | 7 + .../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/fori~ | 7 + .../snippets/c++-mode/friend | 5 + .../snippets/c++-mode/fun_declaration | 5 + .../snippets/c++-mode/function | 7 + .../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!= | 8 + .../snippets/c++-mode/operator!=~ | 9 + .../snippets/c++-mode/operator+ | 10 + .../snippets/c++-mode/operator+= | 9 + .../snippets/c++-mode/operator+=~ | 10 + .../snippets/c++-mode/operator+~ | 11 + .../snippets/c++-mode/operator= | 13 + .../snippets/c++-mode/operator== | 8 + .../snippets/c++-mode/operator==~ | 9 + .../snippets/c++-mode/operator=~ | 14 + .../snippets/c++-mode/operator[] | 8 + .../snippets/c++-mode/operator[]~ | 9 + .../snippets/c++-mode/operator_istream | 9 + .../snippets/c++-mode/operator_istream~ | 10 + .../snippets/c++-mode/operator_ostream | 9 + .../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 | 11 + .../snippets/c++-mode/tryw | 10 + .../snippets/c++-mode/tryw~ | 9 + .../snippets/c++-mode/try~ | 10 + .../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 | 6 + .../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/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 | 8 + .../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 | 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 -> 620 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 + .../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 -> 513 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 -> 1325 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 + .../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 | 59 + .../yasnippet-autoloads.el~ | 11 + .../yasnippet-20160131.948/yasnippet-pkg.el | 5 + .../elpa/yasnippet-20160131.948/yasnippet.el | 4596 ++ .../elpa/yasnippet-20160131.948/yasnippet.elc | Bin 0 -> 201294 bytes .emacs.d/irony/bin/irony-server | Bin 0 -> 90361 bytes .emacs.d/snippets/c++-mode/acc | 5 + .emacs.d/snippets/c++-mode/accl | 8 + .emacs.d/snippets/c++-mode/accl~ | 7 + .emacs.d/snippets/c++-mode/cls | 10 + .emacs.d/snippets/c++-mode/dcast | 5 + .emacs.d/snippets/c++-mode/dpcast | 5 + .emacs.d/snippets/c++-mode/forc | 7 + .emacs.d/snippets/c++-mode/scast | 5 + .emacs.d/snippets/c++-mode/sct | 9 + .emacs.d/snippets/c++-mode/spcast | 5 + .emacs.el | 188 + 2215 files changed, 341269 insertions(+) create mode 100644 .bashrc create mode 100644 .emacs.d/ac-comphist.dat create mode 100755 .emacs.d/auto-save-list/.saves-1032-SPRINGSTEEN~ create mode 100755 .emacs.d/auto-save-list/.saves-1136-SPRINGSTEEN~ create mode 100644 .emacs.d/auto-save-list/.saves-12370-pinkfloyd.laas.fr~ create mode 100644 .emacs.d/auto-save-list/.saves-12374-pinkfloyd.laas.fr~ create mode 100755 .emacs.d/auto-save-list/.saves-1540-PIXIES~ create mode 100644 .emacs.d/auto-save-list/.saves-17826-pinkfloyd.laas.fr~ create mode 100755 .emacs.d/auto-save-list/.saves-1840-PIXIES~ create mode 100755 .emacs.d/auto-save-list/.saves-2128-SPRINGSTEEN~ create mode 100755 .emacs.d/auto-save-list/.saves-2152-SPRINGSTEEN~ create mode 100755 .emacs.d/auto-save-list/.saves-2232-SPRINGSTEEN~ create mode 100755 .emacs.d/auto-save-list/.saves-2356-SPRINGSTEEN~ create mode 100644 .emacs.d/auto-save-list/.saves-29259-pinkfloyd.laas.fr~ create mode 100755 .emacs.d/auto-save-list/.saves-3332-SPRINGSTEEN~ create mode 100755 .emacs.d/auto-save-list/.saves-3380-SPRINGSTEEN~ create mode 100644 .emacs.d/auto-save-list/.saves-3416-pinkfloyd.laas.fr~ create mode 100755 .emacs.d/auto-save-list/.saves-3936-SPRINGSTEEN~ create mode 100755 .emacs.d/auto-save-list/.saves-4088-PIXIES~ create mode 100755 .emacs.d/auto-save-list/.saves-4164-SPRINGSTEEN~ create mode 100755 .emacs.d/auto-save-list/.saves-4220-PIXIES~ create mode 100755 .emacs.d/auto-save-list/.saves-4260-PIXIES~ create mode 100755 .emacs.d/auto-save-list/.saves-4268-PIXIES~ create mode 100755 .emacs.d/auto-save-list/.saves-4572-SPRINGSTEEN~ create mode 100755 .emacs.d/auto-save-list/.saves-4816-SPRINGSTEEN~ create mode 100755 .emacs.d/auto-save-list/.saves-4880-PIXIES~ create mode 100755 .emacs.d/auto-save-list/.saves-5296-PIXIES~ create mode 100755 .emacs.d/auto-save-list/.saves-5400-PIXIES~ create mode 100755 .emacs.d/auto-save-list/.saves-5904-SPRINGSTEEN~ create mode 100755 .emacs.d/auto-save-list/.saves-5960-PIXIES~ create mode 100755 .emacs.d/auto-save-list/.saves-6292-PIXIES~ create mode 100755 .emacs.d/auto-save-list/.saves-6632-PIXIES~ create mode 100755 .emacs.d/auto-save-list/.saves-7132-SPRINGSTEEN~ create mode 100644 .emacs.d/auto-save-list/.saves-7253-pinkfloyd.laas.fr~ create mode 100755 .emacs.d/clang-complete create mode 100644 .emacs.d/elpa/2048-game-20151026.1233/2048-game-autoloads.el create mode 100644 .emacs.d/elpa/2048-game-20151026.1233/2048-game-autoloads.el~ create mode 100644 .emacs.d/elpa/2048-game-20151026.1233/2048-game-pkg.el create mode 100644 .emacs.d/elpa/2048-game-20151026.1233/2048-game-pkg.elc create mode 100644 .emacs.d/elpa/2048-game-20151026.1233/2048-game.el create mode 100644 .emacs.d/elpa/2048-game-20151026.1233/2048-game.elc create mode 100644 .emacs.d/elpa/ac-c-headers-20151021.134/ac-c-headers-autoloads.el create mode 100644 .emacs.d/elpa/ac-c-headers-20151021.134/ac-c-headers-autoloads.el~ create mode 100644 .emacs.d/elpa/ac-c-headers-20151021.134/ac-c-headers-pkg.el create mode 100644 .emacs.d/elpa/ac-c-headers-20151021.134/ac-c-headers-pkg.elc create mode 100644 .emacs.d/elpa/ac-c-headers-20151021.134/ac-c-headers.el create mode 100644 .emacs.d/elpa/ac-c-headers-20151021.134/ac-c-headers.elc create mode 100644 .emacs.d/elpa/ac-clang-20150906.1008/ac-clang-autoloads.el create mode 100644 .emacs.d/elpa/ac-clang-20150906.1008/ac-clang-autoloads.el~ create mode 100644 .emacs.d/elpa/ac-clang-20150906.1008/ac-clang-pkg.el create mode 100644 .emacs.d/elpa/ac-clang-20150906.1008/ac-clang.el create mode 100644 .emacs.d/elpa/ac-clang-20150906.1008/ac-clang.elc create mode 100755 .emacs.d/elpa/ac-clang-20150906.1008/build/builder_sample.bat create mode 100755 .emacs.d/elpa/ac-clang-20150906.1008/build/builder_sample.sh create mode 100644 .emacs.d/elpa/ac-clang-20150906.1008/clang-server/.nosearch create mode 100644 .emacs.d/elpa/ac-clang-20150906.1008/clang-server/CMakeLists.txt create mode 100644 .emacs.d/elpa/ac-clang-20150906.1008/clang-server/ClangServer.cpp create mode 100644 .emacs.d/elpa/ac-clang-20150906.1008/clang-server/ClangServer.hpp create mode 100644 .emacs.d/elpa/ac-clang-20150906.1008/clang-server/ClangSession.cpp create mode 100644 .emacs.d/elpa/ac-clang-20150906.1008/clang-server/ClangSession.hpp create mode 100644 .emacs.d/elpa/ac-clang-20150906.1008/clang-server/CommandLine.hpp create mode 100644 .emacs.d/elpa/ac-clang-20150906.1008/clang-server/Common.cpp create mode 100644 .emacs.d/elpa/ac-clang-20150906.1008/clang-server/Common.hpp create mode 100755 .emacs.d/elpa/ac-clang-20150906.1008/clang-server/changes.org create mode 100644 .emacs.d/elpa/ac-clang-20150906.1008/clang-server/clang-c/BuildSystem.h create mode 100644 .emacs.d/elpa/ac-clang-20150906.1008/clang-server/clang-c/CXCompilationDatabase.h create mode 100644 .emacs.d/elpa/ac-clang-20150906.1008/clang-server/clang-c/CXErrorCode.h create mode 100644 .emacs.d/elpa/ac-clang-20150906.1008/clang-server/clang-c/CXString.h create mode 100644 .emacs.d/elpa/ac-clang-20150906.1008/clang-server/clang-c/Documentation.h create mode 100644 .emacs.d/elpa/ac-clang-20150906.1008/clang-server/clang-c/Index.h create mode 100644 .emacs.d/elpa/ac-clang-20150906.1008/clang-server/clang-c/Makefile create mode 100644 .emacs.d/elpa/ac-clang-20150906.1008/clang-server/clang-c/Platform.h create mode 100644 .emacs.d/elpa/ac-clang-20150906.1008/clang-server/clang-c/module.modulemap create mode 100644 .emacs.d/elpa/ac-clang-20150906.1008/clang-server/library/x86_32/debug/.gitkeep create mode 100644 .emacs.d/elpa/ac-clang-20150906.1008/clang-server/library/x86_32/release/.gitkeep create mode 100644 .emacs.d/elpa/ac-clang-20150906.1008/clang-server/library/x86_64/debug/.gitkeep create mode 100644 .emacs.d/elpa/ac-clang-20150906.1008/clang-server/library/x86_64/release/.gitkeep create mode 100644 .emacs.d/elpa/ac-clang-20150906.1008/clang-server/main.cpp create mode 100644 .emacs.d/elpa/ac-clang-20150906.1008/clang-server/patch/invalidate-mmap.patch create mode 100644 .emacs.d/elpa/ac-clang-20150906.1008/clang-server/patch/libclang-x86_64.patch create mode 100644 .emacs.d/elpa/ac-clang-20150906.1008/clang-server/readme.ja.md create mode 100644 .emacs.d/elpa/ac-clang-20150906.1008/clang-server/readme.ja.org create mode 100755 .emacs.d/elpa/ac-clang-20150906.1008/clang-server/readme.md create mode 100755 .emacs.d/elpa/ac-clang-20150906.1008/clang-server/readme.org create mode 100644 .emacs.d/elpa/ac-clang-20150906.1008/sample-pic-complete.png create mode 100644 .emacs.d/elpa/ac-math-20141116.1327/ac-math-autoloads.el create mode 100644 .emacs.d/elpa/ac-math-20141116.1327/ac-math-autoloads.el~ create mode 100644 .emacs.d/elpa/ac-math-20141116.1327/ac-math-pkg.el create mode 100644 .emacs.d/elpa/ac-math-20141116.1327/ac-math-pkg.elc create mode 100644 .emacs.d/elpa/ac-math-20141116.1327/ac-math.el create mode 100644 .emacs.d/elpa/ac-math-20141116.1327/ac-math.elc create mode 100644 .emacs.d/elpa/ac-octave-20150111.1708/ac-octave-autoloads.el create mode 100644 .emacs.d/elpa/ac-octave-20150111.1708/ac-octave-autoloads.el~ create mode 100644 .emacs.d/elpa/ac-octave-20150111.1708/ac-octave-pkg.el create mode 100644 .emacs.d/elpa/ac-octave-20150111.1708/ac-octave.el create mode 100644 .emacs.d/elpa/archives/gnu/archive-contents create mode 100644 .emacs.d/elpa/archives/gnu/archive-contents.signed create mode 100644 .emacs.d/elpa/archives/gnu/archive-contents~ create mode 100644 .emacs.d/elpa/archives/melpa/archive-contents create mode 100644 .emacs.d/elpa/auctex-11.89.1/.elpaignore create mode 100644 .emacs.d/elpa/auctex-11.89.1/COPYING create mode 100644 .emacs.d/elpa/auctex-11.89.1/ChangeLog create mode 100644 .emacs.d/elpa/auctex-11.89.1/ChangeLog-preview create mode 100644 .emacs.d/elpa/auctex-11.89.1/ChangeLog-preview.1 create mode 100644 .emacs.d/elpa/auctex-11.89.1/ChangeLog.1 create mode 100644 .emacs.d/elpa/auctex-11.89.1/GNUmakefile create mode 100644 .emacs.d/elpa/auctex-11.89.1/README create mode 100644 .emacs.d/elpa/auctex-11.89.1/README.GIT create mode 100644 .emacs.d/elpa/auctex-11.89.1/RELEASE create mode 100644 .emacs.d/elpa/auctex-11.89.1/auctex-autoloads.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/auctex-autoloads.el~ create mode 100644 .emacs.d/elpa/auctex-11.89.1/auctex-pkg.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/auctex-pkg.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/auctex.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/auctex.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/auctex.info create mode 100644 .emacs.d/elpa/auctex-11.89.1/bib-cite.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/bib-cite.elc create mode 100755 .emacs.d/elpa/auctex-11.89.1/build-aux/gitlog-to-changelog create mode 100644 .emacs.d/elpa/auctex-11.89.1/circ.tex create mode 100644 .emacs.d/elpa/auctex-11.89.1/context-en.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/context-en.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/context-nl.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/context-nl.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/context.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/context.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/dir create mode 100644 .emacs.d/elpa/auctex-11.89.1/doc/auctex.texi create mode 100644 .emacs.d/elpa/auctex-11.89.1/doc/changes.texi create mode 100644 .emacs.d/elpa/auctex-11.89.1/doc/copying.texi create mode 100644 .emacs.d/elpa/auctex-11.89.1/doc/faq.texi create mode 100644 .emacs.d/elpa/auctex-11.89.1/doc/fdl.texi create mode 100644 .emacs.d/elpa/auctex-11.89.1/doc/history.texi create mode 100644 .emacs.d/elpa/auctex-11.89.1/doc/install.texi create mode 100644 .emacs.d/elpa/auctex-11.89.1/doc/intro.texi create mode 100644 .emacs.d/elpa/auctex-11.89.1/doc/macros.texi create mode 100755 .emacs.d/elpa/auctex-11.89.1/doc/preview-dtxdoc.pl create mode 100644 .emacs.d/elpa/auctex-11.89.1/doc/preview-faq.texi create mode 100644 .emacs.d/elpa/auctex-11.89.1/doc/preview-latex.texi create mode 100644 .emacs.d/elpa/auctex-11.89.1/doc/preview-problems.texi create mode 100644 .emacs.d/elpa/auctex-11.89.1/doc/preview-readme.texi create mode 100644 .emacs.d/elpa/auctex-11.89.1/doc/preview-todo.texi create mode 100644 .emacs.d/elpa/auctex-11.89.1/doc/quickstart.texi create mode 100644 .emacs.d/elpa/auctex-11.89.1/doc/tex-ref.tex create mode 100644 .emacs.d/elpa/auctex-11.89.1/doc/todo.texi create mode 100644 .emacs.d/elpa/auctex-11.89.1/doc/wininstall.texi create mode 100644 .emacs.d/elpa/auctex-11.89.1/font-latex.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/font-latex.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/amstex.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/bibtex.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/dropdown.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/dvipdf.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/dvips.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/error.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/exec.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/execbibtex.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/execdvips.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/execerror.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/execpdftex.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/exectex.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/execviewdvi.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/execviewpdf.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/execviewps.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/gv.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/jumpdvi.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/ltx-symb-turn-off.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/ltx-symb-turn-on.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/pdftex.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/prverr16.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/prverr20.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/prverr24.xbm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/prverr24.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/prvtex-cap-up.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/prvtex12.xbm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/prvtex12.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/prvtex16.xbm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/prvtex16.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/prvtex20.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/prvtex24.xbm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/prvtex24.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/prvwrk12.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/prvwrk14.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/prvwrk16.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/prvwrk20.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/prvwrk24.xbm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/prvwrk24.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/pspdf.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/sep.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/spell.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/tex.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/view.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/viewdvi.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/viewpdf.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/images/viewps.xpm create mode 100644 .emacs.d/elpa/auctex-11.89.1/latex.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/latex.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/latex/README create mode 100644 .emacs.d/elpa/auctex-11.89.1/latex/bootstrap.ins create mode 100644 .emacs.d/elpa/auctex-11.89.1/latex/prauctex.cfg create mode 100644 .emacs.d/elpa/auctex-11.89.1/latex/prauctex.def create mode 100644 .emacs.d/elpa/auctex-11.89.1/latex/prcounters.def create mode 100644 .emacs.d/elpa/auctex-11.89.1/latex/preview.dtx create mode 100644 .emacs.d/elpa/auctex-11.89.1/latex/preview.sty create mode 100644 .emacs.d/elpa/auctex-11.89.1/latex/prfootnotes.def create mode 100644 .emacs.d/elpa/auctex-11.89.1/latex/prlyx.def create mode 100644 .emacs.d/elpa/auctex-11.89.1/latex/prshowbox.def create mode 100644 .emacs.d/elpa/auctex-11.89.1/latex/prshowlabels.def create mode 100644 .emacs.d/elpa/auctex-11.89.1/latex/prtightpage.def create mode 100644 .emacs.d/elpa/auctex-11.89.1/latex/prtracingall.def create mode 100644 .emacs.d/elpa/auctex-11.89.1/multi-prompt.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/multi-prompt.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/plain-tex.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/plain-tex.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/preview-latex.info create mode 100644 .emacs.d/elpa/auctex-11.89.1/preview.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/preview.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/prv-emacs.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/prv-emacs.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/prv-xemacs.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/prv-xemacs.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/.nosearch create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/Alegreya.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/Alegreya.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/AlegreyaSans.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/AlegreyaSans.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/AnonymousPro.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/AnonymousPro.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/CJK.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/CJK.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/CJKutf8.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/CJKutf8.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/MinionPro.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/MinionPro.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/MyriadPro.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/MyriadPro.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/XCharter.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/XCharter.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/acro.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/acro.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/acronym.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/acronym.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/afterpage.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/afterpage.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/alltt.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/alltt.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/alphanum.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/alphanum.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/amsart.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/amsart.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/amsbook.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/amsbook.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/amsbsy.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/amsbsy.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/amsmath.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/amsmath.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/amsopn.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/amsopn.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/amssymb.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/amssymb.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/amstex.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/amstex.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/amstext.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/amstext.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/amsthm.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/amsthm.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/array.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/array.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/article.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/article.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/attachfile.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/attachfile.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/austrian.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/austrian.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/babel.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/babel.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/baskervaldx.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/baskervaldx.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/beamer.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/beamer.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/biblatex.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/biblatex.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/bidibeamer.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/bidibeamer.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/bigdelim.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/bigdelim.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/bigstrut.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/bigstrut.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/bm.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/bm.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/book.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/book.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/booktabs.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/booktabs.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/bulgarian.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/bulgarian.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/captcont.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/captcont.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/caption.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/caption.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/cleveref.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/cleveref.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/color.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/color.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/colortbl.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/colortbl.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/comment.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/comment.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/csquotes.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/csquotes.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/currvita.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/currvita.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/czech.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/czech.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/danish.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/danish.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/dinbrief.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/dinbrief.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/dk-bib.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/dk-bib.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/dk.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/dk.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/doc.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/doc.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/dutch.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/dutch.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/emp.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/emp.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/english.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/english.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/enumitem.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/enumitem.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/environ.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/environ.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/epigraph.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/epigraph.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/epsf.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/epsf.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/erewhon.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/erewhon.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/eso-pic.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/eso-pic.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/everysel.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/everysel.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/exercise.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/exercise.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/expl3.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/expl3.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/fancyhdr.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/fancyhdr.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/fancynum.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/fancynum.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/fancyref.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/fancyref.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/fancyvrb.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/fancyvrb.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/fbb.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/fbb.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/filecontents.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/filecontents.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/flashcards.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/flashcards.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/foils.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/foils.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/fontaxes.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/fontaxes.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/fontenc.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/fontenc.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/fontspec.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/fontspec.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/footmisc.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/footmisc.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/francais.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/francais.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/french.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/french.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/frenchb.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/frenchb.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/geometry.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/geometry.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/german.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/german.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/gloss-italian.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/gloss-italian.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/graphics.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/graphics.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/graphicx.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/graphicx.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/harvard.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/harvard.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/hologo.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/hologo.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/hyperref.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/hyperref.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/icelandic.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/icelandic.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/ifluatex.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/ifluatex.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/imakeidx.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/imakeidx.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/index.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/index.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/inputenc.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/inputenc.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/italian.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/italian.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/j-article.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/j-article.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/j-book.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/j-book.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/j-report.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/j-report.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/jarticle.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/jarticle.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/jbook.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/jbook.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/jreport.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/jreport.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/jsarticle.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/jsarticle.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/jsbook.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/jsbook.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/jura.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/jura.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/jurabib.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/jurabib.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/kantlipsum.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/kantlipsum.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/kpfonts.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/kpfonts.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/latexinfo.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/latexinfo.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/letter.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/letter.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/lettrine.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/lettrine.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/lipsum.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/lipsum.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/listings.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/listings.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/longtable.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/longtable.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/lscape.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/lscape.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/ltablex.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/ltablex.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/ltx-base.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/ltx-base.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/ltxdoc.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/ltxdoc.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/ltxtable.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/ltxtable.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/luacode.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/luacode.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/luatextra.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/luatextra.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/makeidx.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/makeidx.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/mathtools.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/mathtools.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/mdsymbol.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/mdsymbol.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/mdwlist.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/mdwlist.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/memoir.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/memoir.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/metalogo.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/metalogo.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/mflogo.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/mflogo.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/minted.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/minted.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/mn2e.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/mn2e.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/mnras.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/mnras.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/multicol.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/multicol.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/multido.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/multido.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/multind.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/multind.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/multirow.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/multirow.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/nameref.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/nameref.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/natbib.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/natbib.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/naustrian.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/naustrian.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/newfloat.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/newfloat.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/newpxmath.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/newpxmath.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/newpxtext.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/newpxtext.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/newtxmath.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/newtxmath.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/newtxsf.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/newtxsf.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/newtxtext.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/newtxtext.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/newtxttt.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/newtxttt.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/ngerman.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/ngerman.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/nicefrac.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/nicefrac.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/nomencl.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/nomencl.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/ntheorem.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/ntheorem.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/paralist.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/paralist.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/pdfpages.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/pdfpages.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/pdfsync.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/pdfsync.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/placeins.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/placeins.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/plext.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/plext.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/plfonts.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/plfonts.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/plhb.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/plhb.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/polish.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/polish.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/polski.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/polski.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/polyglossia.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/polyglossia.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/prosper.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/prosper.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/psfig.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/psfig.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/pst-grad.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/pst-grad.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/pst-node.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/pst-node.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/pst-plot.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/pst-plot.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/pst-slpe.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/pst-slpe.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/pstricks.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/pstricks.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/ragged2e.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/ragged2e.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/relsize.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/relsize.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/report.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/report.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/ruby.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/ruby.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/scrartcl.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/scrartcl.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/scrbase.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/scrbase.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/scrbook.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/scrbook.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/scrlttr2.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/scrlttr2.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/scrpage2.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/scrpage2.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/scrreprt.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/scrreprt.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/setspace.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/setspace.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/shortvrb.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/shortvrb.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/siunitx.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/siunitx.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/slides.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/slides.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/slovak.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/slovak.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/subcaption.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/subcaption.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/subfigure.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/subfigure.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/swedish.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/swedish.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/tabularx.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/tabularx.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/tabulary.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/tabulary.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/tcolorbox.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/tcolorbox.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/textcomp.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/textcomp.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/textpos.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/textpos.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/theorem.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/theorem.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/transparent.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/transparent.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/ulem.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/ulem.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/unicode-math.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/unicode-math.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/units.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/units.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/url.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/url.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/varioref.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/varioref.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/verbatim.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/verbatim.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/virtex.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/virtex.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/vwcol.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/vwcol.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/wrapfig.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/wrapfig.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/xparse.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/xparse.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/xspace.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/xspace.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/zlmtt.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/style/zlmtt.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/tests/Makefile create mode 100644 .emacs.d/elpa/auctex-11.89.1/tests/latex/latex-filling-in.tex create mode 100644 .emacs.d/elpa/auctex-11.89.1/tests/latex/latex-filling-out.tex create mode 100644 .emacs.d/elpa/auctex-11.89.1/tests/latex/latex-test.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/tests/latex/latex-test.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/tests/latex/math-indent-in.tex create mode 100644 .emacs.d/elpa/auctex-11.89.1/tests/latex/math-indent-out.tex create mode 100644 .emacs.d/elpa/auctex-11.89.1/tests/latex/tabular-in.tex create mode 100644 .emacs.d/elpa/auctex-11.89.1/tests/latex/tabular-out.tex create mode 100644 .emacs.d/elpa/auctex-11.89.1/tests/tex/command-expansion.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/tests/tex/command-expansion.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/tex-bar.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/tex-bar.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/tex-buf.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/tex-buf.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/tex-fold.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/tex-fold.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/tex-font.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/tex-font.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/tex-info.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/tex-info.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/tex-jp.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/tex-jp.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/tex-mik.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/tex-mik.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/tex-site.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/tex-site.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/tex-style.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/tex-style.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/tex-wizard.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/tex-wizard.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/tex.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/tex.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/texmathp.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/texmathp.elc create mode 100644 .emacs.d/elpa/auctex-11.89.1/toolbar-x.el create mode 100644 .emacs.d/elpa/auctex-11.89.1/toolbar-x.elc create mode 100644 .emacs.d/elpa/auto-complete-20160107.8/auto-complete-autoloads.el create mode 100644 .emacs.d/elpa/auto-complete-20160107.8/auto-complete-autoloads.el~ create mode 100644 .emacs.d/elpa/auto-complete-20160107.8/auto-complete-config.el create mode 100644 .emacs.d/elpa/auto-complete-20160107.8/auto-complete-config.elc create mode 100644 .emacs.d/elpa/auto-complete-20160107.8/auto-complete-pkg.el create mode 100644 .emacs.d/elpa/auto-complete-20160107.8/auto-complete.el create mode 100644 .emacs.d/elpa/auto-complete-20160107.8/auto-complete.elc create mode 100644 .emacs.d/elpa/auto-complete-20160107.8/dict/ada-mode create mode 100644 .emacs.d/elpa/auto-complete-20160107.8/dict/c++-mode create mode 100644 .emacs.d/elpa/auto-complete-20160107.8/dict/c-mode create mode 100644 .emacs.d/elpa/auto-complete-20160107.8/dict/caml-mode create mode 100644 .emacs.d/elpa/auto-complete-20160107.8/dict/clojure-mode create mode 100644 .emacs.d/elpa/auto-complete-20160107.8/dict/clojurescript-mode create mode 100644 .emacs.d/elpa/auto-complete-20160107.8/dict/coq-mode create mode 100644 .emacs.d/elpa/auto-complete-20160107.8/dict/css-mode create mode 100644 .emacs.d/elpa/auto-complete-20160107.8/dict/erlang-mode create mode 100644 .emacs.d/elpa/auto-complete-20160107.8/dict/go-mode create mode 100644 .emacs.d/elpa/auto-complete-20160107.8/dict/haskell-mode create mode 100644 .emacs.d/elpa/auto-complete-20160107.8/dict/java-mode create mode 100644 .emacs.d/elpa/auto-complete-20160107.8/dict/js-mode create mode 100644 .emacs.d/elpa/auto-complete-20160107.8/dict/lua-mode create mode 100644 .emacs.d/elpa/auto-complete-20160107.8/dict/octave-mode create mode 100644 .emacs.d/elpa/auto-complete-20160107.8/dict/php-mode create mode 100644 .emacs.d/elpa/auto-complete-20160107.8/dict/python-mode create mode 100644 .emacs.d/elpa/auto-complete-20160107.8/dict/qml-mode create mode 100644 .emacs.d/elpa/auto-complete-20160107.8/dict/ruby-mode create mode 100644 .emacs.d/elpa/auto-complete-20160107.8/dict/scala-mode create mode 100644 .emacs.d/elpa/auto-complete-20160107.8/dict/scheme-mode create mode 100644 .emacs.d/elpa/auto-complete-20160107.8/dict/sclang-mode create mode 100644 .emacs.d/elpa/auto-complete-20160107.8/dict/sh-mode create mode 100644 .emacs.d/elpa/auto-complete-20160107.8/dict/tcl-mode create mode 100644 .emacs.d/elpa/auto-complete-20160107.8/dict/ts-mode create mode 100644 .emacs.d/elpa/auto-complete-20160107.8/dict/tuareg-mode create mode 100644 .emacs.d/elpa/auto-complete-20160107.8/dict/verilog-mode create mode 100644 .emacs.d/elpa/auto-complete-clang-async-20130526.814/auto-complete-clang-async-autoloads.el create mode 100644 .emacs.d/elpa/auto-complete-clang-async-20130526.814/auto-complete-clang-async-autoloads.el~ create mode 100644 .emacs.d/elpa/auto-complete-clang-async-20130526.814/auto-complete-clang-async-pkg.el create mode 100644 .emacs.d/elpa/auto-complete-clang-async-20130526.814/auto-complete-clang-async-pkg.elc create mode 100644 .emacs.d/elpa/auto-complete-clang-async-20130526.814/auto-complete-clang-async.el create mode 100644 .emacs.d/elpa/auto-complete-clang-async-20130526.814/auto-complete-clang-async.elc create mode 100644 .emacs.d/elpa/autopair-20140825.427/autopair-autoloads.el create mode 100644 .emacs.d/elpa/autopair-20140825.427/autopair-autoloads.el~ create mode 100644 .emacs.d/elpa/autopair-20140825.427/autopair-pkg.el create mode 100644 .emacs.d/elpa/autopair-20140825.427/autopair-pkg.elc create mode 100644 .emacs.d/elpa/autopair-20140825.427/autopair.el create mode 100644 .emacs.d/elpa/autopair-20140825.427/autopair.elc create mode 100644 .emacs.d/elpa/company-0.8.12/.dir-locals.el create mode 100644 .emacs.d/elpa/company-0.8.12/.elpaignore create mode 100644 .emacs.d/elpa/company-0.8.12/ChangeLog create mode 100644 .emacs.d/elpa/company-0.8.12/NEWS.md create mode 100644 .emacs.d/elpa/company-0.8.12/README.md create mode 100644 .emacs.d/elpa/company-0.8.12/company-abbrev.el create mode 100644 .emacs.d/elpa/company-0.8.12/company-abbrev.elc create mode 100644 .emacs.d/elpa/company-0.8.12/company-autoloads.el create mode 100644 .emacs.d/elpa/company-0.8.12/company-autoloads.el~ create mode 100644 .emacs.d/elpa/company-0.8.12/company-bbdb.el create mode 100644 .emacs.d/elpa/company-0.8.12/company-bbdb.elc create mode 100644 .emacs.d/elpa/company-0.8.12/company-capf.el create mode 100644 .emacs.d/elpa/company-0.8.12/company-capf.elc create mode 100644 .emacs.d/elpa/company-0.8.12/company-clang.el create mode 100644 .emacs.d/elpa/company-0.8.12/company-clang.elc create mode 100644 .emacs.d/elpa/company-0.8.12/company-cmake.el create mode 100644 .emacs.d/elpa/company-0.8.12/company-cmake.elc create mode 100644 .emacs.d/elpa/company-0.8.12/company-css.el create mode 100644 .emacs.d/elpa/company-0.8.12/company-css.elc create mode 100644 .emacs.d/elpa/company-0.8.12/company-dabbrev-code.el create mode 100644 .emacs.d/elpa/company-0.8.12/company-dabbrev-code.elc create mode 100644 .emacs.d/elpa/company-0.8.12/company-dabbrev.el create mode 100644 .emacs.d/elpa/company-0.8.12/company-dabbrev.elc create mode 100644 .emacs.d/elpa/company-0.8.12/company-eclim.el create mode 100644 .emacs.d/elpa/company-0.8.12/company-eclim.elc create mode 100644 .emacs.d/elpa/company-0.8.12/company-elisp.el create mode 100644 .emacs.d/elpa/company-0.8.12/company-elisp.elc create mode 100644 .emacs.d/elpa/company-0.8.12/company-etags.el create mode 100644 .emacs.d/elpa/company-0.8.12/company-etags.elc create mode 100644 .emacs.d/elpa/company-0.8.12/company-files.el create mode 100644 .emacs.d/elpa/company-0.8.12/company-files.elc create mode 100644 .emacs.d/elpa/company-0.8.12/company-gtags.el create mode 100644 .emacs.d/elpa/company-0.8.12/company-gtags.elc create mode 100644 .emacs.d/elpa/company-0.8.12/company-ispell.el create mode 100644 .emacs.d/elpa/company-0.8.12/company-ispell.elc create mode 100644 .emacs.d/elpa/company-0.8.12/company-keywords.el create mode 100644 .emacs.d/elpa/company-0.8.12/company-keywords.elc create mode 100644 .emacs.d/elpa/company-0.8.12/company-nxml.el create mode 100644 .emacs.d/elpa/company-0.8.12/company-nxml.elc create mode 100644 .emacs.d/elpa/company-0.8.12/company-oddmuse.el create mode 100644 .emacs.d/elpa/company-0.8.12/company-oddmuse.elc create mode 100644 .emacs.d/elpa/company-0.8.12/company-pkg.el create mode 100644 .emacs.d/elpa/company-0.8.12/company-pkg.elc create mode 100644 .emacs.d/elpa/company-0.8.12/company-pysmell.el create mode 100644 .emacs.d/elpa/company-0.8.12/company-pysmell.elc create mode 100644 .emacs.d/elpa/company-0.8.12/company-ropemacs.el create mode 100644 .emacs.d/elpa/company-0.8.12/company-ropemacs.elc create mode 100644 .emacs.d/elpa/company-0.8.12/company-semantic.el create mode 100644 .emacs.d/elpa/company-0.8.12/company-semantic.elc create mode 100644 .emacs.d/elpa/company-0.8.12/company-template.el create mode 100644 .emacs.d/elpa/company-0.8.12/company-template.elc create mode 100644 .emacs.d/elpa/company-0.8.12/company-tempo.el create mode 100644 .emacs.d/elpa/company-0.8.12/company-tempo.elc create mode 100644 .emacs.d/elpa/company-0.8.12/company-xcode.el create mode 100644 .emacs.d/elpa/company-0.8.12/company-xcode.elc create mode 100644 .emacs.d/elpa/company-0.8.12/company-yasnippet.el create mode 100644 .emacs.d/elpa/company-0.8.12/company-yasnippet.elc create mode 100644 .emacs.d/elpa/company-0.8.12/company.el create mode 100644 .emacs.d/elpa/company-0.8.12/company.elc create mode 100644 .emacs.d/elpa/company-0.8.12/test/all.el create mode 100644 .emacs.d/elpa/company-0.8.12/test/all.elc create mode 100644 .emacs.d/elpa/company-0.8.12/test/async-tests.el create mode 100644 .emacs.d/elpa/company-0.8.12/test/clang-tests.el create mode 100644 .emacs.d/elpa/company-0.8.12/test/core-tests.el create mode 100644 .emacs.d/elpa/company-0.8.12/test/elisp-tests.el create mode 100644 .emacs.d/elpa/company-0.8.12/test/frontends-tests.el create mode 100644 .emacs.d/elpa/company-0.8.12/test/keywords-tests.el create mode 100644 .emacs.d/elpa/company-0.8.12/test/keywords-tests.elc create mode 100644 .emacs.d/elpa/company-0.8.12/test/template-tests.el create mode 100644 .emacs.d/elpa/company-0.8.12/test/transformers-tests.el create mode 100644 .emacs.d/elpa/company-20160211.520/company-abbrev.el create mode 100644 .emacs.d/elpa/company-20160211.520/company-abbrev.elc create mode 100644 .emacs.d/elpa/company-20160211.520/company-autoloads.el create mode 100644 .emacs.d/elpa/company-20160211.520/company-autoloads.el~ create mode 100644 .emacs.d/elpa/company-20160211.520/company-bbdb.el create mode 100644 .emacs.d/elpa/company-20160211.520/company-bbdb.elc create mode 100644 .emacs.d/elpa/company-20160211.520/company-capf.el create mode 100644 .emacs.d/elpa/company-20160211.520/company-capf.elc create mode 100644 .emacs.d/elpa/company-20160211.520/company-clang.el create mode 100644 .emacs.d/elpa/company-20160211.520/company-clang.elc create mode 100644 .emacs.d/elpa/company-20160211.520/company-cmake.el create mode 100644 .emacs.d/elpa/company-20160211.520/company-cmake.elc create mode 100644 .emacs.d/elpa/company-20160211.520/company-css.el create mode 100644 .emacs.d/elpa/company-20160211.520/company-css.elc create mode 100644 .emacs.d/elpa/company-20160211.520/company-dabbrev-code.el create mode 100644 .emacs.d/elpa/company-20160211.520/company-dabbrev-code.elc create mode 100644 .emacs.d/elpa/company-20160211.520/company-dabbrev.el create mode 100644 .emacs.d/elpa/company-20160211.520/company-dabbrev.elc create mode 100644 .emacs.d/elpa/company-20160211.520/company-eclim.el create mode 100644 .emacs.d/elpa/company-20160211.520/company-eclim.elc create mode 100644 .emacs.d/elpa/company-20160211.520/company-elisp.el create mode 100644 .emacs.d/elpa/company-20160211.520/company-elisp.elc create mode 100644 .emacs.d/elpa/company-20160211.520/company-etags.el create mode 100644 .emacs.d/elpa/company-20160211.520/company-etags.elc create mode 100644 .emacs.d/elpa/company-20160211.520/company-files.el create mode 100644 .emacs.d/elpa/company-20160211.520/company-files.elc create mode 100644 .emacs.d/elpa/company-20160211.520/company-gtags.el create mode 100644 .emacs.d/elpa/company-20160211.520/company-gtags.elc create mode 100644 .emacs.d/elpa/company-20160211.520/company-ispell.el create mode 100644 .emacs.d/elpa/company-20160211.520/company-ispell.elc create mode 100644 .emacs.d/elpa/company-20160211.520/company-keywords.el create mode 100644 .emacs.d/elpa/company-20160211.520/company-keywords.elc create mode 100644 .emacs.d/elpa/company-20160211.520/company-nxml.el create mode 100644 .emacs.d/elpa/company-20160211.520/company-nxml.elc create mode 100644 .emacs.d/elpa/company-20160211.520/company-oddmuse.el create mode 100644 .emacs.d/elpa/company-20160211.520/company-oddmuse.elc create mode 100644 .emacs.d/elpa/company-20160211.520/company-pkg.el create mode 100644 .emacs.d/elpa/company-20160211.520/company-semantic.el create mode 100644 .emacs.d/elpa/company-20160211.520/company-semantic.elc create mode 100644 .emacs.d/elpa/company-20160211.520/company-template.el create mode 100644 .emacs.d/elpa/company-20160211.520/company-template.elc create mode 100644 .emacs.d/elpa/company-20160211.520/company-tempo.el create mode 100644 .emacs.d/elpa/company-20160211.520/company-tempo.elc create mode 100644 .emacs.d/elpa/company-20160211.520/company-xcode.el create mode 100644 .emacs.d/elpa/company-20160211.520/company-xcode.elc create mode 100644 .emacs.d/elpa/company-20160211.520/company-yasnippet.el create mode 100644 .emacs.d/elpa/company-20160211.520/company-yasnippet.elc create mode 100644 .emacs.d/elpa/company-20160211.520/company.el create mode 100644 .emacs.d/elpa/company-20160211.520/company.elc create mode 100644 .emacs.d/elpa/company-irony-20150810.239/company-irony-autoloads.el create mode 100644 .emacs.d/elpa/company-irony-20150810.239/company-irony-autoloads.el~ create mode 100644 .emacs.d/elpa/company-irony-20150810.239/company-irony-pkg.el create mode 100644 .emacs.d/elpa/company-irony-20150810.239/company-irony-pkg.elc create mode 100644 .emacs.d/elpa/company-irony-20150810.239/company-irony.el create mode 100644 .emacs.d/elpa/company-irony-20150810.239/company-irony.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/.dir-locals.el create mode 100644 .emacs.d/elpa/ess-20160208.453/allnews.info create mode 100644 .emacs.d/elpa/ess-20160208.453/announc.info create mode 100644 .emacs.d/elpa/ess-20160208.453/authors.info create mode 100644 .emacs.d/elpa/ess-20160208.453/bugrept.info create mode 100644 .emacs.d/elpa/ess-20160208.453/bugs-ms.info create mode 100644 .emacs.d/elpa/ess-20160208.453/credits.info create mode 100644 .emacs.d/elpa/ess-20160208.453/currfeat.info create mode 100644 .emacs.d/elpa/ess-20160208.453/dir create mode 100644 .emacs.d/elpa/ess-20160208.453/ess-autoloads.el create mode 100644 .emacs.d/elpa/ess-20160208.453/ess-autoloads.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/ess-autoloads.el~ create mode 100644 .emacs.d/elpa/ess-20160208.453/ess-defs.info create mode 100644 .emacs.d/elpa/ess-20160208.453/ess-pkg.el create mode 100644 .emacs.d/elpa/ess-20160208.453/ess.info create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/BACKBUG5.BAT create mode 100755 .emacs.d/elpa/ess-20160208.453/etc/BACKBUGS.BAT create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/C-cC-c-probl.R create mode 100755 .emacs.d/elpa/ess-20160208.453/etc/ESSR/BUILDESSR create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/ESSR/LOADREMOTE create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/ESSR/R/.basic.R create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/ESSR/R/.load.R create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/ESSR/R/completion.R create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/ESSR/R/debug.R create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/ESSR/R/developer.R create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/ESSR/R/misc.R create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/ESSR/VERSION create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/Extract.factor.Rd create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/Makefile create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/R-ESS-bugs.R create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/R-ESS-bugs.el create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/R-ESS-bugs.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/R-oxygen-ex.R create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/R-pager.R create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/R_error_patterns.R create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/Rnw-ess-bugs.Rnw create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/SAS-bugs.sas create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/TODO.org create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/backbug5 create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/backbug5.sparc create mode 100755 .emacs.d/elpa/ess-20160208.453/etc/backbugs create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/backbugs.sparc create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/checkTriple.Rd create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/chol2inv-ex.Rd create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/completion_ideas.R create mode 100755 .emacs.d/elpa/ess-20160208.453/etc/config.guess create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/ess-julia.jl create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/ess-roxy-tests.R create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/ess-rutils-help-start.R create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/ess-s4.S create mode 100755 .emacs.d/elpa/ess-20160208.453/etc/ess-sas-sh-command create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/ess-sp3.S create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/function-outline.S create mode 100755 .emacs.d/elpa/ess-20160208.453/etc/gpl-check create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/icons/README create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/icons/rbuffer.xpm create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/icons/rfunction.xpm create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/icons/rline.xpm create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/icons/rregion.xpm create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/icons/splus_letter_small.xpm create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/icons/splus_letters_large.png create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/icons/splus_letters_large.xpm create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/icons/spluslogo.xpm create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/icons/spluslogo.xpm.safe create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/icons/startr.xpm create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/icons/switch_ess.xpm create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/icons/switchr.xpm create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/icons/switchs.xpm create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/in-string-bug-ex.Rnw create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/other/S-spread/README create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/other/S-spread/S-spread.el create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/other/S-spread/S-spread.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/other/S-spread/asaprc.ps create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/other/S-spread/gradexmp.s create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/other/S-spread/sprd-emc.s create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/other/S-spread/sprd-grd.s create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/other/S-spread/sprd-int.el create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/other/S-spread/sprd-int.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/other/S-spread/sprd-spr.s create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/other/S-spread/sprd-txt.s create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/other/S-spread/sprd3d.how create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/other/test create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/pkg-Maintainers create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/pkg1/DESCRIPTION create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/pkg1/NAMESPACE create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/pkg1/R/D1tr.R create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/pkg1/man/D1tr.Rd create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/sas-keys.doc create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/sas-keys.ps create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/sas-keys.rtf create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/sje-ess-notes.txt create mode 100644 .emacs.d/elpa/ess-20160208.453/etc/slow-long-output.R create mode 100644 .emacs.d/elpa/ess-20160208.453/inst_svn.info create mode 100644 .emacs.d/elpa/ess-20160208.453/installation.info create mode 100644 .emacs.d/elpa/ess-20160208.453/license.info create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-arc-d.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-arc-d.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-bugs-d.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-bugs-d.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-bugs-l.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-bugs-l.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-comp.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-comp.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-compat.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-compat.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-custom.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-custom.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-dde.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-dde.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-debug.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-debug.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-developer.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-developer.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-eldoc.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-eldoc.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-font-lock.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-font-lock.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-gretl.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-gretl.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-help.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-help.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-inf.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-inf.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-install.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-install.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-jags-d.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-jags-d.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-julia.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-julia.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-lsp-l.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-lsp-l.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-menu.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-menu.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-mode.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-mode.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-mouse.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-mouse.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-noweb-font-lock-mode.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-noweb-font-lock-mode.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-noweb-mode.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-noweb-mode.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-noweb.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-noweb.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-omg-d.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-omg-d.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-omg-l.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-omg-l.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-r-a.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-r-a.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-r-args.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-r-args.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-r-completion.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-r-completion.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-r-d.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-r-d.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-r-gui.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-r-gui.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-r-syntax.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-r-syntax.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-rd.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-rd.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-rdired.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-rdired.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-roxy.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-roxy.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-rutils.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-rutils.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-s-l.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-s-l.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-s3-d.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-s3-d.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-s4-d.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-s4-d.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-sas-a.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-sas-a.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-sas-d.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-sas-d.elc create mode 100755 .emacs.d/elpa/ess-20160208.453/lisp/ess-sas-l.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-sas-l.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-send.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-send.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-send2.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-send2.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-site.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-site.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-sp3-d.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-sp3-d.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-sp4-d.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-sp4-d.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-sp5-d.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-sp5-d.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-sp6-d.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-sp6-d.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-sp6w-d.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-sp6w-d.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-sta-d.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-sta-d.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-sta-l.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-sta-l.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-swv.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-swv.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-toolbar.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-toolbar.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-tracebug.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-tracebug.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-trns.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-trns.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-utils.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-utils.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-vst-d.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-vst-d.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-xls-d.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess-xls-d.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/ess.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/essd-els.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/essd-els.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/make-regexp.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/make-regexp.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/mouseme.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/mouseme.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/msdos.el create mode 100644 .emacs.d/elpa/ess-20160208.453/lisp/msdos.elc create mode 100644 .emacs.d/elpa/ess-20160208.453/mailing.info create mode 100644 .emacs.d/elpa/ess-20160208.453/news.info create mode 100644 .emacs.d/elpa/ess-20160208.453/onews.info create mode 100644 .emacs.d/elpa/ess-20160208.453/readme.info create mode 100644 .emacs.d/elpa/ess-20160208.453/requires.info create mode 100644 .emacs.d/elpa/ess-20160208.453/stabilty.info create mode 100644 .emacs.d/elpa/gnupg/pubring.gpg create mode 100644 .emacs.d/elpa/gnupg/pubring.gpg~ create mode 100644 .emacs.d/elpa/gnupg/secring.gpg create mode 100644 .emacs.d/elpa/gnupg/trustdb.gpg create mode 100644 .emacs.d/elpa/irony-20160203.1207/.dir-locals.el create mode 100644 .emacs.d/elpa/irony-20160203.1207/irony-autoloads.el create mode 100644 .emacs.d/elpa/irony-20160203.1207/irony-autoloads.el~ create mode 100644 .emacs.d/elpa/irony-20160203.1207/irony-cdb-clang-complete.el create mode 100644 .emacs.d/elpa/irony-20160203.1207/irony-cdb-clang-complete.elc create mode 100644 .emacs.d/elpa/irony-20160203.1207/irony-cdb-json.el create mode 100644 .emacs.d/elpa/irony-20160203.1207/irony-cdb-json.elc create mode 100644 .emacs.d/elpa/irony-20160203.1207/irony-cdb-libclang.el create mode 100644 .emacs.d/elpa/irony-20160203.1207/irony-cdb-libclang.elc create mode 100644 .emacs.d/elpa/irony-20160203.1207/irony-cdb.el create mode 100644 .emacs.d/elpa/irony-20160203.1207/irony-cdb.elc create mode 100644 .emacs.d/elpa/irony-20160203.1207/irony-completion.el create mode 100644 .emacs.d/elpa/irony-20160203.1207/irony-completion.elc create mode 100644 .emacs.d/elpa/irony-20160203.1207/irony-diagnostics.el create mode 100644 .emacs.d/elpa/irony-20160203.1207/irony-diagnostics.elc create mode 100644 .emacs.d/elpa/irony-20160203.1207/irony-pkg.el create mode 100644 .emacs.d/elpa/irony-20160203.1207/irony-snippet.el create mode 100644 .emacs.d/elpa/irony-20160203.1207/irony-snippet.elc create mode 100644 .emacs.d/elpa/irony-20160203.1207/irony.el create mode 100644 .emacs.d/elpa/irony-20160203.1207/irony.elc create mode 100644 .emacs.d/elpa/irony-20160203.1207/server/.clang-format create mode 100644 .emacs.d/elpa/irony-20160203.1207/server/CMakeLists.txt create mode 100644 .emacs.d/elpa/irony-20160203.1207/server/cmake/CheckLibClangBuiltinHeadersDir.cmake create mode 100644 .emacs.d/elpa/irony-20160203.1207/server/cmake/LibClangDiagnosticsChecker.cpp create mode 100644 .emacs.d/elpa/irony-20160203.1207/server/cmake/modules/FindLibClang.cmake create mode 100644 .emacs.d/elpa/irony-20160203.1207/server/cmake/utils.cmake create mode 100644 .emacs.d/elpa/irony-20160203.1207/server/docs/CMakeLists.txt create mode 100644 .emacs.d/elpa/irony-20160203.1207/server/docs/irony-server.cfg.in create mode 100644 .emacs.d/elpa/irony-20160203.1207/server/src/CMakeLists.txt create mode 100644 .emacs.d/elpa/irony-20160203.1207/server/src/Command.cpp create mode 100644 .emacs.d/elpa/irony-20160203.1207/server/src/Command.h create mode 100644 .emacs.d/elpa/irony-20160203.1207/server/src/Commands.def create mode 100644 .emacs.d/elpa/irony-20160203.1207/server/src/Irony.cpp create mode 100644 .emacs.d/elpa/irony-20160203.1207/server/src/Irony.h create mode 100644 .emacs.d/elpa/irony-20160203.1207/server/src/TUManager.cpp create mode 100644 .emacs.d/elpa/irony-20160203.1207/server/src/TUManager.h create mode 100644 .emacs.d/elpa/irony-20160203.1207/server/src/main.cpp create mode 100644 .emacs.d/elpa/irony-20160203.1207/server/src/support/CIndex.h create mode 100644 .emacs.d/elpa/irony-20160203.1207/server/src/support/CommandLineParser.cpp create mode 100644 .emacs.d/elpa/irony-20160203.1207/server/src/support/CommandLineParser.h create mode 100644 .emacs.d/elpa/irony-20160203.1207/server/src/support/NonCopyable.h create mode 100644 .emacs.d/elpa/irony-20160203.1207/server/src/support/TemporaryFile.cpp create mode 100644 .emacs.d/elpa/irony-20160203.1207/server/src/support/TemporaryFile.h create mode 100644 .emacs.d/elpa/irony-20160203.1207/server/src/support/arraysize.h create mode 100644 .emacs.d/elpa/irony-20160203.1207/server/src/support/iomanip_quoted.h create mode 100644 .emacs.d/elpa/irony-20160203.1207/server/test/CMakeLists.txt create mode 100644 .emacs.d/elpa/irony-20160203.1207/server/test/elisp/CMakeLists.txt create mode 100644 .emacs.d/elpa/irony-20160203.1207/server/test/elisp/irony-cdb-json.el create mode 100644 .emacs.d/elpa/irony-20160203.1207/server/test/elisp/irony.el create mode 100644 .emacs.d/elpa/irony-20160203.1207/server/test/elisp/support/ert.el create mode 100644 .emacs.d/elpa/irony-20160203.1207/server/test/elisp/support/ert.elc create mode 100644 .emacs.d/elpa/irony-20160203.1207/server/test/elisp/test-config.el create mode 100644 .emacs.d/elpa/julia-mode-20150912.800/julia-mode-autoloads.el create mode 100644 .emacs.d/elpa/julia-mode-20150912.800/julia-mode-autoloads.el~ create mode 100644 .emacs.d/elpa/julia-mode-20150912.800/julia-mode-pkg.el create mode 100644 .emacs.d/elpa/julia-mode-20150912.800/julia-mode-pkg.elc create mode 100644 .emacs.d/elpa/julia-mode-20150912.800/julia-mode.el create mode 100644 .emacs.d/elpa/julia-mode-20150912.800/julia-mode.elc create mode 100644 .emacs.d/elpa/markdown-mode-20160211.50/markdown-mode-autoloads.el create mode 100644 .emacs.d/elpa/markdown-mode-20160211.50/markdown-mode-autoloads.el~ create mode 100644 .emacs.d/elpa/markdown-mode-20160211.50/markdown-mode-pkg.el create mode 100644 .emacs.d/elpa/markdown-mode-20160211.50/markdown-mode-pkg.elc create mode 100644 .emacs.d/elpa/markdown-mode-20160211.50/markdown-mode.el create mode 100644 .emacs.d/elpa/markdown-mode-20160211.50/markdown-mode.elc create mode 100644 .emacs.d/elpa/math-symbol-lists-20151215.1043/math-symbol-lists-autoloads.el create mode 100644 .emacs.d/elpa/math-symbol-lists-20151215.1043/math-symbol-lists-autoloads.el~ create mode 100644 .emacs.d/elpa/math-symbol-lists-20151215.1043/math-symbol-lists-pkg.el create mode 100644 .emacs.d/elpa/math-symbol-lists-20151215.1043/math-symbol-lists-pkg.elc create mode 100644 .emacs.d/elpa/math-symbol-lists-20151215.1043/math-symbol-lists.el create mode 100644 .emacs.d/elpa/math-symbol-lists-20151215.1043/math-symbol-lists.elc create mode 100644 .emacs.d/elpa/openwith-20120531.1436/openwith-autoloads.el create mode 100644 .emacs.d/elpa/openwith-20120531.1436/openwith-autoloads.el~ create mode 100644 .emacs.d/elpa/openwith-20120531.1436/openwith-pkg.el create mode 100644 .emacs.d/elpa/openwith-20120531.1436/openwith-pkg.elc create mode 100644 .emacs.d/elpa/openwith-20120531.1436/openwith.el create mode 100644 .emacs.d/elpa/openwith-20120531.1436/openwith.elc create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-array.el create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-array.elc create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-classobj.el create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-classobj.elc create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-control-structures.el create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-control-structures.elc create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-crack.el create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-crack.elc create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-dio.el create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-dio.elc create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-dom.el create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-dom.elc create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-exceptions.el create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-exceptions.elc create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-exif.el create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-exif.elc create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-ext.el create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-ext.elc create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-filesystem.el create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-filesystem.elc create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-gd.el create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-gd.elc create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-math.el create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-math.elc create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-mode-autoloads.el create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-mode-autoloads.el~ create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-mode-pkg.el create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-mode.el create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-mode.elc create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-pcre.el create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-pcre.elc create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-regex.el create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-regex.elc create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-simplexml.el create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-simplexml.elc create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-strings.el create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-strings.elc create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-var.el create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-var.elc create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-xmlparser.el create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-xmlparser.elc create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-xmlreader.el create mode 100644 .emacs.d/elpa/php-mode-20151002.2030/php-xmlreader.elc create mode 100644 .emacs.d/elpa/popup-20151222.1339/popup-autoloads.el create mode 100644 .emacs.d/elpa/popup-20151222.1339/popup-autoloads.el~ create mode 100644 .emacs.d/elpa/popup-20151222.1339/popup-pkg.el create mode 100644 .emacs.d/elpa/popup-20151222.1339/popup-pkg.elc create mode 100644 .emacs.d/elpa/popup-20151222.1339/popup.el create mode 100644 .emacs.d/elpa/popup-20151222.1339/popup.elc create mode 100644 .emacs.d/elpa/pos-tip-20150318.813/pos-tip-autoloads.el create mode 100644 .emacs.d/elpa/pos-tip-20150318.813/pos-tip-autoloads.el~ create mode 100644 .emacs.d/elpa/pos-tip-20150318.813/pos-tip-pkg.el create mode 100644 .emacs.d/elpa/pos-tip-20150318.813/pos-tip-pkg.elc create mode 100644 .emacs.d/elpa/pos-tip-20150318.813/pos-tip.el create mode 100644 .emacs.d/elpa/pos-tip-20150318.813/pos-tip.elc create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/.gitignore create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/.nosearch create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/CONTRIBUTORS.txt create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/LICENSE create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/README.md create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/antlr-mode/project create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/antlr-mode/property create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/antlr-mode/target create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/applescript-mode/.yas-parents create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/.yas-parents create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/assert create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/beginend create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/beginend~ create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/boost_require create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/cerr create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/cin create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/class create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/const_[] create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/const_[]~ create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/constructor create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/constructor~ create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/cout create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/cpp create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/cstd create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/d+= create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/d_operator create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/d_operator[] create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/d_operator[]_const create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/d_operator_istream create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/d_operator_ostream create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/delete create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/delete[] create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/doc create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/dynamic_casting create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/enum create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/fixture create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/fori create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/fori~ create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/friend create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/fun_declaration create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/function create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/function~ create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/gtest create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/ignore create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/inline create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/io create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/iterator create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/map create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/module create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/namespace create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/ns create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/operator!= create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/operator!=~ create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/operator+ create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/operator+= create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/operator+=~ create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/operator+~ create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/operator= create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/operator== create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/operator==~ create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/operator=~ create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/operator[] create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/operator[]~ create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/operator_istream create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/operator_istream~ create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/operator_ostream create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/operator_ostream~ create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/ostream create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/pack create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/private create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/protected create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/public create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/sstream create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/std create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/std_colon create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/str create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/template create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/test case create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/test_main create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/test_suite create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/this create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/throw create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/try create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/tryw create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/tryw~ create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/try~ create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/using create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c++-mode/vector create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c-mode/.yas-parents create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c-mode/assert create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c-mode/compile create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c-mode/define create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c-mode/malloc create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c-mode/packed create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c-mode/printf create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c-mode/stdio create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c-mode/stdlib create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c-mode/string create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c-mode/union create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/c-mode/unistd create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cc-mode/case create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cc-mode/do create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cc-mode/do~ create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cc-mode/else create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cc-mode/file_description create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cc-mode/fopen create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cc-mode/for create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cc-mode/for_n create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cc-mode/for_n~ create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cc-mode/function_description create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cc-mode/if create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cc-mode/ifdef create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cc-mode/inc create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cc-mode/inc.1 create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cc-mode/main create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cc-mode/main~ create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cc-mode/math create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cc-mode/member_description create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cc-mode/once create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cc-mode/printf create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cc-mode/struct create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cc-mode/struct~ create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cc-mode/switch create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cc-mode/ternary create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cc-mode/typedef create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cc-mode/while create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/action create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/bash create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/cookbook_file create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/cron create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/cronf create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/deploy create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/directory create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/directoryf create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/env create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/execute create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/executef create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/file create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/filef create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/git create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/group create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/http_request create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/http_requestp create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/ignore_failure create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/inc create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/link create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/linkf create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/log create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/machine create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/meta create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/not_if create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/notifies create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/only_if create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/pac create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/pak create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/provider create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/python create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/remote_file create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/retries create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/role create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/ruby create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/script create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/service create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/servicep create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/subscribes create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/supports create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/template create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/templatev create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/chef-mode/user create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/cider-repl-mode create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/clojure-mode/.yas-parents create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/clojure-mode/bench create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/clojure-mode/bp create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/clojure-mode/def create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/clojure-mode/defm create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/clojure-mode/defn create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/clojure-mode/defr create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/clojure-mode/deft create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/clojure-mode/doseq create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/clojure-mode/fn create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/clojure-mode/for create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/clojure-mode/if create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/clojure-mode/ifl create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/clojure-mode/import create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/clojure-mode/is create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/clojure-mode/let create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/clojure-mode/map create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/clojure-mode/map.lambda create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/clojure-mode/mdoc create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/clojure-mode/ns create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/clojure-mode/opts create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/clojure-mode/pr create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/clojure-mode/print create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/clojure-mode/reduce create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/clojure-mode/require create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/clojure-mode/test create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/clojure-mode/try create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/clojure-mode/use create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/clojure-mode/when create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/clojure-mode/whenl create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cmake-mode/add_executable create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cmake-mode/add_library create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cmake-mode/cmake_minimum_required create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cmake-mode/foreach create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cmake-mode/function create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cmake-mode/if create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cmake-mode/ifelse create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cmake-mode/include create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cmake-mode/macro create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cmake-mode/message create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cmake-mode/option create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cmake-mode/project create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cmake-mode/set create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/conf-unix-mode/.yas-parents create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/conf-unix-mode/section create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cperl-mode/.yas-parents create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/EV create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/emit_signal create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/intuniform create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/math create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/nan create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/omnet create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/parameter_omnetpp create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/scheduleAt create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/cpp-omnet-mode/uniform create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/csharp-mode/.yas-parents create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/csharp-mode/attrib create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/csharp-mode/attrib.1 create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/csharp-mode/attrib.2 create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/csharp-mode/class create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/csharp-mode/comment create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/csharp-mode/comment.1 create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/csharp-mode/comment.2 create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/csharp-mode/comment.3 create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/csharp-mode/method create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/csharp-mode/namespace create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/csharp-mode/prop create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/csharp-mode/region create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/csharp-mode/using create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/csharp-mode/using.1 create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/csharp-mode/using.2 create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/css-mode/bg create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/css-mode/bg.1 create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/css-mode/bor create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/css-mode/cl create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/css-mode/disp.block create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/css-mode/disp.inline create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/css-mode/disp.none create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/css-mode/ff create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/css-mode/fs create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/css-mode/mar.bottom create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/css-mode/mar.left create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/css-mode/mar.mar create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/css-mode/mar.margin create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/css-mode/mar.right create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/css-mode/mar.top create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/css-mode/pad.bottom create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/css-mode/pad.left create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/css-mode/pad.pad create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/css-mode/pad.padding create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/css-mode/pad.right create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/css-mode/pad.top create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/css-mode/v create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/elixir-mode/.yas-parents create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/elixir-mode/case create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/elixir-mode/cond create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/elixir-mode/def create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/elixir-mode/defmacro create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/elixir-mode/defmacrop create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/elixir-mode/defmodule create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/elixir-mode/defp create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/elixir-mode/doc create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/elixir-mode/mdoc create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/.read_me create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/add-hook create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/and create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/append create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/apply create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/aref create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/aset create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/assq create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/autoload create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/backward-char create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/beginning-of-line create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/bounds-of-thing-at-point create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/buffer-file-name create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/buffer-modified-p create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/buffer-substring create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/buffer-substring-no-properties create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/car create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/cdr create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/concat create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/cond create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/condition-case create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/cons create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/consp create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/copy-directory create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/copy-file create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/current-buffer create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/custom-autoload create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/defalias create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/defcustom create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/define-key create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/defsubst create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/defun create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/defvar create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/delete-char create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/delete-directory create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/delete-file create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/delete-region create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/directory-files create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/dired.process_marked create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/dolist create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/end-of-line create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/eq create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/equal create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/error create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/ert-deftest create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/expand-file-name create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/f create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/fboundp create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/file-name-directory create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/file-name-extension create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/file-name-nondirectory create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/file-name-sans-extension create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/file-relative-name create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/file.process create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/file.read-lines create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/find-file create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/find-replace create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/format create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/forward-char create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/forward-line create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/funcall create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/function create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/get create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/global-set-key create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/goto-char create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/grabstring create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/grabthing create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/hash create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/if create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/insert create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/insert-file-contents create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/interactive create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/kbd create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/kill-buffer create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/lambda create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/length create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/let create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/line-beginning-position create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/line-end-position create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/list create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/looking-at create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/make-directory create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/make-local-variable create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/mapc create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/mapcar create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/match-beginning create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/match-end create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/match-string create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/memq create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/message create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/minor_mode create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/not create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/nth create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/null create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/number-to-string create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/or create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/point create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/point-max create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/point-min create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/princ create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/print create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/progn create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/push create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/put create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/re-search-backward create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/re-search-forward create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/region-active-p create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/region-beginning create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/region-end create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/rename-file create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/repeat create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/replace-regexp create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/replace-regexp-in-string create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/require create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/save-buffer create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/save-excursion create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/search-backward create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/search-backward-regexp create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/search-forward create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/search-forward-regexp create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/set create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/set-buffer create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/set-file-modes create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/set-mark create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/setq create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/should create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/skip-chars-backward create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/skip-chars-forward create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/split-string create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/string create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/string-match create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/string-to-number create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/string= create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/stringp create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/substring create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/thing-at-point create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/traverse_dir create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/unless create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/vector create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/when create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/while create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/widget-get create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/with-current-buffer create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/word-or-region create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/word_regexp create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-dired.process_marked create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-file.process create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-file.read-lines create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-find-replace create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-grabstring create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-grabthing create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-traverse_dir create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/x-word-or-region create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/y-or-n-p create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/emacs-lisp-mode/yes-or-no-p create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/enh-ruby-mode create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/ensime-mode create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/erc-mode/blist create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/erc-mode/help create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/erlang-mode/after create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/erlang-mode/begin create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/erlang-mode/beh create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/erlang-mode/case create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/erlang-mode/compile create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/erlang-mode/def create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/erlang-mode/exp create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/erlang-mode/fun create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/erlang-mode/if create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/erlang-mode/ifdef create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/erlang-mode/ifndef create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/erlang-mode/imp create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/erlang-mode/inc create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/erlang-mode/inc.lib create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/erlang-mode/loop create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/erlang-mode/mod create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/erlang-mode/rcv create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/erlang-mode/rcv.after create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/erlang-mode/rec create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/erlang-mode/try create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/erlang-mode/undef create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/f90-mode/bd create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/f90-mode/c create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/f90-mode/ch create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/f90-mode/cx create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/f90-mode/dc create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/f90-mode/do create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/f90-mode/dp create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/f90-mode/forall create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/f90-mode/function create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/f90-mode/if create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/f90-mode/in create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/f90-mode/inc create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/f90-mode/intr create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/f90-mode/l create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/f90-mode/module create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/f90-mode/pa create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/f90-mode/program create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/f90-mode/puref create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/f90-mode/pures create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/f90-mode/re create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/f90-mode/subroutine create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/f90-mode/until create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/f90-mode/where create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/f90-mode/while create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/f90-mode/wr create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/fundamental-mode/.yas-setup.el create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/fundamental-mode/.yas-setup.elc create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/git-commit-mode/.yas-parents create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/git-commit-mode/fixes create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/git-commit-mode/references create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/go-mode/benchmark create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/go-mode/const create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/go-mode/const( create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/go-mode/dd create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/go-mode/default create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/go-mode/else create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/go-mode/error create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/go-mode/example create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/go-mode/for create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/go-mode/forrange create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/go-mode/func create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/go-mode/if create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/go-mode/iferr create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/go-mode/import create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/go-mode/import( create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/go-mode/lambda create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/go-mode/main create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/go-mode/map create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/go-mode/printf create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/go-mode/select create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/go-mode/switch create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/go-mode/test create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/go-mode/testmain create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/go-mode/type create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/go-mode/var create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/go-mode/var( create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/groovy-mode/.yas-parents create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/groovy-mode/class create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/groovy-mode/def create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/groovy-mode/dict create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/groovy-mode/for create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/groovy-mode/println create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/groovy-mode/times create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/haskell-mode/case create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/haskell-mode/data create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/haskell-mode/doc create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/haskell-mode/efix create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/haskell-mode/function create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/haskell-mode/functione create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/haskell-mode/import create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/haskell-mode/instance create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/haskell-mode/main create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/haskell-mode/module create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/haskell-mode/new class create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/haskell-mode/pragma create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/haskell-mode/print create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/html-mode/.yas-parents create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/html-mode/dd create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/html-mode/dl create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/html-mode/doctype create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/html-mode/doctype.html5 create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/html-mode/doctype.xhtml1 create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/html-mode/doctype.xhtml1_1 create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/html-mode/doctype.xhtml1_strict create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/html-mode/doctype.xhtml1_transitional create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/html-mode/dt create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/html-mode/form create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/html-mode/html create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/html-mode/html.xmlns create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/html-mode/link.stylesheet create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/html-mode/link.stylesheet-ie create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/html-mode/mailto create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/html-mode/meta create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/html-mode/meta.http-equiv create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/html-mode/script.javascript create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/html-mode/script.javascript-src create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/html-mode/textarea create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/html-mode/th create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/apr_assert create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/assert create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/assertEquals create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/cls create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/constructor create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/define test method create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/doc create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/equals create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/file_class create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/for create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/fori create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/getter create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/if create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/ife create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/import create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/iterator create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/javadoc create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/lambda create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/main create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/main_class create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/method create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/new create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/override create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/param create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/printf create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/println create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/return create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/test create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/testClass create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/this create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/toString create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/try create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/value create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/al create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/class create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/com create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/debugger create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/each create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/el create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/ev.add create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/ev.fire create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/for create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/function create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/if create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/init create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/log create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/multiline-comment create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/param-comment create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/req.html create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/req.json create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/return-comment create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/type-inline-comment create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/type-multiline-comment create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/js2-mode create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/acronym create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/alertblock create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/alg create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/begin create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/block create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/capgls create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/caption create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/cite create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/code create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/columns create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/emph create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/enumerate create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/figure create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/frac create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/frame create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/gls create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/glspl create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/if create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/includegraphics create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/item create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/itemize create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/label create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/listing create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/movie create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/newcommand create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/newglossaryentry create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/note create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/python create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/question create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/section create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/subf create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/subfigure create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/subsec create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/textbf create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/usepackage create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-interaction-mode/defun create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/class create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/comment create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/defpackage create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/do create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/for create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/foreach create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/format create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/if create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/ifelse create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/ifnot create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/slot create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/switch create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/typecast create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/lua-mode/fun create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/m4-mode/def create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-automake-mode/noinst_HEADERS create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-bsdmake-mode/PHONY create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-bsdmake-mode/echo create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-bsdmake-mode/gen create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-bsdmake-mode/if create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-bsdmake-mode/var create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/abspath create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/addprefix create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/addsuffix create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/dir create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/make create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/notdir create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/patsubst create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/phony create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/shell create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/special create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/template create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/wildcard create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-mode/all create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-mode/clean create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/malabar-mode/variable create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/+ create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/- create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/_ create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/__ create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/` create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/h1.1 create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/h1.2 create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/h2.1 create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/h2.2 create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/h3 create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/h4 create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/h5 create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/h6 create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/highlight create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/hr.1 create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/hr.2 create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/img create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/link create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/ol create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/rimg create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/rlb create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/rlink create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/utf8 create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ned-mode/.yas-parents create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ned-mode/chan create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ned-mode/connections create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ned-mode/for create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ned-mode/import create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ned-mode/network create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ned-mode/simple create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ned-mode/submodules create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nesc-mode/.yas-parents create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nesc-mode/TOSSIM create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nesc-mode/command create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nesc-mode/dbg create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nesc-mode/event create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nesc-mode/ifdef create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nesc-mode/interface create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nesc-mode/module create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nesc-mode/nx create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nesc-mode/provides create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nesc-mode/sim create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nesc-mode/uint8_t create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nesc-mode/uses create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nsis-mode/.yas-parents create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nsis-mode/define create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nsis-mode/function create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nsis-mode/if create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nsis-mode/include create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nsis-mode/insert_macro create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nsis-mode/instdir create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nsis-mode/macro create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nsis-mode/message create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nsis-mode/outdir create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nsis-mode/outfile create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nsis-mode/section create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/body create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/br create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/doctype create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/doctype_xhtml1_strict create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/doctype_xhtml1_transitional create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/form create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/href create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/html create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/img create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/input create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/link create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/meta create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/name create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/quote create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/style create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/tag create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/tag_closing create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/tag_newline create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/octave-mode/for create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/octave-mode/function create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/octave-mode/if create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/org-mode/code create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/org-mode/dot create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/org-mode/elisp create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/org-mode/embedded create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/org-mode/entry create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/org-mode/figure create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/org-mode/img create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/org-mode/latex create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/org-mode/matrix create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/org-mode/verse create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/.yas-parents create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/eval create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/for create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/fore create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/if create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/ife create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/ifee create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/sub create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/unless create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/while create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/xfore create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/xif create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/xunless create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/xwhile create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/prog-mode/.yas-setup.el create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/prog-mode/.yas-setup.elc create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/prog-mode/fixme create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/prog-mode/todo create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/prog-mode/xxx create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/.yas-parents create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/.yas-setup.el create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/.yas-setup.elc create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/__contains__ create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/__enter__ create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/__exit__ create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/__getitem__ create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/__len__ create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/__new__ create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/__setitem__ create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/all create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/arg create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/arg_positional create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/ass create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/assertEqual create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/assertFalse create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/assertIn create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/assertNotEqual create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/assertNotIn create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/assertRaises create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/assertRaises.with create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/assertTrue create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/celery_pdb create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/classmethod create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/cls create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/dec create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/deftest create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/django_test_class create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/doc create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/doctest create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/eq create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/for create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/from create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/function create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/function_docstring create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/if create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/ife create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/ifmain create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/import create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/init create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/init_docstring create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/interact create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/ipdbdebug create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/iter create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/lambda create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/list create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/logger_name create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/logging create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/main create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/metaclass create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/method create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/method_docstring create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/not_impl create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/np create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/parse_args create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/parser create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/pass create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/pl create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/print create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/prop create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/reg create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/repr create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/return create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/script create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/self create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/self_without_dot create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/selfassign create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/setdef create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/setup create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/size create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/static create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/str create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/super create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/test_class create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/test_file create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/trace create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/try create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/tryelse create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/unicode create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/utf8 create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/while create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/with create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/with_statement create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/rename_add_contr.py create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/autoclass create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/autofunction create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/automodule create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/class create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/code create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/digraph create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/function create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/graph create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/graphviz create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/image create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/inheritance create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/literal_include create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/meta create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/module create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/parsed_literal create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/pause create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/term create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/url create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/verbatim create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/warning create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/# create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/=b create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/Comp create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/GLOB create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/all create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/am create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/any create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/app create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/attribute create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/bench create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/bm create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/case create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/cla create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/cls create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/collect create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/dee create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/def create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/deli create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/det create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/dow create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/ea create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/eac create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/eai create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/eav create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/eawi create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/for create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/forin create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/formula create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/if create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/ife create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/init create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/inject create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/map create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/mm create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/r create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/rb create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/red create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/reject create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/rel create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/req create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/rw create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/select create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/str create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/test class create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/tim create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/to_ create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/tu create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/until create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/upt create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/w create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/when create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/while create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/y create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/zip create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/app create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/case create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/cc create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/co create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/cons create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/def create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/doc create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/for create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/if create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/ls create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/main create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/match create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/ob create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/throw create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/try create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/sh-mode/args create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/sh-mode/bang create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/sh-mode/for loop create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/sh-mode/function create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/sh-mode/if create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/sh-mode/ife create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/snippet-mode/cont create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/snippet-mode/elisp create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/snippet-mode/field create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/snippet-mode/group create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/snippet-mode/mirror create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/snippet-mode/vars create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/snippets/ruby-mode/definitions/mod create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/sql-mode/column create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/sql-mode/constraint create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/sql-mode/constraint.1 create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/sql-mode/create create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/sql-mode/create.1 create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/sql-mode/references create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/text-mode/.yas-parents create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/assert create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/docstring create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/for create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/fun create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/guard create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/ifthen create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/ifthenelse create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/let create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/list_comprehension create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/main create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/match create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/module create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/open create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/printf create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/rec create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/try create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/type create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/type_type create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/val create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/while create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/typerex-mode create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/udev-mode/ENV create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/udev-mode/GOTO create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/udev-mode/KERNEL create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/udev-mode/add create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/udev-mode/env$ create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/udev-mode/run create mode 100755 .emacs.d/elpa/yasnippet-20160131.948/snippets/web-mode create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/yaml-mode/entry create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/yaml-mode/list create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/snippets/yaml-mode/section create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/yasnippet-autoloads.el create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/yasnippet-autoloads.el~ create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/yasnippet-pkg.el create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/yasnippet.el create mode 100644 .emacs.d/elpa/yasnippet-20160131.948/yasnippet.elc create mode 100755 .emacs.d/irony/bin/irony-server create mode 100644 .emacs.d/snippets/c++-mode/acc create mode 100644 .emacs.d/snippets/c++-mode/accl create mode 100644 .emacs.d/snippets/c++-mode/accl~ create mode 100644 .emacs.d/snippets/c++-mode/cls create mode 100644 .emacs.d/snippets/c++-mode/dcast create mode 100644 .emacs.d/snippets/c++-mode/dpcast create mode 100644 .emacs.d/snippets/c++-mode/forc create mode 100644 .emacs.d/snippets/c++-mode/scast create mode 100644 .emacs.d/snippets/c++-mode/sct create mode 100644 .emacs.d/snippets/c++-mode/spcast create mode 100755 .emacs.el diff --git a/.bashrc b/.bashrc new file mode 100644 index 0000000..1bb309d --- /dev/null +++ b/.bashrc @@ -0,0 +1,115 @@ +# ~/.bashrc: executed by bash(1) for non-login shells. +# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) +# for examples + +PATH=~/.softwares/bin:$PATH + +# If not running interactively, don't do anything +[ -z "$PS1" ] && return + +# don't put duplicate lines in the history. See bash(1) for more options +# don't overwrite GNU Midnight Commander's setting of `ignorespace'. +export HISTCONTROL=$HISTCONTROL${HISTCONTROL+,}ignoredups +# ... or force ignoredups and ignorespace +export HISTCONTROL=ignoreboth + +# append to the history file, don't overwrite it +shopt -s histappend + +# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) + +# check the window size after each command and, if necessary, +# update the values of LINES and COLUMNS. +shopt -s checkwinsize + +# make less more friendly for non-text input files, see lesspipe(1) +[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" + +# set variable identifying the chroot you work in (used in the prompt below) +if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then + debian_chroot=$(cat /etc/debian_chroot) +fi + +# set a fancy prompt (non-color, unless we know we "want" color) +case "$TERM" in + xterm-color) color_prompt=yes;; +esac + +# uncomment for a colored prompt, if the terminal has the capability; turned +# off by default to not distract the user: the focus in a terminal window +# should be on the output of commands, not on the prompt +force_color_prompt=yes + +if [ -n "$force_color_prompt" ]; then + if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then + # We have color support; assume it's compliant with Ecma-48 + # (ISO/IEC-6429). (Lack of such support is extremely rare, and such + # a case would tend to support setf rather than setaf.) + color_prompt=yes + else + color_prompt= + fi +fi + +if [ "$color_prompt" = yes ]; then + PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u\[\033[01;36m\]@\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]\$ ' +else + PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' +fi +unset color_prompt force_color_prompt + +# If this is an xterm set the title to user@host:dir +case "$TERM" in +xterm*|rxvt*) + PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" + ;; +*) + ;; +esac + +# Alias definitions. +# You may want to put all your additions into a separate file like +# ~/.bash_aliases, instead of adding them here directly. +# See /usr/share/doc/bash-doc/examples in the bash-doc package. + +#if [ -f ~/.bash_aliases ]; then +# . ~/.bash_aliases +#fi + +# enable color support of ls and also add handy aliases +if [ -x /usr/bin/dircolors ]; then + eval "`dircolors -b`" + alias ls='ls --color=auto' + #alias dir='ls --color=auto' + #alias vdir='ls --color=auto' + + #alias grep='grep --color=auto' + #alias fgrep='fgrep --color=auto' + #alias egrep='egrep --color=auto' +fi + +# some more ls aliases +alias ll='ls -l' +alias la='ls -A' +alias l='ls -CF' + +alias rm='rm -i --preserve-root' +alias gcc='gcc-5' +alias g++='g++-5' + +export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib + +# enable programmable completion features (ycase ou don't need to enable +# this, if it's already enabled in /etc/bash.bashrc and /etc/profile +# sources /etc/bash.bashrc). +if [ -f /etc/bash_completion ]; then + . /etc/bash_completion +fi + +# export python path +export PYTHONPATH=${PYTHONPATH}:${HOME}/Dev/python/libs:/local/lib/python3.4 + +DATA_FOLDER=~/Dev/data +export DATASETS_FOLDER=$DATA_FOLDER/datasets +export INSTANCES_FOLDER=$DATA_FOLDER/instances +export RESULTS_FOLDER=$DATA_FOLDER/results diff --git a/.emacs.d/ac-comphist.dat b/.emacs.d/ac-comphist.dat new file mode 100644 index 0000000..9bf0a88 --- /dev/null +++ b/.emacs.d/ac-comphist.dat @@ -0,0 +1,254 @@ +((("virtual" . + [0 0 1 0 0 0 0]) + ("slot" . + [0 0 1 0]) + ("hpp" . + [1 0 0]) + ("main" . + [1 0 0 0]) + ("oops" . + [1 0 0 0]) + ("struct" . + [0 0 0 1 1 0]) + ("sort" . + [2 0 1 0]) + ("yas-global-mode" . + [0 0 0 0 0 0 0 0 0 0 0 0 0 0 1]) + ("algorithm" . + [0 0 0 0 1 0 0 1 0]) + ("alignas" . + [0 0 1 0 0 0 0]) + ("clock" . + [1 0 0 0 0]) + ("t1" . + [1 0]) + ("seq" . + [1 0 0]) + ("matrix" . + [1 0 0 0 0 0]) + ("range" . + [1 0 0 0 0]) + ("1:72" . + [5 0 1 0]) + ("scatterplot3d" . + [0 0 0 0 0 0 0 0 0 0 0 0 1]) + ("attach" . + [1 0 0 0 0 0]) + ("plot" . + [1 0 0 0]) + ("ncol" . + [1 0 0 0]) + ("nrow" . + [2 0 0 0]) + ("rgl::persp3d" . + [0 0 0 0 0 0 0 0 0 1 0 0]) + ("wireframe" . + [0 0 0 0 1 0 0 0 0]) + ("data" . + [4 0 0 0]) + ("ggplot" . + [0 0 0 0 0 1]) + ("library" . + [7 0 0 0 0 0 0]) + ("b" . + [1]) + ("auto" . + [0 0 1 0]) + (":download_per_slot() const" . + [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1]) + ("download_per_slot" . + [0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]) + ("olsg" . + [2 0 1 1]) + ("(basic_ostream<_CharT, _Traits> &__os)" . + [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2]) + (":pdt() const" . + [0 0 0 0 0 0 0 0 0 0 0 11]) + ("pdt" . + [3 1 11]) + ("solve" . + [6 0 0 0 1]) + ("_instance" . + [0 0 0 0 1 0 0 0 1]) + (":stations() const" . + [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5]) + ("stations" . + [12 0 3 2 4 2 0 7]) + ("py_solution" . + [2 0 1 0 1 0 0 0 0 0 0]) + ("(int gen, ogsn::type_t type, int satellite" . + [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2]) + ("cnes" . + [1 0 0 1]) + ("(int gen, ogsn::type_t type, int satellite{#, int year{#, int month#}#})" . + [0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]) + ("make_instance" . + [3 0 0 0 0 0 0 0 0 1 0 0 1]) + ("instance" . + [11 0 1 1 0 0 0 1]) + (":" . + [3]) + ("ogsn" . + [9 0 3 2]) + ("include" . + [0 0 0 0 0 0 3]) + ("begin" . + [3 0 1 1 0]) + ("()" . + [0 9]) + ("size" . + [7 0 4 2]) + ("at" . + [0 1]) + ("endl" . + [8 0 1 6]) + ("end" . + [2 0 1]) + ("cout" . + [8 0 0 8]) + ("vector" . + [11 0 4 3 2 2]) + ("std" . + [66 0 7]) + ("sol" . + [2 0 1]) + ("solution" . + [7 0 0 5 2 2 2 6]) + ("make_solution" . + [2 0 0 0 0 0 1 1 1 0 0 0 0]) + ("ilp_windows" . + [1 0 0 0 0 1 1 2 0 0 0]) + ("(const std::vector &)" . + [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2]) + ("size_t" . + [10 0 0 0 0 0]) + ("_constraints" . + [1 0 0 0 0 0 0 0 0 0 0 3]) + ("x" . + [1]) + ("i" . + [20]) + ("_stations" . + [3 0 0 0 0 1 0 0 0]) + (":solve()" . + [0 0 0 0 0 0 0 2]) + ("s" . + [4]) + ("percent_data_transfered" . + [1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1]) + (":percent_data_transfered() const" . + [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1]) + ("shared_ptr" . + [5 0 0 0 0 1 1 0 0 0]) + ("st_ilp" . + [2 0 0 0 0 0]) + ("mh" . + [2 0]) + ("solution_t" . + [2 0 0 0 0 0 0 0 0 0]) + ("keep" . + [1 0 0 0]) + ("stdin" . + [0 0 0 1 0]) + ("stationOn" . + [2 0 0 0 0 0 0 0 0]) + ("stationOff" . + [2 0 0 0 0 0 0 0 0 0]) + ("false" . + [0 0 0 0 1]) + ("_compute_pdt" . + [0 0 0 0 0 1 0 0 2 0 0 0]) + ("(std::vector stations)" . + [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3]) + ("offPDT" . + [3 0 0 0 0 0]) + ("lastPDT" . + [1 0 0 0 0 0 0]) + ("onPDT" . + [1 0 0 0 0]) + ("gap_on2off" . + [1 0 0 0 0 0 0 0 0 0]) + ("gap_off2on" . + [0 0 0 0 0 0 0 0 0 1]) + ("ilp_prioritize" . + [0 0 0 0 0 0 0 1 0 0 0 0 0 0]) + ("ilpp" . + [1 0 0 0]) + ("_STDIO_H" . + [0 0 0 0 0 0 0 1]) + ("d" . + [1]) + ("int" . + [0 0 1]) + ("type_t" . + [0 0 1 0 0 0]) + ("y" . + [2]) + ("m" . + [6]) + ("(const std::string &filename)" . + [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1]) + ("type" . + [3 0 0 0]) + ("sat" . + [2 0 0]) + ("first_year" . + [7 0 0 0 0 0 0 0 0 0]) + ("last_year" . + [3 0 0 0 0 0 0 0 0]) + ("array" . + [9 0 0 0 1]) + ("n_solutions" . + [4 0 1 2 1 1 0 0 0 0 0]) + ("yb" . + [4 0]) + ("ym" . + [2 0]) + ("(std::shared_ptr instance)" . + [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2]) + ("log" . + [1 0 0]) + ("pdts" . + [3 0 0 0]) + ("mb" . + [1 0]) + ("j" . + [9]) + ("instances" . + [4 0 0 0 0 0 0 0 1]) + ("solutions" . + [4 0 0 0 0 0 0 0 0]) + ("k" . + [5]) + ("l" . + [3]) + ("flush" . + [0 0 0 0 1]) + ("v" . + [1]) + ("p" . + [1]) + ("cerr" . + [3 0 0 0]) + ("c++-mode-common-hook" . + [0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]) + ("defun" . + [1 0 0 0 0]) + ("auto-complete" . + [0 0 0 0 0 0 0 0 0 0 0 0 1]) + ("add-to-list" . + [0 0 0 0 0 0 1 0 0 0 0]) + ("ac-sources" . + [0 0 0 0 0 0 0 1 0 0]) + ("DATA_FOLDER" . + [1 0 0 0 0 0 0 0 0 0 0]) + ("environment" . + [0 0 0 0 0 0 0 0 0 0 1]) + ("usebox" . + [0 0 0 2 0 1]) + ("usepackage" . + [0 0 0 0 1 4 2 0 0 0]) + ("français" . + [0 0 0 0 0 0 1 0]) + ("short" . + [0 0 0 0 1]))) diff --git a/.emacs.d/auto-save-list/.saves-1032-SPRINGSTEEN~ b/.emacs.d/auto-save-list/.saves-1032-SPRINGSTEEN~ new file mode 100755 index 0000000..b1956fb --- /dev/null +++ b/.emacs.d/auto-save-list/.saves-1032-SPRINGSTEEN~ @@ -0,0 +1,2 @@ +z:/Windows/RoutingVirtualization/NetworkGenerator.py +z:\Windows\RoutingVirtualization\#NetworkGenerator.py# diff --git a/.emacs.d/auto-save-list/.saves-1136-SPRINGSTEEN~ b/.emacs.d/auto-save-list/.saves-1136-SPRINGSTEEN~ new file mode 100755 index 0000000..b3ce577 --- /dev/null +++ b/.emacs.d/auto-save-list/.saves-1136-SPRINGSTEEN~ @@ -0,0 +1,2 @@ +z:/FinalResults - SORTED/calc_capa.py +z:\FinalResults - SORTED\#calc_capa.py# diff --git a/.emacs.d/auto-save-list/.saves-12370-pinkfloyd.laas.fr~ b/.emacs.d/auto-save-list/.saves-12370-pinkfloyd.laas.fr~ new file mode 100644 index 0000000..f660bb6 --- /dev/null +++ b/.emacs.d/auto-save-list/.saves-12370-pinkfloyd.laas.fr~ @@ -0,0 +1,6 @@ +/home/mcapelle/.emacs.el +/home/mcapelle/#.emacs.el# +/home/mcapelle/.bashrc +/home/mcapelle/#.bashrc# +/home/mcapelle/.softwares/emacs-24.5/share/emacs/24.5/lisp/loaddefs.el +/home/mcapelle/.softwares/emacs-24.5/share/emacs/24.5/lisp/#loaddefs.el# diff --git a/.emacs.d/auto-save-list/.saves-12374-pinkfloyd.laas.fr~ b/.emacs.d/auto-save-list/.saves-12374-pinkfloyd.laas.fr~ new file mode 100644 index 0000000..477f41a --- /dev/null +++ b/.emacs.d/auto-save-list/.saves-12374-pinkfloyd.laas.fr~ @@ -0,0 +1,14 @@ +/home/mcapelle/Dev/CPP/lns/src/solution.cpp +/home/mcapelle/Dev/CPP/lns/src/#solution.cpp# +/home/mcapelle/Dev/CPP/lns/inc/solution.hpp +/home/mcapelle/Dev/CPP/lns/inc/#solution.hpp# +/home/mcapelle/Dev/CPP/lns/src/verifier.cpp +/home/mcapelle/Dev/CPP/lns/src/#verifier.cpp# +/home/mcapelle/Dev/CPP/lns/src/main.cpp +/home/mcapelle/Dev/CPP/lns/src/#main.cpp# +/home/mcapelle/Dev/Python/Projects/Model_1/model.py +/home/mcapelle/Dev/Python/Projects/Model_1/#model.py# +/home/mcapelle/Dev/Python/Projects/Model_1/test-result.py +/home/mcapelle/Dev/Python/Projects/Model_1/#test-result.py# +/home/mcapelle/Dev/CPP/lns/Makefile +/home/mcapelle/Dev/CPP/lns/#Makefile# diff --git a/.emacs.d/auto-save-list/.saves-1540-PIXIES~ b/.emacs.d/auto-save-list/.saves-1540-PIXIES~ new file mode 100755 index 0000000..03d320e --- /dev/null +++ b/.emacs.d/auto-save-list/.saves-1540-PIXIES~ @@ -0,0 +1,2 @@ +e:/Python/Project1/access_cflos_rerun.py +e:\Python\Project1\#access_cflos_rerun.py# diff --git a/.emacs.d/auto-save-list/.saves-17826-pinkfloyd.laas.fr~ b/.emacs.d/auto-save-list/.saves-17826-pinkfloyd.laas.fr~ new file mode 100644 index 0000000..4f75c7e --- /dev/null +++ b/.emacs.d/auto-save-list/.saves-17826-pinkfloyd.laas.fr~ @@ -0,0 +1,4 @@ +/home/mcapelle/Dev/CPP/lns/script.m +/home/mcapelle/Dev/CPP/lns/#script.m# +/home/mcapelle/Dev/CPP/lns/src/main.cpp +/home/mcapelle/Dev/CPP/lns/src/#main.cpp# diff --git a/.emacs.d/auto-save-list/.saves-1840-PIXIES~ b/.emacs.d/auto-save-list/.saves-1840-PIXIES~ new file mode 100755 index 0000000..fbb6309 --- /dev/null +++ b/.emacs.d/auto-save-list/.saves-1840-PIXIES~ @@ -0,0 +1,2 @@ +z:/Dev/main.cpp +z:\Dev\#main.cpp# diff --git a/.emacs.d/auto-save-list/.saves-2128-SPRINGSTEEN~ b/.emacs.d/auto-save-list/.saves-2128-SPRINGSTEEN~ new file mode 100755 index 0000000..cf482a6 --- /dev/null +++ b/.emacs.d/auto-save-list/.saves-2128-SPRINGSTEEN~ @@ -0,0 +1,6 @@ +z:/Results/pyresults/show_info.py +z:\Results\pyresults\#show_info.py# +z:/Results/pyresults/analyzer.py +z:\Results\pyresults\#analyzer.py# +z:/Results/pyresults/graphic.py +z:\Results\pyresults\#graphic.py# diff --git a/.emacs.d/auto-save-list/.saves-2152-SPRINGSTEEN~ b/.emacs.d/auto-save-list/.saves-2152-SPRINGSTEEN~ new file mode 100755 index 0000000..4b212a1 --- /dev/null +++ b/.emacs.d/auto-save-list/.saves-2152-SPRINGSTEEN~ @@ -0,0 +1,2 @@ +z:/Results/result_reader.py +z:\Results\#result_reader.py# diff --git a/.emacs.d/auto-save-list/.saves-2232-SPRINGSTEEN~ b/.emacs.d/auto-save-list/.saves-2232-SPRINGSTEEN~ new file mode 100755 index 0000000..c306d75 --- /dev/null +++ b/.emacs.d/auto-save-list/.saves-2232-SPRINGSTEEN~ @@ -0,0 +1,2 @@ +z:/Results/pyresults/show_info.py +z:\Results\pyresults\#show_info.py# diff --git a/.emacs.d/auto-save-list/.saves-2356-SPRINGSTEEN~ b/.emacs.d/auto-save-list/.saves-2356-SPRINGSTEEN~ new file mode 100755 index 0000000..aef70b7 --- /dev/null +++ b/.emacs.d/auto-save-list/.saves-2356-SPRINGSTEEN~ @@ -0,0 +1,8 @@ +z:/FinalResults - SORTED/script_frepart.py +z:\FinalResults - SORTED\#script_frepart.py# +z:/FinalResults - SORTED/script_time.py +z:\FinalResults - SORTED\#script_time.py# +z:/FinalResults - SORTED/script_param.py +z:\FinalResults - SORTED\#script_param.py# +z:/FinalResults - SORTED/script_heur.py +z:\FinalResults - SORTED\#script_heur.py# diff --git a/.emacs.d/auto-save-list/.saves-29259-pinkfloyd.laas.fr~ b/.emacs.d/auto-save-list/.saves-29259-pinkfloyd.laas.fr~ new file mode 100644 index 0000000..7602b49 --- /dev/null +++ b/.emacs.d/auto-save-list/.saves-29259-pinkfloyd.laas.fr~ @@ -0,0 +1,6 @@ +/home/mcapelle/Documents/Presentation_ROADEFF/PresentationROADEFF.tex +/home/mcapelle/Documents/Presentation_ROADEFF/#PresentationROADEFF.tex# +/home/mcapelle/Documents/Presentation_ROADEFF/plots/plot_ps.tex +/home/mcapelle/Documents/Presentation_ROADEFF/plots/#plot_ps.tex# +/home/mcapelle/Documents/Presentation_ROADEFF/plots/plot_heuristics.tex +/home/mcapelle/Documents/Presentation_ROADEFF/plots/#plot_heuristics.tex# diff --git a/.emacs.d/auto-save-list/.saves-3332-SPRINGSTEEN~ b/.emacs.d/auto-save-list/.saves-3332-SPRINGSTEEN~ new file mode 100755 index 0000000..377824a --- /dev/null +++ b/.emacs.d/auto-save-list/.saves-3332-SPRINGSTEEN~ @@ -0,0 +1,4 @@ +z:/Results/show_info.py +z:\Results\#show_info.py# +z:/Results/create_csv.py +z:\Results\#create_csv.py# diff --git a/.emacs.d/auto-save-list/.saves-3380-SPRINGSTEEN~ b/.emacs.d/auto-save-list/.saves-3380-SPRINGSTEEN~ new file mode 100755 index 0000000..980416e --- /dev/null +++ b/.emacs.d/auto-save-list/.saves-3380-SPRINGSTEEN~ @@ -0,0 +1,10 @@ +z:/test.txt +z:\#test.txt# +z:/Results/pyresults/show_info.py +z:\Results\pyresults\#show_info.py# +z:/Results/pyresults/result.py +z:\Results\pyresults\#result.py# +z:/Results/pyresults/result_reader.py +z:\Results\pyresults\#result_reader.py# +z:/Results/pyresults/request.py +z:\Results\pyresults\#request.py# diff --git a/.emacs.d/auto-save-list/.saves-3416-pinkfloyd.laas.fr~ b/.emacs.d/auto-save-list/.saves-3416-pinkfloyd.laas.fr~ new file mode 100644 index 0000000..d86bf1f --- /dev/null +++ b/.emacs.d/auto-save-list/.saves-3416-pinkfloyd.laas.fr~ @@ -0,0 +1,12 @@ +/home/mcapelle/Dev/CPP/lns/inc/ilp.hpp +/home/mcapelle/Dev/CPP/lns/inc/#ilp.hpp# +/home/mcapelle/Dev/CPP/lns/src/solution.cpp +/home/mcapelle/Dev/CPP/lns/src/#solution.cpp# +/home/mcapelle/Dev/CPP/lns/inc/solution.hpp +/home/mcapelle/Dev/CPP/lns/inc/#solution.hpp# +/home/mcapelle/Dev/CPP/lns/src/ilp.cpp +/home/mcapelle/Dev/CPP/lns/src/#ilp.cpp# +/home/mcapelle/Dev/CPP/lns/inc/instance.hpp +/home/mcapelle/Dev/CPP/lns/inc/#instance.hpp# +/home/mcapelle/Dev/CPP/lns/src/instance.cpp +/home/mcapelle/Dev/CPP/lns/src/#instance.cpp# diff --git a/.emacs.d/auto-save-list/.saves-3936-SPRINGSTEEN~ b/.emacs.d/auto-save-list/.saves-3936-SPRINGSTEEN~ new file mode 100755 index 0000000..3ed69e2 --- /dev/null +++ b/.emacs.d/auto-save-list/.saves-3936-SPRINGSTEEN~ @@ -0,0 +1,2 @@ +z:/Windows/Prog/cwebsocket-master/x86_server/main.c +z:\Windows\Prog\cwebsocket-master\x86_server\#main.c# diff --git a/.emacs.d/auto-save-list/.saves-4088-PIXIES~ b/.emacs.d/auto-save-list/.saves-4088-PIXIES~ new file mode 100755 index 0000000..b9c26b7 --- /dev/null +++ b/.emacs.d/auto-save-list/.saves-4088-PIXIES~ @@ -0,0 +1,18 @@ +z:/Dev/main.cpp +z:\Dev\#main.cpp# +z:/Dev/Python/Projects/Model_1/test-result.py +z:\Dev\Python\Projects\Model_1\#test-result.py# +z:/Dev/Python/Projects/Model_1/verifier_c.pyx +z:\Dev\Python\Projects\Model_1\#verifier_c.pyx# +z:/Dev/Python/Projects/Model_1/model.py +z:\Dev\Python\Projects\Model_1\#model.py# +z:/Dev/Python/Projects/Model_1/setup.py +z:\Dev\Python\Projects\Model_1\#setup.py# +z:/Dev/Python/Projects/Model_1/run-many.sh +z:\Dev\Python\Projects\Model_1\#run-many.sh# +z:/Dev/Python/Libs/utility.py +z:\Dev\Python\Libs\#utility.py# +z:/Dev/Python/Projects/Model_1/main.py +z:\Dev\Python\Projects\Model_1\#main.py# +z:/Dev/Python/Projects/Model_1/run-instance.py +z:\Dev\Python\Projects\Model_1\#run-instance.py# diff --git a/.emacs.d/auto-save-list/.saves-4164-SPRINGSTEEN~ b/.emacs.d/auto-save-list/.saves-4164-SPRINGSTEEN~ new file mode 100755 index 0000000..f3059e9 --- /dev/null +++ b/.emacs.d/auto-save-list/.saves-4164-SPRINGSTEEN~ @@ -0,0 +1,4 @@ +z:/Windows/Prog/fractionnal.hpp +z:\Windows\Prog\#fractionnal.hpp# +z:/Windows/Prog/frac.cpp +z:\Windows\Prog\#frac.cpp# diff --git a/.emacs.d/auto-save-list/.saves-4220-PIXIES~ b/.emacs.d/auto-save-list/.saves-4220-PIXIES~ new file mode 100755 index 0000000..6743693 --- /dev/null +++ b/.emacs.d/auto-save-list/.saves-4220-PIXIES~ @@ -0,0 +1,2 @@ +e:/Python/Ephem/main.py +e:\Python\Ephem\#main.py# diff --git a/.emacs.d/auto-save-list/.saves-4260-PIXIES~ b/.emacs.d/auto-save-list/.saves-4260-PIXIES~ new file mode 100755 index 0000000..e69de29 diff --git a/.emacs.d/auto-save-list/.saves-4268-PIXIES~ b/.emacs.d/auto-save-list/.saves-4268-PIXIES~ new file mode 100755 index 0000000..55b7c3d --- /dev/null +++ b/.emacs.d/auto-save-list/.saves-4268-PIXIES~ @@ -0,0 +1,8 @@ +z:/Dev/CPP/lns/src/main.cpp +z:\Dev\CPP\lns\src\#main.cpp# +z:/Dev/CPP/test.cpp +z:\Dev\CPP\#test.cpp# +z:/Dev/Python/Projects/Model_1/run-many.sh +z:\Dev\Python\Projects\Model_1\#run-many.sh# +z:/Dev/CPP/test.c +z:\Dev\CPP\#test.c# diff --git a/.emacs.d/auto-save-list/.saves-4572-SPRINGSTEEN~ b/.emacs.d/auto-save-list/.saves-4572-SPRINGSTEEN~ new file mode 100755 index 0000000..e0bcf05 --- /dev/null +++ b/.emacs.d/auto-save-list/.saves-4572-SPRINGSTEEN~ @@ -0,0 +1,4 @@ +z:/Results/result_reader.py +z:\Results\#result_reader.py# +z:/Results/create_csv.py +z:\Results\#create_csv.py# diff --git a/.emacs.d/auto-save-list/.saves-4816-SPRINGSTEEN~ b/.emacs.d/auto-save-list/.saves-4816-SPRINGSTEEN~ new file mode 100755 index 0000000..a4a34e3 --- /dev/null +++ b/.emacs.d/auto-save-list/.saves-4816-SPRINGSTEEN~ @@ -0,0 +1,2 @@ +z:/test.adb +z:\#test.adb# diff --git a/.emacs.d/auto-save-list/.saves-4880-PIXIES~ b/.emacs.d/auto-save-list/.saves-4880-PIXIES~ new file mode 100755 index 0000000..94f5209 --- /dev/null +++ b/.emacs.d/auto-save-list/.saves-4880-PIXIES~ @@ -0,0 +1,6 @@ +z:/Dev/CPP/lns/main.cpp +z:\Dev\CPP\lns\#main.cpp# +z:/Dev/CPP/lns/makefile +z:\Dev\CPP\lns\#makefile# +z:/Dev/Python/Projects/Model_1/main.py +z:\Dev\Python\Projects\Model_1\#main.py# diff --git a/.emacs.d/auto-save-list/.saves-5296-PIXIES~ b/.emacs.d/auto-save-list/.saves-5296-PIXIES~ new file mode 100755 index 0000000..13ef650 --- /dev/null +++ b/.emacs.d/auto-save-list/.saves-5296-PIXIES~ @@ -0,0 +1,10 @@ +z:/Dev/CPP/lns/inc/instance.hpp +z:\Dev\CPP\lns\inc\#instance.hpp# +z:/Dev/CPP/lns/src/instance.cpp +z:\Dev\CPP\lns\src\#instance.cpp# +z:/Dev/CPP/lns/main.cpp +z:\Dev\CPP\lns\#main.cpp# +z:/Dev/CPP/lns/inc/ogsn.hpp +z:\Dev\CPP\lns\inc\#ogsn.hpp# +z:/Dev/CPP/lns/makefile +z:\Dev\CPP\lns\#makefile# diff --git a/.emacs.d/auto-save-list/.saves-5400-PIXIES~ b/.emacs.d/auto-save-list/.saves-5400-PIXIES~ new file mode 100755 index 0000000..548329c --- /dev/null +++ b/.emacs.d/auto-save-list/.saves-5400-PIXIES~ @@ -0,0 +1,4 @@ +z:/Dev/set_def.c +z:\Dev\#set_def.c# +z:/Dev/main.adb +z:\Dev\#main.adb# diff --git a/.emacs.d/auto-save-list/.saves-5904-SPRINGSTEEN~ b/.emacs.d/auto-save-list/.saves-5904-SPRINGSTEEN~ new file mode 100755 index 0000000..d9d897b --- /dev/null +++ b/.emacs.d/auto-save-list/.saves-5904-SPRINGSTEEN~ @@ -0,0 +1,2 @@ +z:/FinalResults - SORTED/analyze.py +z:\FinalResults - SORTED\#analyze.py# diff --git a/.emacs.d/auto-save-list/.saves-5960-PIXIES~ b/.emacs.d/auto-save-list/.saves-5960-PIXIES~ new file mode 100755 index 0000000..9406dbc --- /dev/null +++ b/.emacs.d/auto-save-list/.saves-5960-PIXIES~ @@ -0,0 +1,34 @@ +z:/Dev/CPP/lns/src/ilp.cpp +z:\Dev\CPP\lns\src\#ilp.cpp# +z:/Dev/CPP/lns/inc/ilp.hpp +z:\Dev\CPP\lns\inc\#ilp.hpp# +z:/Dev/CPP/lns/makefile +z:\Dev\CPP\lns\#makefile# +z:/Dev/CPP/lns/src/instance.cpp +z:\Dev\CPP\lns\src\#instance.cpp# +z:/Dev/CPP/lns/inc/instance.hpp +z:\Dev\CPP\lns\inc\#instance.hpp# +z:/Dev/CPP/lns/src/greedy.cpp +z:\Dev\CPP\lns\src\#greedy.cpp# +z:/Dev/CPP/lns/inc/greedy.hpp +z:\Dev\CPP\lns\inc\#greedy.hpp# +z:/Dev/CPP/lns/src/main.cpp +z:\Dev\CPP\lns\src\#main.cpp# +z:/Dev/CPP/lns/inc/ogsn.hpp +z:\Dev\CPP\lns\inc\#ogsn.hpp# +z:/Dev/CPP/lns/src/ogsn.cpp +z:\Dev\CPP\lns\src\#ogsn.cpp# +z:/Dev/CPP/lns/inc/solution.hpp +z:\Dev\CPP\lns\inc\#solution.hpp# +z:/Dev/CPP/test.cpp +z:\Dev\CPP\#test.cpp# +z:/Dev/CPP/lns/src/solution.cpp +z:\Dev\CPP\lns\src\#solution.cpp# +z:/Dev/Python/Projects/Model_1/run-many.sh +z:\Dev\Python\Projects\Model_1\#run-many.sh# +z:/Dev/Python/Projects/Instances/generate.py +z:\Dev\Python\Projects\Instances\#generate.py# +z:/Dev/Python/Projects/Instances/main.py +z:\Dev\Python\Projects\Instances\#main.py# +z:/Dev/CPP/lns/.gitignore +z:\Dev\CPP\lns\#.gitignore# diff --git a/.emacs.d/auto-save-list/.saves-6292-PIXIES~ b/.emacs.d/auto-save-list/.saves-6292-PIXIES~ new file mode 100755 index 0000000..cc9149a --- /dev/null +++ b/.emacs.d/auto-save-list/.saves-6292-PIXIES~ @@ -0,0 +1,8 @@ +z:/Dev/main.cpp +z:\Dev\#main.cpp# +z:/Dev/main.c +z:\Dev\#main.c# +z:/Dev/Python/Projects/Model_1/test-result.py +z:\Dev\Python\Projects\Model_1\#test-result.py# +z:/Dev/Python/Projects/Model_1/main.py +z:\Dev\Python\Projects\Model_1\#main.py# diff --git a/.emacs.d/auto-save-list/.saves-6632-PIXIES~ b/.emacs.d/auto-save-list/.saves-6632-PIXIES~ new file mode 100755 index 0000000..5faa2dc --- /dev/null +++ b/.emacs.d/auto-save-list/.saves-6632-PIXIES~ @@ -0,0 +1,2 @@ +e:/Python/Project1/access_cflos_rerun_lat.py +e:\Python\Project1\#access_cflos_rerun_lat.py# diff --git a/.emacs.d/auto-save-list/.saves-7132-SPRINGSTEEN~ b/.emacs.d/auto-save-list/.saves-7132-SPRINGSTEEN~ new file mode 100755 index 0000000..60cd755 --- /dev/null +++ b/.emacs.d/auto-save-list/.saves-7132-SPRINGSTEEN~ @@ -0,0 +1,2 @@ +c:/Users/mcapelle/Downloads/matplotlib-1.3.1/setup.py +c:\Users\mcapelle\Downloads\matplotlib-1.3.1\#setup.py# diff --git a/.emacs.d/auto-save-list/.saves-7253-pinkfloyd.laas.fr~ b/.emacs.d/auto-save-list/.saves-7253-pinkfloyd.laas.fr~ new file mode 100644 index 0000000..41e0a0e --- /dev/null +++ b/.emacs.d/auto-save-list/.saves-7253-pinkfloyd.laas.fr~ @@ -0,0 +1,2 @@ +/home/mcapelle/Documents/Lettre_Resiliation_Bail/lettre.tex +/home/mcapelle/Documents/Lettre_Resiliation_Bail/#lettre.tex# diff --git a/.emacs.d/clang-complete b/.emacs.d/clang-complete new file mode 100755 index 0000000000000000000000000000000000000000..56c344b171f4c5ca024923842afd45d0f7c46db1 GIT binary patch literal 58894 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 +;; Version: 2014.03.27 +;; Package-Version: 20151026.1233 +;; URL: https://bitbucket.org/zck/2048.el + +;; This file is not part of GNU Emacs + +;; 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: + +;; This program is an implementation of 2048 for Emacs. +;; To begin playing, call `M-x 2048-game`, then use the arrow keys, +;; p/n/b/f, or C-p/C-n/C-b/C-f to move the tiles around. + +;; Whenever you move the board, all tiles slide as far to that direction +;; as they can go. If a tile collides with another tile of the same value, +;; the tiles combine into a tile with double the initial value, and you +;; gain the new tile's value as your score. + +;; The goal is to create a tile with value 2048. + +;; The size of the board and goal value can be customized -- see the variables +;; *2048-columns*, *2048-rows*, and *2048-victory-value*. + + +;;; Code: + +(define-derived-mode 2048-mode special-mode "2048-mode" + (define-key 2048-mode-map (kbd "p") '2048-up) + (define-key 2048-mode-map (kbd "C-p") '2048-up) + (define-key 2048-mode-map (kbd "") '2048-up) + (define-key 2048-mode-map (kbd "n") '2048-down) + (define-key 2048-mode-map (kbd "C-n") '2048-down) + (define-key 2048-mode-map (kbd "") '2048-down) + (define-key 2048-mode-map (kbd "b") '2048-left) + (define-key 2048-mode-map (kbd "C-b") '2048-left) + (define-key 2048-mode-map (kbd "") '2048-left) + (define-key 2048-mode-map (kbd "f") '2048-right) + (define-key 2048-mode-map (kbd "C-f") '2048-right) + (define-key 2048-mode-map (kbd "") '2048-right) + (define-key 2048-mode-map (kbd "r") '2048-random-move)) + +;;;###autoload +(defun 2048-game () "Start playing 2048." + (interactive) + (switch-to-buffer "2048") + (buffer-disable-undo "2048") + (2048-mode) + (2048-init)) + +(require 'cl-lib) + +(defvar *2048-board* nil + "The board itself. + +If a number is in the square, the number is stored. Otherwise, 0 is stored. + +Instead of accessing this directly, use 2048-get-cell.") + +(defvar *2048-combines-this-move* nil + "This stores, for each cell in the board, whether the number in it was generated this turn by two numbers combining.") + +(defvar *2048-columns* 4 + "The width of the board. It could be customized, if you wanted to make the game very very hard, or very very easy.") + +(defvar *2048-rows* 4 + "The height of the board. It could be customized, if you wanted to make the game very very tall, or very very short.") + +(defvar *2048-possible-values-to-insert* (cons 4 (make-list 9 2)) + "When a new element is inserted into the board, randomly choose a number from this sequence.") + +(defvar *2048-victory-value* nil + "When this number is reached, the user wins! Yay!") + +(defvar *2048-default-victory-value* 2048 + "When the game starts, reset *2048-victory-value* to this value.") + +(defvar *2048-debug* nil + "When 't, print debugging information.") + +(defconst *2048-numbers* '(0 2 4 8 16 32 64 128 256 512 1024 2048)) + +(defvar *2048-score* nil + "Current score in the game.") + +(defvar *2048-hi-tile* nil + "Current highest-number tile.") + +(defvar *2048-history* nil + "Score history in this Emacs session. Each element is (SCORE HI-TILE TIME).") + +(defvar *2048-history-size* 10 + "Keep this many items in the history.") + +(defvar *2048-game-has-been-added-to-history* nil + "Whether the current game has been added to the history yet. + +Right now, it's only for use when the game has been lost. Since the user can choose to not start a new game, we want to add the score to the history the first time the game is lost, but not any other time.") + +(defvar *2048-game-epoch* nil + "The time the current game started.") + +;; These are prefixed with "twentyfortyeight-face-", not "2048-face" +;; because face names starting with numbers break htmlfontify-buffer, +;; as CSS classes beginning with numbers are ignored. +(defface twentyfortyeight-face-2 '((t . (:background "khaki" :foreground "black"))) "Face for the tile 2" :group '2048-faces) +(defface twentyfortyeight-face-4 '((t . (:background "burlywood" :foreground "black"))) "Face for the tile 4" :group '2048-faces) +(defface twentyfortyeight-face-8 '((t . (:background "orange3" :foreground "black"))) "Face for the tile 8" :group '2048-faces) +(defface twentyfortyeight-face-16 '((t . (:background "orange" :foreground "black"))) "Face for the tile 16" :group '2048-faces) +(defface twentyfortyeight-face-32 '((t . (:background "orange red" :foreground "black"))) "Face for the tile 32" :group '2048-faces) +(defface twentyfortyeight-face-64 '((t . (:background "firebrick" :foreground "white"))) "Face for the tile 64" :group '2048-faces) +(defface twentyfortyeight-face-128 '((t . (:background "dark red" :foreground "white"))) "Face for the tile 128" :group '2048-faces) +(defface twentyfortyeight-face-256 '((t . (:background "dark magenta" :foreground "white"))) "Face for the tile 256" :group '2048-faces) +(defface twentyfortyeight-face-512 '((t . (:background "magenta" :foreground "black"))) "Face for the tile 512" :group '2048-faces) +(defface twentyfortyeight-face-1024 '((t . (:background "gold" :foreground "black"))) "Face for the tile 1024" :group '2048-faces) +(defface twentyfortyeight-face-2048 '((t . (:background "yellow" :foreground "black"))) "Face for the tile 2048" :group '2048-faces) + +(defun 2048-get-face (number) + "Return the face for squares holding NUMBER." + (let ((face-symbol (2048-get-face-symbol number))) + (if (facep face-symbol) + face-symbol + 'twentyfortyeight-face-2048))) + +(defun 2048-get-face-symbol (number) + "Return the face symbol for squares holding NUMBER." + (intern (concat "twentyfortyeight-face-" + (int-to-string number)))) + +(defun 2048-empty-tile (num) + "Return the tile to be inserted for the blank part of a square holding NUM. + +That is, an empty string with font stuff on it." + (symbol-value (2048-empty-symbol num))) + +(defun 2048-empty-symbol (num) + "Return symbol of the variable holding empty space for number NUM." + (intern (concat "2048-empty-" (int-to-string num)))) + +(defun 2048-tile-symbol (num) + "Return symbol of the variable for the tile for squares holding NUM." + (intern (concat "2048-tile-" (int-to-string num)))) + +(defun 2048-tile (num) + "Return the tile to be inserted for a square holding NUM. + +The tile is the string, but with extra font stuff on it." + (symbol-value (2048-tile-symbol num))) + +(defmacro 2048-game-move (&rest body) + "Perform the game move indicated by BODY. + +This macro is used to do some housekeeping around the move." + `(progn (setq *2048-combines-this-move* (make-vector (* *2048-columns* *2048-rows*) + nil)) + + ,@body + (2048-print-board) + (2048-check-game-end))) + +(defmacro 2048-debug (&rest body) + "If *2048-debug* is 't, log ,@BODY as a string to the buffer named '2048-debug'." + `(when *2048-debug* + (print (concat ,@body) + (get-buffer-create "2048-debug")))) + +(defun 2048-init-tiles () + "Initialize each variable 2048-empty-N and 2048-tile-N with appropriate string and face." + (mapc #'2048-init-tile + *2048-numbers*)) + +(defun 2048-init-tile (number) + "Initialize the tile holding NUMBER. + +This sets up both the tile to hold it, and the empty space around it." + (set (2048-empty-symbol number) (format "%7s" " ")) + ;; if constant then all faces are applied to this one constant. (Symptom: all background is yellow) + ;; The bytecompiler is smart enough to see that (concat...) is a constant, but not (format...) ;-) + (set (2048-tile-symbol number) (format "%5s " (2048-num-to-printable number))) + (when (> number 0) + (let ((face (2048-get-face number))) + (put-text-property 0 7 'font-lock-face face (2048-empty-tile number)) + (put-text-property 0 7 'font-lock-face face (2048-tile number))))) + +(defun 2048-test-tiles () + "Test out the tile colors." + (interactive) + (let ((*2048-board* + (vconcat *2048-numbers* + (make-vector (- (* *2048-columns* *2048-rows*) + (length *2048-numbers*)) + 0))) + (*2048-score* 123456) + (*2048-history* '((123 512 "2014-06-18 12:34:56" (0 30 0 0)) + (456 1024 "2014-06-18 12:45:00" (0 123 0 0))))) + (switch-to-buffer "2048-test") + (2048-init-tiles) + (2048-mode) + (2048-print-board))) + +(defun 2048-init () + "Begin a game of 2048." + (setq *2048-board* (make-vector (* *2048-columns* *2048-rows*) + 0)) + (setq *2048-combines-this-move* (make-vector (* *2048-columns* *2048-rows*) + nil)) + (setq *2048-score* 0 + *2048-hi-tile* 2) + (setq *2048-victory-value* *2048-default-victory-value*) + (setq *2048-game-has-been-added-to-history* nil) + (setq *2048-game-epoch* (current-time)) + (2048-insert-random-cell) + (2048-insert-random-cell) + (2048-init-tiles) + (2048-print-board) + (message "Good luck!")) + +(defun 2048-get-cell (row col) + "Get the value in (ROW, COL)." + (elt *2048-board* + (+ (* row *2048-columns*) + col))) + +(defun 2048-set-cell (row column val) + "Set the value in (ROW, COLUMN) to VAL." + (when (< *2048-hi-tile* val) + (setq *2048-hi-tile* val)) + (aset *2048-board* + (+ (* row *2048-columns*) + column) + val)) + +(defun 2048-num-to-printable (num) + "Return NUM as a string that can be put into the board. + +That is, print zeros as empty strings, and all other numbers as themselves." + (if (eq num 0) + "" + (format "%d" num))) + +(defun 2048-was-combined-this-turn (row column) + "Return whether the number in (ROW, COLUMN) was generated this turn by two numbers combining." + (elt *2048-combines-this-move* + (+ (* row *2048-columns*) + column))) + +(defun 2048-set-was-combined-this-turn (row column) + "Set that the number in (ROW, COLUMN) was generated this turn by two numbers combining." + (2048-debug (format "setting (%d, %d) as combined this turn." row column)) + (aset *2048-combines-this-move* + (+ (* row *2048-columns*) + column) + t)) + +(defun 2048-insert-random-cell () + "Pick a number randomly, and insert it into a random cell." + (let ((number-to-insert (elt *2048-possible-values-to-insert* + (random (length *2048-possible-values-to-insert*)))) + (row (random *2048-rows*)) + (column (random *2048-columns*))) + (while (not (eq (2048-get-cell row column) + 0)) + (setq row (random *2048-rows*)) + (setq column (random *2048-columns*))) + (2048-set-cell row column number-to-insert))) + +(defun 2048-check-game-end () + "Check whether the game has either been won or lost. If so, notify the user and restarting." + (cond ((2048-game-was-won) + (2048-print-board) + (if (y-or-n-p "Yay! You beat the game! y to start again; n to continue. Start again? ") + (progn (2048-add-new-history-item *2048-score* *2048-hi-tile* (current-time) (time-subtract (current-time) *2048-game-epoch*)) + (2048-init)) + (setq *2048-victory-value* + (* *2048-victory-value* 2)))) + ((2048-game-was-lost) + (unless *2048-game-has-been-added-to-history* + (2048-add-new-history-item *2048-score* *2048-hi-tile* (current-time) (time-subtract (current-time) *2048-game-epoch*)) + (setq *2048-game-has-been-added-to-history* t)) + (2048-print-board) + (when (y-or-n-p "Aw, too bad. You lost. Want to play again? ") + (2048-init))))) + +(defun 2048-add-new-history-item (score hi-tile game-end-time game-duration) + "Generate and add a new history item to the score list. + +This item should have score SCORE, the highest tile reached as HI-TILE, +have ended at GAME-END-TIME, and have duration GAME-DURATION" + (setq *2048-history* + (let ((history-length (length *2048-history*))) + ;; get the history length before calling cl-sort because cl-sort is destructive. + (butlast (cl-sort (cons (list *2048-score* + *2048-hi-tile* + (format-time-string "%Y-%m-%d" game-end-time) + game-duration) + *2048-history*) + '> + :key 'car) + (max 0 + (- (1+ history-length) + *2048-history-size*)))))) + +(defun 2048-game-was-won () + "Return t if the game was won, nil otherwise." + (let ((game-was-won nil)) + (dotimes (row *2048-rows*) + (dotimes (column *2048-columns*) + (when (eq (2048-get-cell row column) + *2048-victory-value*) + (setq game-was-won t)))) + game-was-won)) + +(defun 2048-game-was-lost () + "Return t if the game was lost, nil otherwise." + (let ((game-was-lost t)) + (dotimes (row *2048-rows*) + (dotimes (column *2048-columns*) + (when (eq (2048-get-cell row column) + 0) + (setq game-was-lost nil)))) + + ;; For each square, if that square has one below it that's the same, + ;; the game's not over. + (dotimes (row (1- *2048-rows*)) + (dotimes (column *2048-columns*) + (when (eq (2048-get-cell row column) + (2048-get-cell (1+ row) column)) + (setq game-was-lost nil)))) + + ;; For each square, if that square has one to its right that's the same, + ;; the game's not over. + (dotimes (row *2048-rows*) + (dotimes (column (1- *2048-columns*)) + (when (eq (2048-get-cell row column) + (2048-get-cell row (1+ column))) + (setq game-was-lost nil)))) + game-was-lost)) + +(defun 2048-print-board () + "Wipes the entire field, and prints the board." + (let ((inhibit-read-only t)) + (erase-buffer) + (dotimes (row *2048-rows*) + + ;;print the separator line on top of, and between cells + (dotimes (col *2048-columns*) + (insert "+-------")) + (insert "+") + (insert "\n") + + ;;print the empty line above numbers + (dotimes (col *2048-columns*) + (insert "|") + (let ((current-value (2048-get-cell row col))) + (insert (2048-empty-tile current-value)))) + (insert "|") + (insert "\n") + + ;; print the number tiles + (dotimes (col *2048-columns*) + (insert "|") + (let ((current-value (2048-get-cell row col))) + (insert (2048-tile current-value)))) + (insert "|") + (insert "\n") + + ;;print the empty line below numbers + (dotimes (col *2048-columns*) + (insert "|") + (let ((current-value (2048-get-cell row col))) + (insert (2048-empty-tile current-value)))) + (insert "|") + (insert "\n")) + + ;;print the separator line on the bottom of the last row. + (dotimes (col *2048-columns*) + (insert "+-------")) + (insert "+\n") + (insert "\n") + + (let ((score-width (if (= 0 *2048-score*) + 1 + (ceiling (log *2048-score* 10))))) + (insert (format "%10s%s%s\n" "/" (make-string (+ 9 + score-width) + ?\=) "\\")) + (insert (format "%10s %s %d %s\n" "|" "Score:" *2048-score* "|")) + (insert (format "%10s%s%s\n" "\\" (make-string (+ 9 + score-width) + ?\=) "/"))) + (insert "\n") + + (2048-print-help) + + (insert "\n") + + ;; print score and history + (insert (format "%10s%s%s\n" "/" (make-string 13 ?\=) "\\")) + (insert (format "%24s\n" "| HIGH SCORES |")) + (insert (format "%10s%s%s\n" "\\" (make-string 13 ?\=) "/")) + (insert "\n") + (insert (format "%8s %7s %7s %4s\n" "Score" "Hi-Tile" "Date" "Duration")) + (mapc #'(lambda (x) + (insert (format "%8d %7d %10s %s\n" + (elt x 0) (elt x 1) (elt x 2) (format-time-string "%H:%M:%S" (elt x 3) t)))) + *2048-history*) + + (goto-char (point-min)))) + +(defun 2048-print-help () + "Print basic help text." + (insert "The goal is to create a tile with value 2048. +Use the arrow keys, p/n/b/f, or C-p/C-n/C-b/C-f +to move the tiles around. Press r to move randomly. + +If two tiles of the same value collide, the tiles +combine into a tile with twice the value.\n")) + +(defun 2048-move (from-row from-column delta-row delta-column) + "Try to move the number in (FROM-ROW, FROM-COLUMN) + +Move it by (DELTA-ROW, DELTA-COLUMN). +This succeeds when the destination (to-row, to-column) either is 0, +or is the same value as (from-row, from-column). +If (to-row, to-column) is zero, cascade and try to move further. +Returns t if we were able to move; otherwise nil." + (let ((to-row (+ from-row delta-row)) + (to-column (+ from-column delta-column))) + (when (in-bounds to-row to-column) + (2048-debug (format "moving the cell (%d, %d) by (%d, %d) to (%d, %d)" from-row from-column delta-row delta-column to-row to-column)) + (let ((from-val (2048-get-cell from-row from-column)) + (to-val (2048-get-cell to-row to-column))) + (cond ((eq from-val to-val) + (unless (or (eq from-val 0) + (2048-was-combined-this-turn to-row to-column)) + (2048-debug (format "combining (%d, %d) into (%d, %d)" from-row from-column to-row to-column)) + (let ((combined-value (* from-val 2))) + (unless (boundp (2048-tile-symbol combined-value)) + (2048-init-tile combined-value)) + (2048-set-cell to-row to-column combined-value) + (setq *2048-score* (+ *2048-score* combined-value)) + (2048-set-cell from-row from-column 0) + (2048-set-was-combined-this-turn to-row to-column)))) + ((eq to-val 0) + (2048-set-cell to-row to-column from-val) + (2048-set-cell from-row from-column 0) + (2048-move to-row to-column delta-row delta-column) + t) + (t nil)))))) ;;ugh, need to pass out whether something was combined, and pass that to the _next_ call to 2048-move. We see bugs on rows like 4 0 4 0. + +(defun in-bounds (row column) + "Return t if (ROW, COLUMN) is in the bounds of the field." + (and (>= row 0) + (>= column 0) + (< row *2048-rows*) + (< column *2048-columns*))) + + +(defun 2048-up () + "Shift the board up." + (interactive) + (2048-game-move + (setq *2048-combines-this-move* (make-vector (* *2048-columns* *2048-rows*) + nil)) + (let ((has-moved nil)) + (dotimes (col *2048-columns*) + (dolist (row (number-sequence 1 + (1- *2048-rows*))) + (setq has-moved (or (2048-move row col -1 0) + has-moved)))) + (when has-moved + (2048-insert-random-cell))))) + +(defun 2048-down () + "Shift the board down." + (interactive) + (2048-game-move + (setq *2048-combines-this-move* (make-vector (* *2048-columns* *2048-rows*) + nil)) + (let ((has-moved nil)) + (dotimes (col *2048-columns*) + (dolist (row (number-sequence (- *2048-rows* 2) 0 -1)) + (setq has-moved (or (2048-move row col 1 0) + has-moved)))) + (when has-moved + (2048-insert-random-cell))))) + +(defun 2048-left () + "Shifts the board left." + (interactive) + (2048-game-move + (let ((has-moved nil)) + (dotimes (row *2048-rows*) + (dolist (col (number-sequence 1 (1- *2048-columns*))) + (setq has-moved (or (2048-move row col 0 -1) + has-moved)))) + (when has-moved + (2048-insert-random-cell))))) + +(defun 2048-right () + "Shifts the board right." + (interactive) + (2048-game-move + (let ((has-moved nil)) + (dotimes (row *2048-rows*) + (dolist (col (number-sequence (- *2048-columns* 2) 0 -1)) + (setq has-moved (or (2048-move row col 0 1) + has-moved)))) + (when has-moved + (2048-insert-random-cell))))) + +(defun 2048-random-move () + "Move the board in a random direction. + +This may result in no changes to the board, +if the move was the same as the last one." + (interactive) + (funcall (elt '(2048-left 2048-right 2048-up 2048-down) (random 4)))) + +(provide '2048-game) +;;; 2048-game.el ends here diff --git a/.emacs.d/elpa/2048-game-20151026.1233/2048-game.elc b/.emacs.d/elpa/2048-game-20151026.1233/2048-game.elc new file mode 100644 index 0000000000000000000000000000000000000000..812dca6346c01df76fe26e49a7ea0c92887ccd1e GIT binary patch literal 19221 zcmc&+`FGpKo!9OUTUmbQ+G&$*<0LzxqUwksz2A3pH0V;a40w9 zNZmgR28ntV&XRE)Dc3)29lG-De4L)DU@}qhG##If{~Dy2kQ{Ev!{gI&qDELp&66-u z!;2_58xPbl9wg~(9GxTwcsff`6%2>rQ04nLM~Cjw(i+1UYeaFX262=Im^@EMRu?0Y zb^H0 zDzz(Q#Cz#%9;#716MFNdeAVP|@836ehv5j@6i~^+DjHAJ?$)R3Q2CCtx3{s|zeq!C zK&YEN&$jX7Z1!-J-e?WiF7NT<;m6xaYdW8WgLrzOn!gwL1pD9TukRc-H6hC=NiML$ z4^}GFehpq)b$F?~Y!Fmh@9)45=_)uPQh*SlXMPf^vhf>X4bw#17%H<+>0Ng)mcoqm=V=H-fAd>$z+&<7hD73N@K5lVb>b7Mo5 z_=e)Rb5I^ABN8eS2BqM#3eWCrY@DBt2d6mhEVSa8H3^eMC8xnKKCj>hU=QLMwDUBM zhE(Fhz_geTq2Gr?QDQ2MvDt;9lGR5tnAXaEd~(Xez6xm+4mL!=%M;u}O#?-uolBsK zia$`m51)d2gNaJgaJn&^izN}|8BC1*1~9$#`ERY>F#}5!tgg2HMD3OcBe#4vpz;xH`jquwu^Y?J=HxBW;#RY8t4{MFX#tlx#C5GGj zVdKVKv$xyf-h{_9JK2rH4{qSr0U#dqnCF?PdIYCf7=fN!7y))XYCTz&>-b#1Is!~A zj9@RnvX_s&7Dlkw!U*>AD=W9K*TM+)S{T7zExi{|*1|rm7D+&>I}9hmg%)_tkY^O^ z!tq!zxnk4`?x|?@jE!k|Cox75 zz_lw_G1?EOQO#*nAALSm&8tBEeELE)BQpqP5~*f`G{F@f^v#1wI7(IXpYecKcrY># zW}+*a|AHrSiAS^S5zZZ-fs9&@lnI<;T)S|^ZTV#Is7b)`&4ikAG*Tusmg^?J-wSI~@v-5F+88+WC z4`>UZor9r@vFcy|QzDjvj{Fed4ARNP0hvml1iWVr!pX!S6cVNO z;1E!#;?~QKjKg55!vOY+3uVyD`v>a$G$fprLqs^aI)^bh38QcpqzK={45jlKqOA*+ zp2r3ow0CC+Cvbu#0QHkFvG}fVVg=e(`^Z4s7L=clhlnG!$w3M+2B5B3l43IgMxO5`?q(ybRuvt-(9;)HkOgybBeD=PE>aNT*Gh zGzn+K&Nu>oa-<%pnWzSYfdeRfuvyO8;=c)@6G%oF4ZFTIh6aalEor2j+!Kbvo*~Kmr9qdTNM3 z0iCfz+KCw}sEPYjZYAE|eSY`pv-|4Hht~1KNB7n7!^ijcYIc@It2-ZQsq(t&_hC2% zuVJ?{dh6qqi5G(s1J9}@tpr+XALz{pf8?|@irYf@T;UoQMspwooPJ1AmV}uR+U)2T zVG2X^Omt8bpF;(vh&JK~a!mD3djVBmP)y<_S#A<1%=A1TL!b-cVdBgv0PMu9kw}2i zBcwTO1J;Cwm4IbP8vvUp^jLt64|J{%X~L2k2JX1Ij^DTi5gF^#W8xC}xT^&;ScKaW zG*H7B6qE_ovW@!lwDHLItzcA61Y5kQ9%P?z8V^n@Yr<~_m0qjIkhX$OYi%0`g|17U z2*UN^LkWQ3d@~4Ieu&u)JbZ^MEWL@`5`rN_KQ#{#1|bN-58qmR6R{8iAN*j2rH6=m z5bEFuD=a_6k{*`xu)^{~Ea_oM#x_e2eTE!Z(l4J=JU4B$tzihi9JYS}^;?_;aGlfOEe?XUR&7I5y|hjJ4zH6AEVF6{aRipOIEg23Lu@XxY6I;B zElR`%!jbrV0ZFer0+(qb4yAM8x74#xA`&q_nKIBpS%M_lL^5zszJ7e?{xf3&$|)`e zR-%r!{&KHKRx1zk z8a_m=0^(7MxU}8v*n1L9x7?*;nJuX5-uiSId<%!9RiO#+);GV(GC}54a7ROgdChvT zn{a_r8f9JNga2-PoQ~aX=@U3^g)*X<;V>YA)1d-Fl1yuZ*3nC*d{YUA&GE{#gU@q( z8Ze+if-_R#*)+X?ry_YxDNl}2FT?;60dR)k6xC2#UJ@@8=?BtU6WUqd{9Qp%O+h_X zBfOwa$L$*Gv^yDf3{gxtm?ye2wljcEGqyCy1vjn)(5zSiv7St%fzXIdWNDaJ6UIL} z(u9HYX(VO^@EKWzWGmRM27FGh@|i*Kn?NrwuLi!|?HaCv%`3_KDy|Av@sM#5;F3~Z zXb#ejsjyM_Lplqw-~e7`l!^ zzD_SMarHj&##nn2pQwY+iB=X%z$#jgm}thN7Fl8*nlgyIzEgund4TZxO;AV-uHV7$ z)}1@|jlvN$O1xHqQzruu%7X`h2AU|7;v69Tk)o(BXpr6E5S5Padro%zBlVEgau$3- zo%YMMQ%PSuk%E^D2)8~#I)&XHQxF$ma5IA*7RG4FYS6&sswmc^l-L#9vMvP~78n*% z63EjJw64uxexbaKitTROh`Ze_A0v11GyQ7JI;{hU3r>V&Ou@i7LOvIC<#ZSY+72DR zmi4lcmRg&U17}PIGQYWd08-|0POtgM#DeYhP4ht70&u4vts}y7{s6kSTo$~vdm&XZ zAWEuatxF67*Eda6x%{kyXEnaZvdN-hMeay7w>wEw@!x{LM&~!TTZzgZz$(#}3)@Lc z0n$Y@DY{@{;5oDEKc-=;(D>mPlLOHjx0O*O%3WtGZy zcF|Fv88KYoO??Y+bShZi>b$GI&NC7E)+E97jmgKqGSVykCr0_%$hvvH1Pi#3)EflZ z@h!V;ImpeqH$DF*{ePtEkUqn|P=>pFK^*gixqj=WZOdFPCX@G6eT4+HOH#uGIY%d& z#!^!jVwDtap;3-dBg`r#sPTB}PKf*@l%^OfxIKKehGyKRqzu~Ym%bytdd>InN8gcT zKj+{tNVfMIS3kIh3;P4iK&0~l9ywVFsJLJ)h^3+uJ#o{?oL5bQ*O1PTC!5EjMYS|h zL()7qStTZ`;x5V&y8I}qC&8n3Z!Mi)m!gfv^dja<_*Q4gVIo#k%?C(4sL6craKFYGF zi-D9Bmf%M~SWvJ*Q%rN65_-AU>w)tt(q;(3nHrv)Xt*c<0_SJ8z_-=&l@NXX_{km< zlz+JWsD>M17&IXY*dW_Hn1J{VAoJGOE?w951Io?v z@*L*j{tR`@S7DusU9teVYfCljNaw{mgI||;!C$d_g>}dKP(jURVR?oK&@+4P*lpMN zyhnb9fclDK&SFB)cPu`Z*%C{j5mDrPs7sKNET}NT>-e(o+VDkJml9Xv)$zDTL(Z15Q{|OqEDi$r9(vNfb5`>}`L5QK4tAb%1 zYa{QJsZ5wxY1UlKH5+H13LsAzy6kSFw6{G(5RlcB8RyWsBiYak`Fdwqp~#=b0*-^6 zotC@Sk@^Y=#iGWU6+g8{s5LemL@jlJsf|jVyhfYUD0tJ)Kw)XGKY%r20^M#Sc|_bs zo8pi_a7LHKNwK9jX^Ys$9N0gZ^mC9zQcQ4SMwhQ_Ro#=<)Lb>rK?KzLGW;9oMWb7h zK$`E0T5WbpF^M#fgxS(9D2!SfzVs2P8*>p&&D^hyooeaFDD642x2Bd+ElpT%>_Af>j8jx5xSKp$G zqL0v0h(ahfl>&v3T#%NY-~_$+w-m~XXthUjWE{;y))I?{zs+I^Hk+dbA*{d#Fr5zOS{AOhB)uZVi_S_r891`}pD0C(B(_ zwP=P>({LHK5+~ilo(Rs7BNFb)HlWRWzznyjemXuz>4WE+SH57T!a-_S2T`BmqIK!G z(fH$wUK1gx<6N!qbRH0y3v|XtCy2o{57%?N=Ji_G*yxM?KlnovD?xqGcolLAlW|6D z`>nNoW^JQ1@t^7@+v*1BiL%X>85~l9FR_H%LUC7gm|x@(^#>HD0fa6GBnDav?!6SL z*}GL^1qA*~zKVXf_AjAt?9PYRfl~1+9cmGbe0=?i9@wKgv3t>#UbE4Q#I@=*Ma5jb za!lO558S%f*7kdm+`h-#pRMh$XR&`}XN_X5`>EwEd}2UqCupuYLt4gKVG($|QkXBg zKWiMRDxH!Ez%erPMq>3Nkh z!^MSrz4FSW(J_c5>wmqp{_QG(I&1q2gohJA&}Gw{_&wLfU`Bs)acnjr@t5|QSNHjI z9U}+|-<1>6B|ZS@N^X?rbxq~K@2GFaQx?-49<*W_p%PT;c9hKqgC4<$OP5t_0I zDwCXq5d%(RZ5P7Rb6Z+|96LuL&AsCcfGoQtFTVhqps{2a7oNU=T@RDJ>Df zPxdg@ZtQK!@Lp-f8?s_Py>`W9)ry_E6~B3d6~Q&$szqzT{GZxIORA$6VMY}ZJ-5@Y z#Uk(xMyCIgVM!mmLFC$BLleP?5)MX33e*z&OR$jcMBya#qBJ)@`3x7O{uAA9()f%K z1X@mzrt`c{%?6xDXPGHbuO<8V+ofmhVezo(@)~YOuR#JD;&|u-B43n7mf(PQRtEzc zTF}4JT(x!nTDI-N9$DXuwD03gemgsbk5^lE<3I;fVLwyj`0QoehlYl;FtntD>s=%m z9uj(U(R*&{7Kp+>v-Cem{C3U7+|L(ZOV#BZ7VoIPVV4IEk#oQ9LBLUOOU z?fQDs-{3Gk_)>{u^;`k!=5`l}Y9zAFFNMEmt}KWdUyiL~)E;ql5A_QEF-{bLLzw|? z(GPHUpkqu;g6RuHXpGj7l+qV1USL4nAv^&S$$;Z*k&xoR|4<;IJ0v{(#dDe?BEbtU zRwHV`S^4tj_T!t|&zs1JAVfWSk-Nk?xmIzM#9y*>BeZ^y`Bx=R21?nOVl;1lCEcU_ zAiS2zSE^r`QD|R^x*V^047Gj|BgMsV8=k%{HU-+JmAa6Imb`P=i@rv)AuT~L zqvHV=4C$xojp#=I#z0Hw#Oj@`b(2n8$)iEXvk8o$D& z_iGp-9r;6Yo%LRH=`yDM`e#`>OClMQ&cY0cKC%G3ki|avke=5k*Bc*dZ`^hKwZ?Tk zZt=c-kET*@`&+Xwp3A=CG3Fb0uq+lt0Z%8<%DZws*Z%I4kMIX-$aNbZZ8AsTPia3r z+-bw*5~RjQTfA$0-1w;1`v9kQ1!4dsTaJ0Ra=xtdMmj z>c~@m6q+pk2bRjNe>CT((*_F(tQBd{rq&FVRHLNYi``t*j{&yn9;NEYx>{tTyo{sM z6~xGz-N+ykN1&u%1yWFnI)7oq>gtOSOQ|+?u8TQ`@)%u_i2Qey zXI9-^M1*t;I-ek&0R?ak=kV^VHLiXB!Bsr=8dt?{rgv&XQtWnj?efnX*KTt%ij@Fk zm#(!$>A%3O`~KSgWv=mzJLrnDgcq4p${44V3e+gd5mQCdasr(tJu=XcxUC8F%jHQO z-kX$f_8kx16V~;G3oUa~lg*Y%+C$R>kb#9PENRSS1Jh*q+HyRxtkS1}9lPyS>c)#S z<;RURRF$tE-;u75gs$LC$JHGHAmNsf7qkL-nMm>Otu@~JTq@0e5c&blG*O_KLL zO%NCguKb zWi`_m^|IQv9k)cv)-oyOv*H?B>MxJqn3yQ2h9CHD6+_rkm;H0ps(#E3$E%U`OzoIj(bZ023ASRRly-^t#HWAYp?OkP10f5eKB++7E2)4YqLX$aY%M*Vj!eB-A5&+nw2& z9lJTav=6h{tZ14BTHg=GlA0Rh;LxLt@IfIO@1WZ7Ew3i*(x4=MzZp5@zz4I`)(& zjy=D&$0JCM0cFZZE+>0*3Ze&z4&Di@#~YKsFcAoYH54G}Oswi(-~0%7)z1O] <- ac-source-c-headers +;; pr[intf] <- ac-source-c-header-symbols + +;;; Change Log: + +;; 1.0.0 first released + +;;; Code: + +(require 'find-file) + +;; + constants + +(defconst ac-c-headers-version "1.0.0") + +;; + filenames + +(defvar ac-c-headers--files-cache nil + "list of (PREFIX . FILE-OR-DIRECTORY ...)") + +(defun ac-c-headers--files-update (&optional prefix) + (setq prefix (or prefix "")) + (unless (assoc prefix ac-c-headers--files-cache) + (setq ac-c-headers--files-cache + (cons (cons prefix + (apply 'append + (mapcar + (lambda (dir) + (let ((path (concat (file-name-as-directory dir) prefix))) + (when (file-accessible-directory-p path) + (delq nil + (mapcar + (lambda (file) + (cond ((file-directory-p (concat path file)) + (concat file "/")) + ((string-match "\\h$" file) + file) + (t + nil))) + (directory-files path nil)))))) + cc-search-directories))) + ac-c-headers--files-cache)))) + +(defun ac-c-headers--files-list (&optional point) + "returns possible completions at the point" + (save-excursion + (when point (goto-char point)) + (when (looking-back "[<\"]\\([^<>\"]*?\\)\\([^<>\"/]*\\)") + (let ((prefix (match-string 1))) + (unless (assoc prefix ac-c-headers--files-cache) + (ac-c-headers--files-update prefix)) + (cdr (assoc prefix ac-c-headers--files-cache)))))) + +;; + symbols in headers + +(defvar ac-c-headers--symbols-cache nil + "list of (HEADER . SYMBOL ...)") + +(defun ac-c-headers--search-header-file (header) + (catch 'found + (dolist (prefix cc-search-directories) + (let ((file (concat prefix + (unless (string-match "/$" prefix) "/") + header))) + (when (file-exists-p file) + (throw 'found file)))))) + +(defun ac-c-headers--symbols-update (header) + (unless (assoc header ac-c-headers--symbols-cache) + (let ((file (ac-c-headers--search-header-file header))) + (when (and file (file-exists-p file)) + (with-temp-buffer + (insert-file-contents file) + ;; delete /* comments */ + (goto-char (point-min)) + (while (search-forward-regexp + "/\\*\\([^*]\\|\\*[^/]\\)*\\*/" nil t) + (replace-match "")) + ;; delete // comments + (goto-char (point-min)) + (while (search-forward-regexp "//.*$" nil t) + (replace-match "")) + ;; search symbols + (setq ac-c-headers--symbols-cache + (cons (cons header + (delete-dups + (let ((res nil)) + (goto-char (point-min)) + (while (search-forward-regexp + "\\_<[a-zA-Z_]*\\_>" nil t) + (setq res (cons (match-string 0) res))) + res))) + ac-c-headers--symbols-cache))))))) + +(defun ac-c-headers--symbols-list (&optional buffer) + "returns possible completions for the buffer" + (setq buffer (or buffer (current-buffer))) + (with-current-buffer buffer + (let ((res nil) header) + (save-excursion + (goto-char (point-min)) + (while (search-forward-regexp + "^#include *[<\"]\\([^>\"]*\\)[>\"]" nil t) + (setq header (match-string 1)) + (unless (assoc header ac-c-headers--symbols-cache) + (ac-c-headers--symbols-update header)) + (setq res (append (cdr (assoc header ac-c-headers--symbols-cache)) + res)))) + res))) + +;; + ac-sources + +(defvar ac-source-c-headers + '((prefix . "#include *[<\"][^<>\"]*?\\([^<>\"/]*\\)") + (candidates . ac-c-headers--files-list) + (action . (lambda () + (when (string-match "\\.h$" candidate) + (ac-c-headers--symbols-update candidate) + (cond ((looking-at "[>\"]") + (forward-char 1) + (newline-and-indent)) + ((looking-back "#include *<\\([^<]*\\)") + (insert ">\n")) + (t + (insert "\"\n")))))) + (symbol . "h") + (requires . 0) + (cache))) + +(defvar ac-source-c-header-symbols + '((candidates . ac-c-headers--symbols-list) + (symbol . "h") + (cache))) + +;; + provide + +(provide 'ac-c-headers) + +;;; ac-c-headers.el ends here diff --git a/.emacs.d/elpa/ac-c-headers-20151021.134/ac-c-headers.elc b/.emacs.d/elpa/ac-c-headers-20151021.134/ac-c-headers.elc new file mode 100644 index 0000000000000000000000000000000000000000..c407179007123ffa95c761aca71cab608c652aba GIT binary patch literal 3481 zcmbtWYje{^6!n+R*yal`r5zrf-pEX28RU57M@W+bNeDw`=p+O_ltzZGr8QQOB_YX# zF#Yj8cO}_zl4d%CXPkI<@9y5mIp^-?-pkz|E0s!pb90k+qiO61%F_csq`j$hQ~Iou z)Q>{4d+mPP)@vtzHX#`V6vdf8^}ost25Gyl7vD_$l*TxRW~oZaI}PR3cgc&~G)w&O zL;4V_Nt%)LJmt~+9uq3t0>KLNkX?F~>-gw%xDez$zjj4HfwD)}f4{Fo%{g->z z!IAZB|7dUb&B4)IYPZ|w&-&QUGFd)UUzu92bSH{JKcHsgKF;W^3o~~_2EI&bb;*-r z(=7I6rl@h;{DsjGg)*QxQDgs$Nk-MNJA>~kPPfy&jz7I>%`u)}u79^u#kh~}0N-_| zD>_c-7>==1+i`3mZop{WpyT|cE4+1GD@ASHiRB@KZWbjz0Av^>(=>8P#&K}Ue-&Ud zm9dM^;VNw59d7PcS89iM@T2F1E9}@0?Ci2%T_NBbdkX&?!z^6G8AYHJOYnosW&!)k zlIh%;(|lUGu1ZsX1dGzmQ!6G<1)p@j7oO?jYuD^*?T}sSI^#->T|MNBwX5(DiR86g zSjuMy{GT&c`jX##_BvzDpq!J|RA%l3*Eo~=27551?vNI?>_s}H_2G~PLyfU6B`TXG zVM=k7M*@aU<3MRCAen(#3Tu9tsq7bs8b>pbr#U*!l;uXA zVp;=%w_zggz^4DO;)G9mbOZC6&n3-o>B3xlbr1Cs&RD~lt0-)I0c-}b=$KBp&D(F{ zuwGRcxmDbKIlT*2uq-cPELmt2fn`x1gvPyQ)iT!CfOKYn=BfIEeJLoIO_Jz@bcjRh zn?tfu71rKM@mnT+A$n&M*PqMV-yFoC%7DyMkBRS-b*FbPG{i|Y*}raQm^Hul&;TVl#yt(>*DIlp{ZZvWz<{RRuL4Q`3Sy``Oe z+hXTmyc3t(gB54I^F7~mP;tiQN~zNiN|F`HU#3@?ubg01Eiw`1^EYq z<9BQLWn!`g1agPX5O*9%SCvxC;9P6B08(@Xg{Zt)j7H`-@3)Sn^>y3&^F52s`^V>0 zr^7O>CAxpLM8ip~(Rq|th;&)Bi!z;WUG(+%dQvUmiv|j;--aFtyTsGHj{;Mj9Ep8o zzkoi(LfExyx{vitp6`|lt|712wprp?7wnrA$ixHu;wD!>r@)*>&@y%|h~s}$>RrPR z-Czb$Yb^v{>pjYK%s&j2>VL?5nY2O~@)yUDdWGKGeS5%q&&pCfztU)yp#1Zv9j!K- zg|M~BIOo@yE>v`+q6L}M#M9UF`4N_)b1d^u_i>902|K)+`CT8#>By5Bgw2zQ3aPoQ zlaABoN5TA5y>sEFWt|K4tRaYjPSGqoDP9Feo +;; Golevka [https://github.com/Golevka] +;; Taylan Ulrich Bayirli/Kammer +;; Many others +;; Author: yaruopooner [https://github.com/yaruopooner] +;; URL: https://github.com/yaruopooner/ac-clang +;; Keywords: completion, convenience, intellisense +;; Version: 1.6.0 +;; Package-Requires: ((emacs "24") (cl-lib "0.5") (auto-complete "1.4.0") (pos-tip "0.4.6") (yasnippet "0.8.0")) + + +;; 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: +;; +;; * INTRODUCTION: +;; This program fork from auto-complete-clang-async.el +;; ac-clang provide code completion and arguments expand. +;; This program consists of the client(elisp) and server(binary). +;; The server is executable file, and a self-build is necessary. +;; The server achieve code completion using libclang of LLVM. +;; +;; * FEATURES: +;; - Basic(same auto-complete-clang-async) +;; Code Completion by libclang. +;; Auto Completion support. +;; Uses a "completion server" process to utilize libclang. +;; C/C++/Objective-C mode support. +;; Jump to definition or declaration. return from jumped location. +;; Jump is an on-the-fly that doesn't use the tag file. +;; Also provides flymake syntax checking. +;; A few bugfix and refactoring. +;; +;; - Extension +;; "completion server" process is 1 process per Emacs. (original version is per buffer) +;; Template Method Parameters expand support. +;; Manual Completion support. +;; libclang CXTranslationUnit Flags support. +;; libclang CXCodeComplete Flags support. +;; Multibyte support. +;; Debug Logger Buffer support. +;; Jump to inclusion-file. return from jumped location. +;; more a few modified. (client & server) +;; +;; - Optional +;; CMake support. +;; clang-server.exe and libclang.dll built with Microsoft Visual Studio 2015/2013. +;; x86_64 Machine Architecture + Windows Platform support. (Visual Studio Predefined Macros) +;; +;; * EASY INSTALLATION(Windows Only): +;; - Visual C++ Redistributable Packages for Visual Studio 2015/2013 +;; Must be installed if don't have a Visual Studio 2015/2013. +;; +;; - 2015 +;; [http://www.microsoft.com/download/details.aspx?id=48145] +;; - 2013 +;; [http://www.microsoft.com/download/details.aspx?id=40784] +;; +;; - Completion Server Program +;; Built with Microsoft Visual Studio 2015/2013. +;; [https://github.com/yaruopooner/ac-clang/releases] +;; 1. download clang-server.zip +;; 2. clang-server.exe and libclang.dll is expected to be available in the PATH or in Emacs' exec-path. +;; +;; * STANDARD INSTALLATION(Linux, Windows): +;; Generate a Unix Makefile or a Visual Studio Project by CMake. +;; +;; - Self-Build step +;; 1. LLVM +;; checkout, apply patch, generate project, build +;; It is recommended that you use this shell. +;; [https://github.com/yaruopooner/llvm-build-shells.git] +;; +;; 2. Clang Server +;; generate project, build +;; +;; see clang-server's reference manual. +;; ac-clang/clang-server/readme.org +;; +;; * NOTICE: +;; - LLVM libclang.[dll, so, ...] +;; This binary is not official binary. +;; Because offical libclang has mmap lock problem. +;; Applied a patch to LLVM's source code in order to solve this problem. +;; +;; see clang-server's reference manual. +;; ac-clang/clang-server/readme.org +;; + + +;; Usage: +;; * DETAILED MANUAL: +;; For more information and detailed usage, refer to the project page: +;; [https://github.com/yaruopooner/ac-clang] +;; +;; * SETUP: +;; (require 'ac-clang) +;; +;; (setq w32-pipe-read-delay 0) ;; <- Windows Only +;; +;; (when (ac-clang-initialize) +;; (add-hook 'c-mode-common-hook '(lambda () +;; (setq ac-clang-cflags CFLAGS) +;; (ac-clang-activate-after-modify)))) +;; +;; * DEFAULT KEYBIND +;; - start auto completion +;; code completion & arguments expand +;; `.` `->` `::` +;; - start manual completion +;; code completion & arguments expand +;; `` +;; - jump to inclusion-file, definition, declaration / return from it +;; this is nestable jump. +;; `M-.` / `M-,` +;; + +;;; Code: + + + +(require 'cl-lib) +(require 'auto-complete) +(require 'pos-tip) +(require 'yasnippet) +(require 'flymake) + + + + +(defconst ac-clang-version "1.6.0") +(defconst ac-clang-libclang-version nil) + + +;;; +;;; for Server vars +;;; + + +;; clang-server binary type +(defvar ac-clang-server-type 'release + "clang-server binary type +`release' : release build version +`debug' : debug build version (server develop only) +`x86_64' : (obsolete. It will be removed in the future.) 64bit release build version +`x86_64d' : (obsolete. It will be removed in the future.) 64bit debug build version (server develop only) +`x86_32' : (obsolete. It will be removed in the future.) 32bit release build version +`x86_32d' : (obsolete. It will be removed in the future.) 32bit debug build version (server develop only) +") + + +;; clang-server launch option values +(defvar ac-clang-server-stdin-buffer-size nil + "STDIN buffer size. value range is 1 - 5 MB. +If the value is nil, will be allocated 1MB. +The value is specified in MB.") + +(defvar ac-clang-server-stdout-buffer-size nil + "STDOUT buffer size. value range is 1 - 5 MB. +If the value is nil, will be allocated 1MB. +The value is specified in MB.") + +(defvar ac-clang-server-logfile nil + "IPC records output file.(for debug)") + + +;; server binaries property list +(defconst ac-clang--server-binaries '(release "clang-server" + debug "clang-server-debug")) + +(defconst ac-clang--server-obsolete-binaries '(x86_64 "clang-server-x86_64" + x86_64d "clang-server-x86_64d" + x86_32 "clang-server-x86_32" + x86_32d "clang-server-x86_32d")) + + +;; server process details +(defcustom ac-clang--server-executable nil + "Location of clang-server executable." + :group 'auto-complete + :type 'file) + + +(defconst ac-clang--process-name "Clang-Server") + +(defconst ac-clang--process-buffer-name "*Clang-Server*") +(defconst ac-clang--completion-buffer-name "*Clang-Completion*") +(defconst ac-clang--diagnostics-buffer-name "*Clang-Diagnostics*") + +(defvar ac-clang--server-process nil) +(defvar ac-clang--status 'idle + "clang-server status +`idle' : job is nothing +`receive' : receiving command sent result +`transaction' : transaction execute to received command result +`shutdown' : shutdown server + ") + + +(defvar ac-clang--activate-buffers nil) + + +;; server debug +(defconst ac-clang--debug-log-buffer-name "*Clang-Log*") +(defvar ac-clang-debug-log-buffer-p nil) +(defvar ac-clang-debug-log-buffer-size (* 1024 50)) + + +;; clang-server behaviors +(defvar ac-clang-clang-translation-unit-flags "CXTranslationUnit_DetailedPreprocessingRecord|CXTranslationUnit_PrecompiledPreamble|CXTranslationUnit_CacheCompletionResults" + "CXTranslationUnit Flags. +for Server behavior. +The value sets flag-name strings or flag-name combined strings. +Separator is `|'. +`CXTranslationUnit_DetailedPreprocessingRecord' : Required if you want jump to macro declaration, inclusion-file. +`CXTranslationUnit_Incomplete' : +`CXTranslationUnit_PrecompiledPreamble' : Increase completion performance. +`CXTranslationUnit_CacheCompletionResults' : Increase completion performance. +`CXTranslationUnit_ForSerialization' : +`CXTranslationUnit_CXXChainedPCH' : +`CXTranslationUnit_SkipFunctionBodies' : +`CXTranslationUnit_IncludeBriefCommentsInCodeCompletion' : Required if you want to brief-comment of completion. +") + +(defvar ac-clang-clang-complete-at-flags "CXCodeComplete_IncludeMacros" + "CXCodeComplete Flags. +for Server behavior. +The value sets flag-name strings or flag-name combined strings. +Separator is `|'. +`CXCodeComplete_IncludeMacros' +`CXCodeComplete_IncludeCodePatterns' +`CXCodeComplete_IncludeBriefComments' +") + +(defvar ac-clang-clang-complete-results-limit 0 + "acceptable number of result candidate. +for Server behavior. +ac-clang-clang-complete-results-limit == 0 : accept all candidates. +ac-clang-clang-complete-results-limit != 0 : if number of result candidates greater than ac-clang-clang-complete-results-limit, discard all candidates. +") + + +;; client behaviors +(defvar ac-clang-tmp-pch-automatic-cleanup-p (eq system-type 'windows-nt) + "automatically cleanup for generated temporary precompiled headers.") + + +(defvar ac-clang-server-automatic-recovery-p t + "automatically recover server when command queue reached limitation.") + + + +;;; +;;; for auto-complete vars +;;; + +;; clang-server response filter pattern for auto-complete candidates +(defconst ac-clang--completion-pattern "^COMPLETION: \\(%s[^\s\n:]*\\)\\(?: : \\)*\\(.*$\\)") + +;; auto-complete behaviors +(defvar ac-clang-async-autocompletion-automatically-p t + "If autocompletion is automatically triggered when you type `.', `->', `::'") + +(defvar ac-clang-async-autocompletion-manualtrigger-key "") + + + +;; auto-complete faces +(defface ac-clang-candidate-face + '((t (:background "lightgray" :foreground "navy"))) + "Face for clang candidate" + :group 'auto-complete) + +(defface ac-clang-selection-face + '((t (:background "navy" :foreground "white"))) + "Face for the clang selected candidate." + :group 'auto-complete) + + + +;;; +;;; for Session vars +;;; + +(defvar-local ac-clang--activate-p nil) + +(defvar-local ac-clang--session-name nil) + +;; for patch +(defvar-local ac-clang--suspend-p nil) + + +;; auto-complete ac-sources backup +(defvar-local ac-clang--ac-sources-backup nil) + + +;; auto-complete candidates and completion start-point +(defvar-local ac-clang--candidates nil) +(defvar-local ac-clang--start-point nil) +(defvar-local ac-clang--template-candidates nil) +(defvar-local ac-clang--template-start-point nil) + + +;; CFLAGS build behaviors +(defvar-local ac-clang-language-option-function nil + "Function to return the language type for option -x.") + +(defvar-local ac-clang-prefix-header nil + "The prefix header to pass to the Clang executable.") + + +;; clang-server session behavior +(defvar-local ac-clang-cflags nil + "Extra flags to pass to the Clang executable. +This variable will typically contain include paths, e.g., (\"-I~/MyProject\" \"-I.\").") + + +(defvar ac-clang--jump-stack nil + "The jump stack (keeps track of jumps via jump-inclusion, jump-definition, jump-declaration, jump-smart)") + + + + +;;; +;;; primitive functions +;;; + +;; server launch option builder +(defun ac-clang--build-server-launch-options () + (append + (when ac-clang-server-stdin-buffer-size + (list "--stdin-buffer-size" (format "%d" ac-clang-server-stdin-buffer-size))) + (when ac-clang-server-stdout-buffer-size + (list "--stdout-buffer-size" (format "%d" ac-clang-server-stdout-buffer-size))) + (when ac-clang-server-logfile + (list "--logfile" (format "%s" ac-clang-server-logfile))))) + + +;; CFLAGS builders +(defsubst ac-clang--language-option () + (or (and ac-clang-language-option-function + (funcall ac-clang-language-option-function)) + (cond ((eq major-mode 'c++-mode) + "c++") + ((eq major-mode 'c-mode) + "c") + ((eq major-mode 'objc-mode) + (cond ((string= "m" (file-name-extension (buffer-file-name))) + "objective-c") + (t + "objective-c++"))) + (t + "c++")))) + + +(defsubst ac-clang--build-complete-cflags () + (append '("-cc1" "-fsyntax-only") + (list "-x" (ac-clang--language-option)) + ac-clang-cflags + (when (stringp ac-clang-prefix-header) + (list "-include-pch" (expand-file-name ac-clang-prefix-header))))) + + + +(defsubst ac-clang--get-column-bytes () + (1+ (length (encode-coding-string (buffer-substring-no-properties (line-beginning-position) (point)) 'binary)))) + + +(defsubst ac-clang--get-buffer-bytes () + (1- (position-bytes (point-max)))) + + +(defsubst ac-clang--create-position-string (point) + (save-excursion + (goto-char point) + (format "line:%d\ncolumn:%d\n" (line-number-at-pos) (ac-clang--get-column-bytes)))) + + +(defmacro ac-clang--with-widening (&rest body) + (declare (indent 0) (debug t)) + `(save-restriction + (widen) + (progn ,@body))) + + +;; (defmacro ac-clang--with-running-server (&rest body) +;; (declare (indent 0) (debug t)) +;; (when (eq (process-status ac-clang--server-process) 'run) +;; `(progn ,@body))) + + + +;;; +;;; transaction command functions for IPC +;;; + +(defvar ac-clang--server-command-queue nil) +(defvar ac-clang--server-command-queue-limit 4) + + +(defsubst ac-clang--request-command (sender-function receive-buffer receiver-function args) + (if (< (length ac-clang--server-command-queue) ac-clang--server-command-queue-limit) + (progn + (when (and receive-buffer receiver-function) + (ac-clang--enqueue-command `(:buffer ,receive-buffer :receiver ,receiver-function :sender ,sender-function :args ,args))) + (funcall sender-function args)) + (message "ac-clang : The number of requests of the command queue reached the limit.") + ;; This is recovery logic. + (when ac-clang-server-automatic-recovery-p + (ac-clang--clear-command-queue) + ;; Send message + (ac-clang-get-server-specification) + ;; Process response wait(as with thread preemption point) + (sleep-for 0.1) + ;; When process response is not received, I suppose that server became to deadlock. + (if (= (length ac-clang--server-command-queue) 0) + (message "ac-clang : clear server command queue.") + (ac-clang-reboot-server))))) + + +(defsubst ac-clang--enqueue-command (command) + (if ac-clang--server-command-queue + (nconc ac-clang--server-command-queue (list command)) + (setq ac-clang--server-command-queue (list command)))) + + +(defsubst ac-clang--dequeue-command () + (let ((command ac-clang--server-command-queue)) + (setq ac-clang--server-command-queue (cdr command)) + (car command))) + + +(defsubst ac-clang--get-top-command () + (car ac-clang--server-command-queue)) + + +(defsubst ac-clang--clear-command-queue () + (setq ac-clang--server-command-queue nil)) + + + +;;; +;;; sender primitive functions for IPC +;;; + +(defsubst ac-clang--process-send-string (string) + (process-send-string ac-clang--server-process string) + + (when ac-clang-debug-log-buffer-p + (let ((log-buffer (get-buffer-create ac-clang--debug-log-buffer-name))) + (when log-buffer + (with-current-buffer log-buffer + (when (and ac-clang-debug-log-buffer-size (> (buffer-size) ac-clang-debug-log-buffer-size)) + (erase-buffer)) + + (goto-char (point-max)) + (pp (encode-coding-string string 'binary) log-buffer) + (insert "\n")))))) + + +(defsubst ac-clang--process-send-region (start end) + (process-send-region ac-clang--server-process start end)) + + +(defun ac-clang--send-set-clang-parameters () + (ac-clang--process-send-string (format "translation_unit_flags:%s\n" ac-clang-clang-translation-unit-flags)) + (ac-clang--process-send-string (format "complete_at_flags:%s\n" ac-clang-clang-complete-at-flags)) + (ac-clang--process-send-string (format "complete_results_limit:%d\n" ac-clang-clang-complete-results-limit))) + + +(defun ac-clang--send-cflags () + ;; send message head and num_cflags + (ac-clang--process-send-string (format "num_cflags:%d\n" (length (ac-clang--build-complete-cflags)))) + + (let (cflags) + ;; create CFLAGS strings + (mapc + (lambda (arg) + (setq cflags (concat cflags (format "%s\n" arg)))) + (ac-clang--build-complete-cflags)) + ;; send cflags + (ac-clang--process-send-string cflags))) + + +(defun ac-clang--send-source-code () + (ac-clang--with-widening + (let ((source-buffuer (current-buffer)) + (cs (coding-system-change-eol-conversion buffer-file-coding-system 'unix))) + (with-temp-buffer + (set-buffer-multibyte nil) + (let ((temp-buffer (current-buffer))) + (with-current-buffer source-buffuer + (decode-coding-region (point-min) (point-max) cs temp-buffer))) + + (ac-clang--process-send-string (format "source_length:%d\n" (ac-clang--get-buffer-bytes))) + ;; (ac-clang--process-send-region (point-min) (point-max)) + (ac-clang--process-send-string (buffer-substring-no-properties (point-min) (point-max))) + (ac-clang--process-send-string "\n\n"))))) + + +;; (defun ac-clang--send-source-code () +;; (ac-clang--with-widening +;; (ac-clang--process-send-string (format "source_length:%d\n" (ac-clang--get-buffer-bytes))) +;; (ac-clang--process-send-region (point-min) (point-max)) +;; (ac-clang--process-send-string "\n\n"))) + + +(defsubst ac-clang--send-command (command-type command-name &optional session-name) + (let ((command (format "command_type:%s\ncommand_name:%s\n" command-type command-name))) + (when session-name + (setq command (concat command (format "session_name:%s\n" session-name)))) + (ac-clang--process-send-string command))) + + + +;;; +;;; sender command request functions for IPC +;;; + +(defun ac-clang--send-server-specification-request (&optional _args) + (ac-clang--send-command "Server" "GET_SPECIFICATION")) + + +(defun ac-clang--send-clang-parameters-request (&optional _args) + (ac-clang--send-command "Server" "SET_CLANG_PARAMETERS") + (ac-clang--send-set-clang-parameters)) + + +(defun ac-clang--send-create-session-request (&optional _args) + (ac-clang--with-widening + (ac-clang--send-command "Server" "CREATE_SESSION" ac-clang--session-name) + (ac-clang--send-cflags) + (ac-clang--send-source-code))) + + +(defun ac-clang--send-delete-session-request (&optional _args) + (ac-clang--send-command "Server" "DELETE_SESSION" ac-clang--session-name)) + + +(defun ac-clang--send-reset-server-request (&optional _args) + (ac-clang--send-command "Server" "RESET")) + + +(defun ac-clang--send-shutdown-request (&optional _args) + (when (eq (process-status ac-clang--server-process) 'run) + (ac-clang--send-command "Server" "SHUTDOWN"))) + + +(defun ac-clang--send-suspend-request (&optional _args) + (ac-clang--send-command "Session" "SUSPEND" ac-clang--session-name)) + + +(defun ac-clang--send-resume-request (&optional _args) + (ac-clang--send-command "Session" "RESUME" ac-clang--session-name)) + + +(defun ac-clang--send-cflags-request (&optional _args) + (if (listp ac-clang-cflags) + (ac-clang--with-widening + (ac-clang--send-command "Session" "SET_CFLAGS" ac-clang--session-name) + (ac-clang--send-cflags) + (ac-clang--send-source-code)) + (message "`ac-clang-cflags' should be a list of strings"))) + + +(defun ac-clang--send-reparse-request (&optional _args) + (ac-clang--with-widening + (ac-clang--send-command "Session" "SET_SOURCECODE" ac-clang--session-name) + (ac-clang--send-source-code) + (ac-clang--send-command "Session" "REPARSE" ac-clang--session-name))) + + +(defun ac-clang--send-completion-request (&optional args) + (ac-clang--with-widening + (ac-clang--send-command "Session" "COMPLETION" ac-clang--session-name) + (ac-clang--process-send-string (ac-clang--create-position-string (plist-get args :start-point))) + (ac-clang--send-source-code))) + + +(defun ac-clang--send-diagnostics-request (&optional _args) + (ac-clang--with-widening + (ac-clang--send-command "Session" "SYNTAXCHECK" ac-clang--session-name) + (ac-clang--send-source-code))) + + +(defun ac-clang--send-inclusion-request (&optional _args) + (ac-clang--with-widening + (ac-clang--send-command "Session" "INCLUSION" ac-clang--session-name) + (ac-clang--process-send-string (ac-clang--create-position-string (point))) + (ac-clang--send-source-code))) + + +(defun ac-clang--send-definition-request (&optional _args) + (ac-clang--with-widening + (ac-clang--send-command "Session" "DEFINITION" ac-clang--session-name) + (ac-clang--process-send-string (ac-clang--create-position-string (point))) + (ac-clang--send-source-code))) + + +(defun ac-clang--send-declaration-request (&optional _args) + (ac-clang--with-widening + (ac-clang--send-command "Session" "DECLARATION" ac-clang--session-name) + (ac-clang--process-send-string (ac-clang--create-position-string (point))) + (ac-clang--send-source-code))) + + +(defun ac-clang--send-smart-jump-request (&optional _args) + (ac-clang--with-widening + (ac-clang--send-command "Session" "SMARTJUMP" ac-clang--session-name) + (ac-clang--process-send-string (ac-clang--create-position-string (point))) + (ac-clang--send-source-code))) + + + + +;;; +;;; Receive clang-server responses common filter (receive response by command) +;;; + +(defvar ac-clang--transaction-context nil) +(defvar ac-clang--transaction-context-buffer-name nil) +(defvar ac-clang--transaction-context-buffer nil) +(defvar ac-clang--transaction-context-buffer-marker nil) +(defvar ac-clang--transaction-context-receiver nil) +(defvar ac-clang--transaction-context-args nil) + + +(defun ac-clang--process-filter (process output) + ;; command parse for context + (unless ac-clang--transaction-context + (if (setq ac-clang--transaction-context (ac-clang--dequeue-command)) + ;; setup context + (progn + (setq ac-clang--transaction-context-buffer-name (plist-get ac-clang--transaction-context :buffer) + ac-clang--transaction-context-receiver (plist-get ac-clang--transaction-context :receiver) + ac-clang--transaction-context-args (plist-get ac-clang--transaction-context :args)) + (setq ac-clang--status 'receive) + (when ac-clang--transaction-context-buffer-name + (setq ac-clang--transaction-context-buffer (get-buffer-create ac-clang--transaction-context-buffer-name)) + (with-current-buffer ac-clang--transaction-context-buffer + (unless (local-variable-p 'ac-clang--transaction-context-buffer-marker) + ;; The buffer created just now. + (set (make-local-variable 'ac-clang--transaction-context-buffer-marker) (point-min-marker))) + (erase-buffer)))) + (progn + (setq ac-clang--transaction-context-buffer (process-buffer process)) + (setq ac-clang--transaction-context-buffer-marker (process-mark process))))) + + ;; Output of the server is appended to context buffer. + (when ac-clang--transaction-context-buffer + (ac-clang--append-to-transaction-context-buffer output)) + + ;; Check the server response termination. + (when (and ac-clang--transaction-context (string= (substring output -1 nil) "$")) + ;; execute context receiver. + (setq ac-clang--status 'transaction) + (unless (ignore-errors + (funcall ac-clang--transaction-context-receiver ac-clang--transaction-context-buffer output ac-clang--transaction-context-args) + t) + (message "ac-clang : receiver function error!")) + ;; clear current context. + (setq ac-clang--transaction-context nil + ac-clang--transaction-context-buffer-name nil + ac-clang--transaction-context-buffer nil + ac-clang--transaction-context-receiver nil + ac-clang--transaction-context-args nil) + (setq ac-clang--status 'idle))) + + +(defun ac-clang--append-to-transaction-context-buffer (output) + "Append output to the transaction context buffer." + (with-current-buffer ac-clang--transaction-context-buffer + (save-excursion + ;; Insert the text, advancing the process marker. + (goto-char ac-clang--transaction-context-buffer-marker) + (insert output) + (set-marker ac-clang--transaction-context-buffer-marker (point))) + (goto-char ac-clang--transaction-context-buffer-marker))) + + + + +;;; +;;; receive clang-server responses. +;;; build completion candidates and fire auto-complete. +;;; + +(defun ac-clang--build-completion-candidates (buffer start-word) + (with-current-buffer buffer + (goto-char (point-min)) + (let ((pattern (format ac-clang--completion-pattern (regexp-quote start-word))) + candidates + candidate + declaration + (prev-candidate "")) + (while (re-search-forward pattern nil t) + (setq candidate (match-string-no-properties 1)) + (unless (string= "Pattern" candidate) + (setq declaration (match-string-no-properties 2)) + + (if (string= candidate prev-candidate) + (progn + (when declaration + (setq candidate (propertize candidate 'ac-clang--detail (concat (get-text-property 0 'ac-clang--detail (car candidates)) "\n" declaration))) + (setf (car candidates) candidate))) + (setq prev-candidate candidate) + (when declaration + (setq candidate (propertize candidate 'ac-clang--detail declaration))) + (push candidate candidates)))) + candidates))) + + +(defun ac-clang--receive-completion (buffer _output args) + (setq ac-clang--candidates (ac-clang--build-completion-candidates buffer (plist-get args :start-word))) + (setq ac-clang--start-point (plist-get args :start-point)) + + ;; (setq ac-show-menu t) + ;; (ac-start :force-init t) + ;; (ac-update)) + (ac-complete-clang-async)) + + + +(defun ac-clang--get-autotrigger-start-point (&optional point) + (unless point + (setq point (point))) + (let ((c (char-before point))) + (when (or + ;; '.' + (eq ?. c) + ;; '->' + (and (eq ?> c) + (eq ?- (char-before (1- point)))) + ;; '::' + (and (eq ?: c) + (eq ?: (char-before (1- point))))) + point))) + + +(defun ac-clang--get-manualtrigger-start-point () + (let* ((symbol-point (ac-prefix-symbol)) + (point (or symbol-point (point))) + (c (char-before point))) + (when (or + (ac-clang--get-autotrigger-start-point point) + ;; ' ' for manual completion + (eq ?\s c)) + point))) + + +(defsubst ac-clang--async-completion (start-point) + (when start-point + (ac-clang--request-command + 'ac-clang--send-completion-request + ac-clang--completion-buffer-name + 'ac-clang--receive-completion + (list :start-word (buffer-substring-no-properties start-point (point)) :start-point start-point)))) + + +(defun ac-clang-async-autocomplete-autotrigger () + (interactive) + + (self-insert-command 1) + (when ac-clang-async-autocompletion-automatically-p + (ac-clang--async-completion (ac-clang--get-autotrigger-start-point)))) + + +(defun ac-clang-async-autocomplete-manualtrigger () + (interactive) + + (ac-clang--async-completion (ac-clang--get-manualtrigger-start-point))) + + + + +;;; +;;; auto-complete ac-source build functions +;;; + +(defsubst ac-clang--candidates () + ac-clang--candidates) + + +(defsubst ac-clang--prefix () + ac-clang--start-point) + + +(defsubst ac-clang--clean-document (s) + (when s + (setq s (replace-regexp-in-string "<#\\|#>\\|\\[#" "" s)) + (setq s (replace-regexp-in-string "#\\]" " " s))) + s) + + +(defsubst ac-clang--in-string/comment () + "Return non-nil if point is in a literal (a comment or string)." + (nth 8 (syntax-ppss))) + + +(defun ac-clang--action () + (interactive) + + ;; (ac-last-quick-help) + (let* ((func-name (regexp-quote (substring-no-properties (cdr ac-last-completion)))) + (c/c++-pattern (format "\\(?:^.*%s\\)\\([<(].*)\\)" func-name)) + (objc-pattern (format "\\(?:^.*%s\\)\\(:.*\\)" func-name)) + (detail (get-text-property 0 'ac-clang--detail (cdr ac-last-completion))) + (help (ac-clang--clean-document detail)) + (declarations (split-string detail "\n")) + args + (ret-t "") + ret-f + candidates) + + ;; parse function or method overload declarations + (cl-dolist (declaration declarations) + ;; function result type + (when (string-match "\\[#\\(.*\\)#\\]" declaration) + (setq ret-t (match-string 1 declaration))) + ;; remove result type + (setq declaration (replace-regexp-in-string "\\[#.*?#\\]" "" declaration)) + + ;; parse arguments + (cond (;; C/C++ standard argument + (string-match c/c++-pattern declaration) + (setq args (match-string 1 declaration)) + (push (propertize (ac-clang--clean-document args) 'ac-clang--detail ret-t 'ac-clang--args args) candidates) + ;; default argument + (when (string-match "\{#" args) + (setq args (replace-regexp-in-string "\{#.*#\}" "" args)) + (push (propertize (ac-clang--clean-document args) 'ac-clang--detail ret-t 'ac-clang--args args) candidates)) + ;; variadic argument + (when (string-match ", \\.\\.\\." args) + (setq args (replace-regexp-in-string ", \\.\\.\\." "" args)) + (push (propertize (ac-clang--clean-document args) 'ac-clang--detail ret-t 'ac-clang--args args) candidates))) + + (;; check whether it is a function ptr + (string-match "^\\([^(]*\\)(\\*)\\((.*)\\)" ret-t) + (setq ret-f (match-string 1 ret-t) + args (match-string 2 ret-t)) + (push (propertize args 'ac-clang--detail ret-f 'ac-clang--args "") candidates) + ;; variadic argument + (when (string-match ", \\.\\.\\." args) + (setq args (replace-regexp-in-string ", \\.\\.\\." "" args)) + (push (propertize args 'ac-clang--detail ret-f 'ac-clang--args "") candidates))) + + (;; Objective-C/C++ argument + (string-match objc-pattern declaration) + (setq args (match-string 1 declaration)) + (push (propertize (ac-clang--clean-document args) 'ac-clang--detail ret-t 'ac-clang--args args) candidates)))) + + (cond (candidates + (setq candidates (delete-dups candidates)) + (setq candidates (nreverse candidates)) + (setq ac-clang--template-candidates candidates) + (setq ac-clang--template-start-point (point)) + (ac-complete-clang-template) + + (unless (cdr candidates) ;; unless length > 1 + (message (replace-regexp-in-string "\n" " ; " help)))) + (t + (message (replace-regexp-in-string "\n" " ; " help)))))) + + +(defun ac-clang--document (item) + (if (stringp item) + (let (s) + (setq s (get-text-property 0 'ac-clang--detail item)) + (ac-clang--clean-document s))) + ;; (popup-item-property item 'ac-clang--detail) + ) + + + +(ac-define-source clang-async + '((candidates . ac-clang--candidates) + (candidate-face . ac-clang-candidate-face) + (selection-face . ac-clang-selection-face) + (prefix . ac-clang--prefix) + (requires . 0) + (action . ac-clang--action) + (document . ac-clang--document) + (cache) + (symbol . "c"))) + + + +(defun ac-clang--same-count-in-string (c1 c2 s) + (let ((count 0) + (cur 0) + (end (length s)) + c) + (while (< cur end) + (setq c (aref s cur)) + (cond ((eq c1 c) + (setq count (1+ count))) + ((eq c2 c) + (setq count (1- count)))) + (setq cur (1+ cur))) + (= count 0))) + + +(defun ac-clang--split-args (s) + (let ((sl (split-string s ", *"))) + (cond ((string-match "<\\|(" s) + (let (res + (pre "") + subs) + (while sl + (setq subs (pop sl)) + (unless (string= pre "") + (setq subs (concat pre ", " subs)) + (setq pre "")) + (cond ((and (ac-clang--same-count-in-string ?\< ?\> subs) + (ac-clang--same-count-in-string ?\( ?\) subs)) + ;; (cond ((ac-clang--same-count-in-string ?\< ?\> subs) + (push subs res)) + (t + (setq pre subs)))) + (nreverse res))) + (t + sl)))) + + +(defsubst ac-clang--template-candidates () + ac-clang--template-candidates) + + +(defsubst ac-clang--template-prefix () + ac-clang--template-start-point) + + +(defun ac-clang--template-action () + (interactive) + + (when ac-clang--template-start-point + (let ((point (point)) + sl + (snp "") + (s (get-text-property 0 'ac-clang--args (cdr ac-last-completion)))) + (cond (;; function ptr call + (string= s "") + (setq s (cdr ac-last-completion)) + (setq s (replace-regexp-in-string "^(\\|)$" "" s)) + (setq sl (ac-clang--split-args s)) + (cl-dolist (arg sl) + (setq snp (concat snp ", ${" arg "}"))) + (yas-expand-snippet (concat "(" (substring snp 2) ")") ac-clang--template-start-point point)) + (;; function args + t + (unless (string= s "()") + (setq s (replace-regexp-in-string "{#" "" s)) + (setq s (replace-regexp-in-string "#}" "" s)) + (setq s (replace-regexp-in-string "<#" "${" s)) + (setq s (replace-regexp-in-string "#>" "}" s)) + (setq s (replace-regexp-in-string ", \\.\\.\\." "}, ${..." s)) + (yas-expand-snippet s ac-clang--template-start-point point))))))) + + +;; This source shall only be used internally. +(ac-define-source clang-template + '((candidates . ac-clang--template-candidates) + (prefix . ac-clang--template-prefix) + (requires . 0) + (action . ac-clang--template-action) + (document . ac-clang--document) + (cache) + (symbol . "t"))) + + + + + +;;; +;;; receive clang-server responses. +;;; syntax checking with flymake +;;; + +(defun ac-clang--receive-diagnostics (buffer _output _args) + (let (result-texts) + (with-current-buffer buffer + (flymake-log 3 "received %d byte(s) of output from process %d" (ac-clang--get-buffer-bytes) (process-id ac-clang--server-process)) + (setq result-texts (buffer-substring-no-properties (point-min) (point-max)))) + (flymake-parse-output-and-residual result-texts)) + + (flymake-parse-residual) + (setq flymake-err-info flymake-new-err-info) + (setq flymake-new-err-info nil) + (setq flymake-err-info (flymake-fix-line-numbers flymake-err-info 1 (count-lines (point-min) (point-max)))) + (flymake-delete-own-overlays) + (flymake-highlight-err-lines flymake-err-info)) + + +(defun ac-clang-diagnostics () + (interactive) + + (if ac-clang--suspend-p + (ac-clang-resume) + (ac-clang-activate)) + + (ac-clang--request-command 'ac-clang--send-diagnostics-request ac-clang--diagnostics-buffer-name 'ac-clang--receive-diagnostics nil)) + + + + +;;; +;;; receive clang-server responses. +;;; jump declaration/definition/smart-jump +;;; + +(defun ac-clang--receive-jump (_buffer output _arg) + (unless (eq (aref output 0) ?$) + (let* ((parsed (split-string-and-unquote output)) + (filename (pop parsed)) + (line (string-to-number (pop parsed))) + (column (1- (string-to-number (pop parsed)))) + (new-loc (list filename line column)) + (current-loc (list (buffer-file-name) (line-number-at-pos) (current-column)))) + (when (not (equal current-loc new-loc)) + (push current-loc ac-clang--jump-stack) + (ac-clang--jump new-loc))))) + + +(defun ac-clang--jump (location) + (let* ((filename (pop location)) + (line (pop location)) + (column (pop location))) + (find-file filename) + (goto-char (point-min)) + (forward-line (1- line)) + (move-to-column column))) + + +(defun ac-clang-jump-back () + (interactive) + + (when ac-clang--jump-stack + (ac-clang--jump (pop ac-clang--jump-stack)))) + + +(defun ac-clang-jump-inclusion () + (interactive) + + (if ac-clang--suspend-p + (ac-clang-resume) + (ac-clang-activate)) + + (ac-clang--request-command 'ac-clang--send-inclusion-request ac-clang--process-buffer-name 'ac-clang--receive-jump nil)) + + +(defun ac-clang-jump-definition () + (interactive) + + (if ac-clang--suspend-p + (ac-clang-resume) + (ac-clang-activate)) + + (ac-clang--request-command 'ac-clang--send-definition-request ac-clang--process-buffer-name 'ac-clang--receive-jump nil)) + + +(defun ac-clang-jump-declaration () + (interactive) + + (if ac-clang--suspend-p + (ac-clang-resume) + (ac-clang-activate)) + + (ac-clang--request-command 'ac-clang--send-declaration-request ac-clang--process-buffer-name 'ac-clang--receive-jump nil)) + + +(defun ac-clang-jump-smart () + (interactive) + + (if ac-clang--suspend-p + (ac-clang-resume) + (ac-clang-activate)) + + (ac-clang--request-command 'ac-clang--send-smart-jump-request ac-clang--process-buffer-name 'ac-clang--receive-jump nil)) + + + + +;;; +;;; sender function for IPC +;;; + +(defun ac-clang-get-server-specification () + (interactive) + + (when ac-clang--server-process + (ac-clang--request-command 'ac-clang--send-server-specification-request ac-clang--process-buffer-name '(lambda (_buffer _output _args)) nil))) + + + +;;; +;;; The session control functions +;;; + +(defun ac-clang-activate () + (interactive) + + (remove-hook 'first-change-hook 'ac-clang-activate t) + + (unless ac-clang--activate-p + ;; (if ac-clang--activate-buffers + ;; (ac-clang-update-cflags) + ;; (ac-clang-initialize)) + + (setq ac-clang--activate-p t) + (setq ac-clang--session-name (buffer-file-name)) + (setq ac-clang--suspend-p nil) + (setq ac-clang--ac-sources-backup ac-sources) + (setq ac-sources '(ac-source-clang-async)) + (push (current-buffer) ac-clang--activate-buffers) + + (ac-clang--send-create-session-request) + + (local-set-key (kbd ".") 'ac-clang-async-autocomplete-autotrigger) + (local-set-key (kbd ">") 'ac-clang-async-autocomplete-autotrigger) + (local-set-key (kbd ":") 'ac-clang-async-autocomplete-autotrigger) + (local-set-key (kbd ac-clang-async-autocompletion-manualtrigger-key) 'ac-clang-async-autocomplete-manualtrigger) + + (add-hook 'before-save-hook 'ac-clang-suspend nil t) + ;; (add-hook 'after-save-hook 'ac-clang-deactivate nil t) + ;; (add-hook 'first-change-hook 'ac-clang-activate nil t) + ;; (add-hook 'before-save-hook 'ac-clang-reparse-buffer nil t) + ;; (add-hook 'after-save-hook 'ac-clang-reparse-buffer nil t) + (add-hook 'before-revert-hook 'ac-clang-deactivate nil t) + (add-hook 'kill-buffer-hook 'ac-clang-deactivate nil t))) + + +(defun ac-clang-deactivate () + (interactive) + + (when ac-clang--activate-p + (remove-hook 'before-save-hook 'ac-clang-suspend t) + (remove-hook 'first-change-hook 'ac-clang-resume t) + ;; (remove-hook 'before-save-hook 'ac-clang-reparse-buffer t) + ;; (remove-hook 'after-save-hook 'ac-clang-reparse-buffer t) + (remove-hook 'before-revert-hook 'ac-clang-deactivate t) + (remove-hook 'kill-buffer-hook 'ac-clang-deactivate t) + + (ac-clang--send-delete-session-request) + + (pop ac-clang--activate-buffers) + (setq ac-sources ac-clang--ac-sources-backup) + (setq ac-clang--ac-sources-backup nil) + (setq ac-clang--suspend-p nil) + (setq ac-clang--session-name nil) + (setq ac-clang--activate-p nil) + + ;; (unless ac-clang--activate-buffers + ;; (ac-clang-finalize)) + )) + + +(defun ac-clang-activate-after-modify () + (interactive) + + (if (buffer-modified-p) + (ac-clang-activate) + (add-hook 'first-change-hook 'ac-clang-activate nil t))) + + +(defun ac-clang-suspend () + (when (and ac-clang--activate-p (not ac-clang--suspend-p)) + (setq ac-clang--suspend-p t) + (ac-clang--send-suspend-request) + (add-hook 'first-change-hook 'ac-clang-resume nil t))) + + +(defun ac-clang-resume () + (when (and ac-clang--activate-p ac-clang--suspend-p) + (setq ac-clang--suspend-p nil) + (remove-hook 'first-change-hook 'ac-clang-resume t) + (ac-clang--send-resume-request))) + + +(defun ac-clang-reparse-buffer () + (when ac-clang--server-process + (ac-clang--send-reparse-request))) + + +(defun ac-clang-update-cflags () + (interactive) + + (when ac-clang--activate-p + ;; (message "ac-clang-update-cflags %s" ac-clang--session-name) + (ac-clang--send-cflags-request))) + + +(defun ac-clang-set-cflags () + "Set `ac-clang-cflags' interactively." + (interactive) + + (setq ac-clang-cflags (split-string (read-string "New cflags: "))) + (ac-clang-update-cflags)) + + +(defun ac-clang-set-cflags-from-shell-command () + "Set `ac-clang-cflags' to a shell command's output. + set new cflags for ac-clang from shell command output" + (interactive) + + (setq ac-clang-cflags + (split-string + (shell-command-to-string + (read-shell-command "Shell command: " nil nil + (and buffer-file-name + (file-relative-name buffer-file-name)))))) + (ac-clang-update-cflags)) + + +(defun ac-clang-set-prefix-header (prefix-header) + "Set `ac-clang-prefix-header' interactively." + (interactive + (let ((default (car (directory-files "." t "\\([^.]h\\|[^h]\\).pch\\'" t)))) + (list + (read-file-name (concat "Clang prefix header (currently " (or ac-clang-prefix-header "nil") "): ") + (when default (file-name-directory default)) + default nil (when default (file-name-nondirectory default)))))) + + (cond + ((string-match "^[\s\t]*$" prefix-header) + (setq ac-clang-prefix-header nil)) + (t + (setq ac-clang-prefix-header prefix-header)))) + + + + +;;; +;;; The server control functions +;;; + + +(defun ac-clang--clean-tmp-pch () + "Clean up temporary precompiled headers." + + (cl-dolist (pch-file (directory-files temporary-file-directory t "preamble-.*\\.pch$" t)) + (ignore-errors + (delete-file pch-file) + t))) + + + +(defun ac-clang-launch-server () + (interactive) + + (when (and ac-clang--server-executable (not ac-clang--server-process)) + (let ((process-connection-type nil) + (coding-system-for-write 'binary)) + (setq ac-clang--server-process + (apply 'start-process + ac-clang--process-name ac-clang--process-buffer-name + ac-clang--server-executable (ac-clang--build-server-launch-options)))) + + (if ac-clang--server-process + (progn + (setq ac-clang--status 'idle) + (ac-clang--clear-command-queue) + + (set-process-coding-system ac-clang--server-process + (coding-system-change-eol-conversion buffer-file-coding-system nil) + 'binary) + (set-process-filter ac-clang--server-process 'ac-clang--process-filter) + (set-process-query-on-exit-flag ac-clang--server-process nil) + + (ac-clang--send-clang-parameters-request) + t) + (display-warning 'ac-clang "clang-server launch failed.") + nil))) + + +(defun ac-clang-shutdown-server () + (interactive) + + (when ac-clang--server-process + (ac-clang--send-shutdown-request) + + (setq ac-clang--status 'shutdown) + + (setq ac-clang--server-process nil) + t)) + + +(defun ac-clang-update-clang-parameters () + (interactive) + + (when ac-clang--server-process + (ac-clang--send-clang-parameters-request) + t)) + + +(defun ac-clang-reset-server () + (interactive) + + (when ac-clang--server-process + (cl-dolist (buffer ac-clang--activate-buffers) + (with-current-buffer buffer + (ac-clang-deactivate))) + (ac-clang--send-reset-server-request))) + + +(cl-defun ac-clang-reboot-server () + (interactive) + + (let ((buffers ac-clang--activate-buffers)) + (ac-clang-reset-server) + + (unless (ac-clang-shutdown-server) + (message "ac-clang : reboot server failed.") + (cl-return-from ac-clang-reset-server nil)) + + (unless (ac-clang-launch-server) + (message "ac-clang : reboot server failed.") + (cl-return-from ac-clang-reset-server nil)) + + (cl-dolist (buffer buffers) + (with-current-buffer buffer + (ac-clang-activate)))) + + (message "ac-clang : reboot server success.") + t) + + + + +(defun ac-clang-initialize () + (interactive) + + ;; server binary decide + (unless ac-clang--server-executable + (setq ac-clang--server-executable (executable-find (or (plist-get ac-clang--server-binaries ac-clang-server-type) "")))) + + ;; check obsolete + (unless ac-clang--server-executable + (when (setq ac-clang--server-executable (executable-find (or (plist-get ac-clang--server-obsolete-binaries ac-clang-server-type) ""))) + (display-warning 'ac-clang "The clang-server which you are using is obsolete. please replace to the new binary."))) + + ;; (message "ac-clang-initialize") + (if ac-clang--server-executable + (when (ac-clang-launch-server) + ;; Optional keybindings + (define-key ac-mode-map (kbd "M-.") 'ac-clang-jump-smart) + (define-key ac-mode-map (kbd "M-,") 'ac-clang-jump-back) + ;; (define-key ac-mode-map (kbd "C-c `") 'ac-clang-diagnostics)) + + (add-hook 'kill-emacs-hook 'ac-clang-finalize) + + (when (and (eq system-type 'windows-nt) (boundp 'w32-pipe-read-delay) (> w32-pipe-read-delay 0)) + (display-warning 'ac-clang "Please set the appropriate value for `w32-pipe-read-delay'. Because a pipe delay value is large value. Ideal value is 0. see help of `w32-pipe-read-delay'.")) + + t) + (display-warning 'ac-clang "clang-server binary not found.") + nil)) + + +(defun ac-clang-finalize () + (interactive) + + ;; (message "ac-clang-finalize") + (when (ac-clang-shutdown-server) + (define-key ac-mode-map (kbd "M-.") nil) + (define-key ac-mode-map (kbd "M-,") nil) + + (setq ac-clang--server-executable nil) + + (when ac-clang-tmp-pch-automatic-cleanup-p + (ac-clang--clean-tmp-pch)) + + t)) + + + + + +(provide 'ac-clang) + +;; Local Variables: +;; coding: utf-8 +;; indent-tabs-mode: nil +;; End: + +;;; ac-clang.el ends here diff --git a/.emacs.d/elpa/ac-clang-20150906.1008/ac-clang.elc b/.emacs.d/elpa/ac-clang-20150906.1008/ac-clang.elc new file mode 100644 index 0000000000000000000000000000000000000000..a94e649f71b815caa099fcd5ae07070d3e0310a1 GIT binary patch literal 51514 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] [--target ] [-- -i] +@rem cmake --build . --config Release --target ALL_BUILD +@rem cmake --build . --config Debug --target ALL_BUILD +cmake --build . --config Release --target INSTALL +@rem cmake --build . --config Debug --target INSTALL + +@pause diff --git a/.emacs.d/elpa/ac-clang-20150906.1008/build/builder_sample.sh b/.emacs.d/elpa/ac-clang-20150906.1008/build/builder_sample.sh new file mode 100755 index 0000000..f0d424c --- /dev/null +++ b/.emacs.d/elpa/ac-clang-20150906.1008/build/builder_sample.sh @@ -0,0 +1,28 @@ +# -*- mode: shell-script ; coding: utf-8-unix -*- +#! /bin/sh +# export PATH="/cygdrive/c/cygwin-x86_64/tmp/cmake-3.1.0-win32-x86/bin/:$PATH" + +rm -rf CMakeCache.txt +rm -rf cmake_install.cmake +rm -rf CMakeFiles +rm -rf Makefile + +# switch compiler +# export CC=clang +# export CXX=clang++ + +# cmake --version +# cmake -G "Unix Makefiles" ../clang-server -DCMAKE_EXPORT_COMPILE_COMMANDS=ON +# cmake -G "Unix Makefiles" ../clang-server -DLIBRARY_PATHS="c:/cygwin-x86_64/tmp/llvm-build-shells/sh/clang-361/build" -DCMAKE_EXPORT_COMPILE_COMMANDS=ON +cmake -G "Unix Makefiles" ../clang-server -DLIBRARY_PATHS="/home/yaruopooner/work/llvm-build-shells/sh/clang-361/build" -DCMAKE_EXPORT_COMPILE_COMMANDS=ON +# cmake -G "Unix Makefiles" ../clang-server -DLIBRARY_PATHS="/home/yaruopooner/work/llvm-build-shells/sh/clang-361/build" -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=RELWITHDEBINFO +# cmake -G "Unix Makefiles" ../clang-server -DLIBRARY_PATHS="/home/yaruopooner/work/llvm-build-shells/sh/clang-361/build" -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=DEBUG +# cmake -G "Unix Makefiles" ../clang-server -DLIBRARY_PATHS="/home/yaruopooner/work/llvm-build-shells/sh/clang-361/build" -DCMAKE_INSTALL_PREFIX="~/work/test" -DCMAKE_EXPORT_COMPILE_COMMANDS=ON + +# echo "please press Enter key" +# read discard_tmp + +cmake --build . +# sudo make install + + diff --git a/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/.nosearch b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/.nosearch new file mode 100644 index 0000000..e69de29 diff --git a/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/CMakeLists.txt b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/CMakeLists.txt new file mode 100644 index 0000000..c4327a5 --- /dev/null +++ b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/CMakeLists.txt @@ -0,0 +1,383 @@ +# -*- mode: cmake ; coding: utf-8-unix -*- + +cmake_minimum_required(VERSION 2.8) + +cmake_policy(SET CMP0015 NEW) +cmake_policy(SET CMP0022 NEW) + +include(CheckCXXCompilerFlag) + + +# ---------------------------------------- +# before common setting +# ---------------------------------------- + +set(project_name clang-server) +# set(platform_name x86_64) +# set(platform_name x86_32) +# set(project_elf_name ${project_name}-${platform_name}) +set(project_elf_name ${project_name}) + + +# CMAKE_INSTALL_PREFIX check designated value before function Project() +if(CMAKE_INSTALL_PREFIX) + # message("user_install_prefix TRUE") + set(user_install_prefix TRUE) +else() + # message("user_install_prefix FALSE") +endif() + + +# The set before project declaration. +set(CMAKE_CONFIGURATION_TYPES Release RelWithDebInfo Debug CACHE TYPE INTERNAL FORCE) +# setup library per configuration +string(TOUPPER "${CMAKE_CONFIGURATION_TYPES}" project_configurations) + + +Project(${project_name}) + + +# The set after project declaration. +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE Release) +endif() + + + + +# CMAKE_INSTALL_PREFIX +# Windows (exe,dll) +# Default: C:/Program Files/clang-server/ +# prefix : +# +# Linux (elf) +# Default: /usr/local/bin/ +# prefix : +# Linux (so) +# Default: /usr/local/lib/clang-server/ +# prefix : + +set(CMAKE_SKIP_RPATH TRUE) +# set(CMAKE_SKIP_BUILD_RPATH FALSE) +# set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) +# set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) +# set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/lib) + + +set(project_sources main.cpp ClangServer.cpp ClangServer.hpp ClangSession.cpp ClangSession.hpp Common.cpp Common.hpp CommandLine.hpp) + + +add_library(libclang SHARED IMPORTED) + +set(dependency_libraries libclang) + + +list(APPEND CMAKE_FIND_LIBRARY_PREFIXES lib) +list(REMOVE_DUPLICATES CMAKE_FIND_LIBRARY_PREFIXES) + +# set(libclang_names clang-${platform_name} clang) +set(libclang_names clang) + + +function(display_vars vars prefix) + message("${prefix}") + foreach(IT ${vars}) + message("${prefix}${IT} = ${${IT}}") + endforeach() +endfunction() + + +set(echo_vars) +list(APPEND echo_vars CMAKE_CXX_COMPILER_ID CMAKE_CXX_STANDARD CYGWIN WIN32 UNIX MSVC MSVC_VERSION CMAKE_GNUtoMS CMAKE_SYSTEM_NAME CMAKE_COMPILER_IS_GNUC CMAKE_COMPILER_IS_GNUCXX CMAKE_COMPILER_IS_MINGW CMAKE_COMPILER_IS_CYGWIN) +display_vars("${echo_vars}" "env: ") + + +# ---------------------------------------- +# platform dependency setting +# ---------------------------------------- + +if(MSVC) + # ---------------------------------------- + # Microsoft Visual Studio + # ---------------------------------------- + message("environment: MSVC") + + set(echo_vars) + list(APPEND echo_vars CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE) + list(APPEND echo_vars CMAKE_EXE_LINKER_FLAGS CMAKE_EXE_LINKER_FLAGS_DEBUG CMAKE_EXE_LINKER_FLAGS_RELEASE) + list(APPEND echo_vars IMPORTED_IMPLIB IMPORTED_IMPLIB_DEBUG IMPORTED_IMPLIB_RELEASE) + display_vars("${echo_vars}" "msvc: ") + + + # set_target_properties(TARGET) + + # setup compile & link flags + set(project_defs -D_CONSOLE -DUNICODE -D_UNICODE -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS) + + set(CMAKE_CXX_FLAGS "/GR /EHsc /W3 /Zi") + set(CMAKE_CXX_FLAGS_DEBUG "/Gm /Od") + set(CMAKE_CXX_FLAGS_RELEASE "/GL /Gy /Oi") + set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG}") + set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LTCG /DEBUG /OPT:ICF /OPT:REF") + + set(dependency_libraries odbc32 odbccp32 ${dependency_libraries}) + + + # search & setup link library properties + list(INSERT CMAKE_FIND_LIBRARY_SUFFIXES 0 .imp) + list(REMOVE_DUPLICATES CMAKE_FIND_LIBRARY_SUFFIXES) + + + # search priority EXTERNAL > CURRENT + set(libclang_search_paths ${LIBRARY_PATHS} ${CMAKE_SOURCE_DIR}) + + foreach(IT_SEARCH_PATH ${libclang_search_paths}) + message("") + message("IT_SEARCH_PATH : ${IT_SEARCH_PATH}") + + # collect absolute file paths + file(GLOB_RECURSE collected_library_apath ${IT_SEARCH_PATH} ${IT_SEARCH_PATH}/*.imp ${IT_SEARCH_PATH}/*.lib ${IT_SEARCH_PATH}/*.dll) + + if(collected_library_apath) + # generate absolute directory paths + set(library_apaths ${IT_SEARCH_PATH}) + foreach(IT_PATH ${collected_library_apath}) + get_filename_component(library_dir_path ${IT_PATH} DIRECTORY) + list(APPEND library_apaths ${library_dir_path}) + endforeach() + list(REMOVE_DUPLICATES library_apaths) + + # message("collected_library_apath : ${collected_library_apath}") + message("library_apaths : ${library_apaths}") + + # find library > generate relative path > set property per configuration. + foreach(IT_CONFIG ${project_configurations}) + if(NOT matched_${IT_CONFIG}) + # collect a absolute path that includes the same configuration name. + # IT_SEARCH_PATH is always accept. + # set(filtered_library_apaths ${IT_SEARCH_PATH}) + # foreach(IT_PATH ${library_apaths}) + # string(TOUPPER ${IT_PATH} CHECK_PATH_STR) + # if(${CHECK_PATH_STR} MATCHES /${IT_CONFIG}) + # list(APPEND filtered_library_apaths ${IT_PATH}) + # endif() + # endforeach() + # set(filtered_library_apaths ${library_apaths}) + + set(CMAKE_FIND_LIBRARY_SUFFIXES .imp .lib) + find_library(libclang_${IT_CONFIG}_found_lib_apath NAMES ${libclang_names} PATHS ${library_apaths} NO_DEFAULT_PATH) + + set(CMAKE_FIND_LIBRARY_SUFFIXES .dll) + find_library(libclang_${IT_CONFIG}_found_dll_apath NAMES ${libclang_names} PATHS ${library_apaths} NO_DEFAULT_PATH) + + display_vars("library_apaths;libclang_${IT_CONFIG}_found_lib_apath;libclang_${IT_CONFIG}_found_dll_apath" "${IT_CONFIG}: ") + + if(libclang_${IT_CONFIG}_found_lib_apath AND libclang_${IT_CONFIG}_found_dll_apath) + file(RELATIVE_PATH libclang_${IT_CONFIG}_rpath ${IT_SEARCH_PATH} ${libclang_${IT_CONFIG}_found_lib_apath}) + + set_property(TARGET libclang PROPERTY IMPORTED_IMPLIB_${IT_CONFIG} ${libclang_${IT_CONFIG}_rpath}) + set_property(TARGET libclang PROPERTY INTERFACE_LINK_LIBRARIES_${IT_CONFIG} ${libclang_${IT_CONFIG}_rpath}) + set_property(TARGET libclang PROPERTY IMPORTED_LOCATION_${IT_CONFIG} ${libclang_${IT_CONFIG}_found_lib_apath}) + link_directories(${IT_SEARCH_PATH}) + + set(libclang_${IT_CONFIG}_found_apath ${libclang_${IT_CONFIG}_found_dll_apath}) + message("${IT_CONFIG}: found library at ${IT_SEARCH_PATH}") + set(matched_${IT_CONFIG} TRUE) + endif() + endif() + endforeach() + endif() + endforeach() + + + # install info + set(binary_destination_apath ${CMAKE_INSTALL_PREFIX}) + set(library_destination_apath ${CMAKE_INSTALL_PREFIX}) + + + if(NOT (matched_DEBUG OR matched_RELEASE OR matched_MINSIZEREL OR matched_RELWITHDEBINFO)) + message("not found library") + endif() + +elseif(UNIX) + # ---------------------------------------- + # UNIX, Linux + # ---------------------------------------- + message("environment: UNIX") + + # setup compile & link flags + check_cxx_compiler_flag(-std=c++11 COMPILER_SUPPORTS_CXX11) + check_cxx_compiler_flag(-std=c++0x COMPILER_SUPPORTS_CXX0X) + + # setup compile & link flags + if(COMPILER_SUPPORTS_CXX11) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") + elseif(COMPILER_SUPPORTS_CXX0X) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") + else() + message(FATAL_ERROR "The compiler has no C++11 support.") + endif() + + # set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wunused-result") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-unused-result") + + + # search priority EXTERNAL > CURRENT + + if(CYGWIN) + message("CYGWIN") + # set(dependency_libraries clang.dll) + # set(dependency_libraries libclang.a) + + # find_library(CYG_LIBCLANG_PATH NAMES clang.dll PATHS ${library_apaths}) + # find_library(CYG_LIBCLANG_PATH NAMES libclang.dll clang.dll clang PATHS "/lib" "c:/cygwin-x86_64/lib" ) + # find_library(CYG_LIBCLANG_PATH NAMES libclang.dll PATHS "/lib" "c:/cygwin-x86_64/lib" ) + # find_library(CYG_LIBCLANG_PATH NAMES libclang libclang.dll PATHS "c:/cygwin-x86_64/lib" ) + message("CYG_LIBCLANG_PATH : ${CYG_LIBCLANG_PATH}") + + else() + message("non CYGWIN") + endif() + + + # search priority EXTERNAL > CURRENT + set(libclang_search_paths ${LIBRARY_PATHS} ${CMAKE_SOURCE_DIR}) + + foreach(IT_SEARCH_PATH ${libclang_search_paths}) + message("IT_SEARCH_PATH : ${IT_SEARCH_PATH}") + + # collect absolute file paths + file(GLOB_RECURSE collected_library_apath ${IT_SEARCH_PATH} ${IT_SEARCH_PATH}/*.so ${IT_SEARCH_PATH}/*.a) + + if(collected_library_apath) + # generate absolute directory paths + set(library_apaths ${IT_SEARCH_PATH}) + foreach(IT_PATH ${collected_library_apath}) + get_filename_component(library_dir_path ${IT_PATH} DIRECTORY) + list(APPEND library_apaths ${library_dir_path}) + endforeach() + list(REMOVE_DUPLICATES library_apaths) + + # message("collected_library_apath : ${collected_library_apath}") + message("library_apaths : ${library_apaths}") + + # find library > generate relative path > set property per configuration. + foreach(IT_CONFIG ${project_configurations}) + if(NOT matched_${IT_CONFIG}) + # find library > generate relative path + find_library(libclang_${IT_CONFIG}_found_apath NAMES ${libclang_names} PATHS ${library_apaths} NO_DEFAULT_PATH) + + display_vars("libclang_${IT_CONFIG}_found_apath" "${IT_CONFIG}: ") + + if(libclang_${IT_CONFIG}_found_apath) + # message("found library at ${libclang_${IT_CONFIG}_found_apath}") + get_filename_component(libclang_link_apath ${libclang_${IT_CONFIG}_found_apath} DIRECTORY) + link_directories(${libclang_link_apath}) + get_filename_component(libclang_found_name ${libclang_${IT_CONFIG}_found_apath} NAME_WE) + string(REGEX REPLACE "^lib" "" libclang_found_name ${libclang_found_name}) + + # message("libclang_found_name at ${libclang_found_name}") + set_property(TARGET libclang PROPERTY INTERFACE_LINK_LIBRARIES_${IT_CONFIG} ${libclang_found_name}) + set_property(TARGET libclang PROPERTY IMPORTED_LOCATION_${IT_CONFIG} ${libclang_${IT_CONFIG}_found_apath}) + message("${IT_CONFIG}: found library at ${libclang_link_apath}") + set(matched_${IT_CONFIG} TRUE) + endif() + endif() + endforeach() + endif() + endforeach() + + + # install info + if(user_install_prefix) + string(REGEX REPLACE "^~" "$ENV{HOME}" CMAKE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}) + get_filename_component(CMAKE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX} ABSOLUTE) + set(binary_destination_apath ${CMAKE_INSTALL_PREFIX}) + set(library_destination_apath ${CMAKE_INSTALL_PREFIX}) + else() + set(binary_destination_apath ${CMAKE_INSTALL_PREFIX}/bin) + set(library_destination_apath ${CMAKE_INSTALL_PREFIX}/lib/${project_name}) + endif() + + + # The rpath is runtime library search path. The rpath specify path where you want to install a shared object. + set(CMAKE_EXE_LINKER_FLAGS "-Wl,-rpath,${library_destination_apath}") + + + if(NOT (matched_DEBUG OR matched_RELEASE OR matched_MINSIZEREL OR matched_RELWITHDEBINFO)) + message("not found library") + endif() + + +else() + + message("sorry, not support environment") + +endif() + + + +# ---------------------------------------- +# after common setting +# ---------------------------------------- + +add_executable(${project_name} ${project_sources}) + +# set_property(TARGET ${project_name} PROPERTY CXX_STANDARD 11) + +set_property(TARGET ${project_name} PROPERTY OUTPUT_NAME_DEBUG "${project_elf_name}-debug") +set_property(TARGET ${project_name} PROPERTY OUTPUT_NAME_RELEASE "${project_elf_name}") +# set_property(TARGET ${project_name} PROPERTY OUTPUT_NAME_MINSIZEREL "${project_elf_name}") +set_property(TARGET ${project_name} PROPERTY OUTPUT_NAME_RELWITHDEBINFO "${project_elf_name}-reldbg") + + +list(APPEND project_defs -DCMAKE_GENERATOR="${CMAKE_GENERATOR}" -DCMAKE_HOST_SYSTEM_PROCESSOR="${CMAKE_HOST_SYSTEM_PROCESSOR}") + +# list(APPEND project_defs CMAKE_GENERATOR="${CMAKE_GENERATOR}") +# set_property(TARGET ${project_name} PROPERTY COMPILE_DEFINITIONS ${project_defs}) +# set_property(TARGET ${project_name} PROPERTY COMPILE_DEFINITIONS_DEBUG ${project_defs}) +# set_property(TARGET ${project_name} PROPERTY COMPILE_DEFINITIONS_RELEASE ${project_defs}) +add_definitions(${project_defs}) + +include_directories(./) + + +target_link_libraries(${project_name} ${dependency_libraries}) + + +# ---------------------------------------- +# install setting +# ---------------------------------------- + +set(CMAKE_INSTALL_RPATH ${library_destination_apath}) +install(TARGETS ${project_name} RUNTIME DESTINATION ${binary_destination_apath}) +foreach(IT_CONFIG ${project_configurations}) + install(FILES ${libclang_${IT_CONFIG}_found_apath} DESTINATION ${library_destination_apath} CONFIGURATIONS ${IT_CONFIG}) +endforeach() + + + +# ---------------------------------------- +# debug display for variables +# ---------------------------------------- + + +# get_directory_property(DirDefs DIRECTORY ${CMAKE_SOURCE_DIR} COMPILE_DEFINITIONS) +# foreach(IT_DEF ${DirDefs}) +# message(STATUS "Found Define: " ${IT_DEF}) +# endforeach() +# message( "DirDefs: " ${DirDefs} ) + +set(echo_vars) +list(APPEND echo_vars CMAKE_CONFIGURATION_TYPES project_configurations CMAKE_GENERATOR CMAKE_HOST_SYSTEM_PROCESSOR CMAKE_CURRENT_SOURCE_DIR collected_library_apath library_apaths) +list(APPEND echo_vars CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE project_defs) +list(APPEND echo_vars CMAKE_EXE_LINKER_FLAGS CMAKE_EXE_LINKER_FLAGS_DEBUG CMAKE_EXE_LINKER_FLAGS_RELEASE) +list(APPEND echo_vars dependency_libraries binary_destination_apath library_destination_apath) +list(APPEND echo_vars CMAKE_FIND_LIBRARY_PREFIXES CMAKE_FIND_LIBRARY_SUFFIXES) +# list(APPEND echo_vars CMAKE_IMPORT_LIBRARY_SUFFIXES CMAKE_LINK_LIBRARY_SUFFIX CMAKE_SHARED_LIBRARY_SUFFIX CMAKE_SHARED_MODULE_SUFFIX CMAKE_STATIC_LIBRARY_SUFFIX) +# list(APPEND echo_vars PROJECT_SOURCE_DIR PROJECT_BINARY_DIR CMAKE_SOURCE_DIR CMAKE_BINARY_DIR CMAKE_RUNTIME_OUTPUT_DIRECTORY CMAKE_LIBRARY_OUTPUT_DIRECTORY CMAKE_INSTALL_NAME_DIR CMAKE_INCLUDE_CURRENT_DIR CMAKE_HOME_DIRECTORY CMAKE_CURRENT_LIST_DIR CMAKE_CURRENT_BINARY_DIR CMAKE_BINARY_DIR CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${project_name}_SOURCE_DIR ${project_name}_BINARY_DIR) +list(APPEND echo_vars CMAKE_INSTALL_PREFIX CMAKE_INSTALL_RPATH CMAKE_SKIP_BUILD_RPATH CMAKE_BUILD_WITH_INSTALL_RPATH CMAKE_SKIP_RPATH CMAKE_SKIP_INSTALL_RPATH) +# list(APPEND echo_vars CMAKE_PREFIX_PATH CMAKE_LIBRARY_PATH CMAKE_FRAMEWORK_PATH CMAKE_SYSTEM_PREFIX_PATH CMAKE_SYSTEM_LIBRARY_PATH CMAKE_SYSTEM_FRAMEWORK_PATH) +display_vars("${echo_vars}" "final: ") + + diff --git a/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/ClangServer.cpp b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/ClangServer.cpp new file mode 100644 index 0000000..54b32c6 --- /dev/null +++ b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/ClangServer.cpp @@ -0,0 +1,439 @@ +/* -*- mode: c++ ; coding: utf-8-unix -*- */ +/* last updated : 2015/07/25.03:24:29 */ + +/* + * Copyright (c) 2013-2015 yaruopooner [https://github.com/yaruopooner] + * + * This file is part of ac-clang. + * + * 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 . + */ + + +/*================================================================================================*/ +/* Comment */ +/*================================================================================================*/ + + +/*================================================================================================*/ +/* Include Files */ +/*================================================================================================*/ + +#include "ClangServer.hpp" + + +using namespace std; + + + +/*================================================================================================*/ +/* Internal Function Definitions Section */ +/*================================================================================================*/ + +namespace +{ + +std::string GetClangVersion( void ) +{ + CXString version_text = clang_getClangVersion(); + const std::string clang_version = clang_getCString( version_text ); + + clang_disposeString( version_text ); + + return clang_version; +} + +} + + + +/*================================================================================================*/ +/* Global Class Method Definitions Section */ +/*================================================================================================*/ + + +/* + + ---- SERVER MESSAGE ---- + + - GET_SPECIFIC_PROPERTIES: return clang-server specific properties + Message format: + command_type:Server + command_name:GET_SPECIFIC_PROPERTIES + + - GET_CLANG_VERSION: return libclang version (libclang.lib/a) + Message format: + command_type:Server + command_name:GET_CLANG_VERSION + + - SET_CLANG_PARAMETERS: setup libclang behavior parameters + Message format: + command_type:Server + command_name:SET_CLANG_PARAMETERS + translation_unit_flags:[#flag_name0|flag_name1|...#] + complete_at_flags:[#flag_name0|flag_name1|...#] + + - CREATE_SESSION: create session. + Message format: + command_type:Server + command_name:CREATE_SESSION + session_name::[#session_name#] + + - DELETE_SESSION: delete session. + Message format: + command_type:Server + command_name:DELETE_SESSION + session_name::[#session_name#] + + - RESET: reset the clang server(all session delete. context reallocate) + Message format: + command_type:Server + command_name:RESET + + - SHUTDOWN: shutdown the clang server (this program) + Message format: + command_type:Server + command_name:SHUTDOWN + + + ---- SESSION MESSAGE ---- + + - SUSPEND: delete CXTranslationUnit + Message format: + command_type:Session + command_name:SUSPEND + session_name:[#session_name#] + + - RESUME: realloc CXTranslationUnit + Message format: + command_type:Session + command_name:RESUME + session_name:[#session_name#] + + - SET_CFLAGS: Specify CFLAGS argument passing to clang parser. + Message format: + command_type:Session + command_name:SET_CFLAGS + session_name:[#session_name#] + num_cflags:[#num_cflags#] + arg1 arg2 ...... (there should be num_cflags items here) + CFLAGS's white space must be accept. + a separator is '\n'. + source_length:[#source_length#] + <# SOURCE CODE #> + + - SET_SOURCECODE: Update the source code in the source buffer + Message format: + command_type:Session + command_name:SET_SOURCECODE + session_name:[#session_name#] + source_length:[#source_length#] + <# SOURCE CODE #> + + - REPARSE: Reparse the source code + command_type:Session + command_name:REPARSE + session_name:[#session_name#] + + - COMPLETION: Do code completion at a specified point. + Message format: + command_type:Session + command_name:COMPLETION + session_name:[#session_name#] + line:[#line#] + column:[#column#] + source_length:[#source_length#] + <# SOURCE CODE #> + + - SYNTAXCHECK: Retrieve diagnostic messages + Message format: + command_type:Session + command_name:SYNTAXCHECK + session_name:[#session_name#] + source_length:[#source_length#] + <# SOURCE CODE #> + + - INCLUSION: Get location of inclusion file at point + Message format: + command_type:Session + command_name:INCLUSION + session_name:[#session_name#] + line:[#line#] + column:[#column#] + source_length:[#source_length#] + <# SOURCE CODE #> + + - DEFINITION: Get location of definition at point + Message format: + command_type:Session + command_name:DEFINITION + session_name:[#session_name#] + line:[#line#] + column:[#column#] + source_length:[#source_length#] + <# SOURCE CODE #> + + - DECLARATION: Get location of declaration at point + Message format: + command_type:Session + command_name:DECLARATION + session_name:[#session_name#] + line:[#line#] + column:[#column#] + source_length:[#source_length#] + <# SOURCE CODE #> + + - SMARTJUMP: Get location of inclusion, definition, declaration at point. If that fails, it will search following. + inclusion -> finish, definition -> declaration -> finish. + Message format: + command_type:Session + command_name:SMARTJUMP + session_name:[#session_name#] + line:[#line#] + column:[#column#] + source_length:[#source_length#] + <# SOURCE CODE #> + + +*/ + + + + +ClangServer::ClangServer( const Specification& specification ) + : + m_Status( kStatus_Running ) + , m_Specification( specification ) +{ + // setup stream buffer size + m_Specification.m_StdinBufferSize = std::max( m_Specification.m_StdinBufferSize, static_cast< size_t >( Specification::kStreamBuffer_UnitSize ) ); + m_Specification.m_StdoutBufferSize = std::max( m_Specification.m_StdoutBufferSize, static_cast< size_t >( Specification::kStreamBuffer_UnitSize ) ); + + ::setvbuf( stdin, nullptr, _IOFBF, m_Specification.m_StdinBufferSize ); + ::setvbuf( stdout, nullptr, _IOFBF, m_Specification.m_StdoutBufferSize ); + + + // server command + m_ServerCommands.insert( ServerHandleMap::value_type( "GET_SPECIFICATION", std::mem_fn( &ClangServer::commandGetSpecification ) ) ); + m_ServerCommands.insert( ServerHandleMap::value_type( "GET_CLANG_VERSION", std::mem_fn( &ClangServer::commandGetClangVersion ) ) ); + m_ServerCommands.insert( ServerHandleMap::value_type( "SET_CLANG_PARAMETERS", std::mem_fn( &ClangServer::commandSetClangParameters ) ) ); + m_ServerCommands.insert( ServerHandleMap::value_type( "CREATE_SESSION", std::mem_fn( &ClangServer::commandCreateSession ) ) ); + m_ServerCommands.insert( ServerHandleMap::value_type( "DELETE_SESSION", std::mem_fn( &ClangServer::commandDeleteSession ) ) ); + m_ServerCommands.insert( ServerHandleMap::value_type( "RESET", std::mem_fn( &ClangServer::commandReset ) ) ); + m_ServerCommands.insert( ServerHandleMap::value_type( "SHUTDOWN", std::mem_fn( &ClangServer::commandShutdown ) ) ); + + // session command + m_SessionCommands.insert( SessionHandleMap::value_type( "SUSPEND", std::mem_fn( &ClangSession::commandSuspend ) ) ); + m_SessionCommands.insert( SessionHandleMap::value_type( "RESUME", std::mem_fn( &ClangSession::commandResume ) ) ); + m_SessionCommands.insert( SessionHandleMap::value_type( "SET_CFLAGS", std::mem_fn( &ClangSession::commandSetCFlags ) ) ); + m_SessionCommands.insert( SessionHandleMap::value_type( "SET_SOURCECODE", std::mem_fn( &ClangSession::commandSetSourceCode ) ) ); + m_SessionCommands.insert( SessionHandleMap::value_type( "REPARSE", std::mem_fn( &ClangSession::commandReparse ) ) ); + m_SessionCommands.insert( SessionHandleMap::value_type( "COMPLETION", std::mem_fn( &ClangSession::commandCompletion ) ) ); + m_SessionCommands.insert( SessionHandleMap::value_type( "SYNTAXCHECK", std::mem_fn( &ClangSession::commandDiagnostics ) ) ); + m_SessionCommands.insert( SessionHandleMap::value_type( "INCLUSION", std::mem_fn( &ClangSession::commandInclusion ) ) ); + m_SessionCommands.insert( SessionHandleMap::value_type( "DEFINITION", std::mem_fn( &ClangSession::commandDefinition ) ) ); + m_SessionCommands.insert( SessionHandleMap::value_type( "DECLARATION", std::mem_fn( &ClangSession::commandDeclaration ) ) ); + m_SessionCommands.insert( SessionHandleMap::value_type( "SMARTJUMP", std::mem_fn( &ClangSession::commandSmartJump ) ) ); + + // display initial specification + commandGetSpecification(); +} + +ClangServer::~ClangServer( void ) +{ + // m_Sessions must be destruction early than m_Context. + // Because m_Sessions depend to m_Context. + m_Sessions.clear(); +} + + +void ClangServer::commandGetSpecification( void ) +{ + const std::string server_version = CLANG_SERVER_VERSION; + const std::string clang_version = ::GetClangVersion(); + const std::string generate = CMAKE_GENERATOR "/" CMAKE_HOST_SYSTEM_PROCESSOR; + + m_Writer.Write( "-------- Clang-Server Specification --------\n" ); + m_Writer.Write( "Server Version : %s\n", server_version.c_str() ); + m_Writer.Write( "Clang Version : %s\n", clang_version.c_str() ); + m_Writer.Write( "Generate : %s\n", generate.c_str() ); + // m_Writer.Write( "Log File : %s\n", m_Specification.m_LogFile.c_str() ); + m_Writer.Write( "STDIN Buffer Size : %d bytes\n", m_Specification.m_StdinBufferSize ); + m_Writer.Write( "STDOUT Buffer Size : %d bytes\n", m_Specification.m_StdoutBufferSize ); + m_Writer.Flush(); +} + + +void ClangServer::commandGetClangVersion( void ) +{ + const std::string clang_version = ::GetClangVersion(); + + m_Writer.Write( "%s ", clang_version.c_str() ); + m_Writer.Flush(); +} + + +void ClangServer::commandSetClangParameters( void ) +{ + const string translation_unit_flags = m_Reader.ReadToken( "translation_unit_flags:%s" ); + const string complete_at_flags = m_Reader.ReadToken( "complete_at_flags:%s" ); + const uint32_t translation_unit_flags_value = ClangFlagConverters::GetCXTranslationUnitFlags().GetValue( translation_unit_flags ); + const uint32_t complete_at_flags_value = ClangFlagConverters::GetCXCodeCompleteFlags().GetValue( complete_at_flags ); + uint32_t complete_results_limit; + + m_Reader.ReadToken( "complete_results_limit:%d", complete_results_limit ); + + m_Context.SetTranslationUnitFlags( translation_unit_flags_value ); + m_Context.SetCompleteAtFlags( complete_at_flags_value ); + m_Context.SetCompleteResultsLimit( complete_results_limit ); +} + + +void ClangServer::commandCreateSession( void ) +{ + const string session_name = m_Reader.ReadToken( "session_name:%s" ); + + // search session + Dictionary::iterator session_it = m_Sessions.find( session_name ); + + if ( session_it == m_Sessions.end() ) + { + // not found session + // allocate & setup new session + std::shared_ptr< ClangSession > new_session( std::make_shared< ClangSession >( session_name, m_Context, m_Reader, m_Writer ) ); + std::pair< Dictionary::iterator, bool > result = m_Sessions.insert( Dictionary::value_type( session_name, new_session ) ); + + if ( result.second ) + { + // success + new_session->Allocate(); + } + } + else + { + // already exist + } +} + + +void ClangServer::commandDeleteSession( void ) +{ + const string session_name = m_Reader.ReadToken( "session_name:%s" ); + + // search session + Dictionary::iterator session_it = m_Sessions.find( session_name ); + + if ( session_it != m_Sessions.end() ) + { + // session_it->second->Deallocate(); + + m_Sessions.erase( session_it ); + } +} + + +void ClangServer::commandReset( void ) +{ + m_Sessions.clear(); + m_Context.Deallocate(); + m_Context.Allocate(); +} + + +void ClangServer::commandShutdown( void ) +{ + m_Status = kStatus_Exit; +} + + + + +void ClangServer::ParseServerCommand( void ) +{ + const string command_name = m_Reader.ReadToken( "command_name:%s" ); + + ServerHandleMap::iterator command_it = m_ServerCommands.find( command_name ); + + // execute command handler + if ( command_it != m_ServerCommands.end() ) + { + command_it->second( *this ); + } + else + { + // unknown command + } +} + +void ClangServer::ParseSessionCommand( void ) +{ + const string command_name = m_Reader.ReadToken( "command_name:%s" ); + const string session_name = m_Reader.ReadToken( "session_name:%s" ); + + if ( session_name.empty() ) + { + return; + } + + // search session + Dictionary::iterator session_it = m_Sessions.find( session_name ); + + // execute command handler + if ( session_it != m_Sessions.end() ) + { + SessionHandleMap::iterator command_it = m_SessionCommands.find( command_name ); + + if ( command_it != m_SessionCommands.end() ) + { + command_it->second( *session_it->second ); + } + else + { + // session not found + } + } + else + { + // unknown command + } +} + + +void ClangServer::ParseCommand( void ) +{ + do + { + const string command_type = m_Reader.ReadToken( "command_type:%s" ); + + if ( command_type == "Server" ) + { + ParseServerCommand(); + } + else if ( command_type == "Session" ) + { + ParseSessionCommand(); + } + else + { + // unknown command type + } + } while ( m_Status != kStatus_Exit ); +} + + + + +/*================================================================================================*/ +/* EOF */ +/*================================================================================================*/ diff --git a/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/ClangServer.hpp b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/ClangServer.hpp new file mode 100644 index 0000000..3364bbb --- /dev/null +++ b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/ClangServer.hpp @@ -0,0 +1,132 @@ +/* -*- mode: c++ ; coding: utf-8-unix -*- */ +/* last updated : 2015/09/05.04:13:59 */ + +/* + * Copyright (c) 2013-2015 yaruopooner [https://github.com/yaruopooner] + * + * This file is part of ac-clang. + * + * 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 . + */ + + +#pragma once + +#ifndef __CLANG_SERVER_HPP__ +#define __CLANG_SERVER_HPP__ + + + +#define CLANG_SERVER_VERSION "server version 1.4.0" + + +/*================================================================================================*/ +/* Comment */ +/*================================================================================================*/ + + +/*================================================================================================*/ +/* Include Files */ +/*================================================================================================*/ + +#include +#include +#include + +#include "ClangSession.hpp" + + +/*================================================================================================*/ +/* Class */ +/*================================================================================================*/ + + +class ClangServer +{ +public: + enum Status + { + kStatus_Running, + kStatus_Exit, + }; + + + struct Specification + { + enum + { + kStreamBuffer_UnitSize = 1 * 1024 * 1024, + }; + + Specification( size_t StdinBufferSize = kStreamBuffer_UnitSize, + size_t StdoutBufferSize = kStreamBuffer_UnitSize, + const std::string& LogFile = std::string() ) : + m_StdinBufferSize( StdinBufferSize ) + , m_StdoutBufferSize( StdoutBufferSize ) + , m_LogFile( LogFile ) + { + } + + size_t m_StdinBufferSize; + size_t m_StdoutBufferSize; + std::string m_LogFile; + }; + + + ClangServer( const Specification& specification = Specification() ); + ~ClangServer( void ); + + void ParseCommand( void ); + + // void SetLogFile( const std::string& LogFile ); + + +private: + void ParseServerCommand( void ); + void ParseSessionCommand( void ); + + + // commands + void commandGetSpecification( void ); + void commandGetClangVersion( void ); + void commandSetClangParameters( void ); + void commandCreateSession( void ); + void commandDeleteSession( void ); + void commandReset( void ); + void commandShutdown( void ); + + +private: + typedef std::unordered_map< std::string, std::function< void (ClangServer&) > > ServerHandleMap; + typedef std::unordered_map< std::string, std::function< void (ClangSession&) > > SessionHandleMap; + typedef std::unordered_map< std::string, std::shared_ptr< ClangSession > > Dictionary; + + + ClangContext m_Context; + ServerHandleMap m_ServerCommands; + SessionHandleMap m_SessionCommands; + Dictionary m_Sessions; + StreamReader m_Reader; + StreamWriter m_Writer; + uint32_t m_Status; + Specification m_Specification; +}; + + + + +#endif // __CLANG_SERVER_HPP__ +/*================================================================================================*/ +/* EOF */ +/*================================================================================================*/ diff --git a/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/ClangSession.cpp b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/ClangSession.cpp new file mode 100644 index 0000000..6625a54 --- /dev/null +++ b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/ClangSession.cpp @@ -0,0 +1,739 @@ +/* -*- mode: c++ ; coding: utf-8-unix -*- */ +/* last updated : 2015/07/25.03:32:02 */ + +/* + * Copyright (c) 2013-2015 yaruopooner [https://github.com/yaruopooner] + * + * This file is part of ac-clang. + * + * 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 . + */ + + +/*================================================================================================*/ +/* Comment */ +/*================================================================================================*/ + + +/*================================================================================================*/ +/* Include Files */ +/*================================================================================================*/ + +#include + +#include "ClangSession.hpp" + + +using namespace std; + + + +/*================================================================================================*/ +/* Internal Printer Class Definitions Section */ +/*================================================================================================*/ + + +namespace +{ + +string GetNormalizePath( CXFile file ) +{ + CXString filename = clang_getFileName( file ); + const string path = clang_getCString( filename ); + const regex expression( "[\\\\]+" ); + const string replace( "/" ); + const string normalize_path = regex_replace( path, expression, replace ); + + clang_disposeString( filename ); + + return normalize_path; +} + +} + + + +class ClangSession::Completion +{ +public: + Completion( ClangSession& Session ) : + m_Session( Session ) + { + } + + void PrintCompleteCandidates( void ); + +private: + bool PrintCompletionHeadTerm( CXCompletionString CompletionString ); + void PrintAllCompletionTerms( CXCompletionString CompletionString ); + void PrintCompletionLine( CXCompletionString CompletionString ); + void PrintCompletionResults( CXCodeCompleteResults* CompleteResults ); + +private: + ClangSession& m_Session; +}; + + +class ClangSession::Diagnostics +{ +public: + Diagnostics( ClangSession& Session ) : + m_Session( Session ) + { + } + + void PrintDiagnosticsResult( void ); + +private: + ClangSession& m_Session; +}; + + +class ClangSession::Jump +{ +public: + Jump( ClangSession& Session ) : + m_Session( Session ) + { + } + + void PrintInclusionFileLocation( void ); + void PrintDefinitionLocation( void ); + void PrintDeclarationLocation( void ); + void PrintSmartJumpLocation( void ); + +private: + struct Location + { + Location( void ) : + m_Line( 0 ) + , m_Column( 0 ) + { + } + + string m_NormalizePath; + uint32_t m_Line; + uint32_t m_Column; + }; + + CXCursor GetCursor( const uint32_t Line, const uint32_t Column ) const; + void PrepareTransaction( uint32_t& Line, uint32_t& Column ); + bool EvaluateCursorLocation( const CXCursor& Cursor ); + + bool EvaluateInclusionFileLocation( void ); + bool EvaluateDefinitionLocation( void ); + bool EvaluateDeclarationLocation( void ); + bool EvaluateSmartJumpLocation( void ); + void PrintLocation( void ); + +private: + ClangSession& m_Session; + Location m_Location; +}; + + + + +bool ClangSession::Completion::PrintCompletionHeadTerm( CXCompletionString CompletionString ) +{ + // check accessibility of candidate. (access specifier of member : public/protected/private) + if ( clang_getCompletionAvailability( CompletionString ) == CXAvailability_NotAccessible ) + { + return ( false ); + } + + const uint32_t n_chunks = clang_getNumCompletionChunks( CompletionString ); + + // inspect all chunks only to find the TypedText chunk + for ( uint32_t i_chunk = 0; i_chunk < n_chunks; ++i_chunk ) + { + if ( clang_getCompletionChunkKind( CompletionString, i_chunk ) == CXCompletionChunk_TypedText ) + { + // We got it, just dump it to fp + CXString ac_string = clang_getCompletionChunkText( CompletionString, i_chunk ); + + m_Session.m_Writer.Write( "COMPLETION: %s", clang_getCString( ac_string ) ); + + clang_disposeString( ac_string ); + + // care package on the way + return ( true ); + } + } + + // We haven't found TypedText chunk in CompletionString + return ( false ); +} + +void ClangSession::Completion::PrintAllCompletionTerms( CXCompletionString CompletionString ) +{ + const uint32_t n_chunks = clang_getNumCompletionChunks( CompletionString ); + + for ( uint32_t i_chunk = 0; i_chunk < n_chunks; ++i_chunk ) + { + // get the type and completion text of this chunk + CXCompletionChunkKind chk_kind = clang_getCompletionChunkKind( CompletionString, i_chunk ); + CXString chk_text = clang_getCompletionChunkText( CompletionString, i_chunk ); + + // differenct kinds of chunks has various output formats + switch ( chk_kind ) + { + case CXCompletionChunk_Placeholder: + m_Session.m_Writer.Write( "<#%s#>", clang_getCString( chk_text ) ); + break; + + case CXCompletionChunk_ResultType: + m_Session.m_Writer.Write( "[#%s#]", clang_getCString( chk_text ) ); + break; + + case CXCompletionChunk_Optional: + // print optional term in a recursive way + m_Session.m_Writer.Write( "{#" ); + PrintAllCompletionTerms( clang_getCompletionChunkCompletionString( CompletionString, i_chunk ) ); + m_Session.m_Writer.Write( "#}" ); + break; + + default: + m_Session.m_Writer.Write( "%s", clang_getCString( chk_text ) ); + } + + clang_disposeString( chk_text ); + } +} + +void ClangSession::Completion::PrintCompletionLine( CXCompletionString CompletionString ) +{ + // print completion item head: COMPLETION: typed_string + if ( PrintCompletionHeadTerm( CompletionString ) ) + { + // If there's not only one TypedText chunk in this completion string, + // * we still have a lot of info to dump: + // * + // * COMPLETION: typed_text : ##infos## \n + m_Session.m_Writer.Write( " : " ); + + PrintAllCompletionTerms( CompletionString ); + + m_Session.m_Writer.Write( "\n" ); + } +} + +void ClangSession::Completion::PrintCompletionResults( CXCodeCompleteResults* CompleteResults ) +{ + const uint32_t results_limit = m_Session.m_Context.GetCompleteResultsLimit(); + const bool is_accept = results_limit ? ( CompleteResults->NumResults < results_limit ) : true; + + if ( !is_accept ) + { + m_Session.m_Writer.Write( "A number of completion results(%d) is threshold value(%d) over!!\n", CompleteResults->NumResults, results_limit ); + return; + } + + for ( uint32_t i = 0; i < CompleteResults->NumResults; ++i ) + { + PrintCompletionLine( CompleteResults->Results[ i ].CompletionString ); + } +} + +void ClangSession::Completion::PrintCompleteCandidates( void ) +{ + uint32_t line; + uint32_t column; + + m_Session.m_Reader.ReadToken( "line:%d", line ); + m_Session.m_Reader.ReadToken( "column:%d", column ); + + m_Session.ReadSourceCode(); + + CXUnsavedFile unsaved_file = m_Session.GetCXUnsavedFile(); + // necessary call? + // clang_reparseTranslationUnit( m_Session.m_CxTU, 1, &unsaved_file, m_Session.m_TranslationUnitFlags ); + CXCodeCompleteResults* results = clang_codeCompleteAt( m_Session.m_CxTU, m_Session.m_SessionName.c_str(), line, column, &unsaved_file, 1, m_Session.m_CompleteAtFlags ); + + if ( results ) + { + clang_sortCodeCompletionResults( results->Results, results->NumResults ); + + PrintCompletionResults( results ); + + clang_disposeCodeCompleteResults( results ); + } + + m_Session.m_Writer.Flush(); +} + + + +void ClangSession::Diagnostics::PrintDiagnosticsResult( void ) +{ + m_Session.ReadSourceCode(); + + CXUnsavedFile unsaved_file = m_Session.GetCXUnsavedFile(); + + clang_reparseTranslationUnit( m_Session.m_CxTU, 1, &unsaved_file, m_Session.m_TranslationUnitFlags ); + + const uint32_t n_diagnostics = clang_getNumDiagnostics( m_Session.m_CxTU ); + + for ( uint32_t i = 0; i < n_diagnostics; ++i ) + { + CXDiagnostic diagnostic = clang_getDiagnostic( m_Session.m_CxTU, i ); + CXString message = clang_formatDiagnostic( diagnostic, clang_defaultDiagnosticDisplayOptions() ); + + m_Session.m_Writer.Write( "%s\n", clang_getCString( message ) ); + + clang_disposeString( message ); + clang_disposeDiagnostic( diagnostic ); + } + + m_Session.m_Writer.Flush(); +} + + + +CXCursor ClangSession::Jump::GetCursor( const uint32_t Line, const uint32_t Column ) const +{ + const CXFile file = clang_getFile( m_Session.m_CxTU, m_Session.m_SessionName.c_str() ); + const CXSourceLocation location = clang_getLocation( m_Session.m_CxTU, file, Line, Column ); + const CXCursor cursor = clang_getCursor( m_Session.m_CxTU, location ); + + return cursor; +} + +void ClangSession::Jump::PrepareTransaction( uint32_t& Line, uint32_t& Column ) +{ + m_Session.m_Reader.ReadToken( "line:%d", Line ); + m_Session.m_Reader.ReadToken( "column:%d", Column ); + + m_Session.ReadSourceCode(); + + CXUnsavedFile unsaved_file = m_Session.GetCXUnsavedFile(); + + clang_reparseTranslationUnit( m_Session.m_CxTU, 1, &unsaved_file, m_Session.m_TranslationUnitFlags ); +} + + +bool ClangSession::Jump::EvaluateCursorLocation( const CXCursor& Cursor ) +{ + if ( clang_isInvalid( Cursor.kind ) ) + { + return ( false ); + } + + const CXSourceLocation dest_location = clang_getCursorLocation( Cursor ); + CXFile dest_file; + uint32_t dest_line; + uint32_t dest_column; + uint32_t dest_offset; + + clang_getExpansionLocation( dest_location, &dest_file, &dest_line, &dest_column, &dest_offset ); + + if ( !dest_file ) + { + return ( false ); + } + + const string normalize_path = ::GetNormalizePath( dest_file ); + + m_Location.m_NormalizePath = normalize_path; + m_Location.m_Line = dest_line; + m_Location.m_Column = dest_column; + + return ( true ); +} + + +bool ClangSession::Jump::EvaluateInclusionFileLocation( void ) +{ + uint32_t line; + uint32_t column; + + PrepareTransaction( line, column ); + + const CXCursor source_cursor = GetCursor( line, column ); + + if ( !clang_isInvalid( source_cursor.kind ) ) + { + if ( source_cursor.kind == CXCursor_InclusionDirective ) + { + const CXFile file = clang_getIncludedFile( source_cursor ); + + if ( file ) + { + const uint32_t file_line = 1; + const uint32_t file_column = 1; + const string normalize_path = ::GetNormalizePath( file ); + + m_Location.m_NormalizePath = normalize_path; + m_Location.m_Line = file_line; + m_Location.m_Column = file_column; + + return ( true ); + } + } + } + + return ( false ); +} + +bool ClangSession::Jump::EvaluateDefinitionLocation( void ) +{ + uint32_t line; + uint32_t column; + + PrepareTransaction( line, column ); + + const CXCursor source_cursor = GetCursor( line, column ); + + if ( !clang_isInvalid( source_cursor.kind ) ) + { + return EvaluateCursorLocation( clang_getCursorDefinition( source_cursor ) ); + } + + return ( false ); +} + +bool ClangSession::Jump::EvaluateDeclarationLocation( void ) +{ + uint32_t line; + uint32_t column; + + PrepareTransaction( line, column ); + + const CXCursor source_cursor = GetCursor( line, column ); + + if ( !clang_isInvalid( source_cursor.kind ) ) + { + return EvaluateCursorLocation( clang_getCursorReferenced( source_cursor ) ); + } + + return ( false ); +} + +bool ClangSession::Jump::EvaluateSmartJumpLocation( void ) +{ + uint32_t line; + uint32_t column; + + PrepareTransaction( line, column ); + + const CXCursor source_cursor = GetCursor( line, column ); + + if ( !clang_isInvalid( source_cursor.kind ) ) + { + if ( source_cursor.kind == CXCursor_InclusionDirective ) + { + const CXFile file = clang_getIncludedFile( source_cursor ); + + if ( file ) + { + const uint32_t file_line = 1; + const uint32_t file_column = 1; + const string normalize_path = ::GetNormalizePath( file ); + + m_Location.m_NormalizePath = normalize_path; + m_Location.m_Line = file_line; + m_Location.m_Column = file_column; + + return ( true ); + } + } + else + { + return ( EvaluateCursorLocation( clang_getCursorDefinition( source_cursor ) ) + || EvaluateCursorLocation( clang_getCursorReferenced( source_cursor ) ) ); + } + } + + return ( false ); +} + + +void ClangSession::Jump::PrintLocation( void ) +{ + m_Session.m_Writer.Write( "\"%s\" %d %d ", m_Location.m_NormalizePath.c_str(), m_Location.m_Line, m_Location.m_Column ); +} + + +void ClangSession::Jump::PrintInclusionFileLocation( void ) +{ + if ( EvaluateInclusionFileLocation() ) + { + PrintLocation(); + } + + m_Session.m_Writer.Flush(); +} + +void ClangSession::Jump::PrintDefinitionLocation( void ) +{ + if ( EvaluateDefinitionLocation() ) + { + PrintLocation(); + } + + m_Session.m_Writer.Flush(); +} + +void ClangSession::Jump::PrintDeclarationLocation( void ) +{ + if ( EvaluateDeclarationLocation() ) + { + PrintLocation(); + } + + m_Session.m_Writer.Flush(); +} + +void ClangSession::Jump::PrintSmartJumpLocation( void ) +{ + if ( EvaluateSmartJumpLocation() ) + { + PrintLocation(); + } + + m_Session.m_Writer.Flush(); +} + + + + +/*================================================================================================*/ +/* Global Class Method Definitions Section */ +/*================================================================================================*/ + + +ClangSession::ClangSession( const std::string& SessionName, const ClangContext& Context, StreamReader& Reader, StreamWriter& Writer ) + : + m_SessionName( SessionName ) + , m_Context( Context ) + , m_Reader( Reader ) + , m_Writer( Writer ) + , m_CxTU( nullptr ) + , m_TranslationUnitFlags( Context.GetTranslationUnitFlags() ) + , m_CompleteAtFlags( Context.GetCompleteAtFlags() ) +{ +} + + +ClangSession::~ClangSession( void ) +{ + Deallocate(); +} + + + +void ClangSession::ReadCFlags( void ) +{ + int32_t num_cflags; + + m_Reader.ReadToken( "num_cflags:%d", num_cflags ); + + vector< string > cflags; + + for ( int32_t i = 0; i < num_cflags; ++i ) + { + // CFLAGS's white space must be accept. + // a separator is '\n'. + cflags.push_back( m_Reader.ReadToken( "%[^\n]" ) ); + } + + m_CFlagsBuffer.Allocate( cflags ); +} + +void ClangSession::ReadSourceCode( void ) +{ + int32_t src_length; + + m_Reader.ReadToken( "source_length:%d", src_length ); + + m_CSourceCodeBuffer.Allocate( src_length ); + + m_Reader.Read( m_CSourceCodeBuffer.GetBuffer(), m_CSourceCodeBuffer.GetSize() ); +} + + + +void ClangSession::CreateTranslationUnit( void ) +{ + if ( m_CxTU ) + { + // clang parser already exist + return; + } + + CXUnsavedFile unsaved_file = GetCXUnsavedFile(); + + m_CxTU = clang_parseTranslationUnit( m_Context.GetCXIndex(), m_SessionName.c_str(), + static_cast< const char * const *>( m_CFlagsBuffer.GetCFlags() ), m_CFlagsBuffer.GetNumberOfCFlags(), + &unsaved_file, 1, m_TranslationUnitFlags ); + + clang_reparseTranslationUnit( m_CxTU, 1, &unsaved_file, m_TranslationUnitFlags ); +} + +void ClangSession::DeleteTranslationUnit( void ) +{ + if ( !m_CxTU ) + { + // clang parser not exist + return; + } + + clang_disposeTranslationUnit( m_CxTU ); + m_CxTU = nullptr; +} + + + +void ClangSession::Allocate( void ) +{ + ReadCFlags(); + ReadSourceCode(); + CreateTranslationUnit(); +} + +void ClangSession::Deallocate( void ) +{ + DeleteTranslationUnit(); +} + + +void ClangSession::commandSuspend( void ) +{ + DeleteTranslationUnit(); +} + +void ClangSession::commandResume( void ) +{ + CreateTranslationUnit(); +} + + +void ClangSession::commandSetCFlags( void ) +{ + DeleteTranslationUnit(); + ReadCFlags(); + ReadSourceCode(); + CreateTranslationUnit(); +} + + +void ClangSession::commandSetSourceCode( void ) +{ + ReadSourceCode(); +} + +void ClangSession::commandReparse( void ) +{ + if ( !m_CxTU ) + { + // clang parser not exist + return; + } + + CXUnsavedFile unsaved_file = GetCXUnsavedFile(); + + clang_reparseTranslationUnit( m_CxTU, 1, &unsaved_file, m_TranslationUnitFlags ); +} + + +void ClangSession::commandCompletion( void ) +{ + if ( !m_CxTU ) + { + // clang parser not exist + return; + } + + Completion printer( *this ); + + printer.PrintCompleteCandidates(); +} + + +void ClangSession::commandDiagnostics( void ) +{ + if ( !m_CxTU ) + { + // clang parser not exist + return; + } + + Diagnostics printer( *this ); + + printer.PrintDiagnosticsResult(); +} + + +void ClangSession::commandInclusion( void ) +{ + if ( !m_CxTU ) + { + // clang parser not exist + return; + } + + Jump printer( *this ); + + printer.PrintInclusionFileLocation(); +} + + +void ClangSession::commandDeclaration( void ) +{ + if ( !m_CxTU ) + { + // clang parser not exist + return; + } + + Jump printer( *this ); + + printer.PrintDeclarationLocation(); +} + + +void ClangSession::commandDefinition( void ) +{ + if ( !m_CxTU ) + { + // clang parser not exist + return; + } + + Jump printer( *this ); + + printer.PrintDefinitionLocation(); +} + + +void ClangSession::commandSmartJump( void ) +{ + if ( !m_CxTU ) + { + // clang parser not exist + return; + } + + Jump printer( *this ); + + printer.PrintSmartJumpLocation(); +} + + + + + +/*================================================================================================*/ +/* EOF */ +/*================================================================================================*/ diff --git a/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/ClangSession.hpp b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/ClangSession.hpp new file mode 100644 index 0000000..4a3e889 --- /dev/null +++ b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/ClangSession.hpp @@ -0,0 +1,133 @@ +/* -*- mode: c++ ; coding: utf-8-unix -*- */ +/* last updated : 2015/07/25.00:55:41 */ + +/* + * Copyright (c) 2013-2015 yaruopooner [https://github.com/yaruopooner] + * + * This file is part of ac-clang. + * + * 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 . + */ + + +#pragma once + +#ifndef __CLANG_SESSION_HPP__ +#define __CLANG_SESSION_HPP__ + + + + +/*================================================================================================*/ +/* Comment */ +/*================================================================================================*/ + + +/*================================================================================================*/ +/* Include Files */ +/*================================================================================================*/ + +#include "Common.hpp" + + +/*================================================================================================*/ +/* Global Class Method Definitions Section */ +/*================================================================================================*/ + + + +class ClangSession +{ +public: + ClangSession( const std::string& SessionName, const ClangContext& Context, StreamReader& Reader, StreamWriter& Writer ); + virtual ~ClangSession( void ); + + + void Allocate( void ); + void Deallocate( void ); + + + // const CFlagsBuffer& GetCFlagsBuffer( void ) const + // { + // return ( m_CFlagsBuffer ); + // } + // CFlagsBuffer& GetCFlagsBuffer( void ) + // { + // return ( m_CFlagsBuffer ); + // } + + + // commands + void commandSuspend( void ); + void commandResume( void ); + void commandSetCFlags( void ); + void commandSetSourceCode( void ); + void commandReparse( void ); + void commandCompletion( void ); + void commandDiagnostics( void ); + void commandInclusion( void ); + void commandDeclaration( void ); + void commandDefinition( void ); + void commandSmartJump( void ); + + +private: + CXUnsavedFile GetCXUnsavedFile( void ) const + { + CXUnsavedFile unsaved_file; + + unsaved_file.Filename = m_SessionName.c_str(); + unsaved_file.Contents = m_CSourceCodeBuffer.GetBuffer(); + unsaved_file.Length = m_CSourceCodeBuffer.GetSize(); + + return ( unsaved_file ); + } + + void ReadCFlags( void ); + void ReadSourceCode( void ); + + void CreateTranslationUnit( void ); + void DeleteTranslationUnit( void ); + + + // internal printer classes + class Completion; + class Diagnostics; + class Jump; + + +private: + const std::string m_SessionName; + const ClangContext& m_Context; + StreamReader& m_Reader; + StreamWriter& m_Writer; + + // clang parser object + CXTranslationUnit m_CxTU; + + // clang parser options + uint32_t m_TranslationUnitFlags; + uint32_t m_CompleteAtFlags; + + CFlagsBuffer m_CFlagsBuffer; + CSourceCodeBuffer m_CSourceCodeBuffer; +}; + + + + +#endif // __CLANG_SESSION_HPP__ +/*================================================================================================*/ +/* EOF */ +/*================================================================================================*/ diff --git a/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/CommandLine.hpp b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/CommandLine.hpp new file mode 100644 index 0000000..15d1973 --- /dev/null +++ b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/CommandLine.hpp @@ -0,0 +1,607 @@ +/* -*- mode: c++ ; coding: utf-8-unix -*- */ +/* last updated : 2015/05/23.23:17:32 */ + +/* + * Copyright (c) 2013-2015 yaruopooner [https://github.com/yaruopooner] + * + * This file is part of ac-clang. + * + * 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 . + */ + + +#pragma once + +#ifndef __COMMAND_LINE_HPP__ +#define __COMMAND_LINE_HPP__ + + +/*================================================================================================*/ +/* Include Files */ +/*================================================================================================*/ + +#include +#include +#include +#include +#include +#include + + +/*================================================================================================*/ +/* Class */ +/*================================================================================================*/ + + +namespace CommandLine +{ + + +template< typename Target, typename Source > +struct lexical_cast_imp +{ + static Target cast( const Source& value ) + { + Target result; + std::stringstream interpreter; + + if ( !( interpreter << value ) || !( interpreter >> result ) || !( interpreter >> std::ws ).eof() ) + { + throw std::invalid_argument( "value cast failure." ); + } + + return result; + } +}; + +template< typename Source > +struct lexical_cast_imp< Source, Source > +{ + static Source cast( const Source& value ) + { + return value; + } +}; + +template< typename Target, typename Source > +static Target lexical_cast( const Source& value ) +{ + return lexical_cast_imp< Target, Source >::cast( value ); +} + + +template< typename T > +struct DefaultReader +{ + virtual ~DefaultReader( void ) + { + } + virtual T operator ()( const std::string& argument ) const + { + return lexical_cast< T >( argument ); + } +}; + +template< typename T > +class RangeReader : public DefaultReader< T > +{ +public: + RangeReader( T min, T max ) : + m_Min( min ) + , m_Max( max ) + { + } + + virtual T operator ()( const std::string& argument ) const override + { + const T value = lexical_cast< T >( argument ); + + if ( ( value < m_Min ) || ( m_Max < value ) ) + { + throw std::domain_error( "value is out of range : " + argument ); + } + + return value; + } + + T m_Min; + T m_Max; +}; + + +class IOptionWithValue; +template< typename T, typename Reader > +class OptionWithValueWithReader; + + +class IOptionDetail +{ +protected: + virtual ~IOptionDetail() + { + } + +public: + enum Flag + { + kFlag_Once = 1 << 0, + kFlag_HasValue = 1 << 1, + kFlag_RequireValue = 1 << 2, + }; + + virtual int32_t GetId( void ) const = 0; + virtual const std::string& GetName( void ) const = 0; + virtual const std::string& GetShortName( void ) const = 0; + virtual const std::string& GetDescription( void ) const = 0; + virtual bool HasFlag( uint32_t flag ) const = 0; + virtual const std::string& GetValueDescription( void ) const = 0; + + virtual bool IsSameName( const std::string& name ) const = 0; + + virtual std::shared_ptr< IOptionWithValue > CreateEvaluator( const std::string& argument ) const = 0; +}; + + + +template< typename T, typename Reader = DefaultReader< T > > +class OptionDetail : public IOptionDetail +{ +public: + OptionDetail( int32_t id, const std::string& name, const std::string& shortName, const std::string& description, uint32_t flags = 0, const std::string& valueDescription = std::string(), const Reader& reader = Reader() ) : + m_Id( id ) + , m_Name( "--" + name ) + , m_ShortName( "-" + shortName ) + , m_Description( description ) + , m_Flags( flags ) + , m_ValueDescription( valueDescription ) + , m_Reader( reader ) + { + } + virtual ~OptionDetail() + { + } + + int32_t GetId( void ) const final + { + return m_Id; + } + const std::string& GetName( void ) const final + { + return m_Name; + } + const std::string& GetShortName( void ) const final + { + return m_ShortName; + } + const std::string& GetDescription( void ) const final + { + return m_Description; + } + bool HasFlag( uint32_t flag ) const final + { + return ( m_Flags & flag ) ? true : false; + } + const std::string& GetValueDescription( void ) const final + { + return m_ValueDescription; + } + + bool IsSameName( const std::string& name ) const final + { + return ( ( m_Name == name ) || ( m_ShortName == name ) ); + } + + std::shared_ptr< IOptionWithValue > CreateEvaluator( const std::string& argument ) const override + { + return std::make_shared< OptionWithValueWithReader< T, Reader > >( this, argument ); + } + + T GetValue( const std::string& argument ) const + { + return m_Reader( argument ); + } + + +protected: + const int32_t m_Id; + const std::string m_Name; + const std::string m_ShortName; + const std::string m_Description; + const uint32_t m_Flags; + const std::string m_ValueDescription; + const Reader m_Reader; +}; + + + +class IOptionWithValue +{ +protected: + virtual ~IOptionWithValue( void ) + { + } + +public: + virtual const IOptionDetail* GetDetail( void ) const = 0; + virtual uint32_t GetId( void ) const = 0; + virtual const std::string& GetOptionName( void ) const = 0; + virtual bool IsValid( void ) const = 0; + virtual bool Evaluate( std::string& message ) = 0; +}; + + +template< typename T > +class OptionWithValue : public IOptionWithValue +{ +protected: + OptionWithValue( const IOptionDetail* detail, const std::string& argument ) : + m_Detail( detail ) + , m_Argument( argument ) + , m_ValidValue( false ) + { + } + +public: + virtual ~OptionWithValue( void ) + { + } + + const IOptionDetail* GetDetail( void ) const final + { + return m_Detail; + } + + uint32_t GetId( void ) const final + { + return m_Detail->GetId(); + } + + const std::string& GetOptionName( void ) const final + { + return m_Detail->GetName(); + } + + bool IsValid( void ) const final + { + return m_ValidValue; + } + + virtual bool Evaluate( std::string& message ) override + { + return true; + } + + const T& GetValue( void ) const + { + return m_Value; + } + +protected: + const IOptionDetail* m_Detail; + const std::string m_Argument; + bool m_ValidValue; + T m_Value; +}; + + +template< typename T, typename Reader > +class OptionWithValueWithReader : public OptionWithValue< T > +{ +public: + OptionWithValueWithReader( const IOptionDetail* detail, const std::string& argument ) : + OptionWithValue< T >( detail, argument ) + { + } + virtual ~OptionWithValueWithReader( void ) + { + } + + bool Evaluate( std::string& message ) override + { + try + { + if ( !this->m_Argument.empty() ) + { + const auto* detail = dynamic_cast< const OptionDetail< T, Reader >* >( this->m_Detail ); + + this->m_Value = detail->GetValue( this->m_Argument ); + this->m_ValidValue = true; + } + + return true; + } + catch ( const std::exception& exception ) + { + std::stringstream ss; + + ss << this->m_Detail->GetName() << " : " << exception.what() << std::endl; + ss << this->m_Detail->GetDescription(); + message = ss.str(); + + return false; + } + } +}; + + + +typedef std::vector< std::shared_ptr< IOptionDetail > > OptionDetailArray; +typedef std::vector< std::shared_ptr< IOptionWithValue > > OptionWithValueArray; + +class Parser +{ +public: + + void AddOption( int32_t id, const std::string& name, const std::string& shortName, const std::string& description, uint32_t flags = 0, const std::string& valueDescription = std::string() ) + { + m_Details.push_back( std::make_shared< OptionDetail< std::string > >( id, name, shortName, description, flags, valueDescription ) ); + } + + template< typename T, typename Reader = DefaultReader< T > > + void AddOption( int32_t id, const std::string& name, const std::string& shortName, const std::string& description, uint32_t flags = 0, const std::string& valueDescription = std::string(), const Reader& reader = Reader() ) + { + m_Details.push_back( std::make_shared< OptionDetail< T, Reader > >( id, name, shortName, description, flags, valueDescription, reader ) ); + } + + size_t GetNumberOfOptionValues( void ) const + { + return m_OptionValues.size(); + } + + size_t GetNumberOfArguments( void ) const + { + return m_Arguments.size(); + } + + static const std::string& GetOptionName( const IOptionWithValue* value ) + { + return value->GetDetail()->GetName(); + } + + template< typename T > + static const T& GetValue( const std::shared_ptr< IOptionWithValue >& value ) + { + const auto* casted_value = dynamic_cast< const OptionWithValue< T >* >( value.get() ); + + return casted_value->GetValue(); + } + + const OptionDetailArray& GetOptionDetailArray( void ) const + { + return m_Details; + } + const OptionWithValueArray& GetOptionWithValueArray( void ) const + { + return m_OptionValues; + } + + bool Parse( int argc, char* argv[] ) + { + // clear & store + m_Arguments.clear(); + for ( int i = 1; i < argc; ++i ) + { + m_Arguments.push_back( argv[ i ] ); + } + + // parse + const size_t n_args = m_Arguments.size(); + + for ( size_t i = 0; i < n_args; ++i ) + { + const std::string& option_name = m_Arguments[ i ]; + + if ( !HasOptionPrefix( option_name ) ) + { + // error, argument is not option format + // ignore + m_Errors.push_back( "option syntax error : argument is not option format : " + option_name ); + continue; + } + + bool is_match = false; + bool is_valid_format = false; + std::string value; + + for ( const auto detail : m_Details ) + { + if ( !detail->IsSameName( option_name ) ) + { + continue; + } + + is_match = true; + + // found + if ( detail->HasFlag( IOptionDetail::kFlag_HasValue ) ) + { + const size_t next_i = i + 1; + + if ( detail->HasFlag( IOptionDetail::kFlag_RequireValue ) ) + { + if ( n_args <= next_i ) + { + // error, argument locator over + m_Errors.push_back( "option syntax error : not enough argument : " + option_name ); + break; + } + + const std::string& next_value = m_Arguments[ next_i ]; + + if ( HasOptionPrefix( next_value ) ) + { + // option have not value + m_Errors.push_back( "option syntax error : value not found : " + option_name ); + break; + } + + value = m_Arguments[ next_i ]; + i = next_i; + } + else + { + if ( next_i < n_args ) + { + const std::string& next_value = m_Arguments[ next_i ]; + + if ( !HasOptionPrefix( next_value ) ) + { + // option have not value + value = m_Arguments[ next_i ]; + i = next_i; + } + } + else + { + // not value, option only + } + } + } + + // store found detal & value + m_OptionValues.push_back( detail->CreateEvaluator( value ) ); + + is_valid_format = true; + break; + } + + if ( !is_match ) + { + // unknown option + m_Warnings.push_back( "unknown option : " + option_name ); + + // value check + const size_t next_i = i + 1; + + if ( next_i < n_args ) + { + const std::string& next_value = m_Arguments[ next_i ]; + + if ( !HasOptionPrefix( next_value ) ) + { + // discard unknown option value + i = next_i; + } + } + } + else if ( !is_valid_format ) + { + // illegal option format + m_Errors.push_back( "option syntax error : illegal option format : " + option_name ); + } + } + + std::set< const IOptionDetail* > used_options; + + for ( auto& option_value : m_OptionValues ) + { + const IOptionDetail* detal = option_value->GetDetail(); + const bool found = ( used_options.find( detal ) != used_options.end() ); + + if ( !found ) + { + // first use + used_options.insert( detal ); + } + + if ( found && detal->HasFlag( IOptionDetail::kFlag_Once ) ) + { + // duplicate use + m_Errors.push_back( "option syntax error : duplicate use : " + detal->GetName() ); + continue; + } + + std::string message; + + if ( !option_value->Evaluate( message ) ) + { + m_Errors.push_back( message ); + // bad value + } + } + + return ( m_Errors.size() == 0 ); + } + + void PrintUsage( const std::string& format ) const + { + std::cout << "Usage: " << format <GetName(); + if ( !detail->GetShortName().empty() ) + { + std::cout << ", " << detail->GetShortName(); + } + if ( !detail->GetValueDescription().empty() ) + { + std::cout << " <" << detail->GetValueDescription() << ">"; + } + std::cout << std::endl; + std::cout << " " << detail->GetDescription() << std::endl; + } + } + + void PrintErrors( void ) const + { + if ( !m_Errors.empty() ) + { + std::cout << "Error:" << std::endl; + for ( const auto& error : m_Errors ) + { + std::cout << error << std::endl; + } + } + } + + void PrintWarnings( void ) const + { + if ( !m_Warnings.empty() ) + { + std::cout << "Warning:" << std::endl; + for ( const auto& warning : m_Warnings ) + { + std::cout << warning << std::endl; + } + } + } + +private: + static bool HasOptionPrefix( const std::string& name ) + { + return ( ( name.compare( 0, 2, "--" ) == 0 ) || ( name.compare( 0, 1, "-" ) == 0 ) ); + } + + +private: + OptionDetailArray m_Details; + std::vector< std::string > m_Arguments; + std::vector< std::string > m_Errors; + std::vector< std::string > m_Warnings; + OptionWithValueArray m_OptionValues; +}; + + + + +}; + + + +#endif +/*================================================================================================*/ +/* EOF */ +/*================================================================================================*/ diff --git a/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/Common.cpp b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/Common.cpp new file mode 100644 index 0000000..d2bcc7f --- /dev/null +++ b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/Common.cpp @@ -0,0 +1,284 @@ +/* -*- mode: c++ ; coding: utf-8-unix -*- */ +/* last updated : 2015/03/25.01:38:16 */ + +/* + * Copyright (c) 2013-2015 yaruopooner [https://github.com/yaruopooner] + * + * This file is part of ac-clang. + * + * 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 . + */ + + +/*================================================================================================*/ +/* Comment */ +/*================================================================================================*/ + + +/*================================================================================================*/ +/* Include Files */ +/*================================================================================================*/ + +#include +#include + +#include "Common.hpp" + + +using namespace std; + + +FlagConverter ClangFlagConverters::sm_CXTranslationUnitFlags; +FlagConverter ClangFlagConverters::sm_CXCodeCompleteFlags; + + + +/*================================================================================================*/ +/* Global Class Method Definitions Section */ +/*================================================================================================*/ + + + +StreamReader::StreamReader( void ) + : + m_File( stdin ) +{ + ClearLine(); +} + +StreamReader::~StreamReader( void ) +{ +} + + +void StreamReader::ClearLine( void ) +{ + ::memset( m_Line, 0, kLineMax ); +} + + +void StreamReader::StepNextLine( void ) +{ + char crlf[ kLineMax ]; + ::fgets( crlf, kLineMax, m_File ); +} + +const char* StreamReader::ReadToken( const char* Format, bool bStepNextLine ) +{ + ClearLine(); + + const int32_t result = ::fscanf( m_File, Format, m_Line ); + (void) result; + + if ( bStepNextLine ) + { + StepNextLine(); + } + + return ( m_Line ); +} + +void StreamReader::Read( char* Buffer, size_t ReadSize ) +{ + const size_t stored_size = ::fread( Buffer, 1, ReadSize, m_File ); + + if ( (stored_size < ReadSize) || ::feof( m_File ) ) + { + // error + } +} + + +StreamWriter::StreamWriter( void ) + : + m_File( stdout ) +{ +} + +StreamWriter::~StreamWriter( void ) +{ +} + + +void StreamWriter::Write( const char* Format, ... ) +{ + va_list args; + va_start( args, Format ); + + ::vfprintf( m_File, Format, args ); + + va_end( args ); +} + +void StreamWriter::Flush( void ) +{ + ::fprintf( m_File, "$" ); + ::fflush( m_File ); +} + + + + +CFlagsBuffer::CFlagsBuffer( void ) + : + m_NumberOfCFlags( 0 ) + , m_CFlags( nullptr ) +{ +} + + +CFlagsBuffer::~CFlagsBuffer( void ) +{ + Deallocate(); +} + + +void CFlagsBuffer::Allocate( const std::vector< std::string >& Args ) +{ + Deallocate(); + + m_NumberOfCFlags = static_cast< int32_t >( Args.size() ); + m_CFlags = reinterpret_cast< char** >( ::calloc( sizeof( char* ), m_NumberOfCFlags ) ); + + for ( int32_t i = 0; i < m_NumberOfCFlags; ++i ) + { + m_CFlags[ i ] = reinterpret_cast< char* >( ::calloc( sizeof( char ), Args[ i ].length() + 1 ) ); + + ::strcpy( m_CFlags[ i ], Args[ i ].c_str() ); + } +} + +void CFlagsBuffer::Deallocate( void ) +{ + if ( !m_CFlags ) + { + return; + } + + for ( int32_t i = 0; i < m_NumberOfCFlags; ++i ) + { + ::free( m_CFlags[ i ] ); + } + ::free( m_CFlags ); + + m_CFlags = nullptr; + m_NumberOfCFlags = 0; +} + + +CSourceCodeBuffer::CSourceCodeBuffer( void ) + : + m_Size( 0 ) + , m_BufferCapacity( 0 ) + , m_Buffer( nullptr ) +{ +} + +CSourceCodeBuffer::~CSourceCodeBuffer( void ) +{ + Deallocate(); +} + + +void CSourceCodeBuffer::Allocate( int32_t Size ) +{ + m_Size = Size; + + if ( m_Size >= m_BufferCapacity ) + { + const int32_t extend_size = std::max( m_Size * 2, static_cast< int32_t >( kInitialSrcBufferSize ) ); + char* extend_buffer = reinterpret_cast< char* >( ::realloc( m_Buffer, extend_size ) ); + + if ( extend_buffer ) + { + m_BufferCapacity = extend_size; + m_Buffer = extend_buffer; + } + else + { + // error + } + } +} + +void CSourceCodeBuffer::Deallocate( void ) +{ + if ( m_Buffer ) + { + ::free( m_Buffer ); + m_Buffer = nullptr; + } + + m_Size = 0; +} + + + +ClangContext::ClangContext( bool excludeDeclarationsFromPCH ) + : + m_CxIndex( nullptr ) + , m_ExcludeDeclarationsFromPCH( excludeDeclarationsFromPCH ) + , m_TranslationUnitFlags( CXTranslationUnit_PrecompiledPreamble ) + , m_CompleteAtFlags( CXCodeComplete_IncludeMacros ) + , m_CompleteResultsLimit( 0 ) +{ + Allocate(); +} + +ClangContext::~ClangContext( void ) +{ + Deallocate(); +} + + +void ClangContext::Allocate( void ) +{ + m_CxIndex = clang_createIndex( m_ExcludeDeclarationsFromPCH, 0 ); +} + +void ClangContext::Deallocate( void ) +{ + if ( m_CxIndex ) + { + clang_disposeIndex( m_CxIndex ); + m_CxIndex = nullptr; + } +} + + + + +ClangFlagConverters::ClangFlagConverters( void ) +{ + sm_CXTranslationUnitFlags.Add( FLAG_DETAILS( CXTranslationUnit_DetailedPreprocessingRecord ) ); + sm_CXTranslationUnitFlags.Add( FLAG_DETAILS( CXTranslationUnit_Incomplete ) ); + sm_CXTranslationUnitFlags.Add( FLAG_DETAILS( CXTranslationUnit_PrecompiledPreamble ) ); + sm_CXTranslationUnitFlags.Add( FLAG_DETAILS( CXTranslationUnit_CacheCompletionResults ) ); + sm_CXTranslationUnitFlags.Add( FLAG_DETAILS( CXTranslationUnit_ForSerialization ) ); + sm_CXTranslationUnitFlags.Add( FLAG_DETAILS( CXTranslationUnit_CXXChainedPCH ) ); + sm_CXTranslationUnitFlags.Add( FLAG_DETAILS( CXTranslationUnit_SkipFunctionBodies ) ); + sm_CXTranslationUnitFlags.Add( FLAG_DETAILS( CXTranslationUnit_IncludeBriefCommentsInCodeCompletion ) ); + + sm_CXCodeCompleteFlags.Add( FLAG_DETAILS( CXCodeComplete_IncludeMacros ) ); + sm_CXCodeCompleteFlags.Add( FLAG_DETAILS( CXCodeComplete_IncludeCodePatterns ) ); + sm_CXCodeCompleteFlags.Add( FLAG_DETAILS( CXCodeComplete_IncludeBriefComments ) ); +} + + + + + +/*================================================================================================*/ +/* EOF */ +/*================================================================================================*/ diff --git a/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/Common.hpp b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/Common.hpp new file mode 100644 index 0000000..f212be0 --- /dev/null +++ b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/Common.hpp @@ -0,0 +1,371 @@ +/* -*- mode: c++ ; coding: utf-8-unix -*- */ +/* last updated : 2015/03/25.01:38:00 */ + +/* + * Copyright (c) 2013-2015 yaruopooner [https://github.com/yaruopooner] + * + * This file is part of ac-clang. + * + * 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 . + */ + + +#pragma once + +#ifndef __COMMON_HPP__ +#define __COMMON_HPP__ + + + + +/*================================================================================================*/ +/* Comment */ +/*================================================================================================*/ + + +/*================================================================================================*/ +/* Include Files */ +/*================================================================================================*/ + +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "clang-c/Index.h" + + + +/*================================================================================================*/ +/* Class */ +/*================================================================================================*/ + + + + +class StreamReader +{ +public: + StreamReader( void ); + virtual ~StreamReader( void ); + + template< typename T > + void ReadToken( const char* Format, T& Value, bool bStepNextLine = true ) + { + ClearLine(); + ::fscanf( m_File, Format, &Value ); + if ( bStepNextLine ) + { + StepNextLine(); + } + } + + const char* ReadToken( const char* Format, bool bStepNextLine = true ); + + void Read( char* Buffer, size_t ReadSize ); + +private: + void ClearLine( void ); + void StepNextLine( void ); + +private: + enum + { + kLineMax = 2048, + }; + + FILE* m_File; + char m_Line[ kLineMax ]; +}; + + +class StreamWriter +{ +public: + StreamWriter( void ); + virtual ~StreamWriter( void ); + + void Write( const char* Format, ... ); + void Flush( void ); + +private: + FILE* m_File; +}; + + + +class CFlagsBuffer +{ +public: + CFlagsBuffer( void ); + virtual ~CFlagsBuffer( void ); + + void Allocate( const std::vector< std::string >& CFlags ); + void Deallocate( void ); + + int32_t GetNumberOfCFlags( void ) const + { + return ( m_NumberOfCFlags ); + } + char** GetCFlags( void ) const + { + return ( m_CFlags ); + } + +private: + int32_t m_NumberOfCFlags; + char** m_CFlags; +}; + + +class CSourceCodeBuffer +{ +public: + CSourceCodeBuffer( void ); + virtual ~CSourceCodeBuffer( void ); + + void Allocate( int32_t Size ); + void Deallocate( void ); + + int32_t GetSize( void ) const + { + return ( m_Size ); + } + char* GetBuffer( void ) const + { + return ( m_Buffer ); + } + +private: + enum + { + kInitialSrcBufferSize = 4096, + }; + + int32_t m_Size; + int32_t m_BufferCapacity; + char* m_Buffer; +}; + + + +class ClangContext +{ +public: + ClangContext( bool excludeDeclarationsFromPCH = false ); + virtual ~ClangContext( void ); + + void Allocate( void ); + void Deallocate( void ); + + const CXIndex GetCXIndex( void ) const + { + return ( m_CxIndex ); + } + CXIndex GetCXIndex( void ) + { + return ( m_CxIndex ); + } + + void SetTranslationUnitFlags( uint32_t Flags ) + { + m_TranslationUnitFlags = Flags; + } + uint32_t GetTranslationUnitFlags( void ) const + { + return ( m_TranslationUnitFlags ); + } + + void SetCompleteAtFlags( uint32_t Flags ) + { + m_CompleteAtFlags = Flags; + } + uint32_t GetCompleteAtFlags( void ) const + { + return ( m_CompleteAtFlags ); + } + + void SetCompleteResultsLimit( uint32_t NumberOfLimit ) + { + m_CompleteResultsLimit = NumberOfLimit; + } + uint32_t GetCompleteResultsLimit( void ) const + { + return ( m_CompleteResultsLimit ); + } + + +private: + CXIndex m_CxIndex; + + bool m_ExcludeDeclarationsFromPCH; + uint32_t m_TranslationUnitFlags; + uint32_t m_CompleteAtFlags; + uint32_t m_CompleteResultsLimit; +}; + + + + +template< uint32_t Value > +struct BitField +{ + enum + { + kValue = Value, + kIndex = BitField< (Value >> 1) >::kIndex + 1, + }; +}; + +template<> +struct BitField< 0 > +{ + enum + { + kValue = 0, + kIndex = -1, + }; +}; + + + +class FlagConverter +{ +public: + typedef std::tuple< const char*, uint32_t > Details; + + + enum + { + kMaxValues = 32, + }; + + + FlagConverter( void ) : + m_MaxValue( 0 ) + { + } + virtual ~FlagConverter( void ) + { + } + + void Clear( void ) + { + m_MaxValue = 0; + } + + + void Add( const Details& Values ) + { + Add( std::get< 0 >( Values ), std::get< 1 >( Values ) ); + } + + void Add( const char* Name, uint32_t BitIndex ) + { + assert( Name ); + assert( BitIndex < kMaxValues ); + + m_FlagNames[ BitIndex ] = Name; + m_MaxValue = std::max( m_MaxValue, (BitIndex + 1) ); + } + + uint32_t GetValue( const std::string& Names ) const + { + return ( GetValue( Names.c_str() ) ); + } + + uint32_t GetValue( const char* Names ) const + { + if ( !Names ) + { + return ( 0 ); + } + + std::string names( Names ); + const char* delimit = "|"; + + if ( *(names.rbegin()) != *delimit ) + { + names += delimit; + } + + uint32_t value = 0; + size_t begin = 0; + size_t end = names.find_first_of( delimit ); + + while ( end != std::string::npos ) + { + const size_t length = end - begin; + const std::string name = names.substr( begin, length ); + + for ( size_t i = 0; i < m_MaxValue; ++i ) + { + if ( m_FlagNames[ i ] == name ) + { + value |= (1 << i); + break; + } + } + + begin = end + 1; + end = names.find_first_of( delimit, begin ); + } + + return ( value ); + } + +private: + std::string m_FlagNames[ kMaxValues ]; + uint32_t m_MaxValue; +}; + + +#define FLAG_DETAILS( _FLAG_NAME ) FlagConverter::Details( #_FLAG_NAME, BitField< _FLAG_NAME >::kIndex ) + + + + +class ClangFlagConverters +{ +public: + ClangFlagConverters( void ); + + + static const FlagConverter& GetCXTranslationUnitFlags( void ) + { + return ( sm_CXTranslationUnitFlags ); + } + static const FlagConverter& GetCXCodeCompleteFlags( void ) + { + return ( sm_CXCodeCompleteFlags ); + } + +private: + static FlagConverter sm_CXTranslationUnitFlags; + static FlagConverter sm_CXCodeCompleteFlags; +}; + + + + + +#endif // __COMMON_HPP__ +/*================================================================================================*/ +/* EOF */ +/*================================================================================================*/ diff --git a/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/changes.org b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/changes.org new file mode 100755 index 0000000..b144459 --- /dev/null +++ b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/changes.org @@ -0,0 +1,32 @@ +# -*- mode: org ; coding: utf-8-unix -*- +# last updated : 2015/09/05.04:13:32 + + +#+TITLE: clang-server Changes Log +#+AUTHOR: yaruopooner +#+EMAIL: [https://github.com/yaruopooner] +#+OPTIONS: author:nil timestamp:t |:t \n:t ^:nil + + +* 1.4.0 + - Clang-3.7.0 support + +* 1.3.0 + - Added new feature. Jump to inclusion file. return from jumped location. + - Bugfix + +* 1.2.1 + - Fix compile error in clang. + +* 1.2.0 + - Access specifier of completion candidate support. + +* 1.1.1 + - Clang-3.6.1 support + - Bugfix + +* 1.1.0 + - Clang-3.6.0 support + +* 1.0.0 + - Clang-3.5.0 support diff --git a/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/clang-c/BuildSystem.h b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/clang-c/BuildSystem.h new file mode 100644 index 0000000..8d323a4 --- /dev/null +++ b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/clang-c/BuildSystem.h @@ -0,0 +1,156 @@ +/*==-- clang-c/BuildSystem.h - Utilities for use by build systems -*- C -*-===*\ +|* *| +|* The LLVM Compiler Infrastructure *| +|* *| +|* This file is distributed under the University of Illinois Open Source *| +|* License. See LICENSE.TXT for details. *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This header provides various utilities for use by build systems. *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_CLANG_C_BUILDSYSTEM_H +#define LLVM_CLANG_C_BUILDSYSTEM_H + +#include "clang-c/Platform.h" +#include "clang-c/CXErrorCode.h" +#include "clang-c/CXString.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \defgroup BUILD_SYSTEM Build system utilities + * @{ + */ + +/** + * \brief Return the timestamp for use with Clang's + * \c -fbuild-session-timestamp= option. + */ +CINDEX_LINKAGE unsigned long long clang_getBuildSessionTimestamp(void); + +/** + * \brief Object encapsulating information about overlaying virtual + * file/directories over the real file system. + */ +typedef struct CXVirtualFileOverlayImpl *CXVirtualFileOverlay; + +/** + * \brief Create a \c CXVirtualFileOverlay object. + * Must be disposed with \c clang_VirtualFileOverlay_dispose(). + * + * \param options is reserved, always pass 0. + */ +CINDEX_LINKAGE CXVirtualFileOverlay +clang_VirtualFileOverlay_create(unsigned options); + +/** + * \brief Map an absolute virtual file path to an absolute real one. + * The virtual path must be canonicalized (not contain "."/".."). + * \returns 0 for success, non-zero to indicate an error. + */ +CINDEX_LINKAGE enum CXErrorCode +clang_VirtualFileOverlay_addFileMapping(CXVirtualFileOverlay, + const char *virtualPath, + const char *realPath); + +/** + * \brief Set the case sensitivity for the \c CXVirtualFileOverlay object. + * The \c CXVirtualFileOverlay object is case-sensitive by default, this + * option can be used to override the default. + * \returns 0 for success, non-zero to indicate an error. + */ +CINDEX_LINKAGE enum CXErrorCode +clang_VirtualFileOverlay_setCaseSensitivity(CXVirtualFileOverlay, + int caseSensitive); + +/** + * \brief Write out the \c CXVirtualFileOverlay object to a char buffer. + * + * \param options is reserved, always pass 0. + * \param out_buffer_ptr pointer to receive the buffer pointer, which should be + * disposed using \c clang_free(). + * \param out_buffer_size pointer to receive the buffer size. + * \returns 0 for success, non-zero to indicate an error. + */ +CINDEX_LINKAGE enum CXErrorCode +clang_VirtualFileOverlay_writeToBuffer(CXVirtualFileOverlay, unsigned options, + char **out_buffer_ptr, + unsigned *out_buffer_size); + +/** + * \brief free memory allocated by libclang, such as the buffer returned by + * \c CXVirtualFileOverlay() or \c clang_ModuleMapDescriptor_writeToBuffer(). + * + * \param buffer memory pointer to free. + */ +CINDEX_LINKAGE void clang_free(void *buffer); + +/** + * \brief Dispose a \c CXVirtualFileOverlay object. + */ +CINDEX_LINKAGE void clang_VirtualFileOverlay_dispose(CXVirtualFileOverlay); + +/** + * \brief Object encapsulating information about a module.map file. + */ +typedef struct CXModuleMapDescriptorImpl *CXModuleMapDescriptor; + +/** + * \brief Create a \c CXModuleMapDescriptor object. + * Must be disposed with \c clang_ModuleMapDescriptor_dispose(). + * + * \param options is reserved, always pass 0. + */ +CINDEX_LINKAGE CXModuleMapDescriptor +clang_ModuleMapDescriptor_create(unsigned options); + +/** + * \brief Sets the framework module name that the module.map describes. + * \returns 0 for success, non-zero to indicate an error. + */ +CINDEX_LINKAGE enum CXErrorCode +clang_ModuleMapDescriptor_setFrameworkModuleName(CXModuleMapDescriptor, + const char *name); + +/** + * \brief Sets the umbrealla header name that the module.map describes. + * \returns 0 for success, non-zero to indicate an error. + */ +CINDEX_LINKAGE enum CXErrorCode +clang_ModuleMapDescriptor_setUmbrellaHeader(CXModuleMapDescriptor, + const char *name); + +/** + * \brief Write out the \c CXModuleMapDescriptor object to a char buffer. + * + * \param options is reserved, always pass 0. + * \param out_buffer_ptr pointer to receive the buffer pointer, which should be + * disposed using \c clang_free(). + * \param out_buffer_size pointer to receive the buffer size. + * \returns 0 for success, non-zero to indicate an error. + */ +CINDEX_LINKAGE enum CXErrorCode +clang_ModuleMapDescriptor_writeToBuffer(CXModuleMapDescriptor, unsigned options, + char **out_buffer_ptr, + unsigned *out_buffer_size); + +/** + * \brief Dispose a \c CXModuleMapDescriptor object. + */ +CINDEX_LINKAGE void clang_ModuleMapDescriptor_dispose(CXModuleMapDescriptor); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* CLANG_C_BUILD_SYSTEM_H */ + diff --git a/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/clang-c/CXCompilationDatabase.h b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/clang-c/CXCompilationDatabase.h new file mode 100644 index 0000000..068a677 --- /dev/null +++ b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/clang-c/CXCompilationDatabase.h @@ -0,0 +1,170 @@ +/*===-- clang-c/CXCompilationDatabase.h - Compilation database ---*- C -*-===*\ +|* *| +|* The LLVM Compiler Infrastructure *| +|* *| +|* This file is distributed under the University of Illinois Open Source *| +|* License. See LICENSE.TXT for details. *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This header provides a public inferface to use CompilationDatabase without *| +|* the full Clang C++ API. *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_CLANG_C_CXCOMPILATIONDATABASE_H +#define LLVM_CLANG_C_CXCOMPILATIONDATABASE_H + +#include "clang-c/Platform.h" +#include "clang-c/CXString.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** \defgroup COMPILATIONDB CompilationDatabase functions + * \ingroup CINDEX + * + * @{ + */ + +/** + * A compilation database holds all information used to compile files in a + * project. For each file in the database, it can be queried for the working + * directory or the command line used for the compiler invocation. + * + * Must be freed by \c clang_CompilationDatabase_dispose + */ +typedef void * CXCompilationDatabase; + +/** + * \brief Contains the results of a search in the compilation database + * + * When searching for the compile command for a file, the compilation db can + * return several commands, as the file may have been compiled with + * different options in different places of the project. This choice of compile + * commands is wrapped in this opaque data structure. It must be freed by + * \c clang_CompileCommands_dispose. + */ +typedef void * CXCompileCommands; + +/** + * \brief Represents the command line invocation to compile a specific file. + */ +typedef void * CXCompileCommand; + +/** + * \brief Error codes for Compilation Database + */ +typedef enum { + /* + * \brief No error occurred + */ + CXCompilationDatabase_NoError = 0, + + /* + * \brief Database can not be loaded + */ + CXCompilationDatabase_CanNotLoadDatabase = 1 + +} CXCompilationDatabase_Error; + +/** + * \brief Creates a compilation database from the database found in directory + * buildDir. For example, CMake can output a compile_commands.json which can + * be used to build the database. + * + * It must be freed by \c clang_CompilationDatabase_dispose. + */ +CINDEX_LINKAGE CXCompilationDatabase +clang_CompilationDatabase_fromDirectory(const char *BuildDir, + CXCompilationDatabase_Error *ErrorCode); + +/** + * \brief Free the given compilation database + */ +CINDEX_LINKAGE void +clang_CompilationDatabase_dispose(CXCompilationDatabase); + +/** + * \brief Find the compile commands used for a file. The compile commands + * must be freed by \c clang_CompileCommands_dispose. + */ +CINDEX_LINKAGE CXCompileCommands +clang_CompilationDatabase_getCompileCommands(CXCompilationDatabase, + const char *CompleteFileName); + +/** + * \brief Get all the compile commands in the given compilation database. + */ +CINDEX_LINKAGE CXCompileCommands +clang_CompilationDatabase_getAllCompileCommands(CXCompilationDatabase); + +/** + * \brief Free the given CompileCommands + */ +CINDEX_LINKAGE void clang_CompileCommands_dispose(CXCompileCommands); + +/** + * \brief Get the number of CompileCommand we have for a file + */ +CINDEX_LINKAGE unsigned +clang_CompileCommands_getSize(CXCompileCommands); + +/** + * \brief Get the I'th CompileCommand for a file + * + * Note : 0 <= i < clang_CompileCommands_getSize(CXCompileCommands) + */ +CINDEX_LINKAGE CXCompileCommand +clang_CompileCommands_getCommand(CXCompileCommands, unsigned I); + +/** + * \brief Get the working directory where the CompileCommand was executed from + */ +CINDEX_LINKAGE CXString +clang_CompileCommand_getDirectory(CXCompileCommand); + +/** + * \brief Get the number of arguments in the compiler invocation. + * + */ +CINDEX_LINKAGE unsigned +clang_CompileCommand_getNumArgs(CXCompileCommand); + +/** + * \brief Get the I'th argument value in the compiler invocations + * + * Invariant : + * - argument 0 is the compiler executable + */ +CINDEX_LINKAGE CXString +clang_CompileCommand_getArg(CXCompileCommand, unsigned I); + +/** + * \brief Get the number of source mappings for the compiler invocation. + */ +CINDEX_LINKAGE unsigned +clang_CompileCommand_getNumMappedSources(CXCompileCommand); + +/** + * \brief Get the I'th mapped source path for the compiler invocation. + */ +CINDEX_LINKAGE CXString +clang_CompileCommand_getMappedSourcePath(CXCompileCommand, unsigned I); + +/** + * \brief Get the I'th mapped source content for the compiler invocation. + */ +CINDEX_LINKAGE CXString +clang_CompileCommand_getMappedSourceContent(CXCompileCommand, unsigned I); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif +#endif + diff --git a/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/clang-c/CXErrorCode.h b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/clang-c/CXErrorCode.h new file mode 100644 index 0000000..aff73b7 --- /dev/null +++ b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/clang-c/CXErrorCode.h @@ -0,0 +1,64 @@ +/*===-- clang-c/CXErrorCode.h - C Index Error Codes --------------*- C -*-===*\ +|* *| +|* The LLVM Compiler Infrastructure *| +|* *| +|* This file is distributed under the University of Illinois Open Source *| +|* License. See LICENSE.TXT for details. *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This header provides the CXErrorCode enumerators. *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_CLANG_C_CXERRORCODE_H +#define LLVM_CLANG_C_CXERRORCODE_H + +#include "clang-c/Platform.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Error codes returned by libclang routines. + * + * Zero (\c CXError_Success) is the only error code indicating success. Other + * error codes, including not yet assigned non-zero values, indicate errors. + */ +enum CXErrorCode { + /** + * \brief No error. + */ + CXError_Success = 0, + + /** + * \brief A generic error code, no further details are available. + * + * Errors of this kind can get their own specific error codes in future + * libclang versions. + */ + CXError_Failure = 1, + + /** + * \brief libclang crashed while performing the requested operation. + */ + CXError_Crashed = 2, + + /** + * \brief The function detected that the arguments violate the function + * contract. + */ + CXError_InvalidArguments = 3, + + /** + * \brief An AST deserialization error has occurred. + */ + CXError_ASTReadError = 4 +}; + +#ifdef __cplusplus +} +#endif +#endif + diff --git a/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/clang-c/CXString.h b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/clang-c/CXString.h new file mode 100644 index 0000000..a649cdf --- /dev/null +++ b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/clang-c/CXString.h @@ -0,0 +1,61 @@ +/*===-- clang-c/CXString.h - C Index strings --------------------*- C -*-===*\ +|* *| +|* The LLVM Compiler Infrastructure *| +|* *| +|* This file is distributed under the University of Illinois Open Source *| +|* License. See LICENSE.TXT for details. *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This header provides the interface to C Index strings. *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_CLANG_C_CXSTRING_H +#define LLVM_CLANG_C_CXSTRING_H + +#include "clang-c/Platform.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \defgroup CINDEX_STRING String manipulation routines + * \ingroup CINDEX + * + * @{ + */ + +/** + * \brief A character string. + * + * The \c CXString type is used to return strings from the interface when + * the ownership of that string might differ from one call to the next. + * Use \c clang_getCString() to retrieve the string data and, once finished + * with the string data, call \c clang_disposeString() to free the string. + */ +typedef struct { + const void *data; + unsigned private_flags; +} CXString; + +/** + * \brief Retrieve the character data associated with the given string. + */ +CINDEX_LINKAGE const char *clang_getCString(CXString string); + +/** + * \brief Free the given string. + */ +CINDEX_LINKAGE void clang_disposeString(CXString string); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif +#endif + diff --git a/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/clang-c/Documentation.h b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/clang-c/Documentation.h new file mode 100644 index 0000000..89373b1 --- /dev/null +++ b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/clang-c/Documentation.h @@ -0,0 +1,554 @@ +/*==-- clang-c/Documentation.h - Utilities for comment processing -*- C -*-===*\ +|* *| +|* The LLVM Compiler Infrastructure *| +|* *| +|* This file is distributed under the University of Illinois Open Source *| +|* License. See LICENSE.TXT for details. *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This header provides a supplementary interface for inspecting *| +|* documentation comments. *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_CLANG_C_DOCUMENTATION_H +#define LLVM_CLANG_C_DOCUMENTATION_H + +#include "clang-c/Index.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \defgroup CINDEX_COMMENT Comment introspection + * + * The routines in this group provide access to information in documentation + * comments. These facilities are distinct from the core and may be subject to + * their own schedule of stability and deprecation. + * + * @{ + */ + +/** + * \brief A parsed comment. + */ +typedef struct { + const void *ASTNode; + CXTranslationUnit TranslationUnit; +} CXComment; + +/** + * \brief Given a cursor that represents a documentable entity (e.g., + * declaration), return the associated parsed comment as a + * \c CXComment_FullComment AST node. + */ +CINDEX_LINKAGE CXComment clang_Cursor_getParsedComment(CXCursor C); + +/** + * \brief Describes the type of the comment AST node (\c CXComment). A comment + * node can be considered block content (e. g., paragraph), inline content + * (plain text) or neither (the root AST node). + */ +enum CXCommentKind { + /** + * \brief Null comment. No AST node is constructed at the requested location + * because there is no text or a syntax error. + */ + CXComment_Null = 0, + + /** + * \brief Plain text. Inline content. + */ + CXComment_Text = 1, + + /** + * \brief A command with word-like arguments that is considered inline content. + * + * For example: \\c command. + */ + CXComment_InlineCommand = 2, + + /** + * \brief HTML start tag with attributes (name-value pairs). Considered + * inline content. + * + * For example: + * \verbatim + *

+ * \endverbatim + */ + CXComment_HTMLStartTag = 3, + + /** + * \brief HTML end tag. Considered inline content. + * + * For example: + * \verbatim + * + * \endverbatim + */ + CXComment_HTMLEndTag = 4, + + /** + * \brief A paragraph, contains inline comment. The paragraph itself is + * block content. + */ + CXComment_Paragraph = 5, + + /** + * \brief A command that has zero or more word-like arguments (number of + * word-like arguments depends on command name) and a paragraph as an + * argument. Block command is block content. + * + * Paragraph argument is also a child of the block command. + * + * For example: \\brief has 0 word-like arguments and a paragraph argument. + * + * AST nodes of special kinds that parser knows about (e. g., \\param + * command) have their own node kinds. + */ + CXComment_BlockCommand = 6, + + /** + * \brief A \\param or \\arg command that describes the function parameter + * (name, passing direction, description). + * + * For example: \\param [in] ParamName description. + */ + CXComment_ParamCommand = 7, + + /** + * \brief A \\tparam command that describes a template parameter (name and + * description). + * + * For example: \\tparam T description. + */ + CXComment_TParamCommand = 8, + + /** + * \brief A verbatim block command (e. g., preformatted code). Verbatim + * block has an opening and a closing command and contains multiple lines of + * text (\c CXComment_VerbatimBlockLine child nodes). + * + * For example: + * \\verbatim + * aaa + * \\endverbatim + */ + CXComment_VerbatimBlockCommand = 9, + + /** + * \brief A line of text that is contained within a + * CXComment_VerbatimBlockCommand node. + */ + CXComment_VerbatimBlockLine = 10, + + /** + * \brief A verbatim line command. Verbatim line has an opening command, + * a single line of text (up to the newline after the opening command) and + * has no closing command. + */ + CXComment_VerbatimLine = 11, + + /** + * \brief A full comment attached to a declaration, contains block content. + */ + CXComment_FullComment = 12 +}; + +/** + * \brief The most appropriate rendering mode for an inline command, chosen on + * command semantics in Doxygen. + */ +enum CXCommentInlineCommandRenderKind { + /** + * \brief Command argument should be rendered in a normal font. + */ + CXCommentInlineCommandRenderKind_Normal, + + /** + * \brief Command argument should be rendered in a bold font. + */ + CXCommentInlineCommandRenderKind_Bold, + + /** + * \brief Command argument should be rendered in a monospaced font. + */ + CXCommentInlineCommandRenderKind_Monospaced, + + /** + * \brief Command argument should be rendered emphasized (typically italic + * font). + */ + CXCommentInlineCommandRenderKind_Emphasized +}; + +/** + * \brief Describes parameter passing direction for \\param or \\arg command. + */ +enum CXCommentParamPassDirection { + /** + * \brief The parameter is an input parameter. + */ + CXCommentParamPassDirection_In, + + /** + * \brief The parameter is an output parameter. + */ + CXCommentParamPassDirection_Out, + + /** + * \brief The parameter is an input and output parameter. + */ + CXCommentParamPassDirection_InOut +}; + +/** + * \param Comment AST node of any kind. + * + * \returns the type of the AST node. + */ +CINDEX_LINKAGE enum CXCommentKind clang_Comment_getKind(CXComment Comment); + +/** + * \param Comment AST node of any kind. + * + * \returns number of children of the AST node. + */ +CINDEX_LINKAGE unsigned clang_Comment_getNumChildren(CXComment Comment); + +/** + * \param Comment AST node of any kind. + * + * \param ChildIdx child index (zero-based). + * + * \returns the specified child of the AST node. + */ +CINDEX_LINKAGE +CXComment clang_Comment_getChild(CXComment Comment, unsigned ChildIdx); + +/** + * \brief A \c CXComment_Paragraph node is considered whitespace if it contains + * only \c CXComment_Text nodes that are empty or whitespace. + * + * Other AST nodes (except \c CXComment_Paragraph and \c CXComment_Text) are + * never considered whitespace. + * + * \returns non-zero if \c Comment is whitespace. + */ +CINDEX_LINKAGE unsigned clang_Comment_isWhitespace(CXComment Comment); + +/** + * \returns non-zero if \c Comment is inline content and has a newline + * immediately following it in the comment text. Newlines between paragraphs + * do not count. + */ +CINDEX_LINKAGE +unsigned clang_InlineContentComment_hasTrailingNewline(CXComment Comment); + +/** + * \param Comment a \c CXComment_Text AST node. + * + * \returns text contained in the AST node. + */ +CINDEX_LINKAGE CXString clang_TextComment_getText(CXComment Comment); + +/** + * \param Comment a \c CXComment_InlineCommand AST node. + * + * \returns name of the inline command. + */ +CINDEX_LINKAGE +CXString clang_InlineCommandComment_getCommandName(CXComment Comment); + +/** + * \param Comment a \c CXComment_InlineCommand AST node. + * + * \returns the most appropriate rendering mode, chosen on command + * semantics in Doxygen. + */ +CINDEX_LINKAGE enum CXCommentInlineCommandRenderKind +clang_InlineCommandComment_getRenderKind(CXComment Comment); + +/** + * \param Comment a \c CXComment_InlineCommand AST node. + * + * \returns number of command arguments. + */ +CINDEX_LINKAGE +unsigned clang_InlineCommandComment_getNumArgs(CXComment Comment); + +/** + * \param Comment a \c CXComment_InlineCommand AST node. + * + * \param ArgIdx argument index (zero-based). + * + * \returns text of the specified argument. + */ +CINDEX_LINKAGE +CXString clang_InlineCommandComment_getArgText(CXComment Comment, + unsigned ArgIdx); + +/** + * \param Comment a \c CXComment_HTMLStartTag or \c CXComment_HTMLEndTag AST + * node. + * + * \returns HTML tag name. + */ +CINDEX_LINKAGE CXString clang_HTMLTagComment_getTagName(CXComment Comment); + +/** + * \param Comment a \c CXComment_HTMLStartTag AST node. + * + * \returns non-zero if tag is self-closing (for example, <br />). + */ +CINDEX_LINKAGE +unsigned clang_HTMLStartTagComment_isSelfClosing(CXComment Comment); + +/** + * \param Comment a \c CXComment_HTMLStartTag AST node. + * + * \returns number of attributes (name-value pairs) attached to the start tag. + */ +CINDEX_LINKAGE unsigned clang_HTMLStartTag_getNumAttrs(CXComment Comment); + +/** + * \param Comment a \c CXComment_HTMLStartTag AST node. + * + * \param AttrIdx attribute index (zero-based). + * + * \returns name of the specified attribute. + */ +CINDEX_LINKAGE +CXString clang_HTMLStartTag_getAttrName(CXComment Comment, unsigned AttrIdx); + +/** + * \param Comment a \c CXComment_HTMLStartTag AST node. + * + * \param AttrIdx attribute index (zero-based). + * + * \returns value of the specified attribute. + */ +CINDEX_LINKAGE +CXString clang_HTMLStartTag_getAttrValue(CXComment Comment, unsigned AttrIdx); + +/** + * \param Comment a \c CXComment_BlockCommand AST node. + * + * \returns name of the block command. + */ +CINDEX_LINKAGE +CXString clang_BlockCommandComment_getCommandName(CXComment Comment); + +/** + * \param Comment a \c CXComment_BlockCommand AST node. + * + * \returns number of word-like arguments. + */ +CINDEX_LINKAGE +unsigned clang_BlockCommandComment_getNumArgs(CXComment Comment); + +/** + * \param Comment a \c CXComment_BlockCommand AST node. + * + * \param ArgIdx argument index (zero-based). + * + * \returns text of the specified word-like argument. + */ +CINDEX_LINKAGE +CXString clang_BlockCommandComment_getArgText(CXComment Comment, + unsigned ArgIdx); + +/** + * \param Comment a \c CXComment_BlockCommand or + * \c CXComment_VerbatimBlockCommand AST node. + * + * \returns paragraph argument of the block command. + */ +CINDEX_LINKAGE +CXComment clang_BlockCommandComment_getParagraph(CXComment Comment); + +/** + * \param Comment a \c CXComment_ParamCommand AST node. + * + * \returns parameter name. + */ +CINDEX_LINKAGE +CXString clang_ParamCommandComment_getParamName(CXComment Comment); + +/** + * \param Comment a \c CXComment_ParamCommand AST node. + * + * \returns non-zero if the parameter that this AST node represents was found + * in the function prototype and \c clang_ParamCommandComment_getParamIndex + * function will return a meaningful value. + */ +CINDEX_LINKAGE +unsigned clang_ParamCommandComment_isParamIndexValid(CXComment Comment); + +/** + * \param Comment a \c CXComment_ParamCommand AST node. + * + * \returns zero-based parameter index in function prototype. + */ +CINDEX_LINKAGE +unsigned clang_ParamCommandComment_getParamIndex(CXComment Comment); + +/** + * \param Comment a \c CXComment_ParamCommand AST node. + * + * \returns non-zero if parameter passing direction was specified explicitly in + * the comment. + */ +CINDEX_LINKAGE +unsigned clang_ParamCommandComment_isDirectionExplicit(CXComment Comment); + +/** + * \param Comment a \c CXComment_ParamCommand AST node. + * + * \returns parameter passing direction. + */ +CINDEX_LINKAGE +enum CXCommentParamPassDirection clang_ParamCommandComment_getDirection( + CXComment Comment); + +/** + * \param Comment a \c CXComment_TParamCommand AST node. + * + * \returns template parameter name. + */ +CINDEX_LINKAGE +CXString clang_TParamCommandComment_getParamName(CXComment Comment); + +/** + * \param Comment a \c CXComment_TParamCommand AST node. + * + * \returns non-zero if the parameter that this AST node represents was found + * in the template parameter list and + * \c clang_TParamCommandComment_getDepth and + * \c clang_TParamCommandComment_getIndex functions will return a meaningful + * value. + */ +CINDEX_LINKAGE +unsigned clang_TParamCommandComment_isParamPositionValid(CXComment Comment); + +/** + * \param Comment a \c CXComment_TParamCommand AST node. + * + * \returns zero-based nesting depth of this parameter in the template parameter list. + * + * For example, + * \verbatim + * template class TT> + * void test(TT aaa); + * \endverbatim + * for C and TT nesting depth is 0, + * for T nesting depth is 1. + */ +CINDEX_LINKAGE +unsigned clang_TParamCommandComment_getDepth(CXComment Comment); + +/** + * \param Comment a \c CXComment_TParamCommand AST node. + * + * \returns zero-based parameter index in the template parameter list at a + * given nesting depth. + * + * For example, + * \verbatim + * template class TT> + * void test(TT aaa); + * \endverbatim + * for C and TT nesting depth is 0, so we can ask for index at depth 0: + * at depth 0 C's index is 0, TT's index is 1. + * + * For T nesting depth is 1, so we can ask for index at depth 0 and 1: + * at depth 0 T's index is 1 (same as TT's), + * at depth 1 T's index is 0. + */ +CINDEX_LINKAGE +unsigned clang_TParamCommandComment_getIndex(CXComment Comment, unsigned Depth); + +/** + * \param Comment a \c CXComment_VerbatimBlockLine AST node. + * + * \returns text contained in the AST node. + */ +CINDEX_LINKAGE +CXString clang_VerbatimBlockLineComment_getText(CXComment Comment); + +/** + * \param Comment a \c CXComment_VerbatimLine AST node. + * + * \returns text contained in the AST node. + */ +CINDEX_LINKAGE CXString clang_VerbatimLineComment_getText(CXComment Comment); + +/** + * \brief Convert an HTML tag AST node to string. + * + * \param Comment a \c CXComment_HTMLStartTag or \c CXComment_HTMLEndTag AST + * node. + * + * \returns string containing an HTML tag. + */ +CINDEX_LINKAGE CXString clang_HTMLTagComment_getAsString(CXComment Comment); + +/** + * \brief Convert a given full parsed comment to an HTML fragment. + * + * Specific details of HTML layout are subject to change. Don't try to parse + * this HTML back into an AST, use other APIs instead. + * + * Currently the following CSS classes are used: + * \li "para-brief" for \\brief paragraph and equivalent commands; + * \li "para-returns" for \\returns paragraph and equivalent commands; + * \li "word-returns" for the "Returns" word in \\returns paragraph. + * + * Function argument documentation is rendered as a \ list with arguments + * sorted in function prototype order. CSS classes used: + * \li "param-name-index-NUMBER" for parameter name (\); + * \li "param-descr-index-NUMBER" for parameter description (\); + * \li "param-name-index-invalid" and "param-descr-index-invalid" are used if + * parameter index is invalid. + * + * Template parameter documentation is rendered as a \ list with + * parameters sorted in template parameter list order. CSS classes used: + * \li "tparam-name-index-NUMBER" for parameter name (\); + * \li "tparam-descr-index-NUMBER" for parameter description (\); + * \li "tparam-name-index-other" and "tparam-descr-index-other" are used for + * names inside template template parameters; + * \li "tparam-name-index-invalid" and "tparam-descr-index-invalid" are used if + * parameter position is invalid. + * + * \param Comment a \c CXComment_FullComment AST node. + * + * \returns string containing an HTML fragment. + */ +CINDEX_LINKAGE CXString clang_FullComment_getAsHTML(CXComment Comment); + +/** + * \brief Convert a given full parsed comment to an XML document. + * + * A Relax NG schema for the XML can be found in comment-xml-schema.rng file + * inside clang source tree. + * + * \param Comment a \c CXComment_FullComment AST node. + * + * \returns string containing an XML document. + */ +CINDEX_LINKAGE CXString clang_FullComment_getAsXML(CXComment Comment); + +/** + * @} + */ + + +#ifdef __cplusplus +} +#endif + +#endif /* CLANG_C_DOCUMENTATION_H */ + diff --git a/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/clang-c/Index.h b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/clang-c/Index.h new file mode 100644 index 0000000..fad9cfa --- /dev/null +++ b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/clang-c/Index.h @@ -0,0 +1,5755 @@ +/*===-- clang-c/Index.h - Indexing Public C Interface -------------*- C -*-===*\ +|* *| +|* The LLVM Compiler Infrastructure *| +|* *| +|* This file is distributed under the University of Illinois Open Source *| +|* License. See LICENSE.TXT for details. *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This header provides a public inferface to a Clang library for extracting *| +|* high-level symbol information from source files without exposing the full *| +|* Clang C++ API. *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_CLANG_C_INDEX_H +#define LLVM_CLANG_C_INDEX_H + +#include + +#include "clang-c/Platform.h" +#include "clang-c/CXErrorCode.h" +#include "clang-c/CXString.h" +#include "clang-c/BuildSystem.h" + +/** + * \brief The version constants for the libclang API. + * CINDEX_VERSION_MINOR should increase when there are API additions. + * CINDEX_VERSION_MAJOR is intended for "major" source/ABI breaking changes. + * + * The policy about the libclang API was always to keep it source and ABI + * compatible, thus CINDEX_VERSION_MAJOR is expected to remain stable. + */ +#define CINDEX_VERSION_MAJOR 0 +#define CINDEX_VERSION_MINOR 30 + +#define CINDEX_VERSION_ENCODE(major, minor) ( \ + ((major) * 10000) \ + + ((minor) * 1)) + +#define CINDEX_VERSION CINDEX_VERSION_ENCODE( \ + CINDEX_VERSION_MAJOR, \ + CINDEX_VERSION_MINOR ) + +#define CINDEX_VERSION_STRINGIZE_(major, minor) \ + #major"."#minor +#define CINDEX_VERSION_STRINGIZE(major, minor) \ + CINDEX_VERSION_STRINGIZE_(major, minor) + +#define CINDEX_VERSION_STRING CINDEX_VERSION_STRINGIZE( \ + CINDEX_VERSION_MAJOR, \ + CINDEX_VERSION_MINOR) + +#ifdef __cplusplus +extern "C" { +#endif + +/** \defgroup CINDEX libclang: C Interface to Clang + * + * The C Interface to Clang provides a relatively small API that exposes + * facilities for parsing source code into an abstract syntax tree (AST), + * loading already-parsed ASTs, traversing the AST, associating + * physical source locations with elements within the AST, and other + * facilities that support Clang-based development tools. + * + * This C interface to Clang will never provide all of the information + * representation stored in Clang's C++ AST, nor should it: the intent is to + * maintain an API that is relatively stable from one release to the next, + * providing only the basic functionality needed to support development tools. + * + * To avoid namespace pollution, data types are prefixed with "CX" and + * functions are prefixed with "clang_". + * + * @{ + */ + +/** + * \brief An "index" that consists of a set of translation units that would + * typically be linked together into an executable or library. + */ +typedef void *CXIndex; + +/** + * \brief A single translation unit, which resides in an index. + */ +typedef struct CXTranslationUnitImpl *CXTranslationUnit; + +/** + * \brief Opaque pointer representing client data that will be passed through + * to various callbacks and visitors. + */ +typedef void *CXClientData; + +/** + * \brief Provides the contents of a file that has not yet been saved to disk. + * + * Each CXUnsavedFile instance provides the name of a file on the + * system along with the current contents of that file that have not + * yet been saved to disk. + */ +struct CXUnsavedFile { + /** + * \brief The file whose contents have not yet been saved. + * + * This file must already exist in the file system. + */ + const char *Filename; + + /** + * \brief A buffer containing the unsaved contents of this file. + */ + const char *Contents; + + /** + * \brief The length of the unsaved contents of this buffer. + */ + unsigned long Length; +}; + +/** + * \brief Describes the availability of a particular entity, which indicates + * whether the use of this entity will result in a warning or error due to + * it being deprecated or unavailable. + */ +enum CXAvailabilityKind { + /** + * \brief The entity is available. + */ + CXAvailability_Available, + /** + * \brief The entity is available, but has been deprecated (and its use is + * not recommended). + */ + CXAvailability_Deprecated, + /** + * \brief The entity is not available; any use of it will be an error. + */ + CXAvailability_NotAvailable, + /** + * \brief The entity is available, but not accessible; any use of it will be + * an error. + */ + CXAvailability_NotAccessible +}; + +/** + * \brief Describes a version number of the form major.minor.subminor. + */ +typedef struct CXVersion { + /** + * \brief The major version number, e.g., the '10' in '10.7.3'. A negative + * value indicates that there is no version number at all. + */ + int Major; + /** + * \brief The minor version number, e.g., the '7' in '10.7.3'. This value + * will be negative if no minor version number was provided, e.g., for + * version '10'. + */ + int Minor; + /** + * \brief The subminor version number, e.g., the '3' in '10.7.3'. This value + * will be negative if no minor or subminor version number was provided, + * e.g., in version '10' or '10.7'. + */ + int Subminor; +} CXVersion; + +/** + * \brief Provides a shared context for creating translation units. + * + * It provides two options: + * + * - excludeDeclarationsFromPCH: When non-zero, allows enumeration of "local" + * declarations (when loading any new translation units). A "local" declaration + * is one that belongs in the translation unit itself and not in a precompiled + * header that was used by the translation unit. If zero, all declarations + * will be enumerated. + * + * Here is an example: + * + * \code + * // excludeDeclsFromPCH = 1, displayDiagnostics=1 + * Idx = clang_createIndex(1, 1); + * + * // IndexTest.pch was produced with the following command: + * // "clang -x c IndexTest.h -emit-ast -o IndexTest.pch" + * TU = clang_createTranslationUnit(Idx, "IndexTest.pch"); + * + * // This will load all the symbols from 'IndexTest.pch' + * clang_visitChildren(clang_getTranslationUnitCursor(TU), + * TranslationUnitVisitor, 0); + * clang_disposeTranslationUnit(TU); + * + * // This will load all the symbols from 'IndexTest.c', excluding symbols + * // from 'IndexTest.pch'. + * char *args[] = { "-Xclang", "-include-pch=IndexTest.pch" }; + * TU = clang_createTranslationUnitFromSourceFile(Idx, "IndexTest.c", 2, args, + * 0, 0); + * clang_visitChildren(clang_getTranslationUnitCursor(TU), + * TranslationUnitVisitor, 0); + * clang_disposeTranslationUnit(TU); + * \endcode + * + * This process of creating the 'pch', loading it separately, and using it (via + * -include-pch) allows 'excludeDeclsFromPCH' to remove redundant callbacks + * (which gives the indexer the same performance benefit as the compiler). + */ +CINDEX_LINKAGE CXIndex clang_createIndex(int excludeDeclarationsFromPCH, + int displayDiagnostics); + +/** + * \brief Destroy the given index. + * + * The index must not be destroyed until all of the translation units created + * within that index have been destroyed. + */ +CINDEX_LINKAGE void clang_disposeIndex(CXIndex index); + +typedef enum { + /** + * \brief Used to indicate that no special CXIndex options are needed. + */ + CXGlobalOpt_None = 0x0, + + /** + * \brief Used to indicate that threads that libclang creates for indexing + * purposes should use background priority. + * + * Affects #clang_indexSourceFile, #clang_indexTranslationUnit, + * #clang_parseTranslationUnit, #clang_saveTranslationUnit. + */ + CXGlobalOpt_ThreadBackgroundPriorityForIndexing = 0x1, + + /** + * \brief Used to indicate that threads that libclang creates for editing + * purposes should use background priority. + * + * Affects #clang_reparseTranslationUnit, #clang_codeCompleteAt, + * #clang_annotateTokens + */ + CXGlobalOpt_ThreadBackgroundPriorityForEditing = 0x2, + + /** + * \brief Used to indicate that all threads that libclang creates should use + * background priority. + */ + CXGlobalOpt_ThreadBackgroundPriorityForAll = + CXGlobalOpt_ThreadBackgroundPriorityForIndexing | + CXGlobalOpt_ThreadBackgroundPriorityForEditing + +} CXGlobalOptFlags; + +/** + * \brief Sets general options associated with a CXIndex. + * + * For example: + * \code + * CXIndex idx = ...; + * clang_CXIndex_setGlobalOptions(idx, + * clang_CXIndex_getGlobalOptions(idx) | + * CXGlobalOpt_ThreadBackgroundPriorityForIndexing); + * \endcode + * + * \param options A bitmask of options, a bitwise OR of CXGlobalOpt_XXX flags. + */ +CINDEX_LINKAGE void clang_CXIndex_setGlobalOptions(CXIndex, unsigned options); + +/** + * \brief Gets the general options associated with a CXIndex. + * + * \returns A bitmask of options, a bitwise OR of CXGlobalOpt_XXX flags that + * are associated with the given CXIndex object. + */ +CINDEX_LINKAGE unsigned clang_CXIndex_getGlobalOptions(CXIndex); + +/** + * \defgroup CINDEX_FILES File manipulation routines + * + * @{ + */ + +/** + * \brief A particular source file that is part of a translation unit. + */ +typedef void *CXFile; + + +/** + * \brief Retrieve the complete file and path name of the given file. + */ +CINDEX_LINKAGE CXString clang_getFileName(CXFile SFile); + +/** + * \brief Retrieve the last modification time of the given file. + */ +CINDEX_LINKAGE time_t clang_getFileTime(CXFile SFile); + +/** + * \brief Uniquely identifies a CXFile, that refers to the same underlying file, + * across an indexing session. + */ +typedef struct { + unsigned long long data[3]; +} CXFileUniqueID; + +/** + * \brief Retrieve the unique ID for the given \c file. + * + * \param file the file to get the ID for. + * \param outID stores the returned CXFileUniqueID. + * \returns If there was a failure getting the unique ID, returns non-zero, + * otherwise returns 0. +*/ +CINDEX_LINKAGE int clang_getFileUniqueID(CXFile file, CXFileUniqueID *outID); + +/** + * \brief Determine whether the given header is guarded against + * multiple inclusions, either with the conventional + * \#ifndef/\#define/\#endif macro guards or with \#pragma once. + */ +CINDEX_LINKAGE unsigned +clang_isFileMultipleIncludeGuarded(CXTranslationUnit tu, CXFile file); + +/** + * \brief Retrieve a file handle within the given translation unit. + * + * \param tu the translation unit + * + * \param file_name the name of the file. + * + * \returns the file handle for the named file in the translation unit \p tu, + * or a NULL file handle if the file was not a part of this translation unit. + */ +CINDEX_LINKAGE CXFile clang_getFile(CXTranslationUnit tu, + const char *file_name); + +/** + * \brief Returns non-zero if the \c file1 and \c file2 point to the same file, + * or they are both NULL. + */ +CINDEX_LINKAGE int clang_File_isEqual(CXFile file1, CXFile file2); + +/** + * @} + */ + +/** + * \defgroup CINDEX_LOCATIONS Physical source locations + * + * Clang represents physical source locations in its abstract syntax tree in + * great detail, with file, line, and column information for the majority of + * the tokens parsed in the source code. These data types and functions are + * used to represent source location information, either for a particular + * point in the program or for a range of points in the program, and extract + * specific location information from those data types. + * + * @{ + */ + +/** + * \brief Identifies a specific source location within a translation + * unit. + * + * Use clang_getExpansionLocation() or clang_getSpellingLocation() + * to map a source location to a particular file, line, and column. + */ +typedef struct { + const void *ptr_data[2]; + unsigned int_data; +} CXSourceLocation; + +/** + * \brief Identifies a half-open character range in the source code. + * + * Use clang_getRangeStart() and clang_getRangeEnd() to retrieve the + * starting and end locations from a source range, respectively. + */ +typedef struct { + const void *ptr_data[2]; + unsigned begin_int_data; + unsigned end_int_data; +} CXSourceRange; + +/** + * \brief Retrieve a NULL (invalid) source location. + */ +CINDEX_LINKAGE CXSourceLocation clang_getNullLocation(void); + +/** + * \brief Determine whether two source locations, which must refer into + * the same translation unit, refer to exactly the same point in the source + * code. + * + * \returns non-zero if the source locations refer to the same location, zero + * if they refer to different locations. + */ +CINDEX_LINKAGE unsigned clang_equalLocations(CXSourceLocation loc1, + CXSourceLocation loc2); + +/** + * \brief Retrieves the source location associated with a given file/line/column + * in a particular translation unit. + */ +CINDEX_LINKAGE CXSourceLocation clang_getLocation(CXTranslationUnit tu, + CXFile file, + unsigned line, + unsigned column); +/** + * \brief Retrieves the source location associated with a given character offset + * in a particular translation unit. + */ +CINDEX_LINKAGE CXSourceLocation clang_getLocationForOffset(CXTranslationUnit tu, + CXFile file, + unsigned offset); + +/** + * \brief Returns non-zero if the given source location is in a system header. + */ +CINDEX_LINKAGE int clang_Location_isInSystemHeader(CXSourceLocation location); + +/** + * \brief Returns non-zero if the given source location is in the main file of + * the corresponding translation unit. + */ +CINDEX_LINKAGE int clang_Location_isFromMainFile(CXSourceLocation location); + +/** + * \brief Retrieve a NULL (invalid) source range. + */ +CINDEX_LINKAGE CXSourceRange clang_getNullRange(void); + +/** + * \brief Retrieve a source range given the beginning and ending source + * locations. + */ +CINDEX_LINKAGE CXSourceRange clang_getRange(CXSourceLocation begin, + CXSourceLocation end); + +/** + * \brief Determine whether two ranges are equivalent. + * + * \returns non-zero if the ranges are the same, zero if they differ. + */ +CINDEX_LINKAGE unsigned clang_equalRanges(CXSourceRange range1, + CXSourceRange range2); + +/** + * \brief Returns non-zero if \p range is null. + */ +CINDEX_LINKAGE int clang_Range_isNull(CXSourceRange range); + +/** + * \brief Retrieve the file, line, column, and offset represented by + * the given source location. + * + * If the location refers into a macro expansion, retrieves the + * location of the macro expansion. + * + * \param location the location within a source file that will be decomposed + * into its parts. + * + * \param file [out] if non-NULL, will be set to the file to which the given + * source location points. + * + * \param line [out] if non-NULL, will be set to the line to which the given + * source location points. + * + * \param column [out] if non-NULL, will be set to the column to which the given + * source location points. + * + * \param offset [out] if non-NULL, will be set to the offset into the + * buffer to which the given source location points. + */ +CINDEX_LINKAGE void clang_getExpansionLocation(CXSourceLocation location, + CXFile *file, + unsigned *line, + unsigned *column, + unsigned *offset); + +/** + * \brief Retrieve the file, line, column, and offset represented by + * the given source location, as specified in a # line directive. + * + * Example: given the following source code in a file somefile.c + * + * \code + * #123 "dummy.c" 1 + * + * static int func(void) + * { + * return 0; + * } + * \endcode + * + * the location information returned by this function would be + * + * File: dummy.c Line: 124 Column: 12 + * + * whereas clang_getExpansionLocation would have returned + * + * File: somefile.c Line: 3 Column: 12 + * + * \param location the location within a source file that will be decomposed + * into its parts. + * + * \param filename [out] if non-NULL, will be set to the filename of the + * source location. Note that filenames returned will be for "virtual" files, + * which don't necessarily exist on the machine running clang - e.g. when + * parsing preprocessed output obtained from a different environment. If + * a non-NULL value is passed in, remember to dispose of the returned value + * using \c clang_disposeString() once you've finished with it. For an invalid + * source location, an empty string is returned. + * + * \param line [out] if non-NULL, will be set to the line number of the + * source location. For an invalid source location, zero is returned. + * + * \param column [out] if non-NULL, will be set to the column number of the + * source location. For an invalid source location, zero is returned. + */ +CINDEX_LINKAGE void clang_getPresumedLocation(CXSourceLocation location, + CXString *filename, + unsigned *line, + unsigned *column); + +/** + * \brief Legacy API to retrieve the file, line, column, and offset represented + * by the given source location. + * + * This interface has been replaced by the newer interface + * #clang_getExpansionLocation(). See that interface's documentation for + * details. + */ +CINDEX_LINKAGE void clang_getInstantiationLocation(CXSourceLocation location, + CXFile *file, + unsigned *line, + unsigned *column, + unsigned *offset); + +/** + * \brief Retrieve the file, line, column, and offset represented by + * the given source location. + * + * If the location refers into a macro instantiation, return where the + * location was originally spelled in the source file. + * + * \param location the location within a source file that will be decomposed + * into its parts. + * + * \param file [out] if non-NULL, will be set to the file to which the given + * source location points. + * + * \param line [out] if non-NULL, will be set to the line to which the given + * source location points. + * + * \param column [out] if non-NULL, will be set to the column to which the given + * source location points. + * + * \param offset [out] if non-NULL, will be set to the offset into the + * buffer to which the given source location points. + */ +CINDEX_LINKAGE void clang_getSpellingLocation(CXSourceLocation location, + CXFile *file, + unsigned *line, + unsigned *column, + unsigned *offset); + +/** + * \brief Retrieve the file, line, column, and offset represented by + * the given source location. + * + * If the location refers into a macro expansion, return where the macro was + * expanded or where the macro argument was written, if the location points at + * a macro argument. + * + * \param location the location within a source file that will be decomposed + * into its parts. + * + * \param file [out] if non-NULL, will be set to the file to which the given + * source location points. + * + * \param line [out] if non-NULL, will be set to the line to which the given + * source location points. + * + * \param column [out] if non-NULL, will be set to the column to which the given + * source location points. + * + * \param offset [out] if non-NULL, will be set to the offset into the + * buffer to which the given source location points. + */ +CINDEX_LINKAGE void clang_getFileLocation(CXSourceLocation location, + CXFile *file, + unsigned *line, + unsigned *column, + unsigned *offset); + +/** + * \brief Retrieve a source location representing the first character within a + * source range. + */ +CINDEX_LINKAGE CXSourceLocation clang_getRangeStart(CXSourceRange range); + +/** + * \brief Retrieve a source location representing the last character within a + * source range. + */ +CINDEX_LINKAGE CXSourceLocation clang_getRangeEnd(CXSourceRange range); + +/** + * \brief Identifies an array of ranges. + */ +typedef struct { + /** \brief The number of ranges in the \c ranges array. */ + unsigned count; + /** + * \brief An array of \c CXSourceRanges. + */ + CXSourceRange *ranges; +} CXSourceRangeList; + +/** + * \brief Retrieve all ranges that were skipped by the preprocessor. + * + * The preprocessor will skip lines when they are surrounded by an + * if/ifdef/ifndef directive whose condition does not evaluate to true. + */ +CINDEX_LINKAGE CXSourceRangeList *clang_getSkippedRanges(CXTranslationUnit tu, + CXFile file); + +/** + * \brief Destroy the given \c CXSourceRangeList. + */ +CINDEX_LINKAGE void clang_disposeSourceRangeList(CXSourceRangeList *ranges); + +/** + * @} + */ + +/** + * \defgroup CINDEX_DIAG Diagnostic reporting + * + * @{ + */ + +/** + * \brief Describes the severity of a particular diagnostic. + */ +enum CXDiagnosticSeverity { + /** + * \brief A diagnostic that has been suppressed, e.g., by a command-line + * option. + */ + CXDiagnostic_Ignored = 0, + + /** + * \brief This diagnostic is a note that should be attached to the + * previous (non-note) diagnostic. + */ + CXDiagnostic_Note = 1, + + /** + * \brief This diagnostic indicates suspicious code that may not be + * wrong. + */ + CXDiagnostic_Warning = 2, + + /** + * \brief This diagnostic indicates that the code is ill-formed. + */ + CXDiagnostic_Error = 3, + + /** + * \brief This diagnostic indicates that the code is ill-formed such + * that future parser recovery is unlikely to produce useful + * results. + */ + CXDiagnostic_Fatal = 4 +}; + +/** + * \brief A single diagnostic, containing the diagnostic's severity, + * location, text, source ranges, and fix-it hints. + */ +typedef void *CXDiagnostic; + +/** + * \brief A group of CXDiagnostics. + */ +typedef void *CXDiagnosticSet; + +/** + * \brief Determine the number of diagnostics in a CXDiagnosticSet. + */ +CINDEX_LINKAGE unsigned clang_getNumDiagnosticsInSet(CXDiagnosticSet Diags); + +/** + * \brief Retrieve a diagnostic associated with the given CXDiagnosticSet. + * + * \param Diags the CXDiagnosticSet to query. + * \param Index the zero-based diagnostic number to retrieve. + * + * \returns the requested diagnostic. This diagnostic must be freed + * via a call to \c clang_disposeDiagnostic(). + */ +CINDEX_LINKAGE CXDiagnostic clang_getDiagnosticInSet(CXDiagnosticSet Diags, + unsigned Index); + + +/** + * \brief Describes the kind of error that occurred (if any) in a call to + * \c clang_loadDiagnostics. + */ +enum CXLoadDiag_Error { + /** + * \brief Indicates that no error occurred. + */ + CXLoadDiag_None = 0, + + /** + * \brief Indicates that an unknown error occurred while attempting to + * deserialize diagnostics. + */ + CXLoadDiag_Unknown = 1, + + /** + * \brief Indicates that the file containing the serialized diagnostics + * could not be opened. + */ + CXLoadDiag_CannotLoad = 2, + + /** + * \brief Indicates that the serialized diagnostics file is invalid or + * corrupt. + */ + CXLoadDiag_InvalidFile = 3 +}; + +/** + * \brief Deserialize a set of diagnostics from a Clang diagnostics bitcode + * file. + * + * \param file The name of the file to deserialize. + * \param error A pointer to a enum value recording if there was a problem + * deserializing the diagnostics. + * \param errorString A pointer to a CXString for recording the error string + * if the file was not successfully loaded. + * + * \returns A loaded CXDiagnosticSet if successful, and NULL otherwise. These + * diagnostics should be released using clang_disposeDiagnosticSet(). + */ +CINDEX_LINKAGE CXDiagnosticSet clang_loadDiagnostics(const char *file, + enum CXLoadDiag_Error *error, + CXString *errorString); + +/** + * \brief Release a CXDiagnosticSet and all of its contained diagnostics. + */ +CINDEX_LINKAGE void clang_disposeDiagnosticSet(CXDiagnosticSet Diags); + +/** + * \brief Retrieve the child diagnostics of a CXDiagnostic. + * + * This CXDiagnosticSet does not need to be released by + * clang_disposeDiagnosticSet. + */ +CINDEX_LINKAGE CXDiagnosticSet clang_getChildDiagnostics(CXDiagnostic D); + +/** + * \brief Determine the number of diagnostics produced for the given + * translation unit. + */ +CINDEX_LINKAGE unsigned clang_getNumDiagnostics(CXTranslationUnit Unit); + +/** + * \brief Retrieve a diagnostic associated with the given translation unit. + * + * \param Unit the translation unit to query. + * \param Index the zero-based diagnostic number to retrieve. + * + * \returns the requested diagnostic. This diagnostic must be freed + * via a call to \c clang_disposeDiagnostic(). + */ +CINDEX_LINKAGE CXDiagnostic clang_getDiagnostic(CXTranslationUnit Unit, + unsigned Index); + +/** + * \brief Retrieve the complete set of diagnostics associated with a + * translation unit. + * + * \param Unit the translation unit to query. + */ +CINDEX_LINKAGE CXDiagnosticSet + clang_getDiagnosticSetFromTU(CXTranslationUnit Unit); + +/** + * \brief Destroy a diagnostic. + */ +CINDEX_LINKAGE void clang_disposeDiagnostic(CXDiagnostic Diagnostic); + +/** + * \brief Options to control the display of diagnostics. + * + * The values in this enum are meant to be combined to customize the + * behavior of \c clang_formatDiagnostic(). + */ +enum CXDiagnosticDisplayOptions { + /** + * \brief Display the source-location information where the + * diagnostic was located. + * + * When set, diagnostics will be prefixed by the file, line, and + * (optionally) column to which the diagnostic refers. For example, + * + * \code + * test.c:28: warning: extra tokens at end of #endif directive + * \endcode + * + * This option corresponds to the clang flag \c -fshow-source-location. + */ + CXDiagnostic_DisplaySourceLocation = 0x01, + + /** + * \brief If displaying the source-location information of the + * diagnostic, also include the column number. + * + * This option corresponds to the clang flag \c -fshow-column. + */ + CXDiagnostic_DisplayColumn = 0x02, + + /** + * \brief If displaying the source-location information of the + * diagnostic, also include information about source ranges in a + * machine-parsable format. + * + * This option corresponds to the clang flag + * \c -fdiagnostics-print-source-range-info. + */ + CXDiagnostic_DisplaySourceRanges = 0x04, + + /** + * \brief Display the option name associated with this diagnostic, if any. + * + * The option name displayed (e.g., -Wconversion) will be placed in brackets + * after the diagnostic text. This option corresponds to the clang flag + * \c -fdiagnostics-show-option. + */ + CXDiagnostic_DisplayOption = 0x08, + + /** + * \brief Display the category number associated with this diagnostic, if any. + * + * The category number is displayed within brackets after the diagnostic text. + * This option corresponds to the clang flag + * \c -fdiagnostics-show-category=id. + */ + CXDiagnostic_DisplayCategoryId = 0x10, + + /** + * \brief Display the category name associated with this diagnostic, if any. + * + * The category name is displayed within brackets after the diagnostic text. + * This option corresponds to the clang flag + * \c -fdiagnostics-show-category=name. + */ + CXDiagnostic_DisplayCategoryName = 0x20 +}; + +/** + * \brief Format the given diagnostic in a manner that is suitable for display. + * + * This routine will format the given diagnostic to a string, rendering + * the diagnostic according to the various options given. The + * \c clang_defaultDiagnosticDisplayOptions() function returns the set of + * options that most closely mimics the behavior of the clang compiler. + * + * \param Diagnostic The diagnostic to print. + * + * \param Options A set of options that control the diagnostic display, + * created by combining \c CXDiagnosticDisplayOptions values. + * + * \returns A new string containing for formatted diagnostic. + */ +CINDEX_LINKAGE CXString clang_formatDiagnostic(CXDiagnostic Diagnostic, + unsigned Options); + +/** + * \brief Retrieve the set of display options most similar to the + * default behavior of the clang compiler. + * + * \returns A set of display options suitable for use with \c + * clang_formatDiagnostic(). + */ +CINDEX_LINKAGE unsigned clang_defaultDiagnosticDisplayOptions(void); + +/** + * \brief Determine the severity of the given diagnostic. + */ +CINDEX_LINKAGE enum CXDiagnosticSeverity +clang_getDiagnosticSeverity(CXDiagnostic); + +/** + * \brief Retrieve the source location of the given diagnostic. + * + * This location is where Clang would print the caret ('^') when + * displaying the diagnostic on the command line. + */ +CINDEX_LINKAGE CXSourceLocation clang_getDiagnosticLocation(CXDiagnostic); + +/** + * \brief Retrieve the text of the given diagnostic. + */ +CINDEX_LINKAGE CXString clang_getDiagnosticSpelling(CXDiagnostic); + +/** + * \brief Retrieve the name of the command-line option that enabled this + * diagnostic. + * + * \param Diag The diagnostic to be queried. + * + * \param Disable If non-NULL, will be set to the option that disables this + * diagnostic (if any). + * + * \returns A string that contains the command-line option used to enable this + * warning, such as "-Wconversion" or "-pedantic". + */ +CINDEX_LINKAGE CXString clang_getDiagnosticOption(CXDiagnostic Diag, + CXString *Disable); + +/** + * \brief Retrieve the category number for this diagnostic. + * + * Diagnostics can be categorized into groups along with other, related + * diagnostics (e.g., diagnostics under the same warning flag). This routine + * retrieves the category number for the given diagnostic. + * + * \returns The number of the category that contains this diagnostic, or zero + * if this diagnostic is uncategorized. + */ +CINDEX_LINKAGE unsigned clang_getDiagnosticCategory(CXDiagnostic); + +/** + * \brief Retrieve the name of a particular diagnostic category. This + * is now deprecated. Use clang_getDiagnosticCategoryText() + * instead. + * + * \param Category A diagnostic category number, as returned by + * \c clang_getDiagnosticCategory(). + * + * \returns The name of the given diagnostic category. + */ +CINDEX_DEPRECATED CINDEX_LINKAGE +CXString clang_getDiagnosticCategoryName(unsigned Category); + +/** + * \brief Retrieve the diagnostic category text for a given diagnostic. + * + * \returns The text of the given diagnostic category. + */ +CINDEX_LINKAGE CXString clang_getDiagnosticCategoryText(CXDiagnostic); + +/** + * \brief Determine the number of source ranges associated with the given + * diagnostic. + */ +CINDEX_LINKAGE unsigned clang_getDiagnosticNumRanges(CXDiagnostic); + +/** + * \brief Retrieve a source range associated with the diagnostic. + * + * A diagnostic's source ranges highlight important elements in the source + * code. On the command line, Clang displays source ranges by + * underlining them with '~' characters. + * + * \param Diagnostic the diagnostic whose range is being extracted. + * + * \param Range the zero-based index specifying which range to + * + * \returns the requested source range. + */ +CINDEX_LINKAGE CXSourceRange clang_getDiagnosticRange(CXDiagnostic Diagnostic, + unsigned Range); + +/** + * \brief Determine the number of fix-it hints associated with the + * given diagnostic. + */ +CINDEX_LINKAGE unsigned clang_getDiagnosticNumFixIts(CXDiagnostic Diagnostic); + +/** + * \brief Retrieve the replacement information for a given fix-it. + * + * Fix-its are described in terms of a source range whose contents + * should be replaced by a string. This approach generalizes over + * three kinds of operations: removal of source code (the range covers + * the code to be removed and the replacement string is empty), + * replacement of source code (the range covers the code to be + * replaced and the replacement string provides the new code), and + * insertion (both the start and end of the range point at the + * insertion location, and the replacement string provides the text to + * insert). + * + * \param Diagnostic The diagnostic whose fix-its are being queried. + * + * \param FixIt The zero-based index of the fix-it. + * + * \param ReplacementRange The source range whose contents will be + * replaced with the returned replacement string. Note that source + * ranges are half-open ranges [a, b), so the source code should be + * replaced from a and up to (but not including) b. + * + * \returns A string containing text that should be replace the source + * code indicated by the \c ReplacementRange. + */ +CINDEX_LINKAGE CXString clang_getDiagnosticFixIt(CXDiagnostic Diagnostic, + unsigned FixIt, + CXSourceRange *ReplacementRange); + +/** + * @} + */ + +/** + * \defgroup CINDEX_TRANSLATION_UNIT Translation unit manipulation + * + * The routines in this group provide the ability to create and destroy + * translation units from files, either by parsing the contents of the files or + * by reading in a serialized representation of a translation unit. + * + * @{ + */ + +/** + * \brief Get the original translation unit source file name. + */ +CINDEX_LINKAGE CXString +clang_getTranslationUnitSpelling(CXTranslationUnit CTUnit); + +/** + * \brief Return the CXTranslationUnit for a given source file and the provided + * command line arguments one would pass to the compiler. + * + * Note: The 'source_filename' argument is optional. If the caller provides a + * NULL pointer, the name of the source file is expected to reside in the + * specified command line arguments. + * + * Note: When encountered in 'clang_command_line_args', the following options + * are ignored: + * + * '-c' + * '-emit-ast' + * '-fsyntax-only' + * '-o \' (both '-o' and '\' are ignored) + * + * \param CIdx The index object with which the translation unit will be + * associated. + * + * \param source_filename The name of the source file to load, or NULL if the + * source file is included in \p clang_command_line_args. + * + * \param num_clang_command_line_args The number of command-line arguments in + * \p clang_command_line_args. + * + * \param clang_command_line_args The command-line arguments that would be + * passed to the \c clang executable if it were being invoked out-of-process. + * These command-line options will be parsed and will affect how the translation + * unit is parsed. Note that the following options are ignored: '-c', + * '-emit-ast', '-fsyntax-only' (which is the default), and '-o \'. + * + * \param num_unsaved_files the number of unsaved file entries in \p + * unsaved_files. + * + * \param unsaved_files the files that have not yet been saved to disk + * but may be required for code completion, including the contents of + * those files. The contents and name of these files (as specified by + * CXUnsavedFile) are copied when necessary, so the client only needs to + * guarantee their validity until the call to this function returns. + */ +CINDEX_LINKAGE CXTranslationUnit clang_createTranslationUnitFromSourceFile( + CXIndex CIdx, + const char *source_filename, + int num_clang_command_line_args, + const char * const *clang_command_line_args, + unsigned num_unsaved_files, + struct CXUnsavedFile *unsaved_files); + +/** + * \brief Same as \c clang_createTranslationUnit2, but returns + * the \c CXTranslationUnit instead of an error code. In case of an error this + * routine returns a \c NULL \c CXTranslationUnit, without further detailed + * error codes. + */ +CINDEX_LINKAGE CXTranslationUnit clang_createTranslationUnit( + CXIndex CIdx, + const char *ast_filename); + +/** + * \brief Create a translation unit from an AST file (\c -emit-ast). + * + * \param[out] out_TU A non-NULL pointer to store the created + * \c CXTranslationUnit. + * + * \returns Zero on success, otherwise returns an error code. + */ +CINDEX_LINKAGE enum CXErrorCode clang_createTranslationUnit2( + CXIndex CIdx, + const char *ast_filename, + CXTranslationUnit *out_TU); + +/** + * \brief Flags that control the creation of translation units. + * + * The enumerators in this enumeration type are meant to be bitwise + * ORed together to specify which options should be used when + * constructing the translation unit. + */ +enum CXTranslationUnit_Flags { + /** + * \brief Used to indicate that no special translation-unit options are + * needed. + */ + CXTranslationUnit_None = 0x0, + + /** + * \brief Used to indicate that the parser should construct a "detailed" + * preprocessing record, including all macro definitions and instantiations. + * + * Constructing a detailed preprocessing record requires more memory + * and time to parse, since the information contained in the record + * is usually not retained. However, it can be useful for + * applications that require more detailed information about the + * behavior of the preprocessor. + */ + CXTranslationUnit_DetailedPreprocessingRecord = 0x01, + + /** + * \brief Used to indicate that the translation unit is incomplete. + * + * When a translation unit is considered "incomplete", semantic + * analysis that is typically performed at the end of the + * translation unit will be suppressed. For example, this suppresses + * the completion of tentative declarations in C and of + * instantiation of implicitly-instantiation function templates in + * C++. This option is typically used when parsing a header with the + * intent of producing a precompiled header. + */ + CXTranslationUnit_Incomplete = 0x02, + + /** + * \brief Used to indicate that the translation unit should be built with an + * implicit precompiled header for the preamble. + * + * An implicit precompiled header is used as an optimization when a + * particular translation unit is likely to be reparsed many times + * when the sources aren't changing that often. In this case, an + * implicit precompiled header will be built containing all of the + * initial includes at the top of the main file (what we refer to as + * the "preamble" of the file). In subsequent parses, if the + * preamble or the files in it have not changed, \c + * clang_reparseTranslationUnit() will re-use the implicit + * precompiled header to improve parsing performance. + */ + CXTranslationUnit_PrecompiledPreamble = 0x04, + + /** + * \brief Used to indicate that the translation unit should cache some + * code-completion results with each reparse of the source file. + * + * Caching of code-completion results is a performance optimization that + * introduces some overhead to reparsing but improves the performance of + * code-completion operations. + */ + CXTranslationUnit_CacheCompletionResults = 0x08, + + /** + * \brief Used to indicate that the translation unit will be serialized with + * \c clang_saveTranslationUnit. + * + * This option is typically used when parsing a header with the intent of + * producing a precompiled header. + */ + CXTranslationUnit_ForSerialization = 0x10, + + /** + * \brief DEPRECATED: Enabled chained precompiled preambles in C++. + * + * Note: this is a *temporary* option that is available only while + * we are testing C++ precompiled preamble support. It is deprecated. + */ + CXTranslationUnit_CXXChainedPCH = 0x20, + + /** + * \brief Used to indicate that function/method bodies should be skipped while + * parsing. + * + * This option can be used to search for declarations/definitions while + * ignoring the usages. + */ + CXTranslationUnit_SkipFunctionBodies = 0x40, + + /** + * \brief Used to indicate that brief documentation comments should be + * included into the set of code completions returned from this translation + * unit. + */ + CXTranslationUnit_IncludeBriefCommentsInCodeCompletion = 0x80 +}; + +/** + * \brief Returns the set of flags that is suitable for parsing a translation + * unit that is being edited. + * + * The set of flags returned provide options for \c clang_parseTranslationUnit() + * to indicate that the translation unit is likely to be reparsed many times, + * either explicitly (via \c clang_reparseTranslationUnit()) or implicitly + * (e.g., by code completion (\c clang_codeCompletionAt())). The returned flag + * set contains an unspecified set of optimizations (e.g., the precompiled + * preamble) geared toward improving the performance of these routines. The + * set of optimizations enabled may change from one version to the next. + */ +CINDEX_LINKAGE unsigned clang_defaultEditingTranslationUnitOptions(void); + +/** + * \brief Same as \c clang_parseTranslationUnit2, but returns + * the \c CXTranslationUnit instead of an error code. In case of an error this + * routine returns a \c NULL \c CXTranslationUnit, without further detailed + * error codes. + */ +CINDEX_LINKAGE CXTranslationUnit +clang_parseTranslationUnit(CXIndex CIdx, + const char *source_filename, + const char *const *command_line_args, + int num_command_line_args, + struct CXUnsavedFile *unsaved_files, + unsigned num_unsaved_files, + unsigned options); + +/** + * \brief Parse the given source file and the translation unit corresponding + * to that file. + * + * This routine is the main entry point for the Clang C API, providing the + * ability to parse a source file into a translation unit that can then be + * queried by other functions in the API. This routine accepts a set of + * command-line arguments so that the compilation can be configured in the same + * way that the compiler is configured on the command line. + * + * \param CIdx The index object with which the translation unit will be + * associated. + * + * \param source_filename The name of the source file to load, or NULL if the + * source file is included in \c command_line_args. + * + * \param command_line_args The command-line arguments that would be + * passed to the \c clang executable if it were being invoked out-of-process. + * These command-line options will be parsed and will affect how the translation + * unit is parsed. Note that the following options are ignored: '-c', + * '-emit-ast', '-fsyntax-only' (which is the default), and '-o \'. + * + * \param num_command_line_args The number of command-line arguments in + * \c command_line_args. + * + * \param unsaved_files the files that have not yet been saved to disk + * but may be required for parsing, including the contents of + * those files. The contents and name of these files (as specified by + * CXUnsavedFile) are copied when necessary, so the client only needs to + * guarantee their validity until the call to this function returns. + * + * \param num_unsaved_files the number of unsaved file entries in \p + * unsaved_files. + * + * \param options A bitmask of options that affects how the translation unit + * is managed but not its compilation. This should be a bitwise OR of the + * CXTranslationUnit_XXX flags. + * + * \param[out] out_TU A non-NULL pointer to store the created + * \c CXTranslationUnit, describing the parsed code and containing any + * diagnostics produced by the compiler. + * + * \returns Zero on success, otherwise returns an error code. + */ +CINDEX_LINKAGE enum CXErrorCode +clang_parseTranslationUnit2(CXIndex CIdx, + const char *source_filename, + const char *const *command_line_args, + int num_command_line_args, + struct CXUnsavedFile *unsaved_files, + unsigned num_unsaved_files, + unsigned options, + CXTranslationUnit *out_TU); + +/** + * \brief Flags that control how translation units are saved. + * + * The enumerators in this enumeration type are meant to be bitwise + * ORed together to specify which options should be used when + * saving the translation unit. + */ +enum CXSaveTranslationUnit_Flags { + /** + * \brief Used to indicate that no special saving options are needed. + */ + CXSaveTranslationUnit_None = 0x0 +}; + +/** + * \brief Returns the set of flags that is suitable for saving a translation + * unit. + * + * The set of flags returned provide options for + * \c clang_saveTranslationUnit() by default. The returned flag + * set contains an unspecified set of options that save translation units with + * the most commonly-requested data. + */ +CINDEX_LINKAGE unsigned clang_defaultSaveOptions(CXTranslationUnit TU); + +/** + * \brief Describes the kind of error that occurred (if any) in a call to + * \c clang_saveTranslationUnit(). + */ +enum CXSaveError { + /** + * \brief Indicates that no error occurred while saving a translation unit. + */ + CXSaveError_None = 0, + + /** + * \brief Indicates that an unknown error occurred while attempting to save + * the file. + * + * This error typically indicates that file I/O failed when attempting to + * write the file. + */ + CXSaveError_Unknown = 1, + + /** + * \brief Indicates that errors during translation prevented this attempt + * to save the translation unit. + * + * Errors that prevent the translation unit from being saved can be + * extracted using \c clang_getNumDiagnostics() and \c clang_getDiagnostic(). + */ + CXSaveError_TranslationErrors = 2, + + /** + * \brief Indicates that the translation unit to be saved was somehow + * invalid (e.g., NULL). + */ + CXSaveError_InvalidTU = 3 +}; + +/** + * \brief Saves a translation unit into a serialized representation of + * that translation unit on disk. + * + * Any translation unit that was parsed without error can be saved + * into a file. The translation unit can then be deserialized into a + * new \c CXTranslationUnit with \c clang_createTranslationUnit() or, + * if it is an incomplete translation unit that corresponds to a + * header, used as a precompiled header when parsing other translation + * units. + * + * \param TU The translation unit to save. + * + * \param FileName The file to which the translation unit will be saved. + * + * \param options A bitmask of options that affects how the translation unit + * is saved. This should be a bitwise OR of the + * CXSaveTranslationUnit_XXX flags. + * + * \returns A value that will match one of the enumerators of the CXSaveError + * enumeration. Zero (CXSaveError_None) indicates that the translation unit was + * saved successfully, while a non-zero value indicates that a problem occurred. + */ +CINDEX_LINKAGE int clang_saveTranslationUnit(CXTranslationUnit TU, + const char *FileName, + unsigned options); + +/** + * \brief Destroy the specified CXTranslationUnit object. + */ +CINDEX_LINKAGE void clang_disposeTranslationUnit(CXTranslationUnit); + +/** + * \brief Flags that control the reparsing of translation units. + * + * The enumerators in this enumeration type are meant to be bitwise + * ORed together to specify which options should be used when + * reparsing the translation unit. + */ +enum CXReparse_Flags { + /** + * \brief Used to indicate that no special reparsing options are needed. + */ + CXReparse_None = 0x0 +}; + +/** + * \brief Returns the set of flags that is suitable for reparsing a translation + * unit. + * + * The set of flags returned provide options for + * \c clang_reparseTranslationUnit() by default. The returned flag + * set contains an unspecified set of optimizations geared toward common uses + * of reparsing. The set of optimizations enabled may change from one version + * to the next. + */ +CINDEX_LINKAGE unsigned clang_defaultReparseOptions(CXTranslationUnit TU); + +/** + * \brief Reparse the source files that produced this translation unit. + * + * This routine can be used to re-parse the source files that originally + * created the given translation unit, for example because those source files + * have changed (either on disk or as passed via \p unsaved_files). The + * source code will be reparsed with the same command-line options as it + * was originally parsed. + * + * Reparsing a translation unit invalidates all cursors and source locations + * that refer into that translation unit. This makes reparsing a translation + * unit semantically equivalent to destroying the translation unit and then + * creating a new translation unit with the same command-line arguments. + * However, it may be more efficient to reparse a translation + * unit using this routine. + * + * \param TU The translation unit whose contents will be re-parsed. The + * translation unit must originally have been built with + * \c clang_createTranslationUnitFromSourceFile(). + * + * \param num_unsaved_files The number of unsaved file entries in \p + * unsaved_files. + * + * \param unsaved_files The files that have not yet been saved to disk + * but may be required for parsing, including the contents of + * those files. The contents and name of these files (as specified by + * CXUnsavedFile) are copied when necessary, so the client only needs to + * guarantee their validity until the call to this function returns. + * + * \param options A bitset of options composed of the flags in CXReparse_Flags. + * The function \c clang_defaultReparseOptions() produces a default set of + * options recommended for most uses, based on the translation unit. + * + * \returns 0 if the sources could be reparsed. A non-zero error code will be + * returned if reparsing was impossible, such that the translation unit is + * invalid. In such cases, the only valid call for \c TU is + * \c clang_disposeTranslationUnit(TU). The error codes returned by this + * routine are described by the \c CXErrorCode enum. + */ +CINDEX_LINKAGE int clang_reparseTranslationUnit(CXTranslationUnit TU, + unsigned num_unsaved_files, + struct CXUnsavedFile *unsaved_files, + unsigned options); + +/** + * \brief Categorizes how memory is being used by a translation unit. + */ +enum CXTUResourceUsageKind { + CXTUResourceUsage_AST = 1, + CXTUResourceUsage_Identifiers = 2, + CXTUResourceUsage_Selectors = 3, + CXTUResourceUsage_GlobalCompletionResults = 4, + CXTUResourceUsage_SourceManagerContentCache = 5, + CXTUResourceUsage_AST_SideTables = 6, + CXTUResourceUsage_SourceManager_Membuffer_Malloc = 7, + CXTUResourceUsage_SourceManager_Membuffer_MMap = 8, + CXTUResourceUsage_ExternalASTSource_Membuffer_Malloc = 9, + CXTUResourceUsage_ExternalASTSource_Membuffer_MMap = 10, + CXTUResourceUsage_Preprocessor = 11, + CXTUResourceUsage_PreprocessingRecord = 12, + CXTUResourceUsage_SourceManager_DataStructures = 13, + CXTUResourceUsage_Preprocessor_HeaderSearch = 14, + CXTUResourceUsage_MEMORY_IN_BYTES_BEGIN = CXTUResourceUsage_AST, + CXTUResourceUsage_MEMORY_IN_BYTES_END = + CXTUResourceUsage_Preprocessor_HeaderSearch, + + CXTUResourceUsage_First = CXTUResourceUsage_AST, + CXTUResourceUsage_Last = CXTUResourceUsage_Preprocessor_HeaderSearch +}; + +/** + * \brief Returns the human-readable null-terminated C string that represents + * the name of the memory category. This string should never be freed. + */ +CINDEX_LINKAGE +const char *clang_getTUResourceUsageName(enum CXTUResourceUsageKind kind); + +typedef struct CXTUResourceUsageEntry { + /* \brief The memory usage category. */ + enum CXTUResourceUsageKind kind; + /* \brief Amount of resources used. + The units will depend on the resource kind. */ + unsigned long amount; +} CXTUResourceUsageEntry; + +/** + * \brief The memory usage of a CXTranslationUnit, broken into categories. + */ +typedef struct CXTUResourceUsage { + /* \brief Private data member, used for queries. */ + void *data; + + /* \brief The number of entries in the 'entries' array. */ + unsigned numEntries; + + /* \brief An array of key-value pairs, representing the breakdown of memory + usage. */ + CXTUResourceUsageEntry *entries; + +} CXTUResourceUsage; + +/** + * \brief Return the memory usage of a translation unit. This object + * should be released with clang_disposeCXTUResourceUsage(). + */ +CINDEX_LINKAGE CXTUResourceUsage clang_getCXTUResourceUsage(CXTranslationUnit TU); + +CINDEX_LINKAGE void clang_disposeCXTUResourceUsage(CXTUResourceUsage usage); + +/** + * @} + */ + +/** + * \brief Describes the kind of entity that a cursor refers to. + */ +enum CXCursorKind { + /* Declarations */ + /** + * \brief A declaration whose specific kind is not exposed via this + * interface. + * + * Unexposed declarations have the same operations as any other kind + * of declaration; one can extract their location information, + * spelling, find their definitions, etc. However, the specific kind + * of the declaration is not reported. + */ + CXCursor_UnexposedDecl = 1, + /** \brief A C or C++ struct. */ + CXCursor_StructDecl = 2, + /** \brief A C or C++ union. */ + CXCursor_UnionDecl = 3, + /** \brief A C++ class. */ + CXCursor_ClassDecl = 4, + /** \brief An enumeration. */ + CXCursor_EnumDecl = 5, + /** + * \brief A field (in C) or non-static data member (in C++) in a + * struct, union, or C++ class. + */ + CXCursor_FieldDecl = 6, + /** \brief An enumerator constant. */ + CXCursor_EnumConstantDecl = 7, + /** \brief A function. */ + CXCursor_FunctionDecl = 8, + /** \brief A variable. */ + CXCursor_VarDecl = 9, + /** \brief A function or method parameter. */ + CXCursor_ParmDecl = 10, + /** \brief An Objective-C \@interface. */ + CXCursor_ObjCInterfaceDecl = 11, + /** \brief An Objective-C \@interface for a category. */ + CXCursor_ObjCCategoryDecl = 12, + /** \brief An Objective-C \@protocol declaration. */ + CXCursor_ObjCProtocolDecl = 13, + /** \brief An Objective-C \@property declaration. */ + CXCursor_ObjCPropertyDecl = 14, + /** \brief An Objective-C instance variable. */ + CXCursor_ObjCIvarDecl = 15, + /** \brief An Objective-C instance method. */ + CXCursor_ObjCInstanceMethodDecl = 16, + /** \brief An Objective-C class method. */ + CXCursor_ObjCClassMethodDecl = 17, + /** \brief An Objective-C \@implementation. */ + CXCursor_ObjCImplementationDecl = 18, + /** \brief An Objective-C \@implementation for a category. */ + CXCursor_ObjCCategoryImplDecl = 19, + /** \brief A typedef */ + CXCursor_TypedefDecl = 20, + /** \brief A C++ class method. */ + CXCursor_CXXMethod = 21, + /** \brief A C++ namespace. */ + CXCursor_Namespace = 22, + /** \brief A linkage specification, e.g. 'extern "C"'. */ + CXCursor_LinkageSpec = 23, + /** \brief A C++ constructor. */ + CXCursor_Constructor = 24, + /** \brief A C++ destructor. */ + CXCursor_Destructor = 25, + /** \brief A C++ conversion function. */ + CXCursor_ConversionFunction = 26, + /** \brief A C++ template type parameter. */ + CXCursor_TemplateTypeParameter = 27, + /** \brief A C++ non-type template parameter. */ + CXCursor_NonTypeTemplateParameter = 28, + /** \brief A C++ template template parameter. */ + CXCursor_TemplateTemplateParameter = 29, + /** \brief A C++ function template. */ + CXCursor_FunctionTemplate = 30, + /** \brief A C++ class template. */ + CXCursor_ClassTemplate = 31, + /** \brief A C++ class template partial specialization. */ + CXCursor_ClassTemplatePartialSpecialization = 32, + /** \brief A C++ namespace alias declaration. */ + CXCursor_NamespaceAlias = 33, + /** \brief A C++ using directive. */ + CXCursor_UsingDirective = 34, + /** \brief A C++ using declaration. */ + CXCursor_UsingDeclaration = 35, + /** \brief A C++ alias declaration */ + CXCursor_TypeAliasDecl = 36, + /** \brief An Objective-C \@synthesize definition. */ + CXCursor_ObjCSynthesizeDecl = 37, + /** \brief An Objective-C \@dynamic definition. */ + CXCursor_ObjCDynamicDecl = 38, + /** \brief An access specifier. */ + CXCursor_CXXAccessSpecifier = 39, + + CXCursor_FirstDecl = CXCursor_UnexposedDecl, + CXCursor_LastDecl = CXCursor_CXXAccessSpecifier, + + /* References */ + CXCursor_FirstRef = 40, /* Decl references */ + CXCursor_ObjCSuperClassRef = 40, + CXCursor_ObjCProtocolRef = 41, + CXCursor_ObjCClassRef = 42, + /** + * \brief A reference to a type declaration. + * + * A type reference occurs anywhere where a type is named but not + * declared. For example, given: + * + * \code + * typedef unsigned size_type; + * size_type size; + * \endcode + * + * The typedef is a declaration of size_type (CXCursor_TypedefDecl), + * while the type of the variable "size" is referenced. The cursor + * referenced by the type of size is the typedef for size_type. + */ + CXCursor_TypeRef = 43, + CXCursor_CXXBaseSpecifier = 44, + /** + * \brief A reference to a class template, function template, template + * template parameter, or class template partial specialization. + */ + CXCursor_TemplateRef = 45, + /** + * \brief A reference to a namespace or namespace alias. + */ + CXCursor_NamespaceRef = 46, + /** + * \brief A reference to a member of a struct, union, or class that occurs in + * some non-expression context, e.g., a designated initializer. + */ + CXCursor_MemberRef = 47, + /** + * \brief A reference to a labeled statement. + * + * This cursor kind is used to describe the jump to "start_over" in the + * goto statement in the following example: + * + * \code + * start_over: + * ++counter; + * + * goto start_over; + * \endcode + * + * A label reference cursor refers to a label statement. + */ + CXCursor_LabelRef = 48, + + /** + * \brief A reference to a set of overloaded functions or function templates + * that has not yet been resolved to a specific function or function template. + * + * An overloaded declaration reference cursor occurs in C++ templates where + * a dependent name refers to a function. For example: + * + * \code + * template void swap(T&, T&); + * + * struct X { ... }; + * void swap(X&, X&); + * + * template + * void reverse(T* first, T* last) { + * while (first < last - 1) { + * swap(*first, *--last); + * ++first; + * } + * } + * + * struct Y { }; + * void swap(Y&, Y&); + * \endcode + * + * Here, the identifier "swap" is associated with an overloaded declaration + * reference. In the template definition, "swap" refers to either of the two + * "swap" functions declared above, so both results will be available. At + * instantiation time, "swap" may also refer to other functions found via + * argument-dependent lookup (e.g., the "swap" function at the end of the + * example). + * + * The functions \c clang_getNumOverloadedDecls() and + * \c clang_getOverloadedDecl() can be used to retrieve the definitions + * referenced by this cursor. + */ + CXCursor_OverloadedDeclRef = 49, + + /** + * \brief A reference to a variable that occurs in some non-expression + * context, e.g., a C++ lambda capture list. + */ + CXCursor_VariableRef = 50, + + CXCursor_LastRef = CXCursor_VariableRef, + + /* Error conditions */ + CXCursor_FirstInvalid = 70, + CXCursor_InvalidFile = 70, + CXCursor_NoDeclFound = 71, + CXCursor_NotImplemented = 72, + CXCursor_InvalidCode = 73, + CXCursor_LastInvalid = CXCursor_InvalidCode, + + /* Expressions */ + CXCursor_FirstExpr = 100, + + /** + * \brief An expression whose specific kind is not exposed via this + * interface. + * + * Unexposed expressions have the same operations as any other kind + * of expression; one can extract their location information, + * spelling, children, etc. However, the specific kind of the + * expression is not reported. + */ + CXCursor_UnexposedExpr = 100, + + /** + * \brief An expression that refers to some value declaration, such + * as a function, variable, or enumerator. + */ + CXCursor_DeclRefExpr = 101, + + /** + * \brief An expression that refers to a member of a struct, union, + * class, Objective-C class, etc. + */ + CXCursor_MemberRefExpr = 102, + + /** \brief An expression that calls a function. */ + CXCursor_CallExpr = 103, + + /** \brief An expression that sends a message to an Objective-C + object or class. */ + CXCursor_ObjCMessageExpr = 104, + + /** \brief An expression that represents a block literal. */ + CXCursor_BlockExpr = 105, + + /** \brief An integer literal. + */ + CXCursor_IntegerLiteral = 106, + + /** \brief A floating point number literal. + */ + CXCursor_FloatingLiteral = 107, + + /** \brief An imaginary number literal. + */ + CXCursor_ImaginaryLiteral = 108, + + /** \brief A string literal. + */ + CXCursor_StringLiteral = 109, + + /** \brief A character literal. + */ + CXCursor_CharacterLiteral = 110, + + /** \brief A parenthesized expression, e.g. "(1)". + * + * This AST node is only formed if full location information is requested. + */ + CXCursor_ParenExpr = 111, + + /** \brief This represents the unary-expression's (except sizeof and + * alignof). + */ + CXCursor_UnaryOperator = 112, + + /** \brief [C99 6.5.2.1] Array Subscripting. + */ + CXCursor_ArraySubscriptExpr = 113, + + /** \brief A builtin binary operation expression such as "x + y" or + * "x <= y". + */ + CXCursor_BinaryOperator = 114, + + /** \brief Compound assignment such as "+=". + */ + CXCursor_CompoundAssignOperator = 115, + + /** \brief The ?: ternary operator. + */ + CXCursor_ConditionalOperator = 116, + + /** \brief An explicit cast in C (C99 6.5.4) or a C-style cast in C++ + * (C++ [expr.cast]), which uses the syntax (Type)expr. + * + * For example: (int)f. + */ + CXCursor_CStyleCastExpr = 117, + + /** \brief [C99 6.5.2.5] + */ + CXCursor_CompoundLiteralExpr = 118, + + /** \brief Describes an C or C++ initializer list. + */ + CXCursor_InitListExpr = 119, + + /** \brief The GNU address of label extension, representing &&label. + */ + CXCursor_AddrLabelExpr = 120, + + /** \brief This is the GNU Statement Expression extension: ({int X=4; X;}) + */ + CXCursor_StmtExpr = 121, + + /** \brief Represents a C11 generic selection. + */ + CXCursor_GenericSelectionExpr = 122, + + /** \brief Implements the GNU __null extension, which is a name for a null + * pointer constant that has integral type (e.g., int or long) and is the same + * size and alignment as a pointer. + * + * The __null extension is typically only used by system headers, which define + * NULL as __null in C++ rather than using 0 (which is an integer that may not + * match the size of a pointer). + */ + CXCursor_GNUNullExpr = 123, + + /** \brief C++'s static_cast<> expression. + */ + CXCursor_CXXStaticCastExpr = 124, + + /** \brief C++'s dynamic_cast<> expression. + */ + CXCursor_CXXDynamicCastExpr = 125, + + /** \brief C++'s reinterpret_cast<> expression. + */ + CXCursor_CXXReinterpretCastExpr = 126, + + /** \brief C++'s const_cast<> expression. + */ + CXCursor_CXXConstCastExpr = 127, + + /** \brief Represents an explicit C++ type conversion that uses "functional" + * notion (C++ [expr.type.conv]). + * + * Example: + * \code + * x = int(0.5); + * \endcode + */ + CXCursor_CXXFunctionalCastExpr = 128, + + /** \brief A C++ typeid expression (C++ [expr.typeid]). + */ + CXCursor_CXXTypeidExpr = 129, + + /** \brief [C++ 2.13.5] C++ Boolean Literal. + */ + CXCursor_CXXBoolLiteralExpr = 130, + + /** \brief [C++0x 2.14.7] C++ Pointer Literal. + */ + CXCursor_CXXNullPtrLiteralExpr = 131, + + /** \brief Represents the "this" expression in C++ + */ + CXCursor_CXXThisExpr = 132, + + /** \brief [C++ 15] C++ Throw Expression. + * + * This handles 'throw' and 'throw' assignment-expression. When + * assignment-expression isn't present, Op will be null. + */ + CXCursor_CXXThrowExpr = 133, + + /** \brief A new expression for memory allocation and constructor calls, e.g: + * "new CXXNewExpr(foo)". + */ + CXCursor_CXXNewExpr = 134, + + /** \brief A delete expression for memory deallocation and destructor calls, + * e.g. "delete[] pArray". + */ + CXCursor_CXXDeleteExpr = 135, + + /** \brief A unary expression. + */ + CXCursor_UnaryExpr = 136, + + /** \brief An Objective-C string literal i.e. @"foo". + */ + CXCursor_ObjCStringLiteral = 137, + + /** \brief An Objective-C \@encode expression. + */ + CXCursor_ObjCEncodeExpr = 138, + + /** \brief An Objective-C \@selector expression. + */ + CXCursor_ObjCSelectorExpr = 139, + + /** \brief An Objective-C \@protocol expression. + */ + CXCursor_ObjCProtocolExpr = 140, + + /** \brief An Objective-C "bridged" cast expression, which casts between + * Objective-C pointers and C pointers, transferring ownership in the process. + * + * \code + * NSString *str = (__bridge_transfer NSString *)CFCreateString(); + * \endcode + */ + CXCursor_ObjCBridgedCastExpr = 141, + + /** \brief Represents a C++0x pack expansion that produces a sequence of + * expressions. + * + * A pack expansion expression contains a pattern (which itself is an + * expression) followed by an ellipsis. For example: + * + * \code + * template + * void forward(F f, Types &&...args) { + * f(static_cast(args)...); + * } + * \endcode + */ + CXCursor_PackExpansionExpr = 142, + + /** \brief Represents an expression that computes the length of a parameter + * pack. + * + * \code + * template + * struct count { + * static const unsigned value = sizeof...(Types); + * }; + * \endcode + */ + CXCursor_SizeOfPackExpr = 143, + + /* \brief Represents a C++ lambda expression that produces a local function + * object. + * + * \code + * void abssort(float *x, unsigned N) { + * std::sort(x, x + N, + * [](float a, float b) { + * return std::abs(a) < std::abs(b); + * }); + * } + * \endcode + */ + CXCursor_LambdaExpr = 144, + + /** \brief Objective-c Boolean Literal. + */ + CXCursor_ObjCBoolLiteralExpr = 145, + + /** \brief Represents the "self" expression in an Objective-C method. + */ + CXCursor_ObjCSelfExpr = 146, + + CXCursor_LastExpr = CXCursor_ObjCSelfExpr, + + /* Statements */ + CXCursor_FirstStmt = 200, + /** + * \brief A statement whose specific kind is not exposed via this + * interface. + * + * Unexposed statements have the same operations as any other kind of + * statement; one can extract their location information, spelling, + * children, etc. However, the specific kind of the statement is not + * reported. + */ + CXCursor_UnexposedStmt = 200, + + /** \brief A labelled statement in a function. + * + * This cursor kind is used to describe the "start_over:" label statement in + * the following example: + * + * \code + * start_over: + * ++counter; + * \endcode + * + */ + CXCursor_LabelStmt = 201, + + /** \brief A group of statements like { stmt stmt }. + * + * This cursor kind is used to describe compound statements, e.g. function + * bodies. + */ + CXCursor_CompoundStmt = 202, + + /** \brief A case statement. + */ + CXCursor_CaseStmt = 203, + + /** \brief A default statement. + */ + CXCursor_DefaultStmt = 204, + + /** \brief An if statement + */ + CXCursor_IfStmt = 205, + + /** \brief A switch statement. + */ + CXCursor_SwitchStmt = 206, + + /** \brief A while statement. + */ + CXCursor_WhileStmt = 207, + + /** \brief A do statement. + */ + CXCursor_DoStmt = 208, + + /** \brief A for statement. + */ + CXCursor_ForStmt = 209, + + /** \brief A goto statement. + */ + CXCursor_GotoStmt = 210, + + /** \brief An indirect goto statement. + */ + CXCursor_IndirectGotoStmt = 211, + + /** \brief A continue statement. + */ + CXCursor_ContinueStmt = 212, + + /** \brief A break statement. + */ + CXCursor_BreakStmt = 213, + + /** \brief A return statement. + */ + CXCursor_ReturnStmt = 214, + + /** \brief A GCC inline assembly statement extension. + */ + CXCursor_GCCAsmStmt = 215, + CXCursor_AsmStmt = CXCursor_GCCAsmStmt, + + /** \brief Objective-C's overall \@try-\@catch-\@finally statement. + */ + CXCursor_ObjCAtTryStmt = 216, + + /** \brief Objective-C's \@catch statement. + */ + CXCursor_ObjCAtCatchStmt = 217, + + /** \brief Objective-C's \@finally statement. + */ + CXCursor_ObjCAtFinallyStmt = 218, + + /** \brief Objective-C's \@throw statement. + */ + CXCursor_ObjCAtThrowStmt = 219, + + /** \brief Objective-C's \@synchronized statement. + */ + CXCursor_ObjCAtSynchronizedStmt = 220, + + /** \brief Objective-C's autorelease pool statement. + */ + CXCursor_ObjCAutoreleasePoolStmt = 221, + + /** \brief Objective-C's collection statement. + */ + CXCursor_ObjCForCollectionStmt = 222, + + /** \brief C++'s catch statement. + */ + CXCursor_CXXCatchStmt = 223, + + /** \brief C++'s try statement. + */ + CXCursor_CXXTryStmt = 224, + + /** \brief C++'s for (* : *) statement. + */ + CXCursor_CXXForRangeStmt = 225, + + /** \brief Windows Structured Exception Handling's try statement. + */ + CXCursor_SEHTryStmt = 226, + + /** \brief Windows Structured Exception Handling's except statement. + */ + CXCursor_SEHExceptStmt = 227, + + /** \brief Windows Structured Exception Handling's finally statement. + */ + CXCursor_SEHFinallyStmt = 228, + + /** \brief A MS inline assembly statement extension. + */ + CXCursor_MSAsmStmt = 229, + + /** \brief The null statement ";": C99 6.8.3p3. + * + * This cursor kind is used to describe the null statement. + */ + CXCursor_NullStmt = 230, + + /** \brief Adaptor class for mixing declarations with statements and + * expressions. + */ + CXCursor_DeclStmt = 231, + + /** \brief OpenMP parallel directive. + */ + CXCursor_OMPParallelDirective = 232, + + /** \brief OpenMP SIMD directive. + */ + CXCursor_OMPSimdDirective = 233, + + /** \brief OpenMP for directive. + */ + CXCursor_OMPForDirective = 234, + + /** \brief OpenMP sections directive. + */ + CXCursor_OMPSectionsDirective = 235, + + /** \brief OpenMP section directive. + */ + CXCursor_OMPSectionDirective = 236, + + /** \brief OpenMP single directive. + */ + CXCursor_OMPSingleDirective = 237, + + /** \brief OpenMP parallel for directive. + */ + CXCursor_OMPParallelForDirective = 238, + + /** \brief OpenMP parallel sections directive. + */ + CXCursor_OMPParallelSectionsDirective = 239, + + /** \brief OpenMP task directive. + */ + CXCursor_OMPTaskDirective = 240, + + /** \brief OpenMP master directive. + */ + CXCursor_OMPMasterDirective = 241, + + /** \brief OpenMP critical directive. + */ + CXCursor_OMPCriticalDirective = 242, + + /** \brief OpenMP taskyield directive. + */ + CXCursor_OMPTaskyieldDirective = 243, + + /** \brief OpenMP barrier directive. + */ + CXCursor_OMPBarrierDirective = 244, + + /** \brief OpenMP taskwait directive. + */ + CXCursor_OMPTaskwaitDirective = 245, + + /** \brief OpenMP flush directive. + */ + CXCursor_OMPFlushDirective = 246, + + /** \brief Windows Structured Exception Handling's leave statement. + */ + CXCursor_SEHLeaveStmt = 247, + + /** \brief OpenMP ordered directive. + */ + CXCursor_OMPOrderedDirective = 248, + + /** \brief OpenMP atomic directive. + */ + CXCursor_OMPAtomicDirective = 249, + + /** \brief OpenMP for SIMD directive. + */ + CXCursor_OMPForSimdDirective = 250, + + /** \brief OpenMP parallel for SIMD directive. + */ + CXCursor_OMPParallelForSimdDirective = 251, + + /** \brief OpenMP target directive. + */ + CXCursor_OMPTargetDirective = 252, + + /** \brief OpenMP teams directive. + */ + CXCursor_OMPTeamsDirective = 253, + + /** \brief OpenMP taskgroup directive. + */ + CXCursor_OMPTaskgroupDirective = 254, + + /** \brief OpenMP cancellation point directive. + */ + CXCursor_OMPCancellationPointDirective = 255, + + /** \brief OpenMP cancel directive. + */ + CXCursor_OMPCancelDirective = 256, + + CXCursor_LastStmt = CXCursor_OMPCancelDirective, + + /** + * \brief Cursor that represents the translation unit itself. + * + * The translation unit cursor exists primarily to act as the root + * cursor for traversing the contents of a translation unit. + */ + CXCursor_TranslationUnit = 300, + + /* Attributes */ + CXCursor_FirstAttr = 400, + /** + * \brief An attribute whose specific kind is not exposed via this + * interface. + */ + CXCursor_UnexposedAttr = 400, + + CXCursor_IBActionAttr = 401, + CXCursor_IBOutletAttr = 402, + CXCursor_IBOutletCollectionAttr = 403, + CXCursor_CXXFinalAttr = 404, + CXCursor_CXXOverrideAttr = 405, + CXCursor_AnnotateAttr = 406, + CXCursor_AsmLabelAttr = 407, + CXCursor_PackedAttr = 408, + CXCursor_PureAttr = 409, + CXCursor_ConstAttr = 410, + CXCursor_NoDuplicateAttr = 411, + CXCursor_CUDAConstantAttr = 412, + CXCursor_CUDADeviceAttr = 413, + CXCursor_CUDAGlobalAttr = 414, + CXCursor_CUDAHostAttr = 415, + CXCursor_CUDASharedAttr = 416, + CXCursor_LastAttr = CXCursor_CUDASharedAttr, + + /* Preprocessing */ + CXCursor_PreprocessingDirective = 500, + CXCursor_MacroDefinition = 501, + CXCursor_MacroExpansion = 502, + CXCursor_MacroInstantiation = CXCursor_MacroExpansion, + CXCursor_InclusionDirective = 503, + CXCursor_FirstPreprocessing = CXCursor_PreprocessingDirective, + CXCursor_LastPreprocessing = CXCursor_InclusionDirective, + + /* Extra Declarations */ + /** + * \brief A module import declaration. + */ + CXCursor_ModuleImportDecl = 600, + CXCursor_FirstExtraDecl = CXCursor_ModuleImportDecl, + CXCursor_LastExtraDecl = CXCursor_ModuleImportDecl, + + /** + * \brief A code completion overload candidate. + */ + CXCursor_OverloadCandidate = 700 +}; + +/** + * \brief A cursor representing some element in the abstract syntax tree for + * a translation unit. + * + * The cursor abstraction unifies the different kinds of entities in a + * program--declaration, statements, expressions, references to declarations, + * etc.--under a single "cursor" abstraction with a common set of operations. + * Common operation for a cursor include: getting the physical location in + * a source file where the cursor points, getting the name associated with a + * cursor, and retrieving cursors for any child nodes of a particular cursor. + * + * Cursors can be produced in two specific ways. + * clang_getTranslationUnitCursor() produces a cursor for a translation unit, + * from which one can use clang_visitChildren() to explore the rest of the + * translation unit. clang_getCursor() maps from a physical source location + * to the entity that resides at that location, allowing one to map from the + * source code into the AST. + */ +typedef struct { + enum CXCursorKind kind; + int xdata; + const void *data[3]; +} CXCursor; + +/** + * \defgroup CINDEX_CURSOR_MANIP Cursor manipulations + * + * @{ + */ + +/** + * \brief Retrieve the NULL cursor, which represents no entity. + */ +CINDEX_LINKAGE CXCursor clang_getNullCursor(void); + +/** + * \brief Retrieve the cursor that represents the given translation unit. + * + * The translation unit cursor can be used to start traversing the + * various declarations within the given translation unit. + */ +CINDEX_LINKAGE CXCursor clang_getTranslationUnitCursor(CXTranslationUnit); + +/** + * \brief Determine whether two cursors are equivalent. + */ +CINDEX_LINKAGE unsigned clang_equalCursors(CXCursor, CXCursor); + +/** + * \brief Returns non-zero if \p cursor is null. + */ +CINDEX_LINKAGE int clang_Cursor_isNull(CXCursor cursor); + +/** + * \brief Compute a hash value for the given cursor. + */ +CINDEX_LINKAGE unsigned clang_hashCursor(CXCursor); + +/** + * \brief Retrieve the kind of the given cursor. + */ +CINDEX_LINKAGE enum CXCursorKind clang_getCursorKind(CXCursor); + +/** + * \brief Determine whether the given cursor kind represents a declaration. + */ +CINDEX_LINKAGE unsigned clang_isDeclaration(enum CXCursorKind); + +/** + * \brief Determine whether the given cursor kind represents a simple + * reference. + * + * Note that other kinds of cursors (such as expressions) can also refer to + * other cursors. Use clang_getCursorReferenced() to determine whether a + * particular cursor refers to another entity. + */ +CINDEX_LINKAGE unsigned clang_isReference(enum CXCursorKind); + +/** + * \brief Determine whether the given cursor kind represents an expression. + */ +CINDEX_LINKAGE unsigned clang_isExpression(enum CXCursorKind); + +/** + * \brief Determine whether the given cursor kind represents a statement. + */ +CINDEX_LINKAGE unsigned clang_isStatement(enum CXCursorKind); + +/** + * \brief Determine whether the given cursor kind represents an attribute. + */ +CINDEX_LINKAGE unsigned clang_isAttribute(enum CXCursorKind); + +/** + * \brief Determine whether the given cursor kind represents an invalid + * cursor. + */ +CINDEX_LINKAGE unsigned clang_isInvalid(enum CXCursorKind); + +/** + * \brief Determine whether the given cursor kind represents a translation + * unit. + */ +CINDEX_LINKAGE unsigned clang_isTranslationUnit(enum CXCursorKind); + +/*** + * \brief Determine whether the given cursor represents a preprocessing + * element, such as a preprocessor directive or macro instantiation. + */ +CINDEX_LINKAGE unsigned clang_isPreprocessing(enum CXCursorKind); + +/*** + * \brief Determine whether the given cursor represents a currently + * unexposed piece of the AST (e.g., CXCursor_UnexposedStmt). + */ +CINDEX_LINKAGE unsigned clang_isUnexposed(enum CXCursorKind); + +/** + * \brief Describe the linkage of the entity referred to by a cursor. + */ +enum CXLinkageKind { + /** \brief This value indicates that no linkage information is available + * for a provided CXCursor. */ + CXLinkage_Invalid, + /** + * \brief This is the linkage for variables, parameters, and so on that + * have automatic storage. This covers normal (non-extern) local variables. + */ + CXLinkage_NoLinkage, + /** \brief This is the linkage for static variables and static functions. */ + CXLinkage_Internal, + /** \brief This is the linkage for entities with external linkage that live + * in C++ anonymous namespaces.*/ + CXLinkage_UniqueExternal, + /** \brief This is the linkage for entities with true, external linkage. */ + CXLinkage_External +}; + +/** + * \brief Determine the linkage of the entity referred to by a given cursor. + */ +CINDEX_LINKAGE enum CXLinkageKind clang_getCursorLinkage(CXCursor cursor); + +/** + * \brief Determine the availability of the entity that this cursor refers to, + * taking the current target platform into account. + * + * \param cursor The cursor to query. + * + * \returns The availability of the cursor. + */ +CINDEX_LINKAGE enum CXAvailabilityKind +clang_getCursorAvailability(CXCursor cursor); + +/** + * Describes the availability of a given entity on a particular platform, e.g., + * a particular class might only be available on Mac OS 10.7 or newer. + */ +typedef struct CXPlatformAvailability { + /** + * \brief A string that describes the platform for which this structure + * provides availability information. + * + * Possible values are "ios" or "macosx". + */ + CXString Platform; + /** + * \brief The version number in which this entity was introduced. + */ + CXVersion Introduced; + /** + * \brief The version number in which this entity was deprecated (but is + * still available). + */ + CXVersion Deprecated; + /** + * \brief The version number in which this entity was obsoleted, and therefore + * is no longer available. + */ + CXVersion Obsoleted; + /** + * \brief Whether the entity is unconditionally unavailable on this platform. + */ + int Unavailable; + /** + * \brief An optional message to provide to a user of this API, e.g., to + * suggest replacement APIs. + */ + CXString Message; +} CXPlatformAvailability; + +/** + * \brief Determine the availability of the entity that this cursor refers to + * on any platforms for which availability information is known. + * + * \param cursor The cursor to query. + * + * \param always_deprecated If non-NULL, will be set to indicate whether the + * entity is deprecated on all platforms. + * + * \param deprecated_message If non-NULL, will be set to the message text + * provided along with the unconditional deprecation of this entity. The client + * is responsible for deallocating this string. + * + * \param always_unavailable If non-NULL, will be set to indicate whether the + * entity is unavailable on all platforms. + * + * \param unavailable_message If non-NULL, will be set to the message text + * provided along with the unconditional unavailability of this entity. The + * client is responsible for deallocating this string. + * + * \param availability If non-NULL, an array of CXPlatformAvailability instances + * that will be populated with platform availability information, up to either + * the number of platforms for which availability information is available (as + * returned by this function) or \c availability_size, whichever is smaller. + * + * \param availability_size The number of elements available in the + * \c availability array. + * + * \returns The number of platforms (N) for which availability information is + * available (which is unrelated to \c availability_size). + * + * Note that the client is responsible for calling + * \c clang_disposeCXPlatformAvailability to free each of the + * platform-availability structures returned. There are + * \c min(N, availability_size) such structures. + */ +CINDEX_LINKAGE int +clang_getCursorPlatformAvailability(CXCursor cursor, + int *always_deprecated, + CXString *deprecated_message, + int *always_unavailable, + CXString *unavailable_message, + CXPlatformAvailability *availability, + int availability_size); + +/** + * \brief Free the memory associated with a \c CXPlatformAvailability structure. + */ +CINDEX_LINKAGE void +clang_disposeCXPlatformAvailability(CXPlatformAvailability *availability); + +/** + * \brief Describe the "language" of the entity referred to by a cursor. + */ +enum CXLanguageKind { + CXLanguage_Invalid = 0, + CXLanguage_C, + CXLanguage_ObjC, + CXLanguage_CPlusPlus +}; + +/** + * \brief Determine the "language" of the entity referred to by a given cursor. + */ +CINDEX_LINKAGE enum CXLanguageKind clang_getCursorLanguage(CXCursor cursor); + +/** + * \brief Returns the translation unit that a cursor originated from. + */ +CINDEX_LINKAGE CXTranslationUnit clang_Cursor_getTranslationUnit(CXCursor); + + +/** + * \brief A fast container representing a set of CXCursors. + */ +typedef struct CXCursorSetImpl *CXCursorSet; + +/** + * \brief Creates an empty CXCursorSet. + */ +CINDEX_LINKAGE CXCursorSet clang_createCXCursorSet(void); + +/** + * \brief Disposes a CXCursorSet and releases its associated memory. + */ +CINDEX_LINKAGE void clang_disposeCXCursorSet(CXCursorSet cset); + +/** + * \brief Queries a CXCursorSet to see if it contains a specific CXCursor. + * + * \returns non-zero if the set contains the specified cursor. +*/ +CINDEX_LINKAGE unsigned clang_CXCursorSet_contains(CXCursorSet cset, + CXCursor cursor); + +/** + * \brief Inserts a CXCursor into a CXCursorSet. + * + * \returns zero if the CXCursor was already in the set, and non-zero otherwise. +*/ +CINDEX_LINKAGE unsigned clang_CXCursorSet_insert(CXCursorSet cset, + CXCursor cursor); + +/** + * \brief Determine the semantic parent of the given cursor. + * + * The semantic parent of a cursor is the cursor that semantically contains + * the given \p cursor. For many declarations, the lexical and semantic parents + * are equivalent (the lexical parent is returned by + * \c clang_getCursorLexicalParent()). They diverge when declarations or + * definitions are provided out-of-line. For example: + * + * \code + * class C { + * void f(); + * }; + * + * void C::f() { } + * \endcode + * + * In the out-of-line definition of \c C::f, the semantic parent is + * the class \c C, of which this function is a member. The lexical parent is + * the place where the declaration actually occurs in the source code; in this + * case, the definition occurs in the translation unit. In general, the + * lexical parent for a given entity can change without affecting the semantics + * of the program, and the lexical parent of different declarations of the + * same entity may be different. Changing the semantic parent of a declaration, + * on the other hand, can have a major impact on semantics, and redeclarations + * of a particular entity should all have the same semantic context. + * + * In the example above, both declarations of \c C::f have \c C as their + * semantic context, while the lexical context of the first \c C::f is \c C + * and the lexical context of the second \c C::f is the translation unit. + * + * For global declarations, the semantic parent is the translation unit. + */ +CINDEX_LINKAGE CXCursor clang_getCursorSemanticParent(CXCursor cursor); + +/** + * \brief Determine the lexical parent of the given cursor. + * + * The lexical parent of a cursor is the cursor in which the given \p cursor + * was actually written. For many declarations, the lexical and semantic parents + * are equivalent (the semantic parent is returned by + * \c clang_getCursorSemanticParent()). They diverge when declarations or + * definitions are provided out-of-line. For example: + * + * \code + * class C { + * void f(); + * }; + * + * void C::f() { } + * \endcode + * + * In the out-of-line definition of \c C::f, the semantic parent is + * the class \c C, of which this function is a member. The lexical parent is + * the place where the declaration actually occurs in the source code; in this + * case, the definition occurs in the translation unit. In general, the + * lexical parent for a given entity can change without affecting the semantics + * of the program, and the lexical parent of different declarations of the + * same entity may be different. Changing the semantic parent of a declaration, + * on the other hand, can have a major impact on semantics, and redeclarations + * of a particular entity should all have the same semantic context. + * + * In the example above, both declarations of \c C::f have \c C as their + * semantic context, while the lexical context of the first \c C::f is \c C + * and the lexical context of the second \c C::f is the translation unit. + * + * For declarations written in the global scope, the lexical parent is + * the translation unit. + */ +CINDEX_LINKAGE CXCursor clang_getCursorLexicalParent(CXCursor cursor); + +/** + * \brief Determine the set of methods that are overridden by the given + * method. + * + * In both Objective-C and C++, a method (aka virtual member function, + * in C++) can override a virtual method in a base class. For + * Objective-C, a method is said to override any method in the class's + * base class, its protocols, or its categories' protocols, that has the same + * selector and is of the same kind (class or instance). + * If no such method exists, the search continues to the class's superclass, + * its protocols, and its categories, and so on. A method from an Objective-C + * implementation is considered to override the same methods as its + * corresponding method in the interface. + * + * For C++, a virtual member function overrides any virtual member + * function with the same signature that occurs in its base + * classes. With multiple inheritance, a virtual member function can + * override several virtual member functions coming from different + * base classes. + * + * In all cases, this function determines the immediate overridden + * method, rather than all of the overridden methods. For example, if + * a method is originally declared in a class A, then overridden in B + * (which in inherits from A) and also in C (which inherited from B), + * then the only overridden method returned from this function when + * invoked on C's method will be B's method. The client may then + * invoke this function again, given the previously-found overridden + * methods, to map out the complete method-override set. + * + * \param cursor A cursor representing an Objective-C or C++ + * method. This routine will compute the set of methods that this + * method overrides. + * + * \param overridden A pointer whose pointee will be replaced with a + * pointer to an array of cursors, representing the set of overridden + * methods. If there are no overridden methods, the pointee will be + * set to NULL. The pointee must be freed via a call to + * \c clang_disposeOverriddenCursors(). + * + * \param num_overridden A pointer to the number of overridden + * functions, will be set to the number of overridden functions in the + * array pointed to by \p overridden. + */ +CINDEX_LINKAGE void clang_getOverriddenCursors(CXCursor cursor, + CXCursor **overridden, + unsigned *num_overridden); + +/** + * \brief Free the set of overridden cursors returned by \c + * clang_getOverriddenCursors(). + */ +CINDEX_LINKAGE void clang_disposeOverriddenCursors(CXCursor *overridden); + +/** + * \brief Retrieve the file that is included by the given inclusion directive + * cursor. + */ +CINDEX_LINKAGE CXFile clang_getIncludedFile(CXCursor cursor); + +/** + * @} + */ + +/** + * \defgroup CINDEX_CURSOR_SOURCE Mapping between cursors and source code + * + * Cursors represent a location within the Abstract Syntax Tree (AST). These + * routines help map between cursors and the physical locations where the + * described entities occur in the source code. The mapping is provided in + * both directions, so one can map from source code to the AST and back. + * + * @{ + */ + +/** + * \brief Map a source location to the cursor that describes the entity at that + * location in the source code. + * + * clang_getCursor() maps an arbitrary source location within a translation + * unit down to the most specific cursor that describes the entity at that + * location. For example, given an expression \c x + y, invoking + * clang_getCursor() with a source location pointing to "x" will return the + * cursor for "x"; similarly for "y". If the cursor points anywhere between + * "x" or "y" (e.g., on the + or the whitespace around it), clang_getCursor() + * will return a cursor referring to the "+" expression. + * + * \returns a cursor representing the entity at the given source location, or + * a NULL cursor if no such entity can be found. + */ +CINDEX_LINKAGE CXCursor clang_getCursor(CXTranslationUnit, CXSourceLocation); + +/** + * \brief Retrieve the physical location of the source constructor referenced + * by the given cursor. + * + * The location of a declaration is typically the location of the name of that + * declaration, where the name of that declaration would occur if it is + * unnamed, or some keyword that introduces that particular declaration. + * The location of a reference is where that reference occurs within the + * source code. + */ +CINDEX_LINKAGE CXSourceLocation clang_getCursorLocation(CXCursor); + +/** + * \brief Retrieve the physical extent of the source construct referenced by + * the given cursor. + * + * The extent of a cursor starts with the file/line/column pointing at the + * first character within the source construct that the cursor refers to and + * ends with the last character within that source construct. For a + * declaration, the extent covers the declaration itself. For a reference, + * the extent covers the location of the reference (e.g., where the referenced + * entity was actually used). + */ +CINDEX_LINKAGE CXSourceRange clang_getCursorExtent(CXCursor); + +/** + * @} + */ + +/** + * \defgroup CINDEX_TYPES Type information for CXCursors + * + * @{ + */ + +/** + * \brief Describes the kind of type + */ +enum CXTypeKind { + /** + * \brief Represents an invalid type (e.g., where no type is available). + */ + CXType_Invalid = 0, + + /** + * \brief A type whose specific kind is not exposed via this + * interface. + */ + CXType_Unexposed = 1, + + /* Builtin types */ + CXType_Void = 2, + CXType_Bool = 3, + CXType_Char_U = 4, + CXType_UChar = 5, + CXType_Char16 = 6, + CXType_Char32 = 7, + CXType_UShort = 8, + CXType_UInt = 9, + CXType_ULong = 10, + CXType_ULongLong = 11, + CXType_UInt128 = 12, + CXType_Char_S = 13, + CXType_SChar = 14, + CXType_WChar = 15, + CXType_Short = 16, + CXType_Int = 17, + CXType_Long = 18, + CXType_LongLong = 19, + CXType_Int128 = 20, + CXType_Float = 21, + CXType_Double = 22, + CXType_LongDouble = 23, + CXType_NullPtr = 24, + CXType_Overload = 25, + CXType_Dependent = 26, + CXType_ObjCId = 27, + CXType_ObjCClass = 28, + CXType_ObjCSel = 29, + CXType_FirstBuiltin = CXType_Void, + CXType_LastBuiltin = CXType_ObjCSel, + + CXType_Complex = 100, + CXType_Pointer = 101, + CXType_BlockPointer = 102, + CXType_LValueReference = 103, + CXType_RValueReference = 104, + CXType_Record = 105, + CXType_Enum = 106, + CXType_Typedef = 107, + CXType_ObjCInterface = 108, + CXType_ObjCObjectPointer = 109, + CXType_FunctionNoProto = 110, + CXType_FunctionProto = 111, + CXType_ConstantArray = 112, + CXType_Vector = 113, + CXType_IncompleteArray = 114, + CXType_VariableArray = 115, + CXType_DependentSizedArray = 116, + CXType_MemberPointer = 117 +}; + +/** + * \brief Describes the calling convention of a function type + */ +enum CXCallingConv { + CXCallingConv_Default = 0, + CXCallingConv_C = 1, + CXCallingConv_X86StdCall = 2, + CXCallingConv_X86FastCall = 3, + CXCallingConv_X86ThisCall = 4, + CXCallingConv_X86Pascal = 5, + CXCallingConv_AAPCS = 6, + CXCallingConv_AAPCS_VFP = 7, + /* Value 8 was PnaclCall, but it was never used, so it could safely be re-used. */ + CXCallingConv_IntelOclBicc = 9, + CXCallingConv_X86_64Win64 = 10, + CXCallingConv_X86_64SysV = 11, + CXCallingConv_X86VectorCall = 12, + + CXCallingConv_Invalid = 100, + CXCallingConv_Unexposed = 200 +}; + + +/** + * \brief The type of an element in the abstract syntax tree. + * + */ +typedef struct { + enum CXTypeKind kind; + void *data[2]; +} CXType; + +/** + * \brief Retrieve the type of a CXCursor (if any). + */ +CINDEX_LINKAGE CXType clang_getCursorType(CXCursor C); + +/** + * \brief Pretty-print the underlying type using the rules of the + * language of the translation unit from which it came. + * + * If the type is invalid, an empty string is returned. + */ +CINDEX_LINKAGE CXString clang_getTypeSpelling(CXType CT); + +/** + * \brief Retrieve the underlying type of a typedef declaration. + * + * If the cursor does not reference a typedef declaration, an invalid type is + * returned. + */ +CINDEX_LINKAGE CXType clang_getTypedefDeclUnderlyingType(CXCursor C); + +/** + * \brief Retrieve the integer type of an enum declaration. + * + * If the cursor does not reference an enum declaration, an invalid type is + * returned. + */ +CINDEX_LINKAGE CXType clang_getEnumDeclIntegerType(CXCursor C); + +/** + * \brief Retrieve the integer value of an enum constant declaration as a signed + * long long. + * + * If the cursor does not reference an enum constant declaration, LLONG_MIN is returned. + * Since this is also potentially a valid constant value, the kind of the cursor + * must be verified before calling this function. + */ +CINDEX_LINKAGE long long clang_getEnumConstantDeclValue(CXCursor C); + +/** + * \brief Retrieve the integer value of an enum constant declaration as an unsigned + * long long. + * + * If the cursor does not reference an enum constant declaration, ULLONG_MAX is returned. + * Since this is also potentially a valid constant value, the kind of the cursor + * must be verified before calling this function. + */ +CINDEX_LINKAGE unsigned long long clang_getEnumConstantDeclUnsignedValue(CXCursor C); + +/** + * \brief Retrieve the bit width of a bit field declaration as an integer. + * + * If a cursor that is not a bit field declaration is passed in, -1 is returned. + */ +CINDEX_LINKAGE int clang_getFieldDeclBitWidth(CXCursor C); + +/** + * \brief Retrieve the number of non-variadic arguments associated with a given + * cursor. + * + * The number of arguments can be determined for calls as well as for + * declarations of functions or methods. For other cursors -1 is returned. + */ +CINDEX_LINKAGE int clang_Cursor_getNumArguments(CXCursor C); + +/** + * \brief Retrieve the argument cursor of a function or method. + * + * The argument cursor can be determined for calls as well as for declarations + * of functions or methods. For other cursors and for invalid indices, an + * invalid cursor is returned. + */ +CINDEX_LINKAGE CXCursor clang_Cursor_getArgument(CXCursor C, unsigned i); + +/** + * \brief Describes the kind of a template argument. + * + * See the definition of llvm::clang::TemplateArgument::ArgKind for full + * element descriptions. + */ +enum CXTemplateArgumentKind { + CXTemplateArgumentKind_Null, + CXTemplateArgumentKind_Type, + CXTemplateArgumentKind_Declaration, + CXTemplateArgumentKind_NullPtr, + CXTemplateArgumentKind_Integral, + CXTemplateArgumentKind_Template, + CXTemplateArgumentKind_TemplateExpansion, + CXTemplateArgumentKind_Expression, + CXTemplateArgumentKind_Pack, + /* Indicates an error case, preventing the kind from being deduced. */ + CXTemplateArgumentKind_Invalid +}; + +/** + *\brief Returns the number of template args of a function decl representing a + * template specialization. + * + * If the argument cursor cannot be converted into a template function + * declaration, -1 is returned. + * + * For example, for the following declaration and specialization: + * template + * void foo() { ... } + * + * template <> + * void foo(); + * + * The value 3 would be returned from this call. + */ +CINDEX_LINKAGE int clang_Cursor_getNumTemplateArguments(CXCursor C); + +/** + * \brief Retrieve the kind of the I'th template argument of the CXCursor C. + * + * If the argument CXCursor does not represent a FunctionDecl, an invalid + * template argument kind is returned. + * + * For example, for the following declaration and specialization: + * template + * void foo() { ... } + * + * template <> + * void foo(); + * + * For I = 0, 1, and 2, Type, Integral, and Integral will be returned, + * respectively. + */ +CINDEX_LINKAGE enum CXTemplateArgumentKind clang_Cursor_getTemplateArgumentKind( + CXCursor C, unsigned I); + +/** + * \brief Retrieve a CXType representing the type of a TemplateArgument of a + * function decl representing a template specialization. + * + * If the argument CXCursor does not represent a FunctionDecl whose I'th + * template argument has a kind of CXTemplateArgKind_Integral, an invalid type + * is returned. + * + * For example, for the following declaration and specialization: + * template + * void foo() { ... } + * + * template <> + * void foo(); + * + * If called with I = 0, "float", will be returned. + * Invalid types will be returned for I == 1 or 2. + */ +CINDEX_LINKAGE CXType clang_Cursor_getTemplateArgumentType(CXCursor C, + unsigned I); + +/** + * \brief Retrieve the value of an Integral TemplateArgument (of a function + * decl representing a template specialization) as a signed long long. + * + * It is undefined to call this function on a CXCursor that does not represent a + * FunctionDecl or whose I'th template argument is not an integral value. + * + * For example, for the following declaration and specialization: + * template + * void foo() { ... } + * + * template <> + * void foo(); + * + * If called with I = 1 or 2, -7 or true will be returned, respectively. + * For I == 0, this function's behavior is undefined. + */ +CINDEX_LINKAGE long long clang_Cursor_getTemplateArgumentValue(CXCursor C, + unsigned I); + +/** + * \brief Retrieve the value of an Integral TemplateArgument (of a function + * decl representing a template specialization) as an unsigned long long. + * + * It is undefined to call this function on a CXCursor that does not represent a + * FunctionDecl or whose I'th template argument is not an integral value. + * + * For example, for the following declaration and specialization: + * template + * void foo() { ... } + * + * template <> + * void foo(); + * + * If called with I = 1 or 2, 2147483649 or true will be returned, respectively. + * For I == 0, this function's behavior is undefined. + */ +CINDEX_LINKAGE unsigned long long clang_Cursor_getTemplateArgumentUnsignedValue( + CXCursor C, unsigned I); + +/** + * \brief Determine whether two CXTypes represent the same type. + * + * \returns non-zero if the CXTypes represent the same type and + * zero otherwise. + */ +CINDEX_LINKAGE unsigned clang_equalTypes(CXType A, CXType B); + +/** + * \brief Return the canonical type for a CXType. + * + * Clang's type system explicitly models typedefs and all the ways + * a specific type can be represented. The canonical type is the underlying + * type with all the "sugar" removed. For example, if 'T' is a typedef + * for 'int', the canonical type for 'T' would be 'int'. + */ +CINDEX_LINKAGE CXType clang_getCanonicalType(CXType T); + +/** + * \brief Determine whether a CXType has the "const" qualifier set, + * without looking through typedefs that may have added "const" at a + * different level. + */ +CINDEX_LINKAGE unsigned clang_isConstQualifiedType(CXType T); + +/** + * \brief Determine whether a CXType has the "volatile" qualifier set, + * without looking through typedefs that may have added "volatile" at + * a different level. + */ +CINDEX_LINKAGE unsigned clang_isVolatileQualifiedType(CXType T); + +/** + * \brief Determine whether a CXType has the "restrict" qualifier set, + * without looking through typedefs that may have added "restrict" at a + * different level. + */ +CINDEX_LINKAGE unsigned clang_isRestrictQualifiedType(CXType T); + +/** + * \brief For pointer types, returns the type of the pointee. + */ +CINDEX_LINKAGE CXType clang_getPointeeType(CXType T); + +/** + * \brief Return the cursor for the declaration of the given type. + */ +CINDEX_LINKAGE CXCursor clang_getTypeDeclaration(CXType T); + +/** + * Returns the Objective-C type encoding for the specified declaration. + */ +CINDEX_LINKAGE CXString clang_getDeclObjCTypeEncoding(CXCursor C); + +/** + * \brief Retrieve the spelling of a given CXTypeKind. + */ +CINDEX_LINKAGE CXString clang_getTypeKindSpelling(enum CXTypeKind K); + +/** + * \brief Retrieve the calling convention associated with a function type. + * + * If a non-function type is passed in, CXCallingConv_Invalid is returned. + */ +CINDEX_LINKAGE enum CXCallingConv clang_getFunctionTypeCallingConv(CXType T); + +/** + * \brief Retrieve the return type associated with a function type. + * + * If a non-function type is passed in, an invalid type is returned. + */ +CINDEX_LINKAGE CXType clang_getResultType(CXType T); + +/** + * \brief Retrieve the number of non-variadic parameters associated with a + * function type. + * + * If a non-function type is passed in, -1 is returned. + */ +CINDEX_LINKAGE int clang_getNumArgTypes(CXType T); + +/** + * \brief Retrieve the type of a parameter of a function type. + * + * If a non-function type is passed in or the function does not have enough + * parameters, an invalid type is returned. + */ +CINDEX_LINKAGE CXType clang_getArgType(CXType T, unsigned i); + +/** + * \brief Return 1 if the CXType is a variadic function type, and 0 otherwise. + */ +CINDEX_LINKAGE unsigned clang_isFunctionTypeVariadic(CXType T); + +/** + * \brief Retrieve the return type associated with a given cursor. + * + * This only returns a valid type if the cursor refers to a function or method. + */ +CINDEX_LINKAGE CXType clang_getCursorResultType(CXCursor C); + +/** + * \brief Return 1 if the CXType is a POD (plain old data) type, and 0 + * otherwise. + */ +CINDEX_LINKAGE unsigned clang_isPODType(CXType T); + +/** + * \brief Return the element type of an array, complex, or vector type. + * + * If a type is passed in that is not an array, complex, or vector type, + * an invalid type is returned. + */ +CINDEX_LINKAGE CXType clang_getElementType(CXType T); + +/** + * \brief Return the number of elements of an array or vector type. + * + * If a type is passed in that is not an array or vector type, + * -1 is returned. + */ +CINDEX_LINKAGE long long clang_getNumElements(CXType T); + +/** + * \brief Return the element type of an array type. + * + * If a non-array type is passed in, an invalid type is returned. + */ +CINDEX_LINKAGE CXType clang_getArrayElementType(CXType T); + +/** + * \brief Return the array size of a constant array. + * + * If a non-array type is passed in, -1 is returned. + */ +CINDEX_LINKAGE long long clang_getArraySize(CXType T); + +/** + * \brief List the possible error codes for \c clang_Type_getSizeOf, + * \c clang_Type_getAlignOf, \c clang_Type_getOffsetOf and + * \c clang_Cursor_getOffsetOf. + * + * A value of this enumeration type can be returned if the target type is not + * a valid argument to sizeof, alignof or offsetof. + */ +enum CXTypeLayoutError { + /** + * \brief Type is of kind CXType_Invalid. + */ + CXTypeLayoutError_Invalid = -1, + /** + * \brief The type is an incomplete Type. + */ + CXTypeLayoutError_Incomplete = -2, + /** + * \brief The type is a dependent Type. + */ + CXTypeLayoutError_Dependent = -3, + /** + * \brief The type is not a constant size type. + */ + CXTypeLayoutError_NotConstantSize = -4, + /** + * \brief The Field name is not valid for this record. + */ + CXTypeLayoutError_InvalidFieldName = -5 +}; + +/** + * \brief Return the alignment of a type in bytes as per C++[expr.alignof] + * standard. + * + * If the type declaration is invalid, CXTypeLayoutError_Invalid is returned. + * If the type declaration is an incomplete type, CXTypeLayoutError_Incomplete + * is returned. + * If the type declaration is a dependent type, CXTypeLayoutError_Dependent is + * returned. + * If the type declaration is not a constant size type, + * CXTypeLayoutError_NotConstantSize is returned. + */ +CINDEX_LINKAGE long long clang_Type_getAlignOf(CXType T); + +/** + * \brief Return the class type of an member pointer type. + * + * If a non-member-pointer type is passed in, an invalid type is returned. + */ +CINDEX_LINKAGE CXType clang_Type_getClassType(CXType T); + +/** + * \brief Return the size of a type in bytes as per C++[expr.sizeof] standard. + * + * If the type declaration is invalid, CXTypeLayoutError_Invalid is returned. + * If the type declaration is an incomplete type, CXTypeLayoutError_Incomplete + * is returned. + * If the type declaration is a dependent type, CXTypeLayoutError_Dependent is + * returned. + */ +CINDEX_LINKAGE long long clang_Type_getSizeOf(CXType T); + +/** + * \brief Return the offset of a field named S in a record of type T in bits + * as it would be returned by __offsetof__ as per C++11[18.2p4] + * + * If the cursor is not a record field declaration, CXTypeLayoutError_Invalid + * is returned. + * If the field's type declaration is an incomplete type, + * CXTypeLayoutError_Incomplete is returned. + * If the field's type declaration is a dependent type, + * CXTypeLayoutError_Dependent is returned. + * If the field's name S is not found, + * CXTypeLayoutError_InvalidFieldName is returned. + */ +CINDEX_LINKAGE long long clang_Type_getOffsetOf(CXType T, const char *S); + +/** + * \brief Return the offset of the field represented by the Cursor. + * + * If the cursor is not a field declaration, -1 is returned. + * If the cursor semantic parent is not a record field declaration, + * CXTypeLayoutError_Invalid is returned. + * If the field's type declaration is an incomplete type, + * CXTypeLayoutError_Incomplete is returned. + * If the field's type declaration is a dependent type, + * CXTypeLayoutError_Dependent is returned. + * If the field's name S is not found, + * CXTypeLayoutError_InvalidFieldName is returned. + */ +CINDEX_LINKAGE long long clang_Cursor_getOffsetOfField(CXCursor C); + +/** + * \brief Determine whether the given cursor represents an anonymous record + * declaration. + */ +CINDEX_LINKAGE unsigned clang_Cursor_isAnonymous(CXCursor C); + + +enum CXRefQualifierKind { + /** \brief No ref-qualifier was provided. */ + CXRefQualifier_None = 0, + /** \brief An lvalue ref-qualifier was provided (\c &). */ + CXRefQualifier_LValue, + /** \brief An rvalue ref-qualifier was provided (\c &&). */ + CXRefQualifier_RValue +}; + +/** + * \brief Returns the number of template arguments for given class template + * specialization, or -1 if type \c T is not a class template specialization. + * + * Variadic argument packs count as only one argument, and can not be inspected + * further. + */ +CINDEX_LINKAGE int clang_Type_getNumTemplateArguments(CXType T); + +/** + * \brief Returns the type template argument of a template class specialization + * at given index. + * + * This function only returns template type arguments and does not handle + * template template arguments or variadic packs. + */ +CINDEX_LINKAGE CXType clang_Type_getTemplateArgumentAsType(CXType T, unsigned i); + +/** + * \brief Retrieve the ref-qualifier kind of a function or method. + * + * The ref-qualifier is returned for C++ functions or methods. For other types + * or non-C++ declarations, CXRefQualifier_None is returned. + */ +CINDEX_LINKAGE enum CXRefQualifierKind clang_Type_getCXXRefQualifier(CXType T); + +/** + * \brief Returns non-zero if the cursor specifies a Record member that is a + * bitfield. + */ +CINDEX_LINKAGE unsigned clang_Cursor_isBitField(CXCursor C); + +/** + * \brief Returns 1 if the base class specified by the cursor with kind + * CX_CXXBaseSpecifier is virtual. + */ +CINDEX_LINKAGE unsigned clang_isVirtualBase(CXCursor); + +/** + * \brief Represents the C++ access control level to a base class for a + * cursor with kind CX_CXXBaseSpecifier. + */ +enum CX_CXXAccessSpecifier { + CX_CXXInvalidAccessSpecifier, + CX_CXXPublic, + CX_CXXProtected, + CX_CXXPrivate +}; + +/** + * \brief Returns the access control level for the referenced object. + * + * If the cursor refers to a C++ declaration, its access control level within its + * parent scope is returned. Otherwise, if the cursor refers to a base specifier or + * access specifier, the specifier itself is returned. + */ +CINDEX_LINKAGE enum CX_CXXAccessSpecifier clang_getCXXAccessSpecifier(CXCursor); + +/** + * \brief Represents the storage classes as declared in the source. CX_SC_Invalid + * was added for the case that the passed cursor in not a declaration. + */ +enum CX_StorageClass { + CX_SC_Invalid, + CX_SC_None, + CX_SC_Extern, + CX_SC_Static, + CX_SC_PrivateExtern, + CX_SC_OpenCLWorkGroupLocal, + CX_SC_Auto, + CX_SC_Register +}; + +/** + * \brief Returns the storage class for a function or variable declaration. + * + * If the passed in Cursor is not a function or variable declaration, + * CX_SC_Invalid is returned else the storage class. + */ +CINDEX_LINKAGE enum CX_StorageClass clang_Cursor_getStorageClass(CXCursor); + +/** + * \brief Determine the number of overloaded declarations referenced by a + * \c CXCursor_OverloadedDeclRef cursor. + * + * \param cursor The cursor whose overloaded declarations are being queried. + * + * \returns The number of overloaded declarations referenced by \c cursor. If it + * is not a \c CXCursor_OverloadedDeclRef cursor, returns 0. + */ +CINDEX_LINKAGE unsigned clang_getNumOverloadedDecls(CXCursor cursor); + +/** + * \brief Retrieve a cursor for one of the overloaded declarations referenced + * by a \c CXCursor_OverloadedDeclRef cursor. + * + * \param cursor The cursor whose overloaded declarations are being queried. + * + * \param index The zero-based index into the set of overloaded declarations in + * the cursor. + * + * \returns A cursor representing the declaration referenced by the given + * \c cursor at the specified \c index. If the cursor does not have an + * associated set of overloaded declarations, or if the index is out of bounds, + * returns \c clang_getNullCursor(); + */ +CINDEX_LINKAGE CXCursor clang_getOverloadedDecl(CXCursor cursor, + unsigned index); + +/** + * @} + */ + +/** + * \defgroup CINDEX_ATTRIBUTES Information for attributes + * + * @{ + */ + + +/** + * \brief For cursors representing an iboutletcollection attribute, + * this function returns the collection element type. + * + */ +CINDEX_LINKAGE CXType clang_getIBOutletCollectionType(CXCursor); + +/** + * @} + */ + +/** + * \defgroup CINDEX_CURSOR_TRAVERSAL Traversing the AST with cursors + * + * These routines provide the ability to traverse the abstract syntax tree + * using cursors. + * + * @{ + */ + +/** + * \brief Describes how the traversal of the children of a particular + * cursor should proceed after visiting a particular child cursor. + * + * A value of this enumeration type should be returned by each + * \c CXCursorVisitor to indicate how clang_visitChildren() proceed. + */ +enum CXChildVisitResult { + /** + * \brief Terminates the cursor traversal. + */ + CXChildVisit_Break, + /** + * \brief Continues the cursor traversal with the next sibling of + * the cursor just visited, without visiting its children. + */ + CXChildVisit_Continue, + /** + * \brief Recursively traverse the children of this cursor, using + * the same visitor and client data. + */ + CXChildVisit_Recurse +}; + +/** + * \brief Visitor invoked for each cursor found by a traversal. + * + * This visitor function will be invoked for each cursor found by + * clang_visitCursorChildren(). Its first argument is the cursor being + * visited, its second argument is the parent visitor for that cursor, + * and its third argument is the client data provided to + * clang_visitCursorChildren(). + * + * The visitor should return one of the \c CXChildVisitResult values + * to direct clang_visitCursorChildren(). + */ +typedef enum CXChildVisitResult (*CXCursorVisitor)(CXCursor cursor, + CXCursor parent, + CXClientData client_data); + +/** + * \brief Visit the children of a particular cursor. + * + * This function visits all the direct children of the given cursor, + * invoking the given \p visitor function with the cursors of each + * visited child. The traversal may be recursive, if the visitor returns + * \c CXChildVisit_Recurse. The traversal may also be ended prematurely, if + * the visitor returns \c CXChildVisit_Break. + * + * \param parent the cursor whose child may be visited. All kinds of + * cursors can be visited, including invalid cursors (which, by + * definition, have no children). + * + * \param visitor the visitor function that will be invoked for each + * child of \p parent. + * + * \param client_data pointer data supplied by the client, which will + * be passed to the visitor each time it is invoked. + * + * \returns a non-zero value if the traversal was terminated + * prematurely by the visitor returning \c CXChildVisit_Break. + */ +CINDEX_LINKAGE unsigned clang_visitChildren(CXCursor parent, + CXCursorVisitor visitor, + CXClientData client_data); +#ifdef __has_feature +# if __has_feature(blocks) +/** + * \brief Visitor invoked for each cursor found by a traversal. + * + * This visitor block will be invoked for each cursor found by + * clang_visitChildrenWithBlock(). Its first argument is the cursor being + * visited, its second argument is the parent visitor for that cursor. + * + * The visitor should return one of the \c CXChildVisitResult values + * to direct clang_visitChildrenWithBlock(). + */ +typedef enum CXChildVisitResult + (^CXCursorVisitorBlock)(CXCursor cursor, CXCursor parent); + +/** + * Visits the children of a cursor using the specified block. Behaves + * identically to clang_visitChildren() in all other respects. + */ +unsigned clang_visitChildrenWithBlock(CXCursor parent, + CXCursorVisitorBlock block); +# endif +#endif + +/** + * @} + */ + +/** + * \defgroup CINDEX_CURSOR_XREF Cross-referencing in the AST + * + * These routines provide the ability to determine references within and + * across translation units, by providing the names of the entities referenced + * by cursors, follow reference cursors to the declarations they reference, + * and associate declarations with their definitions. + * + * @{ + */ + +/** + * \brief Retrieve a Unified Symbol Resolution (USR) for the entity referenced + * by the given cursor. + * + * A Unified Symbol Resolution (USR) is a string that identifies a particular + * entity (function, class, variable, etc.) within a program. USRs can be + * compared across translation units to determine, e.g., when references in + * one translation refer to an entity defined in another translation unit. + */ +CINDEX_LINKAGE CXString clang_getCursorUSR(CXCursor); + +/** + * \brief Construct a USR for a specified Objective-C class. + */ +CINDEX_LINKAGE CXString clang_constructUSR_ObjCClass(const char *class_name); + +/** + * \brief Construct a USR for a specified Objective-C category. + */ +CINDEX_LINKAGE CXString + clang_constructUSR_ObjCCategory(const char *class_name, + const char *category_name); + +/** + * \brief Construct a USR for a specified Objective-C protocol. + */ +CINDEX_LINKAGE CXString + clang_constructUSR_ObjCProtocol(const char *protocol_name); + + +/** + * \brief Construct a USR for a specified Objective-C instance variable and + * the USR for its containing class. + */ +CINDEX_LINKAGE CXString clang_constructUSR_ObjCIvar(const char *name, + CXString classUSR); + +/** + * \brief Construct a USR for a specified Objective-C method and + * the USR for its containing class. + */ +CINDEX_LINKAGE CXString clang_constructUSR_ObjCMethod(const char *name, + unsigned isInstanceMethod, + CXString classUSR); + +/** + * \brief Construct a USR for a specified Objective-C property and the USR + * for its containing class. + */ +CINDEX_LINKAGE CXString clang_constructUSR_ObjCProperty(const char *property, + CXString classUSR); + +/** + * \brief Retrieve a name for the entity referenced by this cursor. + */ +CINDEX_LINKAGE CXString clang_getCursorSpelling(CXCursor); + +/** + * \brief Retrieve a range for a piece that forms the cursors spelling name. + * Most of the times there is only one range for the complete spelling but for + * Objective-C methods and Objective-C message expressions, there are multiple + * pieces for each selector identifier. + * + * \param pieceIndex the index of the spelling name piece. If this is greater + * than the actual number of pieces, it will return a NULL (invalid) range. + * + * \param options Reserved. + */ +CINDEX_LINKAGE CXSourceRange clang_Cursor_getSpellingNameRange(CXCursor, + unsigned pieceIndex, + unsigned options); + +/** + * \brief Retrieve the display name for the entity referenced by this cursor. + * + * The display name contains extra information that helps identify the cursor, + * such as the parameters of a function or template or the arguments of a + * class template specialization. + */ +CINDEX_LINKAGE CXString clang_getCursorDisplayName(CXCursor); + +/** \brief For a cursor that is a reference, retrieve a cursor representing the + * entity that it references. + * + * Reference cursors refer to other entities in the AST. For example, an + * Objective-C superclass reference cursor refers to an Objective-C class. + * This function produces the cursor for the Objective-C class from the + * cursor for the superclass reference. If the input cursor is a declaration or + * definition, it returns that declaration or definition unchanged. + * Otherwise, returns the NULL cursor. + */ +CINDEX_LINKAGE CXCursor clang_getCursorReferenced(CXCursor); + +/** + * \brief For a cursor that is either a reference to or a declaration + * of some entity, retrieve a cursor that describes the definition of + * that entity. + * + * Some entities can be declared multiple times within a translation + * unit, but only one of those declarations can also be a + * definition. For example, given: + * + * \code + * int f(int, int); + * int g(int x, int y) { return f(x, y); } + * int f(int a, int b) { return a + b; } + * int f(int, int); + * \endcode + * + * there are three declarations of the function "f", but only the + * second one is a definition. The clang_getCursorDefinition() + * function will take any cursor pointing to a declaration of "f" + * (the first or fourth lines of the example) or a cursor referenced + * that uses "f" (the call to "f' inside "g") and will return a + * declaration cursor pointing to the definition (the second "f" + * declaration). + * + * If given a cursor for which there is no corresponding definition, + * e.g., because there is no definition of that entity within this + * translation unit, returns a NULL cursor. + */ +CINDEX_LINKAGE CXCursor clang_getCursorDefinition(CXCursor); + +/** + * \brief Determine whether the declaration pointed to by this cursor + * is also a definition of that entity. + */ +CINDEX_LINKAGE unsigned clang_isCursorDefinition(CXCursor); + +/** + * \brief Retrieve the canonical cursor corresponding to the given cursor. + * + * In the C family of languages, many kinds of entities can be declared several + * times within a single translation unit. For example, a structure type can + * be forward-declared (possibly multiple times) and later defined: + * + * \code + * struct X; + * struct X; + * struct X { + * int member; + * }; + * \endcode + * + * The declarations and the definition of \c X are represented by three + * different cursors, all of which are declarations of the same underlying + * entity. One of these cursor is considered the "canonical" cursor, which + * is effectively the representative for the underlying entity. One can + * determine if two cursors are declarations of the same underlying entity by + * comparing their canonical cursors. + * + * \returns The canonical cursor for the entity referred to by the given cursor. + */ +CINDEX_LINKAGE CXCursor clang_getCanonicalCursor(CXCursor); + + +/** + * \brief If the cursor points to a selector identifier in an Objective-C + * method or message expression, this returns the selector index. + * + * After getting a cursor with #clang_getCursor, this can be called to + * determine if the location points to a selector identifier. + * + * \returns The selector index if the cursor is an Objective-C method or message + * expression and the cursor is pointing to a selector identifier, or -1 + * otherwise. + */ +CINDEX_LINKAGE int clang_Cursor_getObjCSelectorIndex(CXCursor); + +/** + * \brief Given a cursor pointing to a C++ method call or an Objective-C + * message, returns non-zero if the method/message is "dynamic", meaning: + * + * For a C++ method: the call is virtual. + * For an Objective-C message: the receiver is an object instance, not 'super' + * or a specific class. + * + * If the method/message is "static" or the cursor does not point to a + * method/message, it will return zero. + */ +CINDEX_LINKAGE int clang_Cursor_isDynamicCall(CXCursor C); + +/** + * \brief Given a cursor pointing to an Objective-C message, returns the CXType + * of the receiver. + */ +CINDEX_LINKAGE CXType clang_Cursor_getReceiverType(CXCursor C); + +/** + * \brief Property attributes for a \c CXCursor_ObjCPropertyDecl. + */ +typedef enum { + CXObjCPropertyAttr_noattr = 0x00, + CXObjCPropertyAttr_readonly = 0x01, + CXObjCPropertyAttr_getter = 0x02, + CXObjCPropertyAttr_assign = 0x04, + CXObjCPropertyAttr_readwrite = 0x08, + CXObjCPropertyAttr_retain = 0x10, + CXObjCPropertyAttr_copy = 0x20, + CXObjCPropertyAttr_nonatomic = 0x40, + CXObjCPropertyAttr_setter = 0x80, + CXObjCPropertyAttr_atomic = 0x100, + CXObjCPropertyAttr_weak = 0x200, + CXObjCPropertyAttr_strong = 0x400, + CXObjCPropertyAttr_unsafe_unretained = 0x800 +} CXObjCPropertyAttrKind; + +/** + * \brief Given a cursor that represents a property declaration, return the + * associated property attributes. The bits are formed from + * \c CXObjCPropertyAttrKind. + * + * \param reserved Reserved for future use, pass 0. + */ +CINDEX_LINKAGE unsigned clang_Cursor_getObjCPropertyAttributes(CXCursor C, + unsigned reserved); + +/** + * \brief 'Qualifiers' written next to the return and parameter types in + * Objective-C method declarations. + */ +typedef enum { + CXObjCDeclQualifier_None = 0x0, + CXObjCDeclQualifier_In = 0x1, + CXObjCDeclQualifier_Inout = 0x2, + CXObjCDeclQualifier_Out = 0x4, + CXObjCDeclQualifier_Bycopy = 0x8, + CXObjCDeclQualifier_Byref = 0x10, + CXObjCDeclQualifier_Oneway = 0x20 +} CXObjCDeclQualifierKind; + +/** + * \brief Given a cursor that represents an Objective-C method or parameter + * declaration, return the associated Objective-C qualifiers for the return + * type or the parameter respectively. The bits are formed from + * CXObjCDeclQualifierKind. + */ +CINDEX_LINKAGE unsigned clang_Cursor_getObjCDeclQualifiers(CXCursor C); + +/** + * \brief Given a cursor that represents an Objective-C method or property + * declaration, return non-zero if the declaration was affected by "@optional". + * Returns zero if the cursor is not such a declaration or it is "@required". + */ +CINDEX_LINKAGE unsigned clang_Cursor_isObjCOptional(CXCursor C); + +/** + * \brief Returns non-zero if the given cursor is a variadic function or method. + */ +CINDEX_LINKAGE unsigned clang_Cursor_isVariadic(CXCursor C); + +/** + * \brief Given a cursor that represents a declaration, return the associated + * comment's source range. The range may include multiple consecutive comments + * with whitespace in between. + */ +CINDEX_LINKAGE CXSourceRange clang_Cursor_getCommentRange(CXCursor C); + +/** + * \brief Given a cursor that represents a declaration, return the associated + * comment text, including comment markers. + */ +CINDEX_LINKAGE CXString clang_Cursor_getRawCommentText(CXCursor C); + +/** + * \brief Given a cursor that represents a documentable entity (e.g., + * declaration), return the associated \\brief paragraph; otherwise return the + * first paragraph. + */ +CINDEX_LINKAGE CXString clang_Cursor_getBriefCommentText(CXCursor C); + +/** + * @} + */ + +/** \defgroup CINDEX_MANGLE Name Mangling API Functions + * + * @{ + */ + +/** + * \brief Retrieve the CXString representing the mangled name of the cursor. + */ +CINDEX_LINKAGE CXString clang_Cursor_getMangling(CXCursor); + +/** + * @} + */ + +/** + * \defgroup CINDEX_MODULE Module introspection + * + * The functions in this group provide access to information about modules. + * + * @{ + */ + +typedef void *CXModule; + +/** + * \brief Given a CXCursor_ModuleImportDecl cursor, return the associated module. + */ +CINDEX_LINKAGE CXModule clang_Cursor_getModule(CXCursor C); + +/** + * \brief Given a CXFile header file, return the module that contains it, if one + * exists. + */ +CINDEX_LINKAGE CXModule clang_getModuleForFile(CXTranslationUnit, CXFile); + +/** + * \param Module a module object. + * + * \returns the module file where the provided module object came from. + */ +CINDEX_LINKAGE CXFile clang_Module_getASTFile(CXModule Module); + +/** + * \param Module a module object. + * + * \returns the parent of a sub-module or NULL if the given module is top-level, + * e.g. for 'std.vector' it will return the 'std' module. + */ +CINDEX_LINKAGE CXModule clang_Module_getParent(CXModule Module); + +/** + * \param Module a module object. + * + * \returns the name of the module, e.g. for the 'std.vector' sub-module it + * will return "vector". + */ +CINDEX_LINKAGE CXString clang_Module_getName(CXModule Module); + +/** + * \param Module a module object. + * + * \returns the full name of the module, e.g. "std.vector". + */ +CINDEX_LINKAGE CXString clang_Module_getFullName(CXModule Module); + +/** + * \param Module a module object. + * + * \returns non-zero if the module is a system one. + */ +CINDEX_LINKAGE int clang_Module_isSystem(CXModule Module); + +/** + * \param Module a module object. + * + * \returns the number of top level headers associated with this module. + */ +CINDEX_LINKAGE unsigned clang_Module_getNumTopLevelHeaders(CXTranslationUnit, + CXModule Module); + +/** + * \param Module a module object. + * + * \param Index top level header index (zero-based). + * + * \returns the specified top level header associated with the module. + */ +CINDEX_LINKAGE +CXFile clang_Module_getTopLevelHeader(CXTranslationUnit, + CXModule Module, unsigned Index); + +/** + * @} + */ + +/** + * \defgroup CINDEX_CPP C++ AST introspection + * + * The routines in this group provide access information in the ASTs specific + * to C++ language features. + * + * @{ + */ + +/** + * \brief Determine if a C++ member function or member function template is + * pure virtual. + */ +CINDEX_LINKAGE unsigned clang_CXXMethod_isPureVirtual(CXCursor C); + +/** + * \brief Determine if a C++ member function or member function template is + * declared 'static'. + */ +CINDEX_LINKAGE unsigned clang_CXXMethod_isStatic(CXCursor C); + +/** + * \brief Determine if a C++ member function or member function template is + * explicitly declared 'virtual' or if it overrides a virtual method from + * one of the base classes. + */ +CINDEX_LINKAGE unsigned clang_CXXMethod_isVirtual(CXCursor C); + +/** + * \brief Determine if a C++ member function or member function template is + * declared 'const'. + */ +CINDEX_LINKAGE unsigned clang_CXXMethod_isConst(CXCursor C); + +/** + * \brief Given a cursor that represents a template, determine + * the cursor kind of the specializations would be generated by instantiating + * the template. + * + * This routine can be used to determine what flavor of function template, + * class template, or class template partial specialization is stored in the + * cursor. For example, it can describe whether a class template cursor is + * declared with "struct", "class" or "union". + * + * \param C The cursor to query. This cursor should represent a template + * declaration. + * + * \returns The cursor kind of the specializations that would be generated + * by instantiating the template \p C. If \p C is not a template, returns + * \c CXCursor_NoDeclFound. + */ +CINDEX_LINKAGE enum CXCursorKind clang_getTemplateCursorKind(CXCursor C); + +/** + * \brief Given a cursor that may represent a specialization or instantiation + * of a template, retrieve the cursor that represents the template that it + * specializes or from which it was instantiated. + * + * This routine determines the template involved both for explicit + * specializations of templates and for implicit instantiations of the template, + * both of which are referred to as "specializations". For a class template + * specialization (e.g., \c std::vector), this routine will return + * either the primary template (\c std::vector) or, if the specialization was + * instantiated from a class template partial specialization, the class template + * partial specialization. For a class template partial specialization and a + * function template specialization (including instantiations), this + * this routine will return the specialized template. + * + * For members of a class template (e.g., member functions, member classes, or + * static data members), returns the specialized or instantiated member. + * Although not strictly "templates" in the C++ language, members of class + * templates have the same notions of specializations and instantiations that + * templates do, so this routine treats them similarly. + * + * \param C A cursor that may be a specialization of a template or a member + * of a template. + * + * \returns If the given cursor is a specialization or instantiation of a + * template or a member thereof, the template or member that it specializes or + * from which it was instantiated. Otherwise, returns a NULL cursor. + */ +CINDEX_LINKAGE CXCursor clang_getSpecializedCursorTemplate(CXCursor C); + +/** + * \brief Given a cursor that references something else, return the source range + * covering that reference. + * + * \param C A cursor pointing to a member reference, a declaration reference, or + * an operator call. + * \param NameFlags A bitset with three independent flags: + * CXNameRange_WantQualifier, CXNameRange_WantTemplateArgs, and + * CXNameRange_WantSinglePiece. + * \param PieceIndex For contiguous names or when passing the flag + * CXNameRange_WantSinglePiece, only one piece with index 0 is + * available. When the CXNameRange_WantSinglePiece flag is not passed for a + * non-contiguous names, this index can be used to retrieve the individual + * pieces of the name. See also CXNameRange_WantSinglePiece. + * + * \returns The piece of the name pointed to by the given cursor. If there is no + * name, or if the PieceIndex is out-of-range, a null-cursor will be returned. + */ +CINDEX_LINKAGE CXSourceRange clang_getCursorReferenceNameRange(CXCursor C, + unsigned NameFlags, + unsigned PieceIndex); + +enum CXNameRefFlags { + /** + * \brief Include the nested-name-specifier, e.g. Foo:: in x.Foo::y, in the + * range. + */ + CXNameRange_WantQualifier = 0x1, + + /** + * \brief Include the explicit template arguments, e.g. \ in x.f, + * in the range. + */ + CXNameRange_WantTemplateArgs = 0x2, + + /** + * \brief If the name is non-contiguous, return the full spanning range. + * + * Non-contiguous names occur in Objective-C when a selector with two or more + * parameters is used, or in C++ when using an operator: + * \code + * [object doSomething:here withValue:there]; // Objective-C + * return some_vector[1]; // C++ + * \endcode + */ + CXNameRange_WantSinglePiece = 0x4 +}; + +/** + * @} + */ + +/** + * \defgroup CINDEX_LEX Token extraction and manipulation + * + * The routines in this group provide access to the tokens within a + * translation unit, along with a semantic mapping of those tokens to + * their corresponding cursors. + * + * @{ + */ + +/** + * \brief Describes a kind of token. + */ +typedef enum CXTokenKind { + /** + * \brief A token that contains some kind of punctuation. + */ + CXToken_Punctuation, + + /** + * \brief A language keyword. + */ + CXToken_Keyword, + + /** + * \brief An identifier (that is not a keyword). + */ + CXToken_Identifier, + + /** + * \brief A numeric, string, or character literal. + */ + CXToken_Literal, + + /** + * \brief A comment. + */ + CXToken_Comment +} CXTokenKind; + +/** + * \brief Describes a single preprocessing token. + */ +typedef struct { + unsigned int_data[4]; + void *ptr_data; +} CXToken; + +/** + * \brief Determine the kind of the given token. + */ +CINDEX_LINKAGE CXTokenKind clang_getTokenKind(CXToken); + +/** + * \brief Determine the spelling of the given token. + * + * The spelling of a token is the textual representation of that token, e.g., + * the text of an identifier or keyword. + */ +CINDEX_LINKAGE CXString clang_getTokenSpelling(CXTranslationUnit, CXToken); + +/** + * \brief Retrieve the source location of the given token. + */ +CINDEX_LINKAGE CXSourceLocation clang_getTokenLocation(CXTranslationUnit, + CXToken); + +/** + * \brief Retrieve a source range that covers the given token. + */ +CINDEX_LINKAGE CXSourceRange clang_getTokenExtent(CXTranslationUnit, CXToken); + +/** + * \brief Tokenize the source code described by the given range into raw + * lexical tokens. + * + * \param TU the translation unit whose text is being tokenized. + * + * \param Range the source range in which text should be tokenized. All of the + * tokens produced by tokenization will fall within this source range, + * + * \param Tokens this pointer will be set to point to the array of tokens + * that occur within the given source range. The returned pointer must be + * freed with clang_disposeTokens() before the translation unit is destroyed. + * + * \param NumTokens will be set to the number of tokens in the \c *Tokens + * array. + * + */ +CINDEX_LINKAGE void clang_tokenize(CXTranslationUnit TU, CXSourceRange Range, + CXToken **Tokens, unsigned *NumTokens); + +/** + * \brief Annotate the given set of tokens by providing cursors for each token + * that can be mapped to a specific entity within the abstract syntax tree. + * + * This token-annotation routine is equivalent to invoking + * clang_getCursor() for the source locations of each of the + * tokens. The cursors provided are filtered, so that only those + * cursors that have a direct correspondence to the token are + * accepted. For example, given a function call \c f(x), + * clang_getCursor() would provide the following cursors: + * + * * when the cursor is over the 'f', a DeclRefExpr cursor referring to 'f'. + * * when the cursor is over the '(' or the ')', a CallExpr referring to 'f'. + * * when the cursor is over the 'x', a DeclRefExpr cursor referring to 'x'. + * + * Only the first and last of these cursors will occur within the + * annotate, since the tokens "f" and "x' directly refer to a function + * and a variable, respectively, but the parentheses are just a small + * part of the full syntax of the function call expression, which is + * not provided as an annotation. + * + * \param TU the translation unit that owns the given tokens. + * + * \param Tokens the set of tokens to annotate. + * + * \param NumTokens the number of tokens in \p Tokens. + * + * \param Cursors an array of \p NumTokens cursors, whose contents will be + * replaced with the cursors corresponding to each token. + */ +CINDEX_LINKAGE void clang_annotateTokens(CXTranslationUnit TU, + CXToken *Tokens, unsigned NumTokens, + CXCursor *Cursors); + +/** + * \brief Free the given set of tokens. + */ +CINDEX_LINKAGE void clang_disposeTokens(CXTranslationUnit TU, + CXToken *Tokens, unsigned NumTokens); + +/** + * @} + */ + +/** + * \defgroup CINDEX_DEBUG Debugging facilities + * + * These routines are used for testing and debugging, only, and should not + * be relied upon. + * + * @{ + */ + +/* for debug/testing */ +CINDEX_LINKAGE CXString clang_getCursorKindSpelling(enum CXCursorKind Kind); +CINDEX_LINKAGE void clang_getDefinitionSpellingAndExtent(CXCursor, + const char **startBuf, + const char **endBuf, + unsigned *startLine, + unsigned *startColumn, + unsigned *endLine, + unsigned *endColumn); +CINDEX_LINKAGE void clang_enableStackTraces(void); +CINDEX_LINKAGE void clang_executeOnThread(void (*fn)(void*), void *user_data, + unsigned stack_size); + +/** + * @} + */ + +/** + * \defgroup CINDEX_CODE_COMPLET Code completion + * + * Code completion involves taking an (incomplete) source file, along with + * knowledge of where the user is actively editing that file, and suggesting + * syntactically- and semantically-valid constructs that the user might want to + * use at that particular point in the source code. These data structures and + * routines provide support for code completion. + * + * @{ + */ + +/** + * \brief A semantic string that describes a code-completion result. + * + * A semantic string that describes the formatting of a code-completion + * result as a single "template" of text that should be inserted into the + * source buffer when a particular code-completion result is selected. + * Each semantic string is made up of some number of "chunks", each of which + * contains some text along with a description of what that text means, e.g., + * the name of the entity being referenced, whether the text chunk is part of + * the template, or whether it is a "placeholder" that the user should replace + * with actual code,of a specific kind. See \c CXCompletionChunkKind for a + * description of the different kinds of chunks. + */ +typedef void *CXCompletionString; + +/** + * \brief A single result of code completion. + */ +typedef struct { + /** + * \brief The kind of entity that this completion refers to. + * + * The cursor kind will be a macro, keyword, or a declaration (one of the + * *Decl cursor kinds), describing the entity that the completion is + * referring to. + * + * \todo In the future, we would like to provide a full cursor, to allow + * the client to extract additional information from declaration. + */ + enum CXCursorKind CursorKind; + + /** + * \brief The code-completion string that describes how to insert this + * code-completion result into the editing buffer. + */ + CXCompletionString CompletionString; +} CXCompletionResult; + +/** + * \brief Describes a single piece of text within a code-completion string. + * + * Each "chunk" within a code-completion string (\c CXCompletionString) is + * either a piece of text with a specific "kind" that describes how that text + * should be interpreted by the client or is another completion string. + */ +enum CXCompletionChunkKind { + /** + * \brief A code-completion string that describes "optional" text that + * could be a part of the template (but is not required). + * + * The Optional chunk is the only kind of chunk that has a code-completion + * string for its representation, which is accessible via + * \c clang_getCompletionChunkCompletionString(). The code-completion string + * describes an additional part of the template that is completely optional. + * For example, optional chunks can be used to describe the placeholders for + * arguments that match up with defaulted function parameters, e.g. given: + * + * \code + * void f(int x, float y = 3.14, double z = 2.71828); + * \endcode + * + * The code-completion string for this function would contain: + * - a TypedText chunk for "f". + * - a LeftParen chunk for "(". + * - a Placeholder chunk for "int x" + * - an Optional chunk containing the remaining defaulted arguments, e.g., + * - a Comma chunk for "," + * - a Placeholder chunk for "float y" + * - an Optional chunk containing the last defaulted argument: + * - a Comma chunk for "," + * - a Placeholder chunk for "double z" + * - a RightParen chunk for ")" + * + * There are many ways to handle Optional chunks. Two simple approaches are: + * - Completely ignore optional chunks, in which case the template for the + * function "f" would only include the first parameter ("int x"). + * - Fully expand all optional chunks, in which case the template for the + * function "f" would have all of the parameters. + */ + CXCompletionChunk_Optional, + /** + * \brief Text that a user would be expected to type to get this + * code-completion result. + * + * There will be exactly one "typed text" chunk in a semantic string, which + * will typically provide the spelling of a keyword or the name of a + * declaration that could be used at the current code point. Clients are + * expected to filter the code-completion results based on the text in this + * chunk. + */ + CXCompletionChunk_TypedText, + /** + * \brief Text that should be inserted as part of a code-completion result. + * + * A "text" chunk represents text that is part of the template to be + * inserted into user code should this particular code-completion result + * be selected. + */ + CXCompletionChunk_Text, + /** + * \brief Placeholder text that should be replaced by the user. + * + * A "placeholder" chunk marks a place where the user should insert text + * into the code-completion template. For example, placeholders might mark + * the function parameters for a function declaration, to indicate that the + * user should provide arguments for each of those parameters. The actual + * text in a placeholder is a suggestion for the text to display before + * the user replaces the placeholder with real code. + */ + CXCompletionChunk_Placeholder, + /** + * \brief Informative text that should be displayed but never inserted as + * part of the template. + * + * An "informative" chunk contains annotations that can be displayed to + * help the user decide whether a particular code-completion result is the + * right option, but which is not part of the actual template to be inserted + * by code completion. + */ + CXCompletionChunk_Informative, + /** + * \brief Text that describes the current parameter when code-completion is + * referring to function call, message send, or template specialization. + * + * A "current parameter" chunk occurs when code-completion is providing + * information about a parameter corresponding to the argument at the + * code-completion point. For example, given a function + * + * \code + * int add(int x, int y); + * \endcode + * + * and the source code \c add(, where the code-completion point is after the + * "(", the code-completion string will contain a "current parameter" chunk + * for "int x", indicating that the current argument will initialize that + * parameter. After typing further, to \c add(17, (where the code-completion + * point is after the ","), the code-completion string will contain a + * "current paremeter" chunk to "int y". + */ + CXCompletionChunk_CurrentParameter, + /** + * \brief A left parenthesis ('('), used to initiate a function call or + * signal the beginning of a function parameter list. + */ + CXCompletionChunk_LeftParen, + /** + * \brief A right parenthesis (')'), used to finish a function call or + * signal the end of a function parameter list. + */ + CXCompletionChunk_RightParen, + /** + * \brief A left bracket ('['). + */ + CXCompletionChunk_LeftBracket, + /** + * \brief A right bracket (']'). + */ + CXCompletionChunk_RightBracket, + /** + * \brief A left brace ('{'). + */ + CXCompletionChunk_LeftBrace, + /** + * \brief A right brace ('}'). + */ + CXCompletionChunk_RightBrace, + /** + * \brief A left angle bracket ('<'). + */ + CXCompletionChunk_LeftAngle, + /** + * \brief A right angle bracket ('>'). + */ + CXCompletionChunk_RightAngle, + /** + * \brief A comma separator (','). + */ + CXCompletionChunk_Comma, + /** + * \brief Text that specifies the result type of a given result. + * + * This special kind of informative chunk is not meant to be inserted into + * the text buffer. Rather, it is meant to illustrate the type that an + * expression using the given completion string would have. + */ + CXCompletionChunk_ResultType, + /** + * \brief A colon (':'). + */ + CXCompletionChunk_Colon, + /** + * \brief A semicolon (';'). + */ + CXCompletionChunk_SemiColon, + /** + * \brief An '=' sign. + */ + CXCompletionChunk_Equal, + /** + * Horizontal space (' '). + */ + CXCompletionChunk_HorizontalSpace, + /** + * Vertical space ('\n'), after which it is generally a good idea to + * perform indentation. + */ + CXCompletionChunk_VerticalSpace +}; + +/** + * \brief Determine the kind of a particular chunk within a completion string. + * + * \param completion_string the completion string to query. + * + * \param chunk_number the 0-based index of the chunk in the completion string. + * + * \returns the kind of the chunk at the index \c chunk_number. + */ +CINDEX_LINKAGE enum CXCompletionChunkKind +clang_getCompletionChunkKind(CXCompletionString completion_string, + unsigned chunk_number); + +/** + * \brief Retrieve the text associated with a particular chunk within a + * completion string. + * + * \param completion_string the completion string to query. + * + * \param chunk_number the 0-based index of the chunk in the completion string. + * + * \returns the text associated with the chunk at index \c chunk_number. + */ +CINDEX_LINKAGE CXString +clang_getCompletionChunkText(CXCompletionString completion_string, + unsigned chunk_number); + +/** + * \brief Retrieve the completion string associated with a particular chunk + * within a completion string. + * + * \param completion_string the completion string to query. + * + * \param chunk_number the 0-based index of the chunk in the completion string. + * + * \returns the completion string associated with the chunk at index + * \c chunk_number. + */ +CINDEX_LINKAGE CXCompletionString +clang_getCompletionChunkCompletionString(CXCompletionString completion_string, + unsigned chunk_number); + +/** + * \brief Retrieve the number of chunks in the given code-completion string. + */ +CINDEX_LINKAGE unsigned +clang_getNumCompletionChunks(CXCompletionString completion_string); + +/** + * \brief Determine the priority of this code completion. + * + * The priority of a code completion indicates how likely it is that this + * particular completion is the completion that the user will select. The + * priority is selected by various internal heuristics. + * + * \param completion_string The completion string to query. + * + * \returns The priority of this completion string. Smaller values indicate + * higher-priority (more likely) completions. + */ +CINDEX_LINKAGE unsigned +clang_getCompletionPriority(CXCompletionString completion_string); + +/** + * \brief Determine the availability of the entity that this code-completion + * string refers to. + * + * \param completion_string The completion string to query. + * + * \returns The availability of the completion string. + */ +CINDEX_LINKAGE enum CXAvailabilityKind +clang_getCompletionAvailability(CXCompletionString completion_string); + +/** + * \brief Retrieve the number of annotations associated with the given + * completion string. + * + * \param completion_string the completion string to query. + * + * \returns the number of annotations associated with the given completion + * string. + */ +CINDEX_LINKAGE unsigned +clang_getCompletionNumAnnotations(CXCompletionString completion_string); + +/** + * \brief Retrieve the annotation associated with the given completion string. + * + * \param completion_string the completion string to query. + * + * \param annotation_number the 0-based index of the annotation of the + * completion string. + * + * \returns annotation string associated with the completion at index + * \c annotation_number, or a NULL string if that annotation is not available. + */ +CINDEX_LINKAGE CXString +clang_getCompletionAnnotation(CXCompletionString completion_string, + unsigned annotation_number); + +/** + * \brief Retrieve the parent context of the given completion string. + * + * The parent context of a completion string is the semantic parent of + * the declaration (if any) that the code completion represents. For example, + * a code completion for an Objective-C method would have the method's class + * or protocol as its context. + * + * \param completion_string The code completion string whose parent is + * being queried. + * + * \param kind DEPRECATED: always set to CXCursor_NotImplemented if non-NULL. + * + * \returns The name of the completion parent, e.g., "NSObject" if + * the completion string represents a method in the NSObject class. + */ +CINDEX_LINKAGE CXString +clang_getCompletionParent(CXCompletionString completion_string, + enum CXCursorKind *kind); + +/** + * \brief Retrieve the brief documentation comment attached to the declaration + * that corresponds to the given completion string. + */ +CINDEX_LINKAGE CXString +clang_getCompletionBriefComment(CXCompletionString completion_string); + +/** + * \brief Retrieve a completion string for an arbitrary declaration or macro + * definition cursor. + * + * \param cursor The cursor to query. + * + * \returns A non-context-sensitive completion string for declaration and macro + * definition cursors, or NULL for other kinds of cursors. + */ +CINDEX_LINKAGE CXCompletionString +clang_getCursorCompletionString(CXCursor cursor); + +/** + * \brief Contains the results of code-completion. + * + * This data structure contains the results of code completion, as + * produced by \c clang_codeCompleteAt(). Its contents must be freed by + * \c clang_disposeCodeCompleteResults. + */ +typedef struct { + /** + * \brief The code-completion results. + */ + CXCompletionResult *Results; + + /** + * \brief The number of code-completion results stored in the + * \c Results array. + */ + unsigned NumResults; +} CXCodeCompleteResults; + +/** + * \brief Flags that can be passed to \c clang_codeCompleteAt() to + * modify its behavior. + * + * The enumerators in this enumeration can be bitwise-OR'd together to + * provide multiple options to \c clang_codeCompleteAt(). + */ +enum CXCodeComplete_Flags { + /** + * \brief Whether to include macros within the set of code + * completions returned. + */ + CXCodeComplete_IncludeMacros = 0x01, + + /** + * \brief Whether to include code patterns for language constructs + * within the set of code completions, e.g., for loops. + */ + CXCodeComplete_IncludeCodePatterns = 0x02, + + /** + * \brief Whether to include brief documentation within the set of code + * completions returned. + */ + CXCodeComplete_IncludeBriefComments = 0x04 +}; + +/** + * \brief Bits that represent the context under which completion is occurring. + * + * The enumerators in this enumeration may be bitwise-OR'd together if multiple + * contexts are occurring simultaneously. + */ +enum CXCompletionContext { + /** + * \brief The context for completions is unexposed, as only Clang results + * should be included. (This is equivalent to having no context bits set.) + */ + CXCompletionContext_Unexposed = 0, + + /** + * \brief Completions for any possible type should be included in the results. + */ + CXCompletionContext_AnyType = 1 << 0, + + /** + * \brief Completions for any possible value (variables, function calls, etc.) + * should be included in the results. + */ + CXCompletionContext_AnyValue = 1 << 1, + /** + * \brief Completions for values that resolve to an Objective-C object should + * be included in the results. + */ + CXCompletionContext_ObjCObjectValue = 1 << 2, + /** + * \brief Completions for values that resolve to an Objective-C selector + * should be included in the results. + */ + CXCompletionContext_ObjCSelectorValue = 1 << 3, + /** + * \brief Completions for values that resolve to a C++ class type should be + * included in the results. + */ + CXCompletionContext_CXXClassTypeValue = 1 << 4, + + /** + * \brief Completions for fields of the member being accessed using the dot + * operator should be included in the results. + */ + CXCompletionContext_DotMemberAccess = 1 << 5, + /** + * \brief Completions for fields of the member being accessed using the arrow + * operator should be included in the results. + */ + CXCompletionContext_ArrowMemberAccess = 1 << 6, + /** + * \brief Completions for properties of the Objective-C object being accessed + * using the dot operator should be included in the results. + */ + CXCompletionContext_ObjCPropertyAccess = 1 << 7, + + /** + * \brief Completions for enum tags should be included in the results. + */ + CXCompletionContext_EnumTag = 1 << 8, + /** + * \brief Completions for union tags should be included in the results. + */ + CXCompletionContext_UnionTag = 1 << 9, + /** + * \brief Completions for struct tags should be included in the results. + */ + CXCompletionContext_StructTag = 1 << 10, + + /** + * \brief Completions for C++ class names should be included in the results. + */ + CXCompletionContext_ClassTag = 1 << 11, + /** + * \brief Completions for C++ namespaces and namespace aliases should be + * included in the results. + */ + CXCompletionContext_Namespace = 1 << 12, + /** + * \brief Completions for C++ nested name specifiers should be included in + * the results. + */ + CXCompletionContext_NestedNameSpecifier = 1 << 13, + + /** + * \brief Completions for Objective-C interfaces (classes) should be included + * in the results. + */ + CXCompletionContext_ObjCInterface = 1 << 14, + /** + * \brief Completions for Objective-C protocols should be included in + * the results. + */ + CXCompletionContext_ObjCProtocol = 1 << 15, + /** + * \brief Completions for Objective-C categories should be included in + * the results. + */ + CXCompletionContext_ObjCCategory = 1 << 16, + /** + * \brief Completions for Objective-C instance messages should be included + * in the results. + */ + CXCompletionContext_ObjCInstanceMessage = 1 << 17, + /** + * \brief Completions for Objective-C class messages should be included in + * the results. + */ + CXCompletionContext_ObjCClassMessage = 1 << 18, + /** + * \brief Completions for Objective-C selector names should be included in + * the results. + */ + CXCompletionContext_ObjCSelectorName = 1 << 19, + + /** + * \brief Completions for preprocessor macro names should be included in + * the results. + */ + CXCompletionContext_MacroName = 1 << 20, + + /** + * \brief Natural language completions should be included in the results. + */ + CXCompletionContext_NaturalLanguage = 1 << 21, + + /** + * \brief The current context is unknown, so set all contexts. + */ + CXCompletionContext_Unknown = ((1 << 22) - 1) +}; + +/** + * \brief Returns a default set of code-completion options that can be + * passed to\c clang_codeCompleteAt(). + */ +CINDEX_LINKAGE unsigned clang_defaultCodeCompleteOptions(void); + +/** + * \brief Perform code completion at a given location in a translation unit. + * + * This function performs code completion at a particular file, line, and + * column within source code, providing results that suggest potential + * code snippets based on the context of the completion. The basic model + * for code completion is that Clang will parse a complete source file, + * performing syntax checking up to the location where code-completion has + * been requested. At that point, a special code-completion token is passed + * to the parser, which recognizes this token and determines, based on the + * current location in the C/Objective-C/C++ grammar and the state of + * semantic analysis, what completions to provide. These completions are + * returned via a new \c CXCodeCompleteResults structure. + * + * Code completion itself is meant to be triggered by the client when the + * user types punctuation characters or whitespace, at which point the + * code-completion location will coincide with the cursor. For example, if \c p + * is a pointer, code-completion might be triggered after the "-" and then + * after the ">" in \c p->. When the code-completion location is afer the ">", + * the completion results will provide, e.g., the members of the struct that + * "p" points to. The client is responsible for placing the cursor at the + * beginning of the token currently being typed, then filtering the results + * based on the contents of the token. For example, when code-completing for + * the expression \c p->get, the client should provide the location just after + * the ">" (e.g., pointing at the "g") to this code-completion hook. Then, the + * client can filter the results based on the current token text ("get"), only + * showing those results that start with "get". The intent of this interface + * is to separate the relatively high-latency acquisition of code-completion + * results from the filtering of results on a per-character basis, which must + * have a lower latency. + * + * \param TU The translation unit in which code-completion should + * occur. The source files for this translation unit need not be + * completely up-to-date (and the contents of those source files may + * be overridden via \p unsaved_files). Cursors referring into the + * translation unit may be invalidated by this invocation. + * + * \param complete_filename The name of the source file where code + * completion should be performed. This filename may be any file + * included in the translation unit. + * + * \param complete_line The line at which code-completion should occur. + * + * \param complete_column The column at which code-completion should occur. + * Note that the column should point just after the syntactic construct that + * initiated code completion, and not in the middle of a lexical token. + * + * \param unsaved_files the Tiles that have not yet been saved to disk + * but may be required for parsing or code completion, including the + * contents of those files. The contents and name of these files (as + * specified by CXUnsavedFile) are copied when necessary, so the + * client only needs to guarantee their validity until the call to + * this function returns. + * + * \param num_unsaved_files The number of unsaved file entries in \p + * unsaved_files. + * + * \param options Extra options that control the behavior of code + * completion, expressed as a bitwise OR of the enumerators of the + * CXCodeComplete_Flags enumeration. The + * \c clang_defaultCodeCompleteOptions() function returns a default set + * of code-completion options. + * + * \returns If successful, a new \c CXCodeCompleteResults structure + * containing code-completion results, which should eventually be + * freed with \c clang_disposeCodeCompleteResults(). If code + * completion fails, returns NULL. + */ +CINDEX_LINKAGE +CXCodeCompleteResults *clang_codeCompleteAt(CXTranslationUnit TU, + const char *complete_filename, + unsigned complete_line, + unsigned complete_column, + struct CXUnsavedFile *unsaved_files, + unsigned num_unsaved_files, + unsigned options); + +/** + * \brief Sort the code-completion results in case-insensitive alphabetical + * order. + * + * \param Results The set of results to sort. + * \param NumResults The number of results in \p Results. + */ +CINDEX_LINKAGE +void clang_sortCodeCompletionResults(CXCompletionResult *Results, + unsigned NumResults); + +/** + * \brief Free the given set of code-completion results. + */ +CINDEX_LINKAGE +void clang_disposeCodeCompleteResults(CXCodeCompleteResults *Results); + +/** + * \brief Determine the number of diagnostics produced prior to the + * location where code completion was performed. + */ +CINDEX_LINKAGE +unsigned clang_codeCompleteGetNumDiagnostics(CXCodeCompleteResults *Results); + +/** + * \brief Retrieve a diagnostic associated with the given code completion. + * + * \param Results the code completion results to query. + * \param Index the zero-based diagnostic number to retrieve. + * + * \returns the requested diagnostic. This diagnostic must be freed + * via a call to \c clang_disposeDiagnostic(). + */ +CINDEX_LINKAGE +CXDiagnostic clang_codeCompleteGetDiagnostic(CXCodeCompleteResults *Results, + unsigned Index); + +/** + * \brief Determines what completions are appropriate for the context + * the given code completion. + * + * \param Results the code completion results to query + * + * \returns the kinds of completions that are appropriate for use + * along with the given code completion results. + */ +CINDEX_LINKAGE +unsigned long long clang_codeCompleteGetContexts( + CXCodeCompleteResults *Results); + +/** + * \brief Returns the cursor kind for the container for the current code + * completion context. The container is only guaranteed to be set for + * contexts where a container exists (i.e. member accesses or Objective-C + * message sends); if there is not a container, this function will return + * CXCursor_InvalidCode. + * + * \param Results the code completion results to query + * + * \param IsIncomplete on return, this value will be false if Clang has complete + * information about the container. If Clang does not have complete + * information, this value will be true. + * + * \returns the container kind, or CXCursor_InvalidCode if there is not a + * container + */ +CINDEX_LINKAGE +enum CXCursorKind clang_codeCompleteGetContainerKind( + CXCodeCompleteResults *Results, + unsigned *IsIncomplete); + +/** + * \brief Returns the USR for the container for the current code completion + * context. If there is not a container for the current context, this + * function will return the empty string. + * + * \param Results the code completion results to query + * + * \returns the USR for the container + */ +CINDEX_LINKAGE +CXString clang_codeCompleteGetContainerUSR(CXCodeCompleteResults *Results); + + +/** + * \brief Returns the currently-entered selector for an Objective-C message + * send, formatted like "initWithFoo:bar:". Only guaranteed to return a + * non-empty string for CXCompletionContext_ObjCInstanceMessage and + * CXCompletionContext_ObjCClassMessage. + * + * \param Results the code completion results to query + * + * \returns the selector (or partial selector) that has been entered thus far + * for an Objective-C message send. + */ +CINDEX_LINKAGE +CXString clang_codeCompleteGetObjCSelector(CXCodeCompleteResults *Results); + +/** + * @} + */ + + +/** + * \defgroup CINDEX_MISC Miscellaneous utility functions + * + * @{ + */ + +/** + * \brief Return a version string, suitable for showing to a user, but not + * intended to be parsed (the format is not guaranteed to be stable). + */ +CINDEX_LINKAGE CXString clang_getClangVersion(void); + + +/** + * \brief Enable/disable crash recovery. + * + * \param isEnabled Flag to indicate if crash recovery is enabled. A non-zero + * value enables crash recovery, while 0 disables it. + */ +CINDEX_LINKAGE void clang_toggleCrashRecovery(unsigned isEnabled); + + /** + * \brief Visitor invoked for each file in a translation unit + * (used with clang_getInclusions()). + * + * This visitor function will be invoked by clang_getInclusions() for each + * file included (either at the top-level or by \#include directives) within + * a translation unit. The first argument is the file being included, and + * the second and third arguments provide the inclusion stack. The + * array is sorted in order of immediate inclusion. For example, + * the first element refers to the location that included 'included_file'. + */ +typedef void (*CXInclusionVisitor)(CXFile included_file, + CXSourceLocation* inclusion_stack, + unsigned include_len, + CXClientData client_data); + +/** + * \brief Visit the set of preprocessor inclusions in a translation unit. + * The visitor function is called with the provided data for every included + * file. This does not include headers included by the PCH file (unless one + * is inspecting the inclusions in the PCH file itself). + */ +CINDEX_LINKAGE void clang_getInclusions(CXTranslationUnit tu, + CXInclusionVisitor visitor, + CXClientData client_data); + +/** + * @} + */ + +/** \defgroup CINDEX_REMAPPING Remapping functions + * + * @{ + */ + +/** + * \brief A remapping of original source files and their translated files. + */ +typedef void *CXRemapping; + +/** + * \brief Retrieve a remapping. + * + * \param path the path that contains metadata about remappings. + * + * \returns the requested remapping. This remapping must be freed + * via a call to \c clang_remap_dispose(). Can return NULL if an error occurred. + */ +CINDEX_LINKAGE CXRemapping clang_getRemappings(const char *path); + +/** + * \brief Retrieve a remapping. + * + * \param filePaths pointer to an array of file paths containing remapping info. + * + * \param numFiles number of file paths. + * + * \returns the requested remapping. This remapping must be freed + * via a call to \c clang_remap_dispose(). Can return NULL if an error occurred. + */ +CINDEX_LINKAGE +CXRemapping clang_getRemappingsFromFileList(const char **filePaths, + unsigned numFiles); + +/** + * \brief Determine the number of remappings. + */ +CINDEX_LINKAGE unsigned clang_remap_getNumFiles(CXRemapping); + +/** + * \brief Get the original and the associated filename from the remapping. + * + * \param original If non-NULL, will be set to the original filename. + * + * \param transformed If non-NULL, will be set to the filename that the original + * is associated with. + */ +CINDEX_LINKAGE void clang_remap_getFilenames(CXRemapping, unsigned index, + CXString *original, CXString *transformed); + +/** + * \brief Dispose the remapping. + */ +CINDEX_LINKAGE void clang_remap_dispose(CXRemapping); + +/** + * @} + */ + +/** \defgroup CINDEX_HIGH Higher level API functions + * + * @{ + */ + +enum CXVisitorResult { + CXVisit_Break, + CXVisit_Continue +}; + +typedef struct { + void *context; + enum CXVisitorResult (*visit)(void *context, CXCursor, CXSourceRange); +} CXCursorAndRangeVisitor; + +typedef enum { + /** + * \brief Function returned successfully. + */ + CXResult_Success = 0, + /** + * \brief One of the parameters was invalid for the function. + */ + CXResult_Invalid = 1, + /** + * \brief The function was terminated by a callback (e.g. it returned + * CXVisit_Break) + */ + CXResult_VisitBreak = 2 + +} CXResult; + +/** + * \brief Find references of a declaration in a specific file. + * + * \param cursor pointing to a declaration or a reference of one. + * + * \param file to search for references. + * + * \param visitor callback that will receive pairs of CXCursor/CXSourceRange for + * each reference found. + * The CXSourceRange will point inside the file; if the reference is inside + * a macro (and not a macro argument) the CXSourceRange will be invalid. + * + * \returns one of the CXResult enumerators. + */ +CINDEX_LINKAGE CXResult clang_findReferencesInFile(CXCursor cursor, CXFile file, + CXCursorAndRangeVisitor visitor); + +/** + * \brief Find #import/#include directives in a specific file. + * + * \param TU translation unit containing the file to query. + * + * \param file to search for #import/#include directives. + * + * \param visitor callback that will receive pairs of CXCursor/CXSourceRange for + * each directive found. + * + * \returns one of the CXResult enumerators. + */ +CINDEX_LINKAGE CXResult clang_findIncludesInFile(CXTranslationUnit TU, + CXFile file, + CXCursorAndRangeVisitor visitor); + +#ifdef __has_feature +# if __has_feature(blocks) + +typedef enum CXVisitorResult + (^CXCursorAndRangeVisitorBlock)(CXCursor, CXSourceRange); + +CINDEX_LINKAGE +CXResult clang_findReferencesInFileWithBlock(CXCursor, CXFile, + CXCursorAndRangeVisitorBlock); + +CINDEX_LINKAGE +CXResult clang_findIncludesInFileWithBlock(CXTranslationUnit, CXFile, + CXCursorAndRangeVisitorBlock); + +# endif +#endif + +/** + * \brief The client's data object that is associated with a CXFile. + */ +typedef void *CXIdxClientFile; + +/** + * \brief The client's data object that is associated with a semantic entity. + */ +typedef void *CXIdxClientEntity; + +/** + * \brief The client's data object that is associated with a semantic container + * of entities. + */ +typedef void *CXIdxClientContainer; + +/** + * \brief The client's data object that is associated with an AST file (PCH + * or module). + */ +typedef void *CXIdxClientASTFile; + +/** + * \brief Source location passed to index callbacks. + */ +typedef struct { + void *ptr_data[2]; + unsigned int_data; +} CXIdxLoc; + +/** + * \brief Data for ppIncludedFile callback. + */ +typedef struct { + /** + * \brief Location of '#' in the \#include/\#import directive. + */ + CXIdxLoc hashLoc; + /** + * \brief Filename as written in the \#include/\#import directive. + */ + const char *filename; + /** + * \brief The actual file that the \#include/\#import directive resolved to. + */ + CXFile file; + int isImport; + int isAngled; + /** + * \brief Non-zero if the directive was automatically turned into a module + * import. + */ + int isModuleImport; +} CXIdxIncludedFileInfo; + +/** + * \brief Data for IndexerCallbacks#importedASTFile. + */ +typedef struct { + /** + * \brief Top level AST file containing the imported PCH, module or submodule. + */ + CXFile file; + /** + * \brief The imported module or NULL if the AST file is a PCH. + */ + CXModule module; + /** + * \brief Location where the file is imported. Applicable only for modules. + */ + CXIdxLoc loc; + /** + * \brief Non-zero if an inclusion directive was automatically turned into + * a module import. Applicable only for modules. + */ + int isImplicit; + +} CXIdxImportedASTFileInfo; + +typedef enum { + CXIdxEntity_Unexposed = 0, + CXIdxEntity_Typedef = 1, + CXIdxEntity_Function = 2, + CXIdxEntity_Variable = 3, + CXIdxEntity_Field = 4, + CXIdxEntity_EnumConstant = 5, + + CXIdxEntity_ObjCClass = 6, + CXIdxEntity_ObjCProtocol = 7, + CXIdxEntity_ObjCCategory = 8, + + CXIdxEntity_ObjCInstanceMethod = 9, + CXIdxEntity_ObjCClassMethod = 10, + CXIdxEntity_ObjCProperty = 11, + CXIdxEntity_ObjCIvar = 12, + + CXIdxEntity_Enum = 13, + CXIdxEntity_Struct = 14, + CXIdxEntity_Union = 15, + + CXIdxEntity_CXXClass = 16, + CXIdxEntity_CXXNamespace = 17, + CXIdxEntity_CXXNamespaceAlias = 18, + CXIdxEntity_CXXStaticVariable = 19, + CXIdxEntity_CXXStaticMethod = 20, + CXIdxEntity_CXXInstanceMethod = 21, + CXIdxEntity_CXXConstructor = 22, + CXIdxEntity_CXXDestructor = 23, + CXIdxEntity_CXXConversionFunction = 24, + CXIdxEntity_CXXTypeAlias = 25, + CXIdxEntity_CXXInterface = 26 + +} CXIdxEntityKind; + +typedef enum { + CXIdxEntityLang_None = 0, + CXIdxEntityLang_C = 1, + CXIdxEntityLang_ObjC = 2, + CXIdxEntityLang_CXX = 3 +} CXIdxEntityLanguage; + +/** + * \brief Extra C++ template information for an entity. This can apply to: + * CXIdxEntity_Function + * CXIdxEntity_CXXClass + * CXIdxEntity_CXXStaticMethod + * CXIdxEntity_CXXInstanceMethod + * CXIdxEntity_CXXConstructor + * CXIdxEntity_CXXConversionFunction + * CXIdxEntity_CXXTypeAlias + */ +typedef enum { + CXIdxEntity_NonTemplate = 0, + CXIdxEntity_Template = 1, + CXIdxEntity_TemplatePartialSpecialization = 2, + CXIdxEntity_TemplateSpecialization = 3 +} CXIdxEntityCXXTemplateKind; + +typedef enum { + CXIdxAttr_Unexposed = 0, + CXIdxAttr_IBAction = 1, + CXIdxAttr_IBOutlet = 2, + CXIdxAttr_IBOutletCollection = 3 +} CXIdxAttrKind; + +typedef struct { + CXIdxAttrKind kind; + CXCursor cursor; + CXIdxLoc loc; +} CXIdxAttrInfo; + +typedef struct { + CXIdxEntityKind kind; + CXIdxEntityCXXTemplateKind templateKind; + CXIdxEntityLanguage lang; + const char *name; + const char *USR; + CXCursor cursor; + const CXIdxAttrInfo *const *attributes; + unsigned numAttributes; +} CXIdxEntityInfo; + +typedef struct { + CXCursor cursor; +} CXIdxContainerInfo; + +typedef struct { + const CXIdxAttrInfo *attrInfo; + const CXIdxEntityInfo *objcClass; + CXCursor classCursor; + CXIdxLoc classLoc; +} CXIdxIBOutletCollectionAttrInfo; + +typedef enum { + CXIdxDeclFlag_Skipped = 0x1 +} CXIdxDeclInfoFlags; + +typedef struct { + const CXIdxEntityInfo *entityInfo; + CXCursor cursor; + CXIdxLoc loc; + const CXIdxContainerInfo *semanticContainer; + /** + * \brief Generally same as #semanticContainer but can be different in + * cases like out-of-line C++ member functions. + */ + const CXIdxContainerInfo *lexicalContainer; + int isRedeclaration; + int isDefinition; + int isContainer; + const CXIdxContainerInfo *declAsContainer; + /** + * \brief Whether the declaration exists in code or was created implicitly + * by the compiler, e.g. implicit Objective-C methods for properties. + */ + int isImplicit; + const CXIdxAttrInfo *const *attributes; + unsigned numAttributes; + + unsigned flags; + +} CXIdxDeclInfo; + +typedef enum { + CXIdxObjCContainer_ForwardRef = 0, + CXIdxObjCContainer_Interface = 1, + CXIdxObjCContainer_Implementation = 2 +} CXIdxObjCContainerKind; + +typedef struct { + const CXIdxDeclInfo *declInfo; + CXIdxObjCContainerKind kind; +} CXIdxObjCContainerDeclInfo; + +typedef struct { + const CXIdxEntityInfo *base; + CXCursor cursor; + CXIdxLoc loc; +} CXIdxBaseClassInfo; + +typedef struct { + const CXIdxEntityInfo *protocol; + CXCursor cursor; + CXIdxLoc loc; +} CXIdxObjCProtocolRefInfo; + +typedef struct { + const CXIdxObjCProtocolRefInfo *const *protocols; + unsigned numProtocols; +} CXIdxObjCProtocolRefListInfo; + +typedef struct { + const CXIdxObjCContainerDeclInfo *containerInfo; + const CXIdxBaseClassInfo *superInfo; + const CXIdxObjCProtocolRefListInfo *protocols; +} CXIdxObjCInterfaceDeclInfo; + +typedef struct { + const CXIdxObjCContainerDeclInfo *containerInfo; + const CXIdxEntityInfo *objcClass; + CXCursor classCursor; + CXIdxLoc classLoc; + const CXIdxObjCProtocolRefListInfo *protocols; +} CXIdxObjCCategoryDeclInfo; + +typedef struct { + const CXIdxDeclInfo *declInfo; + const CXIdxEntityInfo *getter; + const CXIdxEntityInfo *setter; +} CXIdxObjCPropertyDeclInfo; + +typedef struct { + const CXIdxDeclInfo *declInfo; + const CXIdxBaseClassInfo *const *bases; + unsigned numBases; +} CXIdxCXXClassDeclInfo; + +/** + * \brief Data for IndexerCallbacks#indexEntityReference. + */ +typedef enum { + /** + * \brief The entity is referenced directly in user's code. + */ + CXIdxEntityRef_Direct = 1, + /** + * \brief An implicit reference, e.g. a reference of an Objective-C method + * via the dot syntax. + */ + CXIdxEntityRef_Implicit = 2 +} CXIdxEntityRefKind; + +/** + * \brief Data for IndexerCallbacks#indexEntityReference. + */ +typedef struct { + CXIdxEntityRefKind kind; + /** + * \brief Reference cursor. + */ + CXCursor cursor; + CXIdxLoc loc; + /** + * \brief The entity that gets referenced. + */ + const CXIdxEntityInfo *referencedEntity; + /** + * \brief Immediate "parent" of the reference. For example: + * + * \code + * Foo *var; + * \endcode + * + * The parent of reference of type 'Foo' is the variable 'var'. + * For references inside statement bodies of functions/methods, + * the parentEntity will be the function/method. + */ + const CXIdxEntityInfo *parentEntity; + /** + * \brief Lexical container context of the reference. + */ + const CXIdxContainerInfo *container; +} CXIdxEntityRefInfo; + +/** + * \brief A group of callbacks used by #clang_indexSourceFile and + * #clang_indexTranslationUnit. + */ +typedef struct { + /** + * \brief Called periodically to check whether indexing should be aborted. + * Should return 0 to continue, and non-zero to abort. + */ + int (*abortQuery)(CXClientData client_data, void *reserved); + + /** + * \brief Called at the end of indexing; passes the complete diagnostic set. + */ + void (*diagnostic)(CXClientData client_data, + CXDiagnosticSet, void *reserved); + + CXIdxClientFile (*enteredMainFile)(CXClientData client_data, + CXFile mainFile, void *reserved); + + /** + * \brief Called when a file gets \#included/\#imported. + */ + CXIdxClientFile (*ppIncludedFile)(CXClientData client_data, + const CXIdxIncludedFileInfo *); + + /** + * \brief Called when a AST file (PCH or module) gets imported. + * + * AST files will not get indexed (there will not be callbacks to index all + * the entities in an AST file). The recommended action is that, if the AST + * file is not already indexed, to initiate a new indexing job specific to + * the AST file. + */ + CXIdxClientASTFile (*importedASTFile)(CXClientData client_data, + const CXIdxImportedASTFileInfo *); + + /** + * \brief Called at the beginning of indexing a translation unit. + */ + CXIdxClientContainer (*startedTranslationUnit)(CXClientData client_data, + void *reserved); + + void (*indexDeclaration)(CXClientData client_data, + const CXIdxDeclInfo *); + + /** + * \brief Called to index a reference of an entity. + */ + void (*indexEntityReference)(CXClientData client_data, + const CXIdxEntityRefInfo *); + +} IndexerCallbacks; + +CINDEX_LINKAGE int clang_index_isEntityObjCContainerKind(CXIdxEntityKind); +CINDEX_LINKAGE const CXIdxObjCContainerDeclInfo * +clang_index_getObjCContainerDeclInfo(const CXIdxDeclInfo *); + +CINDEX_LINKAGE const CXIdxObjCInterfaceDeclInfo * +clang_index_getObjCInterfaceDeclInfo(const CXIdxDeclInfo *); + +CINDEX_LINKAGE +const CXIdxObjCCategoryDeclInfo * +clang_index_getObjCCategoryDeclInfo(const CXIdxDeclInfo *); + +CINDEX_LINKAGE const CXIdxObjCProtocolRefListInfo * +clang_index_getObjCProtocolRefListInfo(const CXIdxDeclInfo *); + +CINDEX_LINKAGE const CXIdxObjCPropertyDeclInfo * +clang_index_getObjCPropertyDeclInfo(const CXIdxDeclInfo *); + +CINDEX_LINKAGE const CXIdxIBOutletCollectionAttrInfo * +clang_index_getIBOutletCollectionAttrInfo(const CXIdxAttrInfo *); + +CINDEX_LINKAGE const CXIdxCXXClassDeclInfo * +clang_index_getCXXClassDeclInfo(const CXIdxDeclInfo *); + +/** + * \brief For retrieving a custom CXIdxClientContainer attached to a + * container. + */ +CINDEX_LINKAGE CXIdxClientContainer +clang_index_getClientContainer(const CXIdxContainerInfo *); + +/** + * \brief For setting a custom CXIdxClientContainer attached to a + * container. + */ +CINDEX_LINKAGE void +clang_index_setClientContainer(const CXIdxContainerInfo *,CXIdxClientContainer); + +/** + * \brief For retrieving a custom CXIdxClientEntity attached to an entity. + */ +CINDEX_LINKAGE CXIdxClientEntity +clang_index_getClientEntity(const CXIdxEntityInfo *); + +/** + * \brief For setting a custom CXIdxClientEntity attached to an entity. + */ +CINDEX_LINKAGE void +clang_index_setClientEntity(const CXIdxEntityInfo *, CXIdxClientEntity); + +/** + * \brief An indexing action/session, to be applied to one or multiple + * translation units. + */ +typedef void *CXIndexAction; + +/** + * \brief An indexing action/session, to be applied to one or multiple + * translation units. + * + * \param CIdx The index object with which the index action will be associated. + */ +CINDEX_LINKAGE CXIndexAction clang_IndexAction_create(CXIndex CIdx); + +/** + * \brief Destroy the given index action. + * + * The index action must not be destroyed until all of the translation units + * created within that index action have been destroyed. + */ +CINDEX_LINKAGE void clang_IndexAction_dispose(CXIndexAction); + +typedef enum { + /** + * \brief Used to indicate that no special indexing options are needed. + */ + CXIndexOpt_None = 0x0, + + /** + * \brief Used to indicate that IndexerCallbacks#indexEntityReference should + * be invoked for only one reference of an entity per source file that does + * not also include a declaration/definition of the entity. + */ + CXIndexOpt_SuppressRedundantRefs = 0x1, + + /** + * \brief Function-local symbols should be indexed. If this is not set + * function-local symbols will be ignored. + */ + CXIndexOpt_IndexFunctionLocalSymbols = 0x2, + + /** + * \brief Implicit function/class template instantiations should be indexed. + * If this is not set, implicit instantiations will be ignored. + */ + CXIndexOpt_IndexImplicitTemplateInstantiations = 0x4, + + /** + * \brief Suppress all compiler warnings when parsing for indexing. + */ + CXIndexOpt_SuppressWarnings = 0x8, + + /** + * \brief Skip a function/method body that was already parsed during an + * indexing session associated with a \c CXIndexAction object. + * Bodies in system headers are always skipped. + */ + CXIndexOpt_SkipParsedBodiesInSession = 0x10 + +} CXIndexOptFlags; + +/** + * \brief Index the given source file and the translation unit corresponding + * to that file via callbacks implemented through #IndexerCallbacks. + * + * \param client_data pointer data supplied by the client, which will + * be passed to the invoked callbacks. + * + * \param index_callbacks Pointer to indexing callbacks that the client + * implements. + * + * \param index_callbacks_size Size of #IndexerCallbacks structure that gets + * passed in index_callbacks. + * + * \param index_options A bitmask of options that affects how indexing is + * performed. This should be a bitwise OR of the CXIndexOpt_XXX flags. + * + * \param[out] out_TU pointer to store a \c CXTranslationUnit that can be + * reused after indexing is finished. Set to \c NULL if you do not require it. + * + * \returns 0 on success or if there were errors from which the compiler could + * recover. If there is a failure from which there is no recovery, returns + * a non-zero \c CXErrorCode. + * + * The rest of the parameters are the same as #clang_parseTranslationUnit. + */ +CINDEX_LINKAGE int clang_indexSourceFile(CXIndexAction, + CXClientData client_data, + IndexerCallbacks *index_callbacks, + unsigned index_callbacks_size, + unsigned index_options, + const char *source_filename, + const char * const *command_line_args, + int num_command_line_args, + struct CXUnsavedFile *unsaved_files, + unsigned num_unsaved_files, + CXTranslationUnit *out_TU, + unsigned TU_options); + +/** + * \brief Index the given translation unit via callbacks implemented through + * #IndexerCallbacks. + * + * The order of callback invocations is not guaranteed to be the same as + * when indexing a source file. The high level order will be: + * + * -Preprocessor callbacks invocations + * -Declaration/reference callbacks invocations + * -Diagnostic callback invocations + * + * The parameters are the same as #clang_indexSourceFile. + * + * \returns If there is a failure from which there is no recovery, returns + * non-zero, otherwise returns 0. + */ +CINDEX_LINKAGE int clang_indexTranslationUnit(CXIndexAction, + CXClientData client_data, + IndexerCallbacks *index_callbacks, + unsigned index_callbacks_size, + unsigned index_options, + CXTranslationUnit); + +/** + * \brief Retrieve the CXIdxFile, file, line, column, and offset represented by + * the given CXIdxLoc. + * + * If the location refers into a macro expansion, retrieves the + * location of the macro expansion and if it refers into a macro argument + * retrieves the location of the argument. + */ +CINDEX_LINKAGE void clang_indexLoc_getFileLocation(CXIdxLoc loc, + CXIdxClientFile *indexFile, + CXFile *file, + unsigned *line, + unsigned *column, + unsigned *offset); + +/** + * \brief Retrieve the CXSourceLocation represented by the given CXIdxLoc. + */ +CINDEX_LINKAGE +CXSourceLocation clang_indexLoc_getCXSourceLocation(CXIdxLoc loc); + +/** + * \brief Visitor invoked for each field found by a traversal. + * + * This visitor function will be invoked for each field found by + * \c clang_Type_visitFields. Its first argument is the cursor being + * visited, its second argument is the client data provided to + * \c clang_Type_visitFields. + * + * The visitor should return one of the \c CXVisitorResult values + * to direct \c clang_Type_visitFields. + */ +typedef enum CXVisitorResult (*CXFieldVisitor)(CXCursor C, + CXClientData client_data); + +/** + * \brief Visit the fields of a particular type. + * + * This function visits all the direct fields of the given cursor, + * invoking the given \p visitor function with the cursors of each + * visited field. The traversal may be ended prematurely, if + * the visitor returns \c CXFieldVisit_Break. + * + * \param T the record type whose field may be visited. + * + * \param visitor the visitor function that will be invoked for each + * field of \p T. + * + * \param client_data pointer data supplied by the client, which will + * be passed to the visitor each time it is invoked. + * + * \returns a non-zero value if the traversal was terminated + * prematurely by the visitor returning \c CXFieldVisit_Break. + */ +CINDEX_LINKAGE unsigned clang_Type_visitFields(CXType T, + CXFieldVisitor visitor, + CXClientData client_data); + + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif +#endif + diff --git a/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/clang-c/Makefile b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/clang-c/Makefile new file mode 100644 index 0000000..b29e29e --- /dev/null +++ b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/clang-c/Makefile @@ -0,0 +1,38 @@ +CLANG_LEVEL := ../.. +DIRS := + +include $(CLANG_LEVEL)/Makefile + +IntIncludeDir = $(DESTDIR)$(PROJ_internal_prefix)/include + +install-local:: + $(Echo) Installing Clang C API include files + $(Verb) $(MKDIR) $(IntIncludeDir) + $(Verb) if test -d "$(PROJ_SRC_DIR)" ; then \ + cd $(PROJ_SRC_DIR)/.. && \ + for hdr in `find clang-c -type f '!' '(' -name '*~' \ + -o -name '.#*' -o -name '*.in' -o -name '*.txt' \ + -o -name 'Makefile' -o -name '*.td' ')' -print \ + | grep -v CVS | grep -v .svn | grep -v .dir` ; do \ + instdir=`dirname "$(IntIncludeDir)/$$hdr"` ; \ + if test \! -d "$$instdir" ; then \ + $(EchoCmd) Making install directory $$instdir ; \ + $(MKDIR) $$instdir ;\ + fi ; \ + $(DataInstall) $$hdr $(IntIncludeDir)/$$hdr ; \ + done ; \ + fi +ifneq ($(PROJ_SRC_ROOT),$(PROJ_OBJ_ROOT)) + $(Verb) if test -d "$(PROJ_OBJ_ROOT)/tools/clang/include/clang-c" ; then \ + cd $(PROJ_OBJ_ROOT)/tools/clang/include && \ + for hdr in `find clang-c -type f '!' '(' -name 'Makefile' ')' -print \ + | grep -v CVS | grep -v .tmp | grep -v .dir` ; do \ + instdir=`dirname "$(IntIncludeDir)/$$hdr"` ; \ + if test \! -d "$$instdir" ; then \ + $(EchoCmd) Making install directory $$instdir ; \ + $(MKDIR) $$instdir ;\ + fi ; \ + $(DataInstall) $$hdr $(IntIncludeDir)/$$hdr ; \ + done ; \ + fi +endif diff --git a/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/clang-c/Platform.h b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/clang-c/Platform.h new file mode 100644 index 0000000..e2a4dcc --- /dev/null +++ b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/clang-c/Platform.h @@ -0,0 +1,45 @@ +/*===-- clang-c/Platform.h - C Index platform decls -------------*- C -*-===*\ +|* *| +|* The LLVM Compiler Infrastructure *| +|* *| +|* This file is distributed under the University of Illinois Open Source *| +|* License. See LICENSE.TXT for details. *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This header provides platform specific macros (dllimport, deprecated, ...) *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_CLANG_C_PLATFORM_H +#define LLVM_CLANG_C_PLATFORM_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* MSVC DLL import/export. */ +#ifdef _MSC_VER + #ifdef _CINDEX_LIB_ + #define CINDEX_LINKAGE __declspec(dllexport) + #else + #define CINDEX_LINKAGE __declspec(dllimport) + #endif +#else + #define CINDEX_LINKAGE +#endif + +#ifdef __GNUC__ + #define CINDEX_DEPRECATED __attribute__((deprecated)) +#else + #ifdef _MSC_VER + #define CINDEX_DEPRECATED __declspec(deprecated) + #else + #define CINDEX_DEPRECATED + #endif +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/clang-c/module.modulemap b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/clang-c/module.modulemap new file mode 100644 index 0000000..95a59d6 --- /dev/null +++ b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/clang-c/module.modulemap @@ -0,0 +1,4 @@ +module Clang_C { + umbrella "." + module * { export * } +} diff --git a/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/library/x86_32/debug/.gitkeep b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/library/x86_32/debug/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/library/x86_32/release/.gitkeep b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/library/x86_32/release/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/library/x86_64/debug/.gitkeep b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/library/x86_64/debug/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/library/x86_64/release/.gitkeep b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/library/x86_64/release/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/main.cpp b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/main.cpp new file mode 100644 index 0000000..f3f7fcd --- /dev/null +++ b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/main.cpp @@ -0,0 +1,176 @@ +/* -*- mode: c++ ; coding: utf-8-unix -*- */ +/* last updated : 2015/05/25.01:59:31 */ + +/* + * Copyright (c) 2013-2015 yaruopooner [https://github.com/yaruopooner] + * + * This file is part of ac-clang. + * + * 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 . + */ + + + +/*================================================================================================*/ +/* Include Files */ +/*================================================================================================*/ + + +#include "CommandLine.hpp" +#include "ClangServer.hpp" + + + +/*================================================================================================*/ +/* Global Function Definitions Section */ +/*================================================================================================*/ + + +enum +{ + kStreamBuffer_UnitSize = 1 * 1024 * 1024, + kStreamBuffer_MinMB = 1, + kStreamBuffer_MaxMB = 5, +}; + +enum +{ + kOption_Help, + kOption_Version, + kOption_LogFile, + kOption_STDIN_BufferSize, + kOption_STDOUT_BufferSize, +}; + + +namespace +{ + +std::string GetClangVersion( void ) +{ + CXString version_text = clang_getClangVersion(); + const std::string clang_version = clang_getCString( version_text ); + + clang_disposeString( version_text ); + + return clang_version; +} + +} + + + +int main( int argc, char *argv[] ) +{ + std::ios_base::sync_with_stdio( false ); + + // parse options + const std::string server_version = CLANG_SERVER_VERSION; + const std::string clang_version = ::GetClangVersion(); + const std::string generate = CMAKE_GENERATOR "/" CMAKE_HOST_SYSTEM_PROCESSOR; + std::string logfile; + size_t stdin_buffer_size = kStreamBuffer_MinMB; + size_t stdout_buffer_size = kStreamBuffer_MinMB; + + { + CommandLine::Parser declare_options; + + declare_options.AddOption( kOption_Help, "help", "h", "Display available options.", + CommandLine::IOptionDetail::kFlag_Once ); + declare_options.AddOption( kOption_Version, "version", "v", "Display current version.", + CommandLine::IOptionDetail::kFlag_Once ); + // declare_options.AddOption< std::string >( kOption_LogFile, "logfile", "l", "Enable IPC records output.(for debug)", + // ( CommandLine::IOptionDetail::kFlag_Once | CommandLine::IOptionDetail::kFlag_HasValue ), "file path" ); + declare_options.AddOption< uint32_t >( kOption_STDIN_BufferSize, "stdin-buffer-size", "sibs", "STDIN buffer size. is 1 - 5 MB", + ( CommandLine::IOptionDetail::kFlag_Once | CommandLine::IOptionDetail::kFlag_HasValue ), "size", + CommandLine::RangeReader< uint32_t >( kStreamBuffer_MinMB, kStreamBuffer_MaxMB ) ); + declare_options.AddOption< uint32_t >( kOption_STDOUT_BufferSize, "stdout-buffer-size", "sobs", "STDOUT buffer size. is 1 - 5 MB", + ( CommandLine::IOptionDetail::kFlag_Once | CommandLine::IOptionDetail::kFlag_HasValue ), "size", + CommandLine::RangeReader< uint32_t >( kStreamBuffer_MinMB, kStreamBuffer_MaxMB ) ); + + if ( declare_options.Parse( argc, argv ) ) + { + for ( const auto& option_value : declare_options.GetOptionWithValueArray() ) + { + switch ( option_value->GetId() ) + { + case kOption_Help: + declare_options.PrintUsage( "clang-server [options] " ); + return 0; + case kOption_Version: + std::cout << server_version << " (" << generate << ")" << std::endl; + std::cout << clang_version << std::endl; + return 0; + case kOption_LogFile: + if ( option_value->IsValid() ) + { + const std::string result = declare_options.GetValue< std::string >( option_value ); + + logfile = result; + } + break; + case kOption_STDIN_BufferSize: + if ( option_value->IsValid() ) + { + const uint32_t result = declare_options.GetValue< uint32_t >( option_value ); + + stdin_buffer_size = result; + } + break; + case kOption_STDOUT_BufferSize: + if ( option_value->IsValid() ) + { + const uint32_t result = declare_options.GetValue< uint32_t >( option_value ); + + stdout_buffer_size = result; + } + break; + } + } + declare_options.PrintWarnings(); + } + else + { + declare_options.PrintErrors(); + return 1; + } + } + + + // stream buffer expand + // std::shared_ptr< char > stdin_buffer( new char[ kStreamBuffer_UnitSize ], std::default_delete< char[] >() ); + // std::shared_ptr< char > stdout_buffer( new char[ kStreamBuffer_UnitSize ], std::default_delete< char[] >() ); + + stdin_buffer_size *= kStreamBuffer_UnitSize; + stdout_buffer_size *= kStreamBuffer_UnitSize; + + + // server instance + ClangFlagConverters flag_converter; + ClangServer::Specification initial_spec( stdin_buffer_size, stdout_buffer_size, logfile ); + ClangServer server( initial_spec ); + + + server.ParseCommand(); + + + return 0; +} + + + + +/*================================================================================================*/ +/* EOF */ +/*================================================================================================*/ diff --git a/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/patch/invalidate-mmap.patch b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/patch/invalidate-mmap.patch new file mode 100644 index 0000000..d01b811 --- /dev/null +++ b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/patch/invalidate-mmap.patch @@ -0,0 +1,22 @@ +Index: lib/Support/MemoryBuffer.cpp +=================================================================== +--- lib/Support/MemoryBuffer.cpp (revision 226551) ++++ lib/Support/MemoryBuffer.cpp (working copy) +@@ -267,6 +267,9 @@ + bool RequiresNullTerminator, + int PageSize, + bool IsVolatileSize) { ++#if 1 ++ return false; ++#else + // mmap may leave the buffer without null terminator if the file size changed + // by the time the last page is mapped in, so avoid it if the file size is + // likely to change. +@@ -306,6 +309,7 @@ + return false; + + return true; ++#endif + } + + static ErrorOr> diff --git a/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/patch/libclang-x86_64.patch b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/patch/libclang-x86_64.patch new file mode 100644 index 0000000..12fa1c6 --- /dev/null +++ b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/patch/libclang-x86_64.patch @@ -0,0 +1,29 @@ +Index: tools/libclang/CMakeLists.txt +=================================================================== +--- tools/libclang/CMakeLists.txt (revision 226551) ++++ tools/libclang/CMakeLists.txt (working copy) +@@ -72,9 +72,9 @@ + endif() + + if(WIN32) +- set(output_name "libclang") ++ set(output_name "libclang-x86_64") + else() +- set(output_name "clang") ++ set(output_name "clang-x86_64") + endif() + + add_clang_library(libclang ${ENABLE_SHARED} ${ENABLE_STATIC} +Index: tools/libclang/Makefile +=================================================================== +--- tools/libclang/Makefile (revision 226551) ++++ tools/libclang/Makefile (working copy) +@@ -8,7 +8,7 @@ + ##===----------------------------------------------------------------------===## + + CLANG_LEVEL := ../.. +-LIBRARYNAME = clang ++LIBRARYNAME = clang-x86_64 + + EXPORTED_SYMBOL_FILE = $(PROJ_SRC_DIR)/libclang.exports + diff --git a/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/readme.ja.md b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/readme.ja.md new file mode 100644 index 0000000..d8abdf7 --- /dev/null +++ b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/readme.ja.md @@ -0,0 +1,381 @@ + + + +[English Manual](./readme.md) + +# ã“ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã«ã¤ã„㦠+ +clang-serverã®ã‚»ãƒ«ãƒ•ãƒ“ルドã«ã¤ã„ã¦èª¬æ˜Žã—ã¾ã™ã€‚ +※Windows環境ã§ä»˜å±žã®å®Ÿè¡Œãƒ•ã‚¡ã‚¤ãƒ«ã‚’利用ã™ã‚‹å ´åˆã¯èª­ã¾ãªãã¦ã‚‚å•é¡Œã‚ã‚Šã¾ã›ã‚“。 + +# セルフビルド手順 + +clang-serverã®ãƒ“ルドã«ã¯LLVMã®libclangãŒå¿…è¦ã«ãªã‚Šã¾ã™ã€‚ +ã§ã™ã®ã§LLVM libclangをセルフビルドã—ã¦ã‹ã‚‰clang-serverをセルフビルドã—ã¾ã™ã€‚ + +## LLVMセルフビルド + +以下ã®ï¼”ã¤ã‚’è¡Œã„ã¾ã™ã€‚ +ã“ã®ä½œæ¥­ã‚’簡略化ã™ã‚‹ã‚¹ã‚¯ãƒªãƒ—トもã‚ã‚Šã¾ã™ã€‚ +- LLVMã®ãƒã‚§ãƒƒã‚¯ã‚¢ã‚¦ãƒˆ +- パッãƒã®é©ç”¨ +- CMake or configureã«ã‚ˆã‚‹ãƒ—ãƒ­ã‚¸ã‚§ã‚¯ãƒˆãƒ•ã‚¡ã‚¤ãƒ«ç”Ÿæˆ +- ビルド + +## clang-serverセルフビルド + +LLVMセルフビルドã§ç”Ÿæˆã—ãŸãƒ‘ッãƒé©ç”¨æ¸ˆã¿ã®ãƒ©ã‚¤ãƒ–ラリ libclang を使用ã—ã¾ã™ã€‚ +- CMakeã«ã‚ˆã‚‹ãƒ—ãƒ­ã‚¸ã‚§ã‚¯ãƒˆãƒ•ã‚¡ã‚¤ãƒ«ç”Ÿæˆ +- ビルド +- インストール + +# セルフビルドã«å¿…è¦ãªã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ + +## Windows + +以下ãŒå¿…è¦ã«ãªã‚Šã¾ã™ã€‚ + +### LLVM + +ビルド済ã¿ãƒ©ã‚¤ãƒ–ラリ +libclang.lib or libclang.imp +libclang.dll +ãŒå¿…è¦ã§ã™ã€‚ + +### Visual Studio 2015/2013/2012/2010 + +ã©ã‚Œã§ã‚‚OK + +### CMake + + + +Windows ZIPをダウンロードã—ã¦ä½•å‡¦ã‹ã¸å±•é–‹ã€‚ +Visual Studio ソリューション&プロジェクトファイル生æˆã¨ã€ãƒ“ルド&インストールã®msbuild呼ã³å‡ºã—ã§ä½¿ç”¨ã•ã‚Œã¾ã™ã€‚ + +## Linux + +以下ãŒå¿…è¦ã«ãªã‚Šã¾ã™ã€‚ + +### LLVM + +ビルド済ã¿ãƒ©ã‚¤ãƒ–ラリ +libclang.so +ãŒå¿…è¦ã§ã™ã€‚ + +### CMake + + $ sudo apt-get install cmake + +最新版ã®å ´åˆã¯â†“ã‹ã‚‰ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ + + + +cmake-3.1.3.tar.gzをダウンロードã—解å‡ã€ãƒ“ルドã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‚’è¡Œã†ã€‚ + + $ tar -xf cmake-3.1.3.tar.gz . + $ cd cmake-3.1.3 + $ ./configure && make + $ make install + +# セルフビルド + +## Windows + +### LLVM + +LLVMã®ã‚»ãƒ«ãƒ•ãƒ“ルドãŒå¿…è¦ã«ãªã‚Šã¾ã™ã€‚ +ã¾ãŸã‚»ãƒ«ãƒ•ãƒ“ルド時ã«ãƒ‘ッãƒã‚’é©ç”¨ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ +セルフビルド後ã®ãƒ‘ッケージã¯ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹å¿…è¦ã¯ã‚ã‚Šã¾ã›ã‚“。 +ビルド後ã«ç”Ÿæˆã•ã‚ŒãŸãƒã‚¤ãƒŠãƒªã‚’指ã™ãƒ‘スを +CMakeã«ã‚ˆã‚‹ãƒ—ロジェクト生æˆæ™‚ã«è¨­å®šã™ã‚Œã°ãƒ“ルドå¯èƒ½ã§ã™ã€‚ +LLVMãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ¸ˆã¿ã§ã‚ã‚Œã°ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„るディレクトリを指定ã—ã¾ã™ã€‚ + +LLVMセルフビルドを行ã†å ´åˆã¯ +自å‰ã§ãƒã‚§ãƒƒã‚¯ã‚¢ã‚¦ãƒˆã—ã€CMakeã§LLVMソリューションファイルを生æˆã™ã‚‹ã‹ã€ä»¥ä¸‹ã®shell scriptを使用ã—ã¦ãã ã•ã„。 + + +1. スクリプトã§LLVMパッãƒã‚’é©ç”¨ã™ã‚‹æ–¹æ³• + + builderShell ã®å¼•æ•°ã« -tasks を指定ã—ã€-tasks パラメーター㫠PATCH を追加〠+ パッãƒã‚’é©ç”¨ã™ã‚‹ãƒ‘スã¨ãƒ‘ッãƒãƒ•ã‚¡ã‚¤ãƒ«ã‚’記述ã—ãŸãƒ†ãƒ¼ãƒ–ルを -patchInfos パラメーターã¨ã—ã¦ä¸Žãˆã¾ã™ã€‚ + 詳ã—ãã¯llvm-build-shellsã®sample.ps1ã‚’å‚考ã«ã—ã¦ãã ã•ã„。 + +2. LLVMパッãƒã®å†…容 + + mmapã®ä½¿ç”¨ãŒå¸¸æ™‚無効化ã•ã‚Œã¾ã™ã€‚ + +### clang-server + +ac-clang/build/builder\_sample.bat +を使用ã—ã¾ã™ã€‚ +å¿…è¦ã«å¿œã˜ã¦builder\_sample.batを編集ã—ã¦ãã ã•ã„。 +コマンドラインã‹ã‚¨ã‚¯ã‚¹ãƒ—ローラーã‹ã‚‰å®Ÿè¡Œã—ã¾ã™ã€‚ + +- example + + cmake -G "Visual Studio 12 2013 Win64" ../clang-server -DLIBRARY_PATHS="c:/cygwin-x86_64/tmp/llvm-build-shells/ps1/clang-360/build/msvc-64/" -DCMAKE_INSTALL_PREFIX="c:/cygwin-x86_64/usr/local/bin/" + +- オプション解説 + - `-DLIBRARY_PATHS` + セルフビルドã—ãŸLLVMãŒé…ç½®ã•ã‚Œã¦ã„るディレクトリを指定ã—ã¾ã™ã€‚ + LLVMã®ãƒˆãƒƒãƒ—ディレクトリã§ã‚ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ + çœç•¥ã—ãŸå ´åˆã¯ ac-clang/clang-server ãŒä½¿ã‚ã‚Œã¾ã™ã€‚ + - `-DCMAKE_INSTALL_PREFIX` + clang-serverã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ãƒ‘スを指定ã—ã¾ã™ã€‚ + çœç•¥ã—ãŸå ´åˆã¯ + `C:/Program Files/clang-server` + ã«ãªã‚Šã¾ã™ã€‚ + +## Linux + +### LLVM + +LLVMã®ã‚»ãƒ«ãƒ•ãƒ“ルドãŒå¿…è¦ã«ãªã‚Šã¾ã™ã€‚ +ã¾ãŸã‚»ãƒ«ãƒ•ãƒ“ルド時ã«ãƒ‘ッãƒã‚’é©ç”¨ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ +セルフビルド後ã®ãƒ‘ッケージã¯ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹å¿…è¦ã¯ã‚ã‚Šã¾ã›ã‚“。 +ビルド後ã«ç”Ÿæˆã•ã‚ŒãŸãƒã‚¤ãƒŠãƒªã‚’指ã™ãƒ‘スを +CMakeã«ã‚ˆã‚‹ãƒ—ロジェクト生æˆæ™‚ã«è¨­å®šã™ã‚Œã°ãƒ“ルドå¯èƒ½ã§ã™ã€‚ +LLVMãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ¸ˆã¿ã§ã‚ã‚Œã°ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„るディレクトリを指定ã—ã¾ã™ã€‚ + +LLVMセルフビルドを行ã†å ´åˆã¯ +自å‰ã§ãƒã‚§ãƒƒã‚¯ã‚¢ã‚¦ãƒˆã—ã€CMakeã§LLVMソリューションファイルを生æˆã™ã‚‹ã‹ã€ä»¥ä¸‹ã®shell scriptを使用ã—ã¦ãã ã•ã„。 + + +1. スクリプトã§LLVMパッãƒã‚’é©ç”¨ã™ã‚‹æ–¹æ³• + + executeBuilder ã®å¼•æ•°ã« -patch を追加ã—〠+ パッãƒã‚’é©ç”¨ã™ã‚‹ãƒ‘スを-patchApplyLocation〠+ パッãƒãƒ•ã‚¡ã‚¤ãƒ«ã‚’-patchPathã«è¨˜è¿°ã—ã¦å¼•æ•°ã¨ã—ã¦ä¸Žãˆã¾ã™ã€‚ + -patchApplyLocation,-patchPathã¯ãƒšã‚¢ã«ãªã£ã¦ãŠã‚Šã€è¤‡æ•°å›žæŒ‡å®šå¯èƒ½ã§ã™ã€‚ + 詳ã—ãã¯llvm-build-shellsã®sample.shã‚’å‚考ã«ã—ã¦ãã ã•ã„。 + +2. LLVMパッãƒã®å†…容 + + mmapã®ä½¿ç”¨ãŒå¸¸æ™‚無効化ã•ã‚Œã¾ã™ã€‚ + +### clang-server + +ac-clang/build/builder\_sample.sh +を使用ã—ã¾ã™ã€‚ +å¿…è¦ã«å¿œã˜ã¦builder\_sample.shを編集ã—ã¦ãã ã•ã„。 +builder\_sample.shを実行ã—ã¾ã™ã€‚ + +- example + + cmake -G "Unix Makefiles" ../clang-server -DLIBRARY_PATHS="/home/yaruopooner/work/llvm-build-shells/sh/clang-350/build" -DCMAKE_INSTALL_PREFIX="~/work/clang-server" + +- オプション解説 + - `-DLIBRARY_PATHS` + セルフビルドã—ãŸLLVMãŒé…ç½®ã•ã‚Œã¦ã„るディレクトリを指定ã—ã¾ã™ã€‚ + LLVMã®ãƒˆãƒƒãƒ—ディレクトリã§ã‚ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ + çœç•¥ã—ãŸå ´åˆã¯ ac-clang/clang-server ãŒä½¿ã‚ã‚Œã¾ã™ã€‚ + - `-DCMAKE_INSTALL_PREFIX` + clang-serverã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ãƒ‘スを指定ã—ã¾ã™ã€‚ + çœç•¥ã—ãŸå ´åˆã¯ + `/usr/local/bin` + ã«ãªã‚Šã¾ã™ã€‚ + +# パッãƒé©ç”¨æ¸ˆã¿ãƒã‚¤ãƒŠãƒª(Windows Only) + + + +上記ã«ç½®ã„ã¦ã‚ã‚‹clang-server-X.X.X.zip㯠+パッãƒé©ç”¨æ¸ˆã¿ã®ãƒã‚¤ãƒŠãƒªã¨ãƒ©ã‚¤ãƒ–ラリファイル +- clang-server.exe +- libclang.dll +- libclang.lib or libclang.imp + +ã®ï¼“ファイルãŒæ ¼ç´ã•ã‚Œã¦ã„ã¾ã™ã€‚ + +LLVMã¯ã‚»ãƒ«ãƒ•ãƒ“ルドã›ãšã«clang-serverã®ã¿ã‚’セルフビルドã™ã‚‹å ´åˆã¯ +clang-server-X.X.X.zipã‚’ac-clangã«è§£å‡ã—ã¾ã™ã€‚ +ã™ã‚‹ã¨ä»¥ä¸‹ã®ã‚ˆã†ã«é…ç½®ã•ã‚Œã¾ã™ã€‚ +ac-clang/clang-server/binary/clang-server.exe +ac-clang/clang-server/library/x86\_64/release/libclang.dll +ac-clang/clang-server/library/x86\_64/release/libclang.lib + +# パッãƒã‚’é©ç”¨ã›ãšLLVMオフィシャルã®libclangを使用ã™ã‚‹å ´åˆã®åˆ¶é™äº‹é … + +## 特定ファイルãŒãƒ­ãƒƒã‚¯ã•ã‚Œã‚»ãƒ¼ãƒ–ã§ããªããªã‚‹ + +編集ã—ãŸãƒ˜ãƒƒãƒ€ãƒ•ã‚¡ã‚¤ãƒ«ã‚’セーブã—よã†ã¨ã™ã‚‹ã¨ "basic-save-buffer-2: Opening output file: invalid argument \`HEADER-FILE-NAME\`" ã¨ãªã‚Šã‚»ãƒ¼ãƒ–ã§ããªã„。 +å¿…ãšç™ºç”Ÿã™ã‚‹ã‚ã‘ã§ã¯ãªã特定ã®æ¡ä»¶ã‚’満ãŸã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã‚µã‚¤ã‚ºãŒ16kBを越ãˆã‚‹ãƒ˜ãƒƒãƒ€ãƒ•ã‚¡ã‚¤ãƒ«ã§ç™ºç”Ÿã™ã‚‹ã€‚ +16kB以下ã®ãƒ˜ãƒƒãƒ€ãƒ•ã‚¡ã‚¤ãƒ«ã§ã¯ã¾ã£ãŸã発生ã—ãªã„。 +libclang ã® TranslationUnit(以下TU) ã®å•é¡Œã€‚ +libclang ã® TU ãŒinclude対象ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ロックã—ã¦ã„る。 +ac-clangå´ã§æš«å®šå¯¾å‡¦ãƒ‘ッãƒã‚’æ–½ã—ã¦ã‚ã‚‹ã®ã§å¤šå°‘ã¯ç·©å’Œã•ã‚Œã¦ã„ã‚‹ãŒå®Œå…¨ã«å›žé¿ã¯ã§ããªã„。 +発生ã—ãŸå ´åˆã¯ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«å¯¾å‡¦ã™ã‚‹ä»¥å¤–ãªã„。 + +### emacså´ã§ã®å¯¾å‡¦æ–¹æ³• + +include対象ãªã®ã§å¤§æŠµã¯ foo.cpp/foo.hpp ã¨ã„ã†æ§‹æˆã ã¨ãŠã‚‚ã‚ã‚Œã¾ã™ã€‚ +foo.hpp(modified)ãŒã‚»ãƒ¼ãƒ–ã§ããªã„å ´åˆã€å¤§æŠµfoo.cppãŒ(modified)ã«ãªã£ã¦ã„ã‚‹ã®ã§foo.cppをセーブã—ã¾ã—ょã†ã€‚ +ã“ã‚Œã«ã‚ˆã‚Šfoo.hppã¯ã‚»ãƒ¼ãƒ–å¯èƒ½ã«ãªã‚‹ã¯ãšã§ã™ã€‚ +ã“ã‚Œã§ã‚‚セーブã§ããªã„å ´åˆã¯ã€foo.cpp以外ã®ã‚½ãƒ¼ã‚¹ã§foo.hppをインクルードã—ã¦ãŠã‚Š(modified)ã«ãªã£ã¦ã„ã‚‹ãƒãƒƒãƒ•ã‚¡ãŒã‚ã‚‹ã¯ãšãªã®ã§ +ãれもセーブã—ã¾ã—ょã†ã€‚ +ã¾ãŸã€å®šç¾©ã¸ã®ã‚¸ãƒ£ãƒ³ãƒ—機能ã§è©²å½“ソースãŒã‚¢ã‚¯ãƒ†ã‚£ãƒ–化ã•ã‚Œã¦ã„ã‚‹å ´åˆã¯ã€æœªç·¨é›†ãƒãƒƒãƒ•ã‚¡ã§ã‚ã£ã¦ã‚‚アクティブ化ã•ã‚Œã¦ã„ã¾ã™ã€‚ +該当ãƒãƒƒãƒ•ã‚¡ã‚’削除ã—ã¦ã¿ã‚‹ã‹ã€ãã®ãƒãƒƒãƒ•ã‚¡ã¸ã‚¹ã‚¤ãƒƒãƒã—㦠(ac-clang-deactivate) を実行ã—ã¦ãã ã•ã„。 +ã“れ以外ã§ã‚‚16kBを越ãˆã‚‹ãƒ˜ãƒƒãƒ€ã‚’編集ã—よã†ã¨ã—ãŸéš›ã«ã€ãã®ãƒ•ã‚¡ã‚¤ãƒ«ã®cppã¯ã‚ªãƒ¼ãƒ—ンã—ã¦ã‚‚ã„ãªã„ã®ã«ã‚»ãƒ¼ãƒ–ã§ããªã„å ´åˆã€ +該当ヘッダファイルを何処ã‹é ã„モジュールã§ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã—ã¦ã„ã‚‹å ´åˆãªã©ã‚‚åŒæ§˜ã®ç—‡çŠ¶ã«ãªã‚Šã¾ã™ã€‚ +ライブラリモジュールやフレームワークãªã©ã‚’開発ã—ã¦ã„ã‚‹å ´åˆã¯ç™ºç”Ÿã—ã‚„ã™ã„ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。 +※ライブラリ・フレームワークã¯ã‚¢ãƒ—リå´ã‹ã‚‰ã‚ˆãincludeã•ã‚Œã‚‹ãŸã‚。 + +### 原因(実装上ã®å•é¡Œèª¬æ˜Žã€è§£æ±ºæ¡ˆæ±‚む) + +foo.cpp(modified)ã®ã¨ã foo.cppã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã§ +TU㌠foo.cpp パース後もincludeã•ã‚Œã¦ã„るファイルã®ãƒ­ãƒƒã‚¯ã‚’ä¿æŒã—ã¤ã¥ã‘ã¦ã„る。 +ã“ã®çŠ¶æ…‹ã§ foo.hpp を編集ã—ã¦ã‚»ãƒ¼ãƒ–ã—よã†ã¨ã™ã‚‹ã¨ãƒ­ãƒƒã‚¯ã§ã‚¨ãƒ©ãƒ¼ã«ãªã‚‹ã€‚ +ロックを解除ã™ã‚‹ã«ã¯ã€ foo.cpp ã®TUをリリースã™ã‚‹ã€‚ +ãªã®ã§ foo.cpp セーブ時ã«ã‚»ãƒƒã‚·ãƒ§ãƒ³ã¯ä¿æŒã—ãŸçŠ¶æ…‹ã§ TU ã ã‘をリリースã—ã¦ã€ +foo.cpp ãŒå†ã³ modified ã«ãªã£ãŸã¨ãã« TU を生æˆã™ã‚‹ã‚ˆã†ã«ä¿®æ­£ã€‚ +ã“ã‚Œã«ã‚ˆã‚Š foo.cpp セーブ後ã§ã‚ã‚Œã°includeロックã§ãŒå…¨è§£é™¤ã•ã‚Œã‚‹ã®ã§ foo.hpp ãŒã‚»ãƒ¼ãƒ–å¯èƒ½ã«ãªã‚‹ã€‚ +当然 foo.cpp 以外㫠foo.hpp ã‚’include ã—ã¦ã„るソースã§ã‹ã¤ã€ç·¨é›†ä¸­ã®ãƒãƒƒãƒ•ã‚¡ãŒã‚ã‚‹å ´åˆã¯ã€ +ãれら全ã¦ã‚’ä¿å­˜ã—ãªã„ã¨ãƒ­ãƒƒã‚¯ã§ã¯è§£é™¤ã•ã‚Œãªã„。 + +Windows環境ã«ãŠã„ã¦ã€ +ã“ã®ãƒ­ãƒƒã‚¯ã¯I/Oã®open関数ã«ã‚ˆã‚‹ãƒ­ãƒƒã‚¯ã¯ã§ã¯ãªãWindowsAPIã®CreateFileMappingã«ã‚ˆã‚‹ãƒ­ãƒƒã‚¯ã§ã‚る。 +libclang FileManagerã¯16kB以上ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’メモリマップドファイルã¨ã—ã¦ã‚¢ãƒ­ã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã™ã‚‹ã€‚ +TUãŒãƒªãƒªãƒ¼ã‚¹ã•ã‚Œã‚‹ã¨UnmapViewOfFileã«ã‚ˆã‚Šãƒ¡ãƒ¢ãƒªãƒžãƒƒãƒ—ドファイルãŒãƒªãƒªãƒ¼ã‚¹ã•ã‚Œã‚‹ã‚ˆã†ã«ãªã‚Šãƒ•ã‚¡ã‚¤ãƒ«ã«å¯¾ã—ã¦æ›¸ãè¾¼ã¿å¯èƒ½ã«ãªã‚‹ã€‚ + +Linux環境ã«ãŠã„ã¦ã‚‚発ç¾ã™ã‚‹ä¸å…·åˆã¯Windows環境ã¨è‹¥å¹²ç•°ãªã‚‹ã‚‚ã®ã® mmap/munmapã«ã‚ˆã‚‹å•é¡Œã¯ç™ºç”Ÿã™ã‚‹ã€‚ +foo.cppã®TUã‚’ä¿æŒã—ã¦ã„る状態ã§foo.hppã«ãŠã„ã¦class fooã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’追加・削除ã—ä¿å­˜ã™ã‚‹ã€‚ +foo.hpp更新後ã«foo.cppã«ãŠã„ã¦class fooã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’補間ã—よã†ã¨ã™ã‚‹ã¨TUãŒã‚¯ãƒ©ãƒƒã‚·ãƒ¥ã™ã‚‹ã€‚ +libclangãŒSTDOUTã« "libclang: crash detected in code completion" を出力ã™ã‚‹ã€‚ +clang-serverã®ãƒ—ロセスã¯ç”Ÿãã¦ãŠã‚Šã€ã‚»ãƒƒã‚·ãƒ§ãƒ³ã‚’破棄ã—ã¦å†ç”Ÿæˆã™ã‚Œã°è£œé–“続行ã¯å¯èƒ½ã€‚ + +## ãã®ä»– + +上記ã®å•é¡Œã¯libclangã«ãƒ‘ッãƒã‚’é©ç”¨ã—ã¦æ”¹å–„ã—ã¦ã„る。 + +パッãƒã‚’é©ç”¨ã—ãŸãƒªãƒªãƒ¼ã‚¹ãƒã‚¤ãƒŠãƒªã®libclang-x86\_XX.(dll or so)を使用ã—ã¦ã„ã‚‹å ´åˆã¯ç™ºç”Ÿã—ãªã„。 +パッãƒã‚’é©ç”¨ã—ã¦ã„ãªã„LLVMセルフビルドãŠã‚ˆã³ã€LLVMオフィシャルãƒã‚¤ãƒŠãƒªã‚’使用ã™ã‚‹å ´åˆã«ã®ã¿å•é¡ŒãŒç™ºç”Ÿã—ã¾ã™ã€‚ +clangå´ã®ä»•æ§˜ãƒã‚°ãªã®ã§ç¾åœ¨LLVM bugzilla ã«å ±å‘Šæ¸ˆã¿ã€‚対応待ã¡ä¸­ã€‚ + + +# パッãƒè§£èª¬ + +## パッム+ +ac-clang/clang-server/patch/invalidate-mmap.patch +を使用。 + + cd llvm/ + svn patch ac-clang/clang-server/patch/invalidate-mmap.patch + +## パッãƒ(invalidate-mmap.patch)ã§è¡Œã£ã¦ã„る事 + +mmapを使ã‚ãªã„よã†ã«ãƒ‘ッãƒã‚’é©ç”¨ã—ã¦ã„ã‚‹ +é©ç”¨ã™ã‚‹ã®ã¯ä»¥ä¸‹ã®ã‚½ãƒ¼ã‚¹ +clang-trunk/llvm/lib/Support/MemoryBuffer.cpp + + static error_code getOpenFileImpl(int FD, const char *Filename, + OwningPtr &result, + uint64_t FileSize, uint64_t MapSize, + int64_t Offset, bool RequiresNullTerminator) { + +↑ã®é–¢æ•°å†…ã§å‘¼ã°ã‚Œã‚‹ shouldUseMmap ã«ã‚ˆã‚Šãƒ•ã‚¡ã‚¤ãƒ«ã«å¯¾ã™ã‚‹mmapã®ä½¿ç”¨å¯å¦ãŒåˆ¤æ–­ã•ã‚Œã‚‹ + + static bool shouldUseMmap(int FD, + size_t FileSize, + size_t MapSize, + off_t Offset, + bool RequiresNullTerminator, + int PageSize) { + +ã“ã®é–¢æ•°ã®resultãŒå¸¸æ™‚falseã§ã‚ã‚Œã°mmapã¯æ’ä¹…çš„ã«ä½¿ç”¨ã•ã‚Œãªã„。 +よã£ã¦ã“ã®é–¢æ•°ã®å…ˆé ­ã§ + + return false; + +ã¨ã™ã‚Œã°ã‚ˆã„。 +以é™ã®ã‚³ãƒ¼ãƒ‰ã¯#if 0 end ã™ã‚‹ãªã‚Šã™ã‚Œã°ã‚ˆã„。 + +## LLVM3.5ã®è¿½åŠ ä»•æ§˜ + +shouldUseMmap,getOpenFileImplã«å¼•æ•°IsVolatileSizeãŒè¿½åŠ ã•ã‚ŒãŸã€‚ +ã“ã‚Œã¯shouldUseMmapã¾ã§åŠ å·¥ãªã—ã§ãƒ‘スã•ã‚Œã€ +shouldUseMmap先頭ã«ãŠã„ã¦ã€ + + if (IsVolatileSize) + return false; + +ã•ã‚Œã‚‹ã€‚ +コメントãŒã¤ã„ã¦ã„㟠+ + // mmap may leave the buffer without null terminator if the file size changed + // by the time the last page is mapped in, so avoid it if the file size is + // likely to change. + +mmapã¯ãƒ•ã‚¡ã‚¤ãƒ«ã‚µã‚¤ã‚ºãŒæœ€å¾Œã®ãƒšãƒ¼ã‚¸ãŒãƒžãƒƒãƒ—ã•ã‚ŒãŸã•ã‚ŒãŸæ™‚点ã§å¤‰æ›´ã•ã‚ŒãŸå ´åˆã¯null終端ã›ãšã«ãƒãƒƒãƒ•ã‚¡ã‚’残ã™ã®ã§ã€ãƒ•ã‚¡ã‚¤ãƒ«ã‚µã‚¤ã‚ºãŒå¤‰æ›´ã•ã‚Œã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹å ´åˆã¯ã€ãれを回é¿ã™ã‚‹ã“ã¨ãŒã§ãる。 + +ã¨ã¯è¨€ã£ã¦ã„ã‚‹ã‚‚ã®ã®ã€æƒ³å®šã•ã‚Œã¦ã„ãªã„事態ãŒã„ã‚ã„ã‚ã‚るよã†ã§ä»•æ§˜æŠœã‘ã®æ¨¡æ§˜ã€‚ +ã¾ãŸãƒãƒƒãƒ•ã‚¡ç¢ºä¿ç³»é–¢æ•°ã®ä¸Šæµã§ IsVolatileSize ãŒæŒ‡å®šã•ã‚Œã¦ã„ãªã‹ã£ãŸã‚Šã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã®ã¾ã¾é‹ç”¨ã•ã‚Œã¦ã„る箇所ãŒä½•ç®‡æ‰€ã‹è¦‹å—ã‘られãŸã€‚ +ãã†ã„ã£ãŸç®‡æ‰€ã‚’自å‰ã§ä¿®æ­£ã—ã¦ã¿ãŸã¨ã“ã‚従æ¥ã‚ˆã‚Šãƒžã‚·ã«ãªã£ãŸã‚‚ã®ã®ã€ä»–ã«ã‚‚å•é¡ŒãŒã‚るよã†ã§æƒ³å®šé€šã‚Šã«mmapを制御ã¯å‡ºæ¥ãªã‹ã£ãŸã€‚ +LLVMã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚·ã‚¹ãƒ†ãƒ ãƒ»ãƒ¡ãƒ¢ãƒªå‘¨ã‚Šã®ä»•æ§˜ã‚’完全ã«æŠŠæ¡ã—ã¦ã„ãªã„ã¨ã€ã“ã“ら辺ã®ä¿®æ­£ã¯åŽ³ã—ã„ã®ã‹ã‚‚ã—ã‚Œãªã„。 +よã£ã¦ç¾æ™‚点ã«ãŠã„ã¦ã¯ä¸Šè¨˜ãƒ‘ッãƒé©ç”¨ãŒä¸€ç•ªç„¡é›£ãªã‚„ã‚Šæ–¹ã¨ãªã‚‹ã€‚ diff --git a/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/readme.ja.org b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/readme.ja.org new file mode 100644 index 0000000..77a3ede --- /dev/null +++ b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/readme.ja.org @@ -0,0 +1,297 @@ +# -*- mode: org ; coding: utf-8-unix -*- +# last updated : 2015/07/21.00:46:00 + + +#+TITLE: Clang Server Manual +#+AUTHOR: yaruopooner +#+EMAIL: [https://github.com/yaruopooner] +#+OPTIONS: author:nil timestamp:t |:t \n:t ^:nil + + +[[./readme.org][English Manual]] + +* ã“ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã«ã¤ã„㦠+ clang-serverã®ã‚»ãƒ«ãƒ•ãƒ“ルドã«ã¤ã„ã¦èª¬æ˜Žã—ã¾ã™ã€‚ + ※Windows環境ã§ä»˜å±žã®å®Ÿè¡Œãƒ•ã‚¡ã‚¤ãƒ«ã‚’利用ã™ã‚‹å ´åˆã¯èª­ã¾ãªãã¦ã‚‚å•é¡Œã‚ã‚Šã¾ã›ã‚“。 + +* セルフビルド手順 + clang-serverã®ãƒ“ルドã«ã¯LLVMã®libclangãŒå¿…è¦ã«ãªã‚Šã¾ã™ã€‚ + ã§ã™ã®ã§LLVM libclangをセルフビルドã—ã¦ã‹ã‚‰clang-serverをセルフビルドã—ã¾ã™ã€‚ + +** LLVMセルフビルド + 以下ã®ï¼”ã¤ã‚’è¡Œã„ã¾ã™ã€‚ + ã“ã®ä½œæ¥­ã‚’簡略化ã™ã‚‹ã‚¹ã‚¯ãƒªãƒ—トもã‚ã‚Šã¾ã™ã€‚ + - LLVMã®ãƒã‚§ãƒƒã‚¯ã‚¢ã‚¦ãƒˆ + - パッãƒã®é©ç”¨ + - CMake or configureã«ã‚ˆã‚‹ãƒ—ãƒ­ã‚¸ã‚§ã‚¯ãƒˆãƒ•ã‚¡ã‚¤ãƒ«ç”Ÿæˆ + - ビルド + +** clang-serverセルフビルド + LLVMセルフビルドã§ç”Ÿæˆã—ãŸãƒ‘ッãƒé©ç”¨æ¸ˆã¿ã®ãƒ©ã‚¤ãƒ–ラリ libclang を使用ã—ã¾ã™ã€‚ + - CMakeã«ã‚ˆã‚‹ãƒ—ãƒ­ã‚¸ã‚§ã‚¯ãƒˆãƒ•ã‚¡ã‚¤ãƒ«ç”Ÿæˆ + - ビルド + - インストール + +* セルフビルドã«å¿…è¦ãªã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ +** Windows + 以下ãŒå¿…è¦ã«ãªã‚Šã¾ã™ã€‚ +*** LLVM + ビルド済ã¿ãƒ©ã‚¤ãƒ–ラリ + libclang.lib or libclang.imp + libclang.dll + ãŒå¿…è¦ã§ã™ã€‚ + +*** Visual Studio 2015/2013/2012/2010 + ã©ã‚Œã§ã‚‚OK + +*** CMake + http://www.cmake.org/ + + Windows ZIPをダウンロードã—ã¦ä½•å‡¦ã‹ã¸å±•é–‹ã€‚ + Visual Studio ソリューション&プロジェクトファイル生æˆã¨ã€ãƒ“ルド&インストールã®msbuild呼ã³å‡ºã—ã§ä½¿ç”¨ã•ã‚Œã¾ã™ã€‚ + +** Linux + 以下ãŒå¿…è¦ã«ãªã‚Šã¾ã™ã€‚ +*** LLVM + ビルド済ã¿ãƒ©ã‚¤ãƒ–ラリ + libclang.so + ãŒå¿…è¦ã§ã™ã€‚ + +*** CMake + #+begin_src shell + $ sudo apt-get install cmake + #+end_src + + 最新版ã®å ´åˆã¯â†“ã‹ã‚‰ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ + + http://www.cmake.org/ + + cmake-3.1.3.tar.gzをダウンロードã—解å‡ã€ãƒ“ルドã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‚’è¡Œã†ã€‚ + #+begin_src shell + $ tar -xf cmake-3.1.3.tar.gz . + $ cd cmake-3.1.3 + $ ./configure && make + $ make install + #+end_src + +* セルフビルド +** Windows +*** LLVM + LLVMã®ã‚»ãƒ«ãƒ•ãƒ“ルドãŒå¿…è¦ã«ãªã‚Šã¾ã™ã€‚ + ã¾ãŸã‚»ãƒ«ãƒ•ãƒ“ルド時ã«ãƒ‘ッãƒã‚’é©ç”¨ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ + セルフビルド後ã®ãƒ‘ッケージã¯ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹å¿…è¦ã¯ã‚ã‚Šã¾ã›ã‚“。 + ビルド後ã«ç”Ÿæˆã•ã‚ŒãŸãƒã‚¤ãƒŠãƒªã‚’指ã™ãƒ‘スを + CMakeã«ã‚ˆã‚‹ãƒ—ロジェクト生æˆæ™‚ã«è¨­å®šã™ã‚Œã°ãƒ“ルドå¯èƒ½ã§ã™ã€‚ + LLVMãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ¸ˆã¿ã§ã‚ã‚Œã°ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„るディレクトリを指定ã—ã¾ã™ã€‚ + + LLVMセルフビルドを行ã†å ´åˆã¯ + 自å‰ã§ãƒã‚§ãƒƒã‚¯ã‚¢ã‚¦ãƒˆã—ã€CMakeã§LLVMソリューションファイルを生æˆã™ã‚‹ã‹ã€ä»¥ä¸‹ã®shell scriptを使用ã—ã¦ãã ã•ã„。 + https://github.com/yaruopooner/llvm-build-shells + +**** スクリプトã§LLVMパッãƒã‚’é©ç”¨ã™ã‚‹æ–¹æ³• + builderShell ã®å¼•æ•°ã« -tasks を指定ã—ã€-tasks パラメーター㫠PATCH を追加〠+ パッãƒã‚’é©ç”¨ã™ã‚‹ãƒ‘スã¨ãƒ‘ッãƒãƒ•ã‚¡ã‚¤ãƒ«ã‚’記述ã—ãŸãƒ†ãƒ¼ãƒ–ルを -patchInfos パラメーターã¨ã—ã¦ä¸Žãˆã¾ã™ã€‚ + 詳ã—ãã¯llvm-build-shellsã®sample.ps1ã‚’å‚考ã«ã—ã¦ãã ã•ã„。 + +**** LLVMパッãƒã®å†…容 + mmapã®ä½¿ç”¨ãŒå¸¸æ™‚無効化ã•ã‚Œã¾ã™ã€‚ + +*** clang-server + ac-clang/build/builder_sample.bat + を使用ã—ã¾ã™ã€‚ + å¿…è¦ã«å¿œã˜ã¦builder_sample.batを編集ã—ã¦ãã ã•ã„。 + コマンドラインã‹ã‚¨ã‚¯ã‚¹ãƒ—ローラーã‹ã‚‰å®Ÿè¡Œã—ã¾ã™ã€‚ + + - example + #+begin_src bat + cmake -G "Visual Studio 12 2013 Win64" ../clang-server -DLIBRARY_PATHS="c:/cygwin-x86_64/tmp/llvm-build-shells/ps1/clang-360/build/msvc-64/" -DCMAKE_INSTALL_PREFIX="c:/cygwin-x86_64/usr/local/bin/" + #+end_src + + - オプション解説 + - =-DLIBRARY_PATHS= + セルフビルドã—ãŸLLVMãŒé…ç½®ã•ã‚Œã¦ã„るディレクトリを指定ã—ã¾ã™ã€‚ + LLVMã®ãƒˆãƒƒãƒ—ディレクトリã§ã‚ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ + çœç•¥ã—ãŸå ´åˆã¯ ac-clang/clang-server ãŒä½¿ã‚ã‚Œã¾ã™ã€‚ + - =-DCMAKE_INSTALL_PREFIX= + clang-serverã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ãƒ‘スを指定ã—ã¾ã™ã€‚ + çœç•¥ã—ãŸå ´åˆã¯ + =C:/Program Files/clang-server= + ã«ãªã‚Šã¾ã™ã€‚ + +** Linux +*** LLVM + LLVMã®ã‚»ãƒ«ãƒ•ãƒ“ルドãŒå¿…è¦ã«ãªã‚Šã¾ã™ã€‚ + ã¾ãŸã‚»ãƒ«ãƒ•ãƒ“ルド時ã«ãƒ‘ッãƒã‚’é©ç”¨ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ + セルフビルド後ã®ãƒ‘ッケージã¯ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹å¿…è¦ã¯ã‚ã‚Šã¾ã›ã‚“。 + ビルド後ã«ç”Ÿæˆã•ã‚ŒãŸãƒã‚¤ãƒŠãƒªã‚’指ã™ãƒ‘スを + CMakeã«ã‚ˆã‚‹ãƒ—ロジェクト生æˆæ™‚ã«è¨­å®šã™ã‚Œã°ãƒ“ルドå¯èƒ½ã§ã™ã€‚ + LLVMãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ¸ˆã¿ã§ã‚ã‚Œã°ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„るディレクトリを指定ã—ã¾ã™ã€‚ + + LLVMセルフビルドを行ã†å ´åˆã¯ + 自å‰ã§ãƒã‚§ãƒƒã‚¯ã‚¢ã‚¦ãƒˆã—ã€CMakeã§LLVMソリューションファイルを生æˆã™ã‚‹ã‹ã€ä»¥ä¸‹ã®shell scriptを使用ã—ã¦ãã ã•ã„。 + https://github.com/yaruopooner/llvm-build-shells + +**** スクリプトã§LLVMパッãƒã‚’é©ç”¨ã™ã‚‹æ–¹æ³• + executeBuilder ã®å¼•æ•°ã« -patch を追加ã—〠+ パッãƒã‚’é©ç”¨ã™ã‚‹ãƒ‘スを-patchApplyLocation〠+ パッãƒãƒ•ã‚¡ã‚¤ãƒ«ã‚’-patchPathã«è¨˜è¿°ã—ã¦å¼•æ•°ã¨ã—ã¦ä¸Žãˆã¾ã™ã€‚ + -patchApplyLocation,-patchPathã¯ãƒšã‚¢ã«ãªã£ã¦ãŠã‚Šã€è¤‡æ•°å›žæŒ‡å®šå¯èƒ½ã§ã™ã€‚ + 詳ã—ãã¯llvm-build-shellsã®sample.shã‚’å‚考ã«ã—ã¦ãã ã•ã„。 + +**** LLVMパッãƒã®å†…容 + mmapã®ä½¿ç”¨ãŒå¸¸æ™‚無効化ã•ã‚Œã¾ã™ã€‚ + +*** clang-server + ac-clang/build/builder_sample.sh + を使用ã—ã¾ã™ã€‚ + å¿…è¦ã«å¿œã˜ã¦builder_sample.shを編集ã—ã¦ãã ã•ã„。 + builder_sample.shを実行ã—ã¾ã™ã€‚ + + - example + #+begin_src shell-script + cmake -G "Unix Makefiles" ../clang-server -DLIBRARY_PATHS="/home/yaruopooner/work/llvm-build-shells/sh/clang-350/build" -DCMAKE_INSTALL_PREFIX="~/work/clang-server" + #+end_src + + - オプション解説 + - =-DLIBRARY_PATHS= + セルフビルドã—ãŸLLVMãŒé…ç½®ã•ã‚Œã¦ã„るディレクトリを指定ã—ã¾ã™ã€‚ + LLVMã®ãƒˆãƒƒãƒ—ディレクトリã§ã‚ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ + çœç•¥ã—ãŸå ´åˆã¯ ac-clang/clang-server ãŒä½¿ã‚ã‚Œã¾ã™ã€‚ + - =-DCMAKE_INSTALL_PREFIX= + clang-serverã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ãƒ‘スを指定ã—ã¾ã™ã€‚ + çœç•¥ã—ãŸå ´åˆã¯ + =/usr/local/bin= + ã«ãªã‚Šã¾ã™ã€‚ + +* パッãƒé©ç”¨æ¸ˆã¿ãƒã‚¤ãƒŠãƒª(Windows Only) + https://github.com/yaruopooner/ac-clang/releases + + 上記ã«ç½®ã„ã¦ã‚ã‚‹clang-server-X.X.X.zip㯠+ パッãƒé©ç”¨æ¸ˆã¿ã®ãƒã‚¤ãƒŠãƒªã¨ãƒ©ã‚¤ãƒ–ラリファイル + - clang-server.exe + - libclang.dll + - libclang.lib or libclang.imp + ã®ï¼“ファイルãŒæ ¼ç´ã•ã‚Œã¦ã„ã¾ã™ã€‚ + + LLVMã¯ã‚»ãƒ«ãƒ•ãƒ“ルドã›ãšã«clang-serverã®ã¿ã‚’セルフビルドã™ã‚‹å ´åˆã¯ + clang-server-X.X.X.zipã‚’ac-clangã«è§£å‡ã—ã¾ã™ã€‚ + ã™ã‚‹ã¨ä»¥ä¸‹ã®ã‚ˆã†ã«é…ç½®ã•ã‚Œã¾ã™ã€‚ + ac-clang/clang-server/binary/clang-server.exe + ac-clang/clang-server/library/x86_64/release/libclang.dll + ac-clang/clang-server/library/x86_64/release/libclang.lib + +* パッãƒã‚’é©ç”¨ã›ãšLLVMオフィシャルã®libclangを使用ã™ã‚‹å ´åˆã®åˆ¶é™äº‹é … +** 特定ファイルãŒãƒ­ãƒƒã‚¯ã•ã‚Œã‚»ãƒ¼ãƒ–ã§ããªããªã‚‹ + 編集ã—ãŸãƒ˜ãƒƒãƒ€ãƒ•ã‚¡ã‚¤ãƒ«ã‚’セーブã—よã†ã¨ã™ã‚‹ã¨ "basic-save-buffer-2: Opening output file: invalid argument `HEADER-FILE-NAME`" ã¨ãªã‚Šã‚»ãƒ¼ãƒ–ã§ããªã„。 + å¿…ãšç™ºç”Ÿã™ã‚‹ã‚ã‘ã§ã¯ãªã特定ã®æ¡ä»¶ã‚’満ãŸã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã‚µã‚¤ã‚ºãŒ16kBを越ãˆã‚‹ãƒ˜ãƒƒãƒ€ãƒ•ã‚¡ã‚¤ãƒ«ã§ç™ºç”Ÿã™ã‚‹ã€‚ + 16kB以下ã®ãƒ˜ãƒƒãƒ€ãƒ•ã‚¡ã‚¤ãƒ«ã§ã¯ã¾ã£ãŸã発生ã—ãªã„。 + libclang ã® TranslationUnit(以下TU) ã®å•é¡Œã€‚ + libclang ã® TU ãŒinclude対象ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ロックã—ã¦ã„る。 + ac-clangå´ã§æš«å®šå¯¾å‡¦ãƒ‘ッãƒã‚’æ–½ã—ã¦ã‚ã‚‹ã®ã§å¤šå°‘ã¯ç·©å’Œã•ã‚Œã¦ã„ã‚‹ãŒå®Œå…¨ã«å›žé¿ã¯ã§ããªã„。 + 発生ã—ãŸå ´åˆã¯ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«å¯¾å‡¦ã™ã‚‹ä»¥å¤–ãªã„。 + +*** emacså´ã§ã®å¯¾å‡¦æ–¹æ³• + include対象ãªã®ã§å¤§æŠµã¯ foo.cpp/foo.hpp ã¨ã„ã†æ§‹æˆã ã¨ãŠã‚‚ã‚ã‚Œã¾ã™ã€‚ + foo.hpp(modified)ãŒã‚»ãƒ¼ãƒ–ã§ããªã„å ´åˆã€å¤§æŠµfoo.cppãŒ(modified)ã«ãªã£ã¦ã„ã‚‹ã®ã§foo.cppをセーブã—ã¾ã—ょã†ã€‚ + ã“ã‚Œã«ã‚ˆã‚Šfoo.hppã¯ã‚»ãƒ¼ãƒ–å¯èƒ½ã«ãªã‚‹ã¯ãšã§ã™ã€‚ + ã“ã‚Œã§ã‚‚セーブã§ããªã„å ´åˆã¯ã€foo.cpp以外ã®ã‚½ãƒ¼ã‚¹ã§foo.hppをインクルードã—ã¦ãŠã‚Š(modified)ã«ãªã£ã¦ã„ã‚‹ãƒãƒƒãƒ•ã‚¡ãŒã‚ã‚‹ã¯ãšãªã®ã§ + ãれもセーブã—ã¾ã—ょã†ã€‚ + ã¾ãŸã€å®šç¾©ã¸ã®ã‚¸ãƒ£ãƒ³ãƒ—機能ã§è©²å½“ソースãŒã‚¢ã‚¯ãƒ†ã‚£ãƒ–化ã•ã‚Œã¦ã„ã‚‹å ´åˆã¯ã€æœªç·¨é›†ãƒãƒƒãƒ•ã‚¡ã§ã‚ã£ã¦ã‚‚アクティブ化ã•ã‚Œã¦ã„ã¾ã™ã€‚ + 該当ãƒãƒƒãƒ•ã‚¡ã‚’削除ã—ã¦ã¿ã‚‹ã‹ã€ãã®ãƒãƒƒãƒ•ã‚¡ã¸ã‚¹ã‚¤ãƒƒãƒã—㦠(ac-clang-deactivate) を実行ã—ã¦ãã ã•ã„。 + ã“れ以外ã§ã‚‚16kBを越ãˆã‚‹ãƒ˜ãƒƒãƒ€ã‚’編集ã—よã†ã¨ã—ãŸéš›ã«ã€ãã®ãƒ•ã‚¡ã‚¤ãƒ«ã®cppã¯ã‚ªãƒ¼ãƒ—ンã—ã¦ã‚‚ã„ãªã„ã®ã«ã‚»ãƒ¼ãƒ–ã§ããªã„å ´åˆã€ + 該当ヘッダファイルを何処ã‹é ã„モジュールã§ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã—ã¦ã„ã‚‹å ´åˆãªã©ã‚‚åŒæ§˜ã®ç—‡çŠ¶ã«ãªã‚Šã¾ã™ã€‚ + ライブラリモジュールやフレームワークãªã©ã‚’開発ã—ã¦ã„ã‚‹å ´åˆã¯ç™ºç”Ÿã—ã‚„ã™ã„ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。 + ※ライブラリ・フレームワークã¯ã‚¢ãƒ—リå´ã‹ã‚‰ã‚ˆãincludeã•ã‚Œã‚‹ãŸã‚。 + +*** 原因(実装上ã®å•é¡Œèª¬æ˜Žã€è§£æ±ºæ¡ˆæ±‚む) + foo.cpp(modified)ã®ã¨ã foo.cppã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã§ + TU㌠foo.cpp パース後もincludeã•ã‚Œã¦ã„るファイルã®ãƒ­ãƒƒã‚¯ã‚’ä¿æŒã—ã¤ã¥ã‘ã¦ã„る。 + ã“ã®çŠ¶æ…‹ã§ foo.hpp を編集ã—ã¦ã‚»ãƒ¼ãƒ–ã—よã†ã¨ã™ã‚‹ã¨ãƒ­ãƒƒã‚¯ã§ã‚¨ãƒ©ãƒ¼ã«ãªã‚‹ã€‚ + ロックを解除ã™ã‚‹ã«ã¯ã€ foo.cpp ã®TUをリリースã™ã‚‹ã€‚ + ãªã®ã§ foo.cpp セーブ時ã«ã‚»ãƒƒã‚·ãƒ§ãƒ³ã¯ä¿æŒã—ãŸçŠ¶æ…‹ã§ TU ã ã‘をリリースã—ã¦ã€ + foo.cpp ãŒå†ã³ modified ã«ãªã£ãŸã¨ãã« TU を生æˆã™ã‚‹ã‚ˆã†ã«ä¿®æ­£ã€‚ + ã“ã‚Œã«ã‚ˆã‚Š foo.cpp セーブ後ã§ã‚ã‚Œã°includeロックã§ãŒå…¨è§£é™¤ã•ã‚Œã‚‹ã®ã§ foo.hpp ãŒã‚»ãƒ¼ãƒ–å¯èƒ½ã«ãªã‚‹ã€‚ + 当然 foo.cpp 以外㫠foo.hpp ã‚’include ã—ã¦ã„るソースã§ã‹ã¤ã€ç·¨é›†ä¸­ã®ãƒãƒƒãƒ•ã‚¡ãŒã‚ã‚‹å ´åˆã¯ã€ + ãれら全ã¦ã‚’ä¿å­˜ã—ãªã„ã¨ãƒ­ãƒƒã‚¯ã§ã¯è§£é™¤ã•ã‚Œãªã„。 + + Windows環境ã«ãŠã„ã¦ã€ + ã“ã®ãƒ­ãƒƒã‚¯ã¯I/Oã®open関数ã«ã‚ˆã‚‹ãƒ­ãƒƒã‚¯ã¯ã§ã¯ãªãWindowsAPIã®CreateFileMappingã«ã‚ˆã‚‹ãƒ­ãƒƒã‚¯ã§ã‚る。 + libclang FileManagerã¯16kB以上ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’メモリマップドファイルã¨ã—ã¦ã‚¢ãƒ­ã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã™ã‚‹ã€‚ + TUãŒãƒªãƒªãƒ¼ã‚¹ã•ã‚Œã‚‹ã¨UnmapViewOfFileã«ã‚ˆã‚Šãƒ¡ãƒ¢ãƒªãƒžãƒƒãƒ—ドファイルãŒãƒªãƒªãƒ¼ã‚¹ã•ã‚Œã‚‹ã‚ˆã†ã«ãªã‚Šãƒ•ã‚¡ã‚¤ãƒ«ã«å¯¾ã—ã¦æ›¸ãè¾¼ã¿å¯èƒ½ã«ãªã‚‹ã€‚ + + Linux環境ã«ãŠã„ã¦ã‚‚発ç¾ã™ã‚‹ä¸å…·åˆã¯Windows環境ã¨è‹¥å¹²ç•°ãªã‚‹ã‚‚ã®ã® mmap/munmapã«ã‚ˆã‚‹å•é¡Œã¯ç™ºç”Ÿã™ã‚‹ã€‚ + foo.cppã®TUã‚’ä¿æŒã—ã¦ã„る状態ã§foo.hppã«ãŠã„ã¦class fooã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’追加・削除ã—ä¿å­˜ã™ã‚‹ã€‚ + foo.hpp更新後ã«foo.cppã«ãŠã„ã¦class fooã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’補間ã—よã†ã¨ã™ã‚‹ã¨TUãŒã‚¯ãƒ©ãƒƒã‚·ãƒ¥ã™ã‚‹ã€‚ + libclangãŒSTDOUTã« "libclang: crash detected in code completion" を出力ã™ã‚‹ã€‚ + clang-serverã®ãƒ—ロセスã¯ç”Ÿãã¦ãŠã‚Šã€ã‚»ãƒƒã‚·ãƒ§ãƒ³ã‚’破棄ã—ã¦å†ç”Ÿæˆã™ã‚Œã°è£œé–“続行ã¯å¯èƒ½ã€‚ + +** ãã®ä»– + 上記ã®å•é¡Œã¯libclangã«ãƒ‘ッãƒã‚’é©ç”¨ã—ã¦æ”¹å–„ã—ã¦ã„る。 + + パッãƒã‚’é©ç”¨ã—ãŸãƒªãƒªãƒ¼ã‚¹ãƒã‚¤ãƒŠãƒªã®libclang-x86_XX.(dll or so)を使用ã—ã¦ã„ã‚‹å ´åˆã¯ç™ºç”Ÿã—ãªã„。 + パッãƒã‚’é©ç”¨ã—ã¦ã„ãªã„LLVMセルフビルドãŠã‚ˆã³ã€LLVMオフィシャルãƒã‚¤ãƒŠãƒªã‚’使用ã™ã‚‹å ´åˆã«ã®ã¿å•é¡ŒãŒç™ºç”Ÿã—ã¾ã™ã€‚ + clangå´ã®ä»•æ§˜ãƒã‚°ãªã®ã§ç¾åœ¨LLVM bugzilla ã«å ±å‘Šæ¸ˆã¿ã€‚対応待ã¡ä¸­ã€‚ + http://llvm.org/bugs/show_bug.cgi?id=20880 + +* パッãƒè§£èª¬ +** パッム+ ac-clang/clang-server/patch/invalidate-mmap.patch + を使用。 + #+begin_src shell-script + cd llvm/ + svn patch ac-clang/clang-server/patch/invalidate-mmap.patch + #+end_src + +** パッãƒ(invalidate-mmap.patch)ã§è¡Œã£ã¦ã„る事 + mmapを使ã‚ãªã„よã†ã«ãƒ‘ッãƒã‚’é©ç”¨ã—ã¦ã„ã‚‹ + é©ç”¨ã™ã‚‹ã®ã¯ä»¥ä¸‹ã®ã‚½ãƒ¼ã‚¹ + clang-trunk/llvm/lib/Support/MemoryBuffer.cpp + +#+begin_src C++ + static error_code getOpenFileImpl(int FD, const char *Filename, + OwningPtr &result, + uint64_t FileSize, uint64_t MapSize, + int64_t Offset, bool RequiresNullTerminator) { +#+end_src + + ↑ã®é–¢æ•°å†…ã§å‘¼ã°ã‚Œã‚‹ shouldUseMmap ã«ã‚ˆã‚Šãƒ•ã‚¡ã‚¤ãƒ«ã«å¯¾ã™ã‚‹mmapã®ä½¿ç”¨å¯å¦ãŒåˆ¤æ–­ã•ã‚Œã‚‹ +#+begin_src C++ + static bool shouldUseMmap(int FD, + size_t FileSize, + size_t MapSize, + off_t Offset, + bool RequiresNullTerminator, + int PageSize) { +#+end_src + ã“ã®é–¢æ•°ã®resultãŒå¸¸æ™‚falseã§ã‚ã‚Œã°mmapã¯æ’ä¹…çš„ã«ä½¿ç”¨ã•ã‚Œãªã„。 + よã£ã¦ã“ã®é–¢æ•°ã®å…ˆé ­ã§ +#+begin_src C++ + return false; +#+end_src + ã¨ã™ã‚Œã°ã‚ˆã„。 + 以é™ã®ã‚³ãƒ¼ãƒ‰ã¯#if 0 end ã™ã‚‹ãªã‚Šã™ã‚Œã°ã‚ˆã„。 + +** LLVM3.5ã®è¿½åŠ ä»•æ§˜ + shouldUseMmap,getOpenFileImplã«å¼•æ•°IsVolatileSizeãŒè¿½åŠ ã•ã‚ŒãŸã€‚ + ã“ã‚Œã¯shouldUseMmapã¾ã§åŠ å·¥ãªã—ã§ãƒ‘スã•ã‚Œã€ + shouldUseMmap先頭ã«ãŠã„ã¦ã€ +#+begin_src C++ + if (IsVolatileSize) + return false; +#+end_src + ã•ã‚Œã‚‹ã€‚ + コメントãŒã¤ã„ã¦ã„㟠+#+begin_src C++ + // mmap may leave the buffer without null terminator if the file size changed + // by the time the last page is mapped in, so avoid it if the file size is + // likely to change. +#+end_src + + mmapã¯ãƒ•ã‚¡ã‚¤ãƒ«ã‚µã‚¤ã‚ºãŒæœ€å¾Œã®ãƒšãƒ¼ã‚¸ãŒãƒžãƒƒãƒ—ã•ã‚ŒãŸã•ã‚ŒãŸæ™‚点ã§å¤‰æ›´ã•ã‚ŒãŸå ´åˆã¯null終端ã›ãšã«ãƒãƒƒãƒ•ã‚¡ã‚’残ã™ã®ã§ã€ãƒ•ã‚¡ã‚¤ãƒ«ã‚µã‚¤ã‚ºãŒå¤‰æ›´ã•ã‚Œã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹å ´åˆã¯ã€ãれを回é¿ã™ã‚‹ã“ã¨ãŒã§ãる。 + + ã¨ã¯è¨€ã£ã¦ã„ã‚‹ã‚‚ã®ã®ã€æƒ³å®šã•ã‚Œã¦ã„ãªã„事態ãŒã„ã‚ã„ã‚ã‚るよã†ã§ä»•æ§˜æŠœã‘ã®æ¨¡æ§˜ã€‚ + ã¾ãŸãƒãƒƒãƒ•ã‚¡ç¢ºä¿ç³»é–¢æ•°ã®ä¸Šæµã§ IsVolatileSize ãŒæŒ‡å®šã•ã‚Œã¦ã„ãªã‹ã£ãŸã‚Šã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã®ã¾ã¾é‹ç”¨ã•ã‚Œã¦ã„る箇所ãŒä½•ç®‡æ‰€ã‹è¦‹å—ã‘られãŸã€‚ + ãã†ã„ã£ãŸç®‡æ‰€ã‚’自å‰ã§ä¿®æ­£ã—ã¦ã¿ãŸã¨ã“ã‚従æ¥ã‚ˆã‚Šãƒžã‚·ã«ãªã£ãŸã‚‚ã®ã®ã€ä»–ã«ã‚‚å•é¡ŒãŒã‚るよã†ã§æƒ³å®šé€šã‚Šã«mmapを制御ã¯å‡ºæ¥ãªã‹ã£ãŸã€‚ + LLVMã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚·ã‚¹ãƒ†ãƒ ãƒ»ãƒ¡ãƒ¢ãƒªå‘¨ã‚Šã®ä»•æ§˜ã‚’完全ã«æŠŠæ¡ã—ã¦ã„ãªã„ã¨ã€ã“ã“ら辺ã®ä¿®æ­£ã¯åŽ³ã—ã„ã®ã‹ã‚‚ã—ã‚Œãªã„。 + よã£ã¦ç¾æ™‚点ã«ãŠã„ã¦ã¯ä¸Šè¨˜ãƒ‘ッãƒé©ç”¨ãŒä¸€ç•ªç„¡é›£ãªã‚„ã‚Šæ–¹ã¨ãªã‚‹ã€‚ + diff --git a/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/readme.md b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/readme.md new file mode 100755 index 0000000..9925e17 --- /dev/null +++ b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/readme.md @@ -0,0 +1,392 @@ + + + +[Japanese Manual](./readme.ja.md) + +# About this document + +This is explained about self-build of clang-server. +When you use clang-server binary for distribution on Windows environment, it is not necessary to read this document. + +# Step of self-build + +A build of clang-server requires libclang of LLVM. +Therefore, first self-build is LLVM libclang, next self-build is clang-server. + +## LLVM self-build + +You have to do four step of following. +There is also a script which simplify this work. +- Checkout LLVM +- Apply patch to LLVM for libclang +- Project file generation by CMAKE or configure +- Build + +## clang-server self-build + +Patch applied libclang library use by LLVM self-build +Use the patch applied libclang library +- Project file generation by CMAKE +- Build +- Installation + +# Software required for self-build + +## Windows + +The following is required. + +### LLVM + +The following built library is required. +libclang.lib or libclang.imp +libclang.dll + +### Visual Studio 2015/2013/2012/2010 + +any OK + +### CMake + + + +Download cmake archive, and decompress to any location. +CMake is used for Visual Studio Solution File generation and build and installation. + +## Linux + +The following is required. + +### LLVM + +The following built library is required. +libclang.so + +### CMake + + $ sudo apt-get install cmake + +If you want to use latest version, download from following + + + +e.g. +Download cmake-3.1.3.tar.gz, and decompress to work directory. +You perform a build and installation. + + $ tar -xf cmake-3.1.3.tar.gz . + $ cd cmake-3.1.3 + $ ./configure && make + $ make install + +# Self-Build + +## Windows + +### LLVM + +Required process for LLVM self-build. +And you must apply patch to LLVM before build. +It isn't necessary install a package after self-build. +You must designate generated binary PATH after LLVM self-build at CMake project generation argument. +Therefore clang-server is able to build. +When LLVM is already installed, you must designate installed directory of LLVM. + +When you want to self-build, +Checkout from SVN by yourself, and perform the LLVM Solution File generation and build by cmake. +Or, use following script. + + +1. How to designate the LLVM patch in the script + + You will designate -tasks to the argument of builderShell, + and designate PATCH to the parameter of -tasks, + It will gives a table that describes the path to apply the patch and patch file to parameter of -patchInfos. + Please refer to the sample.ps1 of llvm-build-shells for details. + +2. The contents of the LLVM patch + + Use of mmap always invalidation. + +### clang-server + +Use the ac-clang/build/builder\_sample.bat +Please edit the builder\_sample.bat as necessary. +It's necessary to execute in the command line or Windows Explorer. + +- example + + cmake -G "Visual Studio 12 2013 Win64" ../clang-server -DLIBRARY_PATHS="c:/cygwin-x86_64/tmp/llvm-build-shells/ps1/clang-360/build/msvc-64/" -DCMAKE_INSTALL_PREFIX="c:/cygwin-x86_64/usr/local/bin/" + +- Option commentary + - `-DLIBRARY_PATHS` + You have to designate location of LLVM self-build completed directory. + It is necessary to designate the directory that a binary was generated.(e.g. {LLVM output path}/Release/) + If you omit this option, value will be use `ac-clang/clang-server` . + - `-DCMAKE_INSTALL_PREFIX` + You have to designate installation location of clang-server. + If you omit this option, value will be use `C:/Program Files/clang-server` . + +## Linux + +### LLVM + +Required process for LLVM self-build. +And you must apply patch to LLVM before build. +It isn't necessary install a package after self-build. +You must designate generated binary PATH after LLVM self-build at CMake project generation argument. +Therefore clang-server is able to build. +When LLVM is already installed, you must designate installed directory of LLVM. + +When you want to self-build, +Checkout from SVN by yourself, and perform the LLVM Solution File generation and build by cmake. +Or, use following script. + + +1. How to designate the LLVM patch in the script + + You will designate -patch to the argument of executeBuilder. + Add to -patchApplyLocation the path where you want to apply the patch. + You write the patch file to -patchPath gives as an parameter. + -patchApplyLocation,-patchPath becomes the pair, it is possible to multiple times designate. + Please refer to the sample.sh of llvm-build-shells for details. + +2. The contents of the LLVM patch + + Use of mmap always invalidation. + +### clang-server + +Use the ac-clang/build/builder\_sample.sh +Please edit the builder\_sample.sh as necessary. +Execute the builder\_sample.sh + +- example + + cmake -G "Unix Makefiles" ../clang-server -DLIBRARY_PATHS="/home/yaruopooner/work/llvm-build-shells/sh/clang-350/build" -DCMAKE_INSTALL_PREFIX="~/work/clang-server" + +- Option commentary + - `-DLIBRARY_PATHS` + You have to designate location of LLVM self-build completed directory. + It is necessary to designate the directory that a binary was generated.(e.g. {LLVM output path}/Release/) + If you omit this option, value will be use `ac-clang/clang-server` . + - `-DCMAKE_INSTALL_PREFIX` + You have to designate installation location of clang-server. + If you omit this option, value will be use `/usr/local/bin` . + +# Patch was applied binary(Windows Only) + + + +clang-server-X.X.X.zip is you can download from the above +The archive is 3 files contain, these file applied patch. +- clang-server.exe +- libclang.dll +- libclang.lib or libclang.imp + +When you want to self-build only clang-server without LLVM, +clang-server-X.X.X.zip decompress to ac-clang directory. +Then, it will be placed in the following. +ac-clang/clang-server/binary/clang-server.exe +ac-clang/clang-server/library/x86\_64/release/libclang.dll +ac-clang/clang-server/library/x86\_64/release/libclang.lib + +# Restrictions when you use LLVM official libclang without applying a patch + +## A specific file is locked and cannot save it + +When you try to save the edited header file, +it will be "basic-save-buffer-2: Opening output file: invalid argument \`HEADER-FILE-NAME\`", +and you can't save. +This occur if it meets certain conditions. +This condition is met when the header file size is larger than 16kB. +It is not at all occur when header file size is smaller than 16kB. +This issue belong to TranslationUnit(TU) of libclang. +The inclusion target file is locked by TU of libclang. +By performing a provisional transaction in ac-clang side, the more or less is erased, but it can't be avoided perfectly. +When this issue is occurring, only manual handle can be avoided. + +### Solution in Emacs side + +I suppose that combination of source file is foo.cpp/foo.hpp. +When foo.hpp(modified) can't save, foo.cpp is (modified) often, so foo.cpp have to saved. +Therefore, foo.hpp should be possible to save. +When this can't save, +foo.hpp is included by source files besides foo.cpp, and it has (modified) status. +You have to save those. +And, when corresponding source is activated by definition jump feature, even if buffer don't modified that buffer is activated. +You try remove corresponding buffer, or (ac-clang-deactivate) must be execute in buffer. +In other cases, when you try save header file that file size larger than 16kB +When you save a header file of larger than 16kB, if it fails. +And that header file does not opened. +In this case, header file is included by a far module from current source file. +When you having developed a library module framework, it may be easy to occur. +because library and framework is included from application side. + +### Issue(Implementation issues explanation, it wanted suggested solutions) + +When session of "foo.cpp" is edited in the buffer, +TU continue locking to included header file after parsed "foo.cpp". + +When you edit and save to "foo.hpp" in this state, it occur error, because file is locked by mmap. + +Therefore I modified a server as follows. +So while maintaining the session when "foo.cpp" saving, +TU is generated when "foo.cpp" is edited after TU released. + +Therefore "foo.hpp" is possible to save that the included header file is unlocked after "foo.cpp" saved. + +When a "foo.hpp" is included buffer where exist in buffer editing group without buffer of "foo.cpp", +the lock is not released when you does not save all them. + +In the Windows environment, +This lock is not open function of I/O, is a lock by CreateFileMapping of WindowsAPI. +libclang FileManager does allocation to memory mapped file for the files larger than 16kB. +When TU is released, memory mapped file is released by UnmapViewOfFile, these becomes writable to file. + +In the Linux environment, +problems with mmap/munmap bug differ slightly from the Windows environment, but also occurred in Linux environment. +The method add to "class Foo" in "foo.hpp" in the state that holds TU of "foo.cpp", and save to file. +After "foo.hpp" update, when you try complete method of "class Foo" in the "foo.cpp", TU will crash. +in this case, libclang output to STDOUT that "libclang: crash detected in code completion" +libclang output "libclang: crash detected in code completion" to STDOUT. +The process of clang-server is living in this situation. +Completion is possible after deletion of session and creation of session. + +## Miscellaneous + +The above problems are solved by patching for libclang. + +When you use the patch applied release binary(libclang.dll or so) it is not occur. +When you use the patch does not applied to LLVM self-build and LLVM official binary, this problem is occur. +I think specification bug of clang side. This problem has been reported to LLVM bugzilla. in the corresponding waitting. + + +# Patch commentary + +## Patch + +Use the ac-clang/clang-server/patch/invalidate-mmap.patch + + cd llvm/ + svn patch ac-clang/clang-server/patch/invalidate-mmap.patch + +## The contents of the LLVM patch(invalidate-mmap.patch) + +Patch is applied so as not to use mmap. +Apply to the following source code to +`clang-trunk/llvm/lib/Support/MemoryBuffer.cpp` + + static error_code getOpenFileImpl(int FD, const char *Filename, + OwningPtr &result, + uint64_t FileSize, uint64_t MapSize, + int64_t Offset, bool RequiresNullTerminator) { + +It is determined availability of mmap for file by shouldUseMmap call from the above function. + + static bool shouldUseMmap(int FD, + size_t FileSize, + size_t MapSize, + off_t Offset, + bool RequiresNullTerminator, + int PageSize) { + +When the result of function is always false, mmap is not never used. +Therefore, the following modify has been applied to the top of this function. + + #if 1 + return false; + #else + /* original codes */ + #endif + +## TODO Additional Specification of LLVM3.5 + +IsVolatileSize has been added to arguments of shouldUseMmap and getOpenFileImpl. +This will be passed unchanged to shouldUseMmap. + +It is executed as follows in the shouldUseMmap top. + + if (IsVolatileSize) + return false; + +Following comments had been attached + + // mmap may leave the buffer without null terminator if the file size changed + // by the time the last page is mapped in, so avoid it if the file size is + // likely to change. + +Although that said, there is a situation which isn't assumed Variously, I'm supposing that mistake of specification. +Moreover, upstream function of buffer association function +I was found some place where is not designated value of IsVolatileSize and is used default value of constructor argument. +I tried modified it. +Result was become more better than conventional. +But it seem to have a problem, because I was not able to control mmap like a assumption. +I'm not enough understand the specification of around the file system and memory of LLVM. +For that reason that the rightly correction is difficult. +Therefore, the above patching becomes the most safe way at present. diff --git a/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/readme.org b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/readme.org new file mode 100755 index 0000000..8dd6b62 --- /dev/null +++ b/.emacs.d/elpa/ac-clang-20150906.1008/clang-server/readme.org @@ -0,0 +1,314 @@ +# -*- mode: org ; coding: utf-8-unix -*- +# last updated : 2015/07/21.00:46:31 + + +#+TITLE: Clang Server Manual +#+AUTHOR: yaruopooner +#+EMAIL: [https://github.com/yaruopooner] +#+OPTIONS: author:nil timestamp:t |:t \n:t ^:nil + + +[[./readme.ja.org][Japanese Manual]] + +* About this document + This is explained about self-build of clang-server. + When you use clang-server binary for distribution on Windows environment, it is not necessary to read this document. + +* Step of self-build + A build of clang-server requires libclang of LLVM. + Therefore, first self-build is LLVM libclang, next self-build is clang-server. + +** LLVM self-build + You have to do four step of following. + There is also a script which simplify this work. + - Checkout LLVM + - Apply patch to LLVM for libclang + - Project file generation by CMAKE or configure + - Build + +** clang-server self-build + Patch applied libclang library use by LLVM self-build + Use the patch applied libclang library + - Project file generation by CMAKE + - Build + - Installation + +* Software required for self-build +** Windows + The following is required. +*** LLVM + The following built library is required. + libclang.lib or libclang.imp + libclang.dll + +*** Visual Studio 2015/2013/2012/2010 + any OK + +*** CMake + http://www.cmake.org/ + + Download cmake archive, and decompress to any location. + CMake is used for Visual Studio Solution File generation and build and installation. + +** Linux + The following is required. +*** LLVM + The following built library is required. + libclang.so + +*** CMake + #+begin_src shell + $ sudo apt-get install cmake + #+end_src + + If you want to use latest version, download from following + + http://www.cmake.org/ + + e.g. + Download cmake-3.1.3.tar.gz, and decompress to work directory. + You perform a build and installation. + #+begin_src shell + $ tar -xf cmake-3.1.3.tar.gz . + $ cd cmake-3.1.3 + $ ./configure && make + $ make install + #+end_src + +* Self-Build +** Windows +*** LLVM + Required process for LLVM self-build. + And you must apply patch to LLVM before build. + It isn't necessary install a package after self-build. + You must designate generated binary PATH after LLVM self-build at CMake project generation argument. + Therefore clang-server is able to build. + When LLVM is already installed, you must designate installed directory of LLVM. + + When you want to self-build, + Checkout from SVN by yourself, and perform the LLVM Solution File generation and build by cmake. + Or, use following script. + https://github.com/yaruopooner/llvm-build-shells + +**** How to designate the LLVM patch in the script + You will designate -tasks to the argument of builderShell, + and designate PATCH to the parameter of -tasks, + It will gives a table that describes the path to apply the patch and patch file to parameter of -patchInfos. + Please refer to the sample.ps1 of llvm-build-shells for details. + +**** The contents of the LLVM patch + Use of mmap always invalidation. + +*** clang-server + Use the ac-clang/build/builder_sample.bat + Please edit the builder_sample.bat as necessary. + It's necessary to execute in the command line or Windows Explorer. + + - example + #+begin_src bat + cmake -G "Visual Studio 12 2013 Win64" ../clang-server -DLIBRARY_PATHS="c:/cygwin-x86_64/tmp/llvm-build-shells/ps1/clang-360/build/msvc-64/" -DCMAKE_INSTALL_PREFIX="c:/cygwin-x86_64/usr/local/bin/" + #+end_src + + - Option commentary + - =-DLIBRARY_PATHS= + You have to designate location of LLVM self-build completed directory. + It is necessary to designate the directory that a binary was generated.(e.g. {LLVM output path}/Release/) + If you omit this option, value will be use =ac-clang/clang-server= . + - =-DCMAKE_INSTALL_PREFIX= + You have to designate installation location of clang-server. + If you omit this option, value will be use =C:/Program Files/clang-server= . + +** Linux +*** LLVM + Required process for LLVM self-build. + And you must apply patch to LLVM before build. + It isn't necessary install a package after self-build. + You must designate generated binary PATH after LLVM self-build at CMake project generation argument. + Therefore clang-server is able to build. + When LLVM is already installed, you must designate installed directory of LLVM. + + When you want to self-build, + Checkout from SVN by yourself, and perform the LLVM Solution File generation and build by cmake. + Or, use following script. + https://github.com/yaruopooner/llvm-build-shells + +**** How to designate the LLVM patch in the script + You will designate -patch to the argument of executeBuilder. + Add to -patchApplyLocation the path where you want to apply the patch. + You write the patch file to -patchPath gives as an parameter. + -patchApplyLocation,-patchPath becomes the pair, it is possible to multiple times designate. + Please refer to the sample.sh of llvm-build-shells for details. + +**** The contents of the LLVM patch + Use of mmap always invalidation. + +*** clang-server + Use the ac-clang/build/builder_sample.sh + Please edit the builder_sample.sh as necessary. + Execute the builder_sample.sh + + - example + #+begin_src shell-script + cmake -G "Unix Makefiles" ../clang-server -DLIBRARY_PATHS="/home/yaruopooner/work/llvm-build-shells/sh/clang-350/build" -DCMAKE_INSTALL_PREFIX="~/work/clang-server" + #+end_src + + - Option commentary + - =-DLIBRARY_PATHS= + You have to designate location of LLVM self-build completed directory. + It is necessary to designate the directory that a binary was generated.(e.g. {LLVM output path}/Release/) + If you omit this option, value will be use =ac-clang/clang-server= . + - =-DCMAKE_INSTALL_PREFIX= + You have to designate installation location of clang-server. + If you omit this option, value will be use =/usr/local/bin= . + +* Patch was applied binary(Windows Only) + https://github.com/yaruopooner/ac-clang/releases + + clang-server-X.X.X.zip is you can download from the above + The archive is 3 files contain, these file applied patch. + - clang-server.exe + - libclang.dll + - libclang.lib or libclang.imp + + When you want to self-build only clang-server without LLVM, + clang-server-X.X.X.zip decompress to ac-clang directory. + Then, it will be placed in the following. + ac-clang/clang-server/binary/clang-server.exe + ac-clang/clang-server/library/x86_64/release/libclang.dll + ac-clang/clang-server/library/x86_64/release/libclang.lib + +* Restrictions when you use LLVM official libclang without applying a patch +** A specific file is locked and cannot save it + When you try to save the edited header file, + it will be "basic-save-buffer-2: Opening output file: invalid argument `HEADER-FILE-NAME`", + and you can't save. + This occur if it meets certain conditions. + This condition is met when the header file size is larger than 16kB. + It is not at all occur when header file size is smaller than 16kB. + This issue belong to TranslationUnit(TU) of libclang. + The inclusion target file is locked by TU of libclang. + By performing a provisional transaction in ac-clang side, the more or less is erased, but it can't be avoided perfectly. + When this issue is occurring, only manual handle can be avoided. + +*** Solution in Emacs side + I suppose that combination of source file is foo.cpp/foo.hpp. + When foo.hpp(modified) can't save, foo.cpp is (modified) often, so foo.cpp have to saved. + Therefore, foo.hpp should be possible to save. + When this can't save, + foo.hpp is included by source files besides foo.cpp, and it has (modified) status. + You have to save those. + And, when corresponding source is activated by definition jump feature, even if buffer don't modified that buffer is activated. + You try remove corresponding buffer, or (ac-clang-deactivate) must be execute in buffer. + In other cases, when you try save header file that file size larger than 16kB + When you save a header file of larger than 16kB, if it fails. + And that header file does not opened. + In this case, header file is included by a far module from current source file. + When you having developed a library module framework, it may be easy to occur. + because library and framework is included from application side. + +*** Issue(Implementation issues explanation, it wanted suggested solutions) + When session of "foo.cpp" is edited in the buffer, + TU continue locking to included header file after parsed "foo.cpp". + + When you edit and save to "foo.hpp" in this state, it occur error, because file is locked by mmap. + + Therefore I modified a server as follows. + So while maintaining the session when "foo.cpp" saving, + TU is generated when "foo.cpp" is edited after TU released. + + Therefore "foo.hpp" is possible to save that the included header file is unlocked after "foo.cpp" saved. + + When a "foo.hpp" is included buffer where exist in buffer editing group without buffer of "foo.cpp", + the lock is not released when you does not save all them. + + + In the Windows environment, + This lock is not open function of I/O, is a lock by CreateFileMapping of WindowsAPI. + libclang FileManager does allocation to memory mapped file for the files larger than 16kB. + When TU is released, memory mapped file is released by UnmapViewOfFile, these becomes writable to file. + + In the Linux environment, + problems with mmap/munmap bug differ slightly from the Windows environment, but also occurred in Linux environment. + The method add to "class Foo" in "foo.hpp" in the state that holds TU of "foo.cpp", and save to file. + After "foo.hpp" update, when you try complete method of "class Foo" in the "foo.cpp", TU will crash. + in this case, libclang output to STDOUT that "libclang: crash detected in code completion" + libclang output "libclang: crash detected in code completion" to STDOUT. + The process of clang-server is living in this situation. + Completion is possible after deletion of session and creation of session. + +** Miscellaneous + The above problems are solved by patching for libclang. + + When you use the patch applied release binary(libclang.dll or so) it is not occur. + When you use the patch does not applied to LLVM self-build and LLVM official binary, this problem is occur. + I think specification bug of clang side. This problem has been reported to LLVM bugzilla. in the corresponding waitting. + http://llvm.org/bugs/show_bug.cgi?id=20880 + +* Patch commentary +** Patch + Use the ac-clang/clang-server/patch/invalidate-mmap.patch + #+begin_src shell-script + cd llvm/ + svn patch ac-clang/clang-server/patch/invalidate-mmap.patch + #+end_src + +** The contents of the LLVM patch(invalidate-mmap.patch) + Patch is applied so as not to use mmap. + Apply to the following source code to + =clang-trunk/llvm/lib/Support/MemoryBuffer.cpp= + +#+begin_src C++ + static error_code getOpenFileImpl(int FD, const char *Filename, + OwningPtr &result, + uint64_t FileSize, uint64_t MapSize, + int64_t Offset, bool RequiresNullTerminator) { +#+end_src + + It is determined availability of mmap for file by shouldUseMmap call from the above function. + +#+begin_src C++ + static bool shouldUseMmap(int FD, + size_t FileSize, + size_t MapSize, + off_t Offset, + bool RequiresNullTerminator, + int PageSize) { +#+end_src + When the result of function is always false, mmap is not never used. + Therefore, the following modify has been applied to the top of this function. +#+begin_src C++ + #if 1 + return false; + #else + /* original codes */ + #endif +#+end_src + +** TODO Additional Specification of LLVM3.5 + IsVolatileSize has been added to arguments of shouldUseMmap and getOpenFileImpl. + This will be passed unchanged to shouldUseMmap. + + It is executed as follows in the shouldUseMmap top. +#+begin_src C++ + if (IsVolatileSize) + return false; +#+end_src + + Following comments had been attached +#+begin_src C++ + // mmap may leave the buffer without null terminator if the file size changed + // by the time the last page is mapped in, so avoid it if the file size is + // likely to change. +#+end_src + + Although that said, there is a situation which isn't assumed Variously, I'm supposing that mistake of specification. + Moreover, upstream function of buffer association function + I was found some place where is not designated value of IsVolatileSize and is used default value of constructor argument. + I tried modified it. + Result was become more better than conventional. + But it seem to have a problem, because I was not able to control mmap like a assumption. + I'm not enough understand the specification of around the file system and memory of LLVM. + For that reason that the rightly correction is difficult. + Therefore, the above patching becomes the most safe way at present. + + diff --git a/.emacs.d/elpa/ac-clang-20150906.1008/sample-pic-complete.png b/.emacs.d/elpa/ac-clang-20150906.1008/sample-pic-complete.png new file mode 100644 index 0000000000000000000000000000000000000000..9077f03fede7b9f08e7b3ed943c9e8b22adacc5d GIT binary patch literal 60125 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 literal 0 HcmV?d00001 diff --git a/.emacs.d/elpa/ac-math-20141116.1327/ac-math-autoloads.el b/.emacs.d/elpa/ac-math-20141116.1327/ac-math-autoloads.el new file mode 100644 index 0000000..95e592b --- /dev/null +++ b/.emacs.d/elpa/ac-math-20141116.1327/ac-math-autoloads.el @@ -0,0 +1,23 @@ +;;; ac-math-autoloads.el --- automatically extracted autoloads +;; +;;; Code: +(add-to-list 'load-path (or (file-name-directory #$) (car load-path))) + +;;;### (autoloads nil "ac-math" "ac-math.el" (22209 45670 549621 +;;;;;; 0)) +;;; Generated autoloads from ac-math.el + +(defvar ac-source-latex-commands '((candidates . math-symbol-list-latex-commands) (symbol . "c") (prefix . ac-math-prefix))) + +(defvar ac-source-math-latex '((candidates . ac-math-candidates-latex) (symbol . "l") (prefix . ac-math-prefix) (action . ac-math-action-latex))) + +(defvar ac-source-math-unicode '((candidates . ac-math-candidates-unicode) (symbol . "u") (prefix . ac-math-prefix) (action . ac-math-action-unicode))) + +;;;*** + +;; Local Variables: +;; version-control: never +;; no-byte-compile: t +;; no-update-autoloads: t +;; End: +;;; ac-math-autoloads.el ends here diff --git a/.emacs.d/elpa/ac-math-20141116.1327/ac-math-autoloads.el~ b/.emacs.d/elpa/ac-math-20141116.1327/ac-math-autoloads.el~ new file mode 100644 index 0000000..81f41d8 --- /dev/null +++ b/.emacs.d/elpa/ac-math-20141116.1327/ac-math-autoloads.el~ @@ -0,0 +1,11 @@ +;;; ac-math-autoloads.el --- automatically extracted autoloads +;; +;;; Code: +(add-to-list 'load-path (or (file-name-directory #$) (car load-path))) + +;; Local Variables: +;; version-control: never +;; no-byte-compile: t +;; no-update-autoloads: t +;; End: +;;; ac-math-autoloads.el ends here diff --git a/.emacs.d/elpa/ac-math-20141116.1327/ac-math-pkg.el b/.emacs.d/elpa/ac-math-20141116.1327/ac-math-pkg.el new file mode 100644 index 0000000..43a7be3 --- /dev/null +++ b/.emacs.d/elpa/ac-math-20141116.1327/ac-math-pkg.el @@ -0,0 +1 @@ +(define-package "ac-math" "20141116.1327" "Auto-complete sources for input of mathematical symbols and latex tags" '((auto-complete "1.4") (math-symbol-lists "1.0")) :url "https://github.com/vitoshka/ac-math" :keywords '("latex" "auto-complete" "unicode" "symbols")) diff --git a/.emacs.d/elpa/ac-math-20141116.1327/ac-math-pkg.elc b/.emacs.d/elpa/ac-math-20141116.1327/ac-math-pkg.elc new file mode 100644 index 0000000000000000000000000000000000000000..2a64871a182852b35715a8657ebb0b473f4b8d38 GIT binary patch literal 672 zcmbtSO>e?54CUNEu&b5JKw1m!*cY4-+5u^|?GKnFr4eaT#V#BB^)m%cLOU*pD30y- zo?o(jeOup*Mx$)GT*5lGo%7ZVfeY~3q9!=lL@oxX=EXx%4Y^Op4WRcBJ9e%6MwS99 zvLX4=ID%SmpeIXUjsaVz!9-1*T-ec_WD_xsi^#iy9)kgjpfSMKf{%Dbav6reV)D)=;6@6o`!lbY@UL|e@ZXhX z+1S|H1)F!M_qem5Q0Fajqd--&a$c6@V^Q8$PZF~s0zRs)NKn#(|m3{BI=lOl-p6whxIry?xtJQaQcIY69(jb(+{s>|^iiDTbh0O9G ziOK1;`)x<>y$#feL>N+%svrvf6bb@)yRJ81jDnno&_hKobMnWrhysuN#LHC{#OL`s zcC%cO@O|mi#E!k)cDAqR@Du2W6GdJUD*@p`4XrJ##Ma*PgX3fJMj{iQf|Kjoyoi0u z6Y@k%XOhB1%o#Dk7 z)uk_1CeP(1)VliDY(H?_R)ZQRqQR3}~xWZ~AhGASOmEzlfqSL1C-Dw%c_!X}<_Up9FDg397Wq zrH-63Df}@91~h|EnlQox#EZ<6?fQ}MMkGVYL2*oiiIS5i!OrIMKYrP#HvP8uoVL0N5wn-PY4i6)^ z*8Wx}T7-ef>3&sEAmlZeg#Ew=1aew?)r1Jre2-gK5{s}h)6!hCK>_fkqnWkjHt^5U zR47mRGJK-}9f{OKO`%SPIJva9i$j`%Pj9*LZIG$6w1uPnFKT#)R?R|QgF@TB!&`TG ztLqL|@2=c<_KiEdd4pFU)NVX}%rB2>%QxNOGrii~sqv=sV{Lig!V8mAhQt_I#8oa+ z^hAzIGnQ=auR|awvxbvN1=>2lSRk>%fR@+&xk|`@`U5=FT>B0f+V0q`fd=d*J(N3$t;l?k z^%M+bxNR)q&n7Wf*IJsTj>A`>bL;EdcUG8!UCp{~r{>1x=gL`mZFV+5O~z;Uhmzlp z({tl@=1%QiV8`j!R!-lo63pl6Tq+9}J@RVMN<&PIB_yV12GqOWooWA?pr{JgCfMnJ0;BWwG`F;o zuc~|{t^wJ9YjPpOYzdeGygCl)3t^?UykOlNnHhyD4=TSZrPca-JX_n{+N2YyiVPh9 z7jl?*dZwT7kD*w7ctw`+v{Bk<*I)9Oe_C0XL)iW6scNRCnPTf=5@PMHaiUi^?4HZ4 zn$P!~_J2+S8#Om=zT4UARZur$SvgA?n3#D2LqxMV1q5!uEB8&A%Ss+?wM+;^8(ssS zCd&2#`C4eYGc%zvuC;58R}5E~oqAKcI%hHbkVR^mE +;; +;; Author: coldnew +;; Keywords: Octave, auto-complete, completion +;; Package-Version: 20150111.1708 +;; Package-Requires: ((auto-complete "1.4.0")) +;; URL: https://github.com/coldnew/ac-octave +;; Version: 0.4 + +;; This file is NOT part of GNU Emacs. + +;; 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 2, 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, write to the Free Software +;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +;;; Commentary: + +;;; Installation: + +;; If you have `melpa' and `emacs24' installed, simply type: +;; +;; M-x package-install ac-octave +;; +;; Add following lines to your init file: +;; +;; (require 'ac-octave) +;; (defun ac-octave-mode-setup () +;; (setq ac-sources '(ac-source-octave))) +;; (add-hook 'octave-mode-hook +;; '(lambda () (ac-octave-mode-setup))) +;; + +;;; Note: + +;; If you can't use ac-octave in octave-mode, +;; check whether `auto-complete-mode' is running or not. + +;;; Code: + +(eval-when-compile (require 'cl)) +(require 'auto-complete) + +;; octave-inf.el merge to octave.el since emacs version 24.3.1 +;; see issue #6: Error when require octave-inf +(if (or (and (= emacs-major-version 24) (> emacs-minor-version 3)) + (>= emacs-major-version 25)) + (require 'octave) + ;; for emacs 24.3 or below + (require 'octave-inf)) + +;;;;########################################################################## +;;;; User Options, Variables +;;;;########################################################################## + + +;;;;;;;; faces +(defface ac-octave-candidate-face + '((t (:inherit ac-candidate-face))) + "face for octave candidate" + :group 'auto-complete) + +(defface ac-octave-selection-face + '((t (:inherit ac-selection-face))) + "face for the octave selected candidate." + :group 'auto-complete) + + +;;;;;;;; local variables + +(defvar ac-octave-complete-list nil) + +;;;;;;;; functions + +(defun ac-octave-init () + "Start inferior-octave in background before use ac-octave." + (run-octave t) + ;; Update current directory of inferior octave whenever completion starts. + ;; This allows local functions to be completed when user switches + ;; between octave buffers that are located in different directories. + (when (file-readable-p default-directory) + (inferior-octave-send-list-and-digest + (list (concat "cd " default-directory ";\n"))))) + +(defun ac-octave-do-complete () + (interactive) + (let* ((end (point)) + (command (save-excursion + (skip-syntax-backward "w_") + (buffer-substring-no-properties (point) end)))) + + (inferior-octave-send-list-and-digest + (list (concat "completion_matches (\"" command "\");\n"))) + + (setq ac-octave-complete-list + (sort inferior-octave-output-list 'string-lessp)) + + ;; remove dulpicates lists + (delete-dups ac-octave-complete-list))) + +(defun ac-octave-candidate () + (let (table) + (ac-octave-do-complete) + (dolist (s ac-octave-complete-list) + (push s table)) + table)) + +(defun ac-octave-documentation (symbol) + (with-local-quit + (ignore-errors + (inferior-octave-send-list-and-digest + (list (concat "help " symbol ";\n"))) + (mapconcat #'identity + inferior-octave-output-list + "\n")))) + +(ac-define-source octave + '((candidates . ac-octave-candidate) + (document . ac-octave-documentation) + (candidate-face . ac-octave-candidate-face) + (selection-face . ac-octave-selection-face) + (init . ac-octave-init) + (requires . 0) + (cache) + (symbol . "f"))) + +(provide 'ac-octave) +;;; ac-octave.el ends here diff --git a/.emacs.d/elpa/archives/gnu/archive-contents b/.emacs.d/elpa/archives/gnu/archive-contents new file mode 100644 index 0000000..a60ec47 --- /dev/null +++ b/.emacs.d/elpa/archives/gnu/archive-contents @@ -0,0 +1,863 @@ +(1 + (ace-window . + [(0 9 0) + ((avy + (0 2 0))) + "Quickly switch windows." single + ((:url . "https://github.com/abo-abo/ace-window") + (:keywords "window" "location"))]) + (ack . + [(1 5) + nil "interface to ack-like tools" tar + ((:keywords "tools" "processes" "convenience") + (:url . "https://github.com/leoliu/ack-el"))]) + (ada-mode . + [(5 1 9) + ((wisi + (1 1 2)) + (cl-lib + (0 4)) + (emacs + (24 2))) + "major-mode for editing Ada sources" tar + ((:keywords "languages" "ada") + (:url . "http://stephe-leake.org/emacs/ada-mode/emacs-ada-mode.html"))]) + (ada-ref-man . + [(2012 0) + nil "Ada Reference Manual 2012" tar + ((:keywords "languages" "ada") + (:url . "http://stephe-leake.org/ada/arm.html"))]) + (adaptive-wrap . + [(0 5) + nil "Smart line-wrapping with wrap-prefix" single + ((:url . "http://elpa.gnu.org/packages/adaptive-wrap.html") + (:keywords))]) + (adjust-parens . + [(3 0) + nil "Indent and dedent Lisp code, automatically adjust close parens" tar + ((:url . "http://elpa.gnu.org/packages/adjust-parens.html"))]) + (aggressive-indent . + [(1 5) + ((emacs + (24 1)) + (cl-lib + (0 5))) + "Minor mode to aggressively keep your code always indented" single + ((:url . "https://github.com/Malabarba/aggressive-indent-mode") + (:keywords "indent" "lisp" "maint" "tools"))]) + (ahungry-theme . + [(1 1 0) + ((emacs + (24))) + "Ahungry color theme for Emacs. Make sure to (load-theme 'ahungry)." tar + ((:keywords "ahungry" "palette" "color" "theme" "emacs" "color-theme" "deftheme") + (:url . "https://github.com/ahungry/color-theme-ahungry"))]) + (all . + [(1 0) + nil "Edit all lines matching a given regexp" single + ((:url . "http://elpa.gnu.org/packages/all.html") + (:keywords "matching"))]) + (ampc . + [(0 2) + nil "Asynchronous Music Player Controller" single + ((:url . "http://elpa.gnu.org/packages/ampc.html") + (:keywords "ampc" "mpc" "mpd"))]) + (ascii-art-to-unicode . + [(1 9) + nil "a small artist adjunct" single + ((:url . "http://www.gnuvola.org/software/aa2u/") + (:keywords "ascii" "unicode" "box-drawing"))]) + (async . + [(1 6) + nil "Asynchronous processing in Emacs" tar + ((:keywords "async") + (:url . "http://elpa.gnu.org/packages/async.html"))]) + (auctex . + [(11 89 1) + nil "Integrated environment for *TeX*" tar + ((:url . "http://www.gnu.org/software/auctex/"))]) + (aumix-mode . + [(7) + nil "run the aumix program in a buffer" single + ((:url . "http://user42.tuxfamily.org/aumix-mode/index.html") + (:keywords "multimedia" "mixer" "aumix"))]) + (auto-overlays . + [(0 10 9) + nil "Automatic regexp-delimited overlays" tar + ((:keywords "extensions") + (:url . "http://www.dr-qubit.org/emacs.php"))]) + (avy . + [(0 4 0) + ((emacs + (24 1)) + (cl-lib + (0 5))) + "tree-based completion" tar + ((:keywords "point" "location") + (:url . "https://github.com/abo-abo/avy"))]) + (beacon . + [(1 0) + ((seq + (1 11))) + "Highlight the cursor whenever the window scrolls" single + ((:url . "https://github.com/Malabarba/beacon") + (:keywords "convenience"))]) + (bug-hunter . + [(1 1) + ((seq + (1 3)) + (cl-lib + (0 5))) + "Hunt down errors by bisecting elisp files" single + ((:url . "https://github.com/Malabarba/elisp-bug-hunter") + (:keywords "lisp"))]) + (caps-lock . + [(1 0) + nil "Caps-lock as a minor mode" single + ((:url . "http://elpa.gnu.org/packages/caps-lock.html") + (:keywords))]) + (chess . + [(2 0 4) + ((cl-lib + (0 5))) + "Play chess in GNU Emacs" tar + ((:keywords "games") + (:url . "http://elpa.gnu.org/packages/chess.html"))]) + (cl-generic . + [(0 2) + nil "Forward cl-generic compatibility for Emacs<25" single + ((:url . "http://elpa.gnu.org/packages/cl-generic.html") + (:keywords))]) + (cl-lib . + [(0 5) + nil "Properly prefixed CL functions and macros" single + ((:url . "http://elpa.gnu.org/packages/cl-lib.html") + (:keywords))]) + (coffee-mode . + [(0 4 1 1) + nil "Major mode for CoffeeScript files" single + ((:url . "http://github.com/defunkt/coffee-mode") + (:keywords "coffeescript" "major" "mode"))]) + (company . + [(0 8 12) + ((emacs + (24 1)) + (cl-lib + (0 5))) + "Modular text completion framework" tar + ((:keywords "abbrev" "convenience" "matching") + (:url . "http://company-mode.github.io/"))]) + (company-math . + [(1 0 1) + ((company + (0 8 0)) + (math-symbol-lists + (1 0))) + "Completion backends for unicode math symbols and latex tags" single + ((:url . "https://github.com/vspinu/company-math") + (:keywords "unicode" "symbols" "completion"))]) + (company-statistics . + [(0 2 2) + ((emacs + (24 3)) + (company + (0 8 5))) + "Sort candidates using completion history" tar + ((:keywords "abbrev" "convenience" "matching") + (:url . "https://github.com/company-mode/company-statistics"))]) + (context-coloring . + [(7 2 0) + ((emacs + (24 3)) + (js2-mode + (20150713))) + "Highlight by scope" single + ((:url . "https://github.com/jacksonrayhamilton/context-coloring") + (:keywords "convenience" "faces" "tools"))]) + (crisp . + [(1 3 4) + nil "CRiSP/Brief Emacs emulator" single + ((:url . "http://elpa.gnu.org/packages/crisp.html") + (:keywords "emulations" "brief" "crisp"))]) + (csv-mode . + [(1 5) + nil "Major mode for editing comma/char separated values" single + ((:url . "http://centaur.maths.qmul.ac.uk/Emacs/") + (:keywords "convenience"))]) + (darkroom . + [(0 1) + ((cl-lib + (0 5))) + "Remove visual distractions and focus on writing" single + ((:url . "http://elpa.gnu.org/packages/darkroom.html") + (:keywords "convenience" "emulations"))]) + (dash . + [(2 12 0) + nil "A modern list library for Emacs" tar + ((:keywords "lists") + (:url . "http://elpa.gnu.org/packages/dash.html"))]) + (dbus-codegen . + [(0 1) + ((cl-lib + (0 5))) + "Lisp code generation for D-Bus." single + ((:url . "http://elpa.gnu.org/packages/dbus-codegen.html") + (:keywords "comm" "dbus" "convenience"))]) + (debbugs . + [(0 9) + ((async + (1 6))) + "SOAP library to access debbugs servers" tar + ((:keywords "comm" "hypermedia") + (:url . "http://elpa.gnu.org/packages/debbugs.html"))]) + (dict-tree . + [(0 12 8) + ((trie + (0 2 5)) + (tNFA + (0 1 1)) + (heap + (0 3))) + "Dictionary data structure" single + ((:url . "http://www.dr-qubit.org/emacs.php") + (:keywords "extensions" "matching" "data structures trie" "tree" "dictionary" "completion" "regexp"))]) + (diff-hl . + [(1 8 3) + ((cl-lib + (0 2))) + "Highlight uncommitted changes using VC" tar + ((:keywords "vc" "diff") + (:url . "https://github.com/dgutov/diff-hl"))]) + (dismal . + [(1 5) + ((cl-lib + (0))) + "Dis Mode Ain't Lotus: Spreadsheet program Emacs" tar + ((:url . "http://elpa.gnu.org/packages/dismal.html"))]) + (djvu . + [(0 5) + nil "Edit and view Djvu files via djvused" single + ((:url . "http://elpa.gnu.org/packages/djvu.html") + (:keywords "files" "wp"))]) + (docbook . + [(0 1) + nil "Info-like viewer for DocBook" single + ((:url . "http://elpa.gnu.org/packages/docbook.html") + (:keywords "docs" "help"))]) + (dts-mode . + [(0 1 0) + nil "Major mode for Device Tree source files" single + ((:url . "http://elpa.gnu.org/packages/dts-mode.html") + (:keywords "languages"))]) + (easy-kill . + [(0 9 3) + ((emacs + (24)) + (cl-lib + (0 5))) + "kill & mark things easily" tar + ((:keywords "killing" "convenience") + (:url . "https://github.com/leoliu/easy-kill"))]) + (ediprolog . + [(1 1) + nil "Emacs Does Interactive Prolog" single + ((:url . "http://elpa.gnu.org/packages/ediprolog.html") + (:keywords "languages" "processes"))]) + (el-search . + [(0 1 3) + ((emacs + (25))) + "Expression based incremental search for emacs-lisp-mode" single + ((:url . "http://elpa.gnu.org/packages/el-search.html") + (:keywords "lisp"))]) + (eldoc-eval . + [(0 1) + nil "Enable eldoc support when minibuffer is in use." single + ((:url . "http://elpa.gnu.org/packages/eldoc-eval.html") + (:keywords))]) + (electric-spacing . + [(5 0) + nil "Insert operators with surrounding spaces smartly" single + ((:url . "http://elpa.gnu.org/packages/electric-spacing.html") + (:keywords))]) + (enwc . + [(1 0) + nil "The Emacs Network Client" tar + ((:keywords "enwc" "network" "wicd" "manager" "nm") + (:url . "http://elpa.gnu.org/packages/enwc.html"))]) + (epoch-view . + [(0 0 1) + nil "Minor mode to visualize epoch timestamps" single + ((:url . "http://elpa.gnu.org/packages/epoch-view.html") + (:keywords "data" "timestamp" "epoch" "unix"))]) + (ergoemacs-mode . + [(5 14 7 3) + ((emacs + (24 1)) + (undo-tree + (0 6 5))) + "Emacs mode based on common modern interface and ergonomics." tar + ((:keywords "convenience") + (:url . "https://github.com/ergoemacs/ergoemacs-mode"))]) + (exwm . + [(0 2) + ((xelb + (0 5))) + "Emacs X Window Manager" tar + ((:keywords "unix") + (:url . "https://github.com/ch11ng/exwm"))]) + (f90-interface-browser . + [(1 1) + nil "Parse and browse f90 interfaces" single + ((:url . "http://github.com/wence-/f90-iface/") + (:keywords))]) + (flylisp . + [(0 2) + ((emacs + (24 1)) + (cl-lib + (0 4))) + "Color unbalanced parentheses and parentheses inconsistent with indentation" single + ((:url . "http://elpa.gnu.org/packages/flylisp.html") + (:keywords))]) + (fsm . + [(0 2) + ((emacs + (24 1)) + (cl-lib + (0 5))) + "state machine library" single + ((:url . "http://elpa.gnu.org/packages/fsm.html") + (:keywords "extensions"))]) + (ggtags . + [(0 8 11) + ((emacs + (24)) + (cl-lib + (0 5))) + "emacs frontend to GNU Global source code tagging system" single + ((:url . "https://github.com/leoliu/ggtags") + (:keywords "tools" "convenience"))]) + (gnome-c-style . + [(0 1) + nil "minor mode for editing GNOME-style C source code" tar + ((:keywords "gnome" "c" "coding style") + (:url . "http://elpa.gnu.org/packages/gnome-c-style.html"))]) + (gnorb . + [(1 1 2) + ((cl-lib + (0 5))) + "Glue code between Gnus, Org, and BBDB" tar + ((:keywords "mail" "org" "gnus" "bbdb" "todo" "task") + (:url . "https://github.com/girzel/gnorb"))]) + (gnugo . + [(3 0 0) + ((ascii-art-to-unicode + (1 5)) + (xpm + (1 0 1)) + (cl-lib + (0 5))) + "play GNU Go in a buffer" tar + ((:keywords "games" "processes") + (:url . "http://www.gnuvola.org/software/gnugo/"))]) + (heap . + [(0 3) + nil "Heap (a.k.a. priority queue) data structure" single + ((:url . "http://www.dr-qubit.org/emacs.php") + (:keywords "extensions" "data structures" "heap" "priority queue"))]) + (html5-schema . + [(0 1) + nil "Add HTML5 schemas for use by nXML" tar + ((:keywords "html" "xml") + (:url . "https://github.com/validator/validator"))]) + (hydra . + [(0 13 4) + ((cl-lib + (0 5))) + "Make bindings that stick around." tar + ((:keywords "bindings") + (:url . "https://github.com/abo-abo/hydra"))]) + (ioccur . + [(2 4) + nil "Incremental occur" single + ((:url . "http://elpa.gnu.org/packages/ioccur.html") + (:keywords))]) + (iterators . + [(0 1) + ((emacs + (25))) + "Functions for working with iterators" single + ((:url . "http://elpa.gnu.org/packages/iterators.html") + (:keywords "extensions" "elisp"))]) + (javaimp . + [(0 6) + nil "Add and reorder Java import statements in Maven projects" single + ((:url . "http://elpa.gnu.org/packages/javaimp.html") + (:keywords "java" "maven" "programming"))]) + (jgraph-mode . + [(1 1) + ((cl-lib + (0 5))) + "Major mode for Jgraph files" single + ((:url . "http://elpa.gnu.org/packages/jgraph-mode.html") + (:keywords "tex" "wp"))]) + (js2-mode . + [(20150909) + ((emacs + (24 1)) + (cl-lib + (0 5))) + "Improved JavaScript editing mode" tar + ((:keywords "languages" "javascript") + (:url . "https://github.com/mooz/js2-mode/"))]) + (jumpc . + [(3 0) + nil "jump to previous insertion points" single + ((:url . "http://elpa.gnu.org/packages/jumpc.html") + (:keywords))]) + (landmark . + [(1 0) + nil "Neural-network robot that learns landmarks" single + ((:url . "http://elpa.gnu.org/packages/landmark.html") + (:keywords "games" "neural network" "adaptive search" "chemotaxis"))]) + (let-alist . + [(1 0 4) + nil "Easily let-bind values of an assoc-list by their names" single + ((:url . "http://elpa.gnu.org/packages/let-alist.html") + (:keywords "extensions" "lisp"))]) + (lex . + [(1 1) + nil "Lexical analyser construction" tar + ((:url . "http://elpa.gnu.org/packages/lex.html"))]) + (lmc . + [(1 3) + nil "Little Man Computer in Elisp" single + ((:url . "http://elpa.gnu.org/packages/lmc.html") + (:keywords))]) + (load-dir . + [(0 0 3) + nil "Load all Emacs Lisp files in a given directory" single + ((:url . "http://elpa.gnu.org/packages/load-dir.html") + (:keywords "lisp" "files" "convenience"))]) + (load-relative . + [(1 2) + nil "relative file load (within a multi-file Emacs package)" single + ((:url . "http://github.com/rocky/emacs-load-relative") + (:keywords "internal"))]) + (loc-changes . + [(1 2) + nil "keep track of positions even after buffer changes" single + ((:url . "http://github.com/rocky/emacs-loc-changes") + (:keywords))]) + (loccur . + [(1 2 2) + ((cl-lib + (0))) + "Perform an occur-like folding in current buffer" single + ((:url . "https://github.com/fourier/loccur") + (:keywords "matching"))]) + (markchars . + [(0 2 0) + nil "Mark chars fitting certain characteristics" single + ((:url . "http://elpa.gnu.org/packages/markchars.html") + (:keywords))]) + (math-symbol-lists . + [(1 0) + nil "Lists of Unicode math symbols and latex commands" single + ((:url . "https://github.com/vspinu/math-symbol-lists") + (:keywords "unicode" "symbols" "mathematics"))]) + (memory-usage . + [(0 2) + nil "Analyze the memory usage of Emacs in various ways" single + ((:url . "http://elpa.gnu.org/packages/memory-usage.html") + (:keywords "maint"))]) + (metar . + [(0 1) + ((cl-lib + (0 5))) + "Retrieve and decode METAR weather information" single + ((:url . "http://elpa.gnu.org/packages/metar.html") + (:keywords "comm"))]) + (midi-kbd . + [(0 2) + ((emacs + (25))) + "Create keyboard events from Midi input" single + ((:url . "http://elpa.gnu.org/packages/midi-kbd.html") + (:keywords "convenience" "hardware" "multimedia"))]) + (minibuffer-line . + [(0 1) + nil "Display status info in the minibuffer window" single + ((:url . "http://elpa.gnu.org/packages/minibuffer-line.html") + (:keywords))]) + (minimap . + [(1 2) + nil "Sidebar showing a \"mini-map\" of a buffer" single + ((:url . "http://elpa.gnu.org/packages/minimap.html") + (:keywords))]) + (multishell . + [(1 1 5) + nil "Easily use multiple shell buffers, local and remote." tar + ((:keywords "processes") + (:url . "https://github.com/kenmanheimer/EmacsMultishell"))]) + (muse . + [(3 20) + nil "Authoring and publishing tool for Emacs" tar + ((:keywords "hypermedia") + (:url . "http://mwolson.org/projects/EmacsMuse.html"))]) + (nameless . + [(0 5 1) + ((emacs + (24 4))) + "Hide package namespace in your emacs-lisp code" single + ((:url . "https://github.com/Malabarba/nameless") + (:keywords "convenience" "lisp"))]) + (names . + [(20151201 0) + ((emacs + (24 1)) + (cl-lib + (0 5))) + "Namespaces for emacs-lisp. Avoid name clobbering without hiding symbols." tar + ((:keywords "extensions" "lisp") + (:url . "https://github.com/Malabarba/names"))]) + (nhexl-mode . + [(0 1) + nil "Minor mode to edit files via hex-dump format" single + ((:url . "http://elpa.gnu.org/packages/nhexl-mode.html") + (:keywords "data"))]) + (nlinum . + [(1 6) + nil "Show line numbers in the margin" single + ((:url . "http://elpa.gnu.org/packages/nlinum.html") + (:keywords "convenience"))]) + (notes-mode . + [(1 30) + nil "Indexing system for on-line note-taking" tar + ((:url . "http://elpa.gnu.org/packages/notes-mode.html"))]) + (ntlm . + [(2 0 0) + nil "NTLM (NT LanManager) authentication support" single + ((:url . "http://elpa.gnu.org/packages/ntlm.html") + (:keywords "ntlm" "sasl" "comm"))]) + (num3-mode . + [(1 2) + nil "highlight groups of digits in long numbers" single + ((:url . "http://elpa.gnu.org/packages/num3-mode.html") + (:keywords "faces" "minor-mode"))]) + (oauth2 . + [(0 10) + nil "OAuth 2.0 Authorization Protocol" single + ((:url . "http://elpa.gnu.org/packages/oauth2.html") + (:keywords "comm"))]) + (omn-mode . + [(1 2) + nil "Support for OWL Manchester Notation" single + ((:url . "http://elpa.gnu.org/packages/omn-mode.html") + (:keywords))]) + (on-screen . + [(1 3 2) + ((cl-lib + (0))) + "guide your eyes while scrolling" single + ((:url . "https://github.com/michael-heerdegen/on-screen.el") + (:keywords "convenience"))]) + (org . + [(20160215) + nil "Outline-based notes management and organizer" tar nil]) + (osc . + [(0 1) + nil "Open Sound Control protocol library" single + ((:url . "http://elpa.gnu.org/packages/osc.html") + (:keywords "comm" "processes" "multimedia"))]) + (other-frame-window . + [(1 0 2) + ((emacs + (24 4))) + "Minor mode to enable global prefix keys for other frame/window buffer placement" single + ((:url . "http://elpa.gnu.org/packages/other-frame-window.html") + (:keywords "frame" "window"))]) + (pabbrev . + [(4 2 1) + nil "Predictive abbreviation expansion" single + ((:url . "http://elpa.gnu.org/packages/pabbrev.html") + (:keywords))]) + (pinentry . + [(0 1) + nil "GnuPG Pinentry server implementation" single + ((:url . "http://elpa.gnu.org/packages/pinentry.html") + (:keywords "gnupg"))]) + (poker . + [(0 1) + nil "Texas hold'em poker" single + ((:url . "http://elpa.gnu.org/packages/poker.html") + (:keywords "games"))]) + (python . + [(0 25 1) + ((emacs + (24 1)) + (cl-lib + (1 0))) + "Python's flying circus support for Emacs" single + ((:url . "https://github.com/fgallina/python.el") + (:keywords "languages"))]) + (quarter-plane . + [(0 1) + nil "Minor mode for quarter-plane style editing" single + ((:url . "http://elpa.gnu.org/packages/quarter-plane.html") + (:keywords "convenience" "wp"))]) + (queue . + [(0 1 1) + nil "Queue data structure" single + ((:url . "http://www.dr-qubit.org/emacs.php") + (:keywords "extensions" "data structures" "queue"))]) + (rainbow-mode . + [(0 12) + nil "Colorize color names in buffers" single + ((:url . "http://elpa.gnu.org/packages/rainbow-mode.html") + (:keywords "faces"))]) + (register-list . + [(0 1) + nil "Interactively list/edit registers" single + ((:url . "http://elpa.gnu.org/packages/register-list.html") + (:keywords "register"))]) + (rich-minority . + [(1 0 1) + ((cl-lib + (0 5))) + "Clean-up and Beautify the list of minor-modes." single + ((:url . "https://github.com/Malabarba/rich-minority") + (:keywords "mode-line" "faces"))]) + (rnc-mode . + [(0 1) + nil "Emacs mode to edit Relax-NG Compact files" single + ((:url . "http://elpa.gnu.org/packages/rnc-mode.html") + (:keywords "xml" "relaxng"))]) + (rudel . + [(0 3) + nil "A collaborative editing framework for Emacs" tar + ((:keywords "rudel" "collaboration") + (:url . "http://rudel.sourceforge.net/"))]) + (scroll-restore . + [(1 0) + nil "restore original position after scrolling" single + ((:url . "http://elpa.gnu.org/packages/scroll-restore.html") + (:keywords "scrolling"))]) + (seq . + [(1 11) + nil "Sequence manipulation functions" single + ((:url . "http://elpa.gnu.org/packages/seq.html") + (:keywords "sequences"))]) + (shen-mode . + [(0 1) + nil "A major mode for editing shen source code" tar + ((:keywords "languages" "shen") + (:url . "http://elpa.gnu.org/packages/shen-mode.html"))]) + (sisu-mode . + [(3 0 3) + nil "Major mode for SiSU markup text" single + ((:url . "http://elpa.gnu.org/packages/sisu-mode.html") + (:keywords "text" "processes" "tools"))]) + (sml-mode . + [(6 7) + nil "Major mode for editing (Standard) ML" single + ((:url . "http://elpa.gnu.org/packages/sml-mode.html") + (:keywords "sml"))]) + (soap-client . + [(3 0 2) + ((cl-lib + (0 5))) + "Access SOAP web services" tar + ((:keywords "soap" "web-services" "comm" "hypermedia") + (:url . "http://elpa.gnu.org/packages/soap-client.html"))]) + (sokoban . + [(1 4) + nil "Implementation of Sokoban for Emacs." tar + ((:keywords "games") + (:url . "http://elpa.gnu.org/packages/sokoban.html"))]) + (sotlisp . + [(1 4 1) + ((emacs + (24 1))) + "Write lisp at the speed of thought." single + ((:url . "https://github.com/Malabarba/speed-of-thought-lisp") + (:keywords "convenience" "lisp"))]) + (spinner . + [(1 7) + nil "Add spinners and progress-bars to the mode-line for ongoing operations" single + ((:url . "https://github.com/Malabarba/spinner.el") + (:keywords "processes" "mode-line"))]) + (stream . + [(2 1 0) + ((emacs + (25))) + "Implementation of streams" single + ((:url . "http://elpa.gnu.org/packages/stream.html") + (:keywords "stream" "laziness" "sequences"))]) + (svg . + [(0 1) + ((emacs + (25))) + "svg image creation functions" single + ((:url . "http://elpa.gnu.org/packages/svg.html") + (:keywords "image"))]) + (svg-clock . + [(1 0) + ((svg + (0 1)) + (emacs + (25 0))) + "Analog clock using Scalable Vector Graphics" single + ((:url . "http://elpa.gnu.org/packages/svg-clock.html") + (:keywords "demo" "svg" "clock"))]) + (swiper . + [(0 7 0) + ((emacs + (24 1))) + "Isearch with an overview. Oh, man!" tar + ((:keywords "matching") + (:url . "https://github.com/abo-abo/swiper"))]) + (tNFA . + [(0 1 1) + ((queue + (0 1))) + "Tagged non-deterministic finite-state automata" single + ((:url . "http://www.dr-qubit.org/emacs.php") + (:keywords "extensions" "matching" "data structures tnfa" "nfa" "dfa" "finite state automata" "automata" "regexp"))]) + (temp-buffer-browse . + [(1 4) + nil "temp buffer browse mode" single + ((:url . "http://elpa.gnu.org/packages/temp-buffer-browse.html") + (:keywords "convenience"))]) + (test-simple . + [(1 1) + ((cl-lib + (0))) + "Simple Unit Test Framework for Emacs Lisp" single + ((:url . "http://github.com/rocky/emacs-test-simple") + (:keywords "unit-test"))]) + (timerfunctions . + [(1 4 2) + ((cl-lib + (0 5))) + "Enhanced versions of some timer.el functions" single + ((:url . "http://elpa.gnu.org/packages/timerfunctions.html") + (:keywords))]) + (tiny . + [(0 1 1) + nil "Quickly generate linear ranges in Emacs" tar + ((:keywords "convenience") + (:url . "https://github.com/abo-abo/tiny"))]) + (tramp-theme . + [(0 1) + nil "Custom theme for remote buffers" single + ((:url . "http://elpa.gnu.org/packages/tramp-theme.html") + (:keywords))]) + (transcribe . + [(1 0 2) + nil "Package for audio transcriptions" single + ((:url . "http://elpa.gnu.org/packages/transcribe.html") + (:keywords))]) + (trie . + [(0 2 6) + ((tNFA + (0 1 1)) + (heap + (0 3))) + "Trie data structure" single + ((:url . "http://www.dr-qubit.org/emacs.php") + (:keywords "extensions" "matching" "data structures trie" "ternary search tree" "tree" "completion" "regexp"))]) + (undo-tree . + [(0 6 5) + nil "Treat undo history as a tree" single + ((:url . "http://www.dr-qubit.org/emacs.php") + (:keywords "convenience" "files" "undo" "redo" "history" "tree"))]) + (uni-confusables . + [(0 1) + nil "Unicode confusables table" tar + ((:url . "http://elpa.gnu.org/packages/uni-confusables.html"))]) + (vlf . + [(1 7) + nil "View Large Files" tar + ((:keywords "large files" "utilities") + (:url . "https://github.com/m00natic/vlfi"))]) + (w3 . + [(4 0 49) + nil "Fully customizable, largely undocumented web browser for Emacs" tar + ((:keywords "faces" "help" "comm" "news" "mail" "processes" "mouse" "hypermedia") + (:url . "http://elpa.gnu.org/packages/w3.html"))]) + (wcheck-mode . + [(2016 1 30) + nil "General interface for text checkers" single + ((:url . "https://github.com/tlikonen/wcheck-mode") + (:keywords "text" "spell" "check" "languages" "ispell"))]) + (wconf . + [(0 2 0) + ((emacs + (24 4))) + "Minimal window layout manager" single + ((:url . "https://github.com/ilohmar/wconf") + (:keywords "windows" "frames" "layout"))]) + (web-server . + [(0 1 1) + ((emacs + (24 3))) + "Emacs Web Server" tar + ((:keywords "http" "server" "network") + (:url . "https://github.com/eschulte/emacs-web-server"))]) + (websocket . + [(1 5) + nil "Emacs WebSocket client and server" tar + ((:keywords "communication" "websocket" "server") + (:url . "http://elpa.gnu.org/packages/websocket.html"))]) + (windresize . + [(0 1) + nil "Resize windows interactively" single + ((:url . "http://elpa.gnu.org/packages/windresize.html") + (:keywords "window"))]) + (wisi . + [(1 1 2) + ((cl-lib + (0 4)) + (emacs + (24 2))) + "Utilities for implementing an indentation/navigation engine using a generalized LALR parser" tar + ((:keywords "parser" "indentation" "navigation") + (:url . "http://stephe-leake.org/emacs/ada-mode/emacs-ada-mode.html"))]) + (wpuzzle . + [(1 1) + nil "find as many word in a given time" single + ((:url . "http://elpa.gnu.org/packages/wpuzzle.html") + (:keywords))]) + (xclip . + [(1 3) + nil "use xclip to copy&paste" single + ((:url . "http://elpa.gnu.org/packages/xclip.html") + (:keywords "convenience" "tools"))]) + (xelb . + [(0 5) + ((emacs + (24 4)) + (cl-generic + (0 2))) + "X protocol Emacs Lisp Binding" tar + ((:keywords "unix") + (:url . "https://github.com/ch11ng/xelb"))]) + (xpm . + [(1 0 3) + nil "edit XPM images" tar + ((:keywords "multimedia" "xpm") + (:url . "http://www.gnuvola.org/software/xpm/"))]) + (yasnippet . + [(0 8 0) + nil "Yet another snippet extension for Emacs." tar + ((:keywords "convenience" "emulation") + (:url . "http://github.com/capitaomorte/yasnippet"))]) + (ztree . + [(1 0 3) + ((cl-lib + (0))) + "Text mode directory tree" tar + ((:keywords "files" "tools") + (:url . "https://github.com/fourier/ztree"))])) diff --git a/.emacs.d/elpa/archives/gnu/archive-contents.signed b/.emacs.d/elpa/archives/gnu/archive-contents.signed new file mode 100644 index 0000000..0824603 --- /dev/null +++ b/.emacs.d/elpa/archives/gnu/archive-contents.signed @@ -0,0 +1 @@ +Good signature from 474F05837FBDEF9B GNU ELPA Signing Agent (trust undefined) created at 2016-02-17T11:10:03+0100 using DSA \ No newline at end of file diff --git a/.emacs.d/elpa/archives/gnu/archive-contents~ b/.emacs.d/elpa/archives/gnu/archive-contents~ new file mode 100644 index 0000000..81979bc --- /dev/null +++ b/.emacs.d/elpa/archives/gnu/archive-contents~ @@ -0,0 +1,858 @@ +(1 + (ace-window . + [(0 9 0) + ((avy + (0 2 0))) + "Quickly switch windows." single + ((:url . "https://github.com/abo-abo/ace-window") + (:keywords "window" "location"))]) + (ack . + [(1 5) + nil "interface to ack-like tools" tar + ((:keywords "tools" "processes" "convenience") + (:url . "https://github.com/leoliu/ack-el"))]) + (ada-mode . + [(5 1 9) + ((wisi + (1 1 2)) + (cl-lib + (0 4)) + (emacs + (24 2))) + "major-mode for editing Ada sources" tar + ((:keywords "languages" "ada") + (:url . "http://stephe-leake.org/emacs/ada-mode/emacs-ada-mode.html"))]) + (ada-ref-man . + [(2012 0) + nil "Ada Reference Manual 2012" tar + ((:keywords "languages" "ada") + (:url . "http://stephe-leake.org/ada/arm.html"))]) + (adaptive-wrap . + [(0 5) + nil "Smart line-wrapping with wrap-prefix" single + ((:url . "http://elpa.gnu.org/packages/adaptive-wrap.html") + (:keywords))]) + (adjust-parens . + [(3 0) + nil "Indent and dedent Lisp code, automatically adjust close parens" tar + ((:url . "http://elpa.gnu.org/packages/adjust-parens.html"))]) + (aggressive-indent . + [(1 5) + ((emacs + (24 1)) + (cl-lib + (0 5))) + "Minor mode to aggressively keep your code always indented" single + ((:url . "https://github.com/Malabarba/aggressive-indent-mode") + (:keywords "indent" "lisp" "maint" "tools"))]) + (ahungry-theme . + [(1 1 0) + ((emacs + (24))) + "Ahungry color theme for Emacs. Make sure to (load-theme 'ahungry)." tar + ((:keywords "ahungry" "palette" "color" "theme" "emacs" "color-theme" "deftheme") + (:url . "https://github.com/ahungry/color-theme-ahungry"))]) + (all . + [(1 0) + nil "Edit all lines matching a given regexp" single + ((:url . "http://elpa.gnu.org/packages/all.html") + (:keywords "matching"))]) + (ampc . + [(0 2) + nil "Asynchronous Music Player Controller" single + ((:url . "http://elpa.gnu.org/packages/ampc.html") + (:keywords "ampc" "mpc" "mpd"))]) + (ascii-art-to-unicode . + [(1 9) + nil "a small artist adjunct" single + ((:url . "http://www.gnuvola.org/software/aa2u/") + (:keywords "ascii" "unicode" "box-drawing"))]) + (async . + [(1 6) + nil "Asynchronous processing in Emacs" tar + ((:keywords "async") + (:url . "http://elpa.gnu.org/packages/async.html"))]) + (auctex . + [(11 89 1) + nil "Integrated environment for *TeX*" tar + ((:url . "http://www.gnu.org/software/auctex/"))]) + (aumix-mode . + [(7) + nil "run the aumix program in a buffer" single + ((:url . "http://user42.tuxfamily.org/aumix-mode/index.html") + (:keywords "multimedia" "mixer" "aumix"))]) + (auto-overlays . + [(0 10 9) + nil "Automatic regexp-delimited overlays" tar + ((:keywords "extensions") + (:url . "http://www.dr-qubit.org/emacs.php"))]) + (avy . + [(0 4 0) + ((emacs + (24 1)) + (cl-lib + (0 5))) + "tree-based completion" tar + ((:keywords "point" "location") + (:url . "https://github.com/abo-abo/avy"))]) + (beacon . + [(1 0) + ((seq + (1 11))) + "Highlight the cursor whenever the window scrolls" single + ((:url . "https://github.com/Malabarba/beacon") + (:keywords "convenience"))]) + (bug-hunter . + [(1 1) + ((seq + (1 3)) + (cl-lib + (0 5))) + "Hunt down errors by bisecting elisp files" single + ((:url . "https://github.com/Malabarba/elisp-bug-hunter") + (:keywords "lisp"))]) + (caps-lock . + [(1 0) + nil "Caps-lock as a minor mode" single + ((:url . "http://elpa.gnu.org/packages/caps-lock.html") + (:keywords))]) + (chess . + [(2 0 4) + ((cl-lib + (0 5))) + "Play chess in GNU Emacs" tar + ((:keywords "games") + (:url . "http://elpa.gnu.org/packages/chess.html"))]) + (cl-generic . + [(0 2) + nil "Forward cl-generic compatibility for Emacs<25" single + ((:url . "http://elpa.gnu.org/packages/cl-generic.html") + (:keywords))]) + (cl-lib . + [(0 5) + nil "Properly prefixed CL functions and macros" single + ((:url . "http://elpa.gnu.org/packages/cl-lib.html") + (:keywords))]) + (coffee-mode . + [(0 4 1 1) + nil "Major mode for CoffeeScript files" single + ((:url . "http://github.com/defunkt/coffee-mode") + (:keywords "coffeescript" "major" "mode"))]) + (company . + [(0 8 12) + ((emacs + (24 1)) + (cl-lib + (0 5))) + "Modular text completion framework" tar + ((:keywords "abbrev" "convenience" "matching") + (:url . "http://company-mode.github.io/"))]) + (company-math . + [(1 0 1) + ((company + (0 8 0)) + (math-symbol-lists + (1 0))) + "Completion backends for unicode math symbols and latex tags" single + ((:url . "https://github.com/vspinu/company-math") + (:keywords "unicode" "symbols" "completion"))]) + (company-statistics . + [(0 2 2) + ((emacs + (24 3)) + (company + (0 8 5))) + "Sort candidates using completion history" tar + ((:keywords "abbrev" "convenience" "matching") + (:url . "https://github.com/company-mode/company-statistics"))]) + (context-coloring . + [(7 2 0) + ((emacs + (24 3)) + (js2-mode + (20150713))) + "Highlight by scope" single + ((:url . "https://github.com/jacksonrayhamilton/context-coloring") + (:keywords "convenience" "faces" "tools"))]) + (crisp . + [(1 3 4) + nil "CRiSP/Brief Emacs emulator" single + ((:url . "http://elpa.gnu.org/packages/crisp.html") + (:keywords "emulations" "brief" "crisp"))]) + (csv-mode . + [(1 5) + nil "Major mode for editing comma/char separated values" single + ((:url . "http://centaur.maths.qmul.ac.uk/Emacs/") + (:keywords "convenience"))]) + (darkroom . + [(0 1) + ((cl-lib + (0 5))) + "Remove visual distractions and focus on writing" single + ((:url . "http://elpa.gnu.org/packages/darkroom.html") + (:keywords "convenience" "emulations"))]) + (dash . + [(2 12 0) + nil "A modern list library for Emacs" tar + ((:keywords "lists") + (:url . "http://elpa.gnu.org/packages/dash.html"))]) + (dbus-codegen . + [(0 1) + ((cl-lib + (0 5))) + "Lisp code generation for D-Bus." single + ((:url . "http://elpa.gnu.org/packages/dbus-codegen.html") + (:keywords "comm" "dbus" "convenience"))]) + (debbugs . + [(0 9) + ((async + (1 6))) + "SOAP library to access debbugs servers" tar + ((:keywords "comm" "hypermedia") + (:url . "http://elpa.gnu.org/packages/debbugs.html"))]) + (dict-tree . + [(0 12 8) + ((trie + (0 2 5)) + (tNFA + (0 1 1)) + (heap + (0 3))) + "Dictionary data structure" single + ((:url . "http://www.dr-qubit.org/emacs.php") + (:keywords "extensions" "matching" "data structures trie" "tree" "dictionary" "completion" "regexp"))]) + (diff-hl . + [(1 8 3) + ((cl-lib + (0 2))) + "Highlight uncommitted changes using VC" tar + ((:keywords "vc" "diff") + (:url . "https://github.com/dgutov/diff-hl"))]) + (dismal . + [(1 5) + ((cl-lib + (0))) + "Dis Mode Ain't Lotus: Spreadsheet program Emacs" tar + ((:url . "http://elpa.gnu.org/packages/dismal.html"))]) + (djvu . + [(0 5) + nil "Edit and view Djvu files via djvused" single + ((:url . "http://elpa.gnu.org/packages/djvu.html") + (:keywords "files" "wp"))]) + (docbook . + [(0 1) + nil "Info-like viewer for DocBook" single + ((:url . "http://elpa.gnu.org/packages/docbook.html") + (:keywords "docs" "help"))]) + (dts-mode . + [(0 1 0) + nil "Major mode for Device Tree source files" single + ((:url . "http://elpa.gnu.org/packages/dts-mode.html") + (:keywords "languages"))]) + (easy-kill . + [(0 9 3) + ((emacs + (24)) + (cl-lib + (0 5))) + "kill & mark things easily" tar + ((:keywords "killing" "convenience") + (:url . "https://github.com/leoliu/easy-kill"))]) + (ediprolog . + [(1 1) + nil "Emacs Does Interactive Prolog" single + ((:url . "http://elpa.gnu.org/packages/ediprolog.html") + (:keywords "languages" "processes"))]) + (el-search . + [(0 1 3) + ((emacs + (25))) + "Expression based incremental search for emacs-lisp-mode" single + ((:url . "http://elpa.gnu.org/packages/el-search.html") + (:keywords "lisp"))]) + (eldoc-eval . + [(0 1) + nil "Enable eldoc support when minibuffer is in use." single + ((:url . "http://elpa.gnu.org/packages/eldoc-eval.html") + (:keywords))]) + (electric-spacing . + [(5 0) + nil "Insert operators with surrounding spaces smartly" single + ((:url . "http://elpa.gnu.org/packages/electric-spacing.html") + (:keywords))]) + (enwc . + [(1 0) + nil "The Emacs Network Client" tar + ((:keywords "enwc" "network" "wicd" "manager" "nm") + (:url . "http://elpa.gnu.org/packages/enwc.html"))]) + (epoch-view . + [(0 0 1) + nil "Minor mode to visualize epoch timestamps" single + ((:url . "http://elpa.gnu.org/packages/epoch-view.html") + (:keywords "data" "timestamp" "epoch" "unix"))]) + (ergoemacs-mode . + [(5 14 7 3) + ((emacs + (24 1)) + (undo-tree + (0 6 5))) + "Emacs mode based on common modern interface and ergonomics." tar + ((:keywords "convenience") + (:url . "https://github.com/ergoemacs/ergoemacs-mode"))]) + (exwm . + [(0 2) + ((xelb + (0 5))) + "Emacs X Window Manager" tar + ((:keywords "unix") + (:url . "https://github.com/ch11ng/exwm"))]) + (f90-interface-browser . + [(1 1) + nil "Parse and browse f90 interfaces" single + ((:url . "http://github.com/wence-/f90-iface/") + (:keywords))]) + (flylisp . + [(0 2) + ((emacs + (24 1)) + (cl-lib + (0 4))) + "Color unbalanced parentheses and parentheses inconsistent with indentation" single + ((:url . "http://elpa.gnu.org/packages/flylisp.html") + (:keywords))]) + (fsm . + [(0 2) + ((emacs + (24 1)) + (cl-lib + (0 5))) + "state machine library" single + ((:url . "http://elpa.gnu.org/packages/fsm.html") + (:keywords "extensions"))]) + (ggtags . + [(0 8 11) + ((emacs + (24)) + (cl-lib + (0 5))) + "emacs frontend to GNU Global source code tagging system" single + ((:url . "https://github.com/leoliu/ggtags") + (:keywords "tools" "convenience"))]) + (gnome-c-style . + [(0 1) + nil "minor mode for editing GNOME-style C source code" tar + ((:keywords "gnome" "c" "coding style") + (:url . "http://elpa.gnu.org/packages/gnome-c-style.html"))]) + (gnorb . + [(1 1 2) + ((cl-lib + (0 5))) + "Glue code between Gnus, Org, and BBDB" tar + ((:keywords "mail" "org" "gnus" "bbdb" "todo" "task") + (:url . "https://github.com/girzel/gnorb"))]) + (gnugo . + [(3 0 0) + ((ascii-art-to-unicode + (1 5)) + (xpm + (1 0 1)) + (cl-lib + (0 5))) + "play GNU Go in a buffer" tar + ((:keywords "games" "processes") + (:url . "http://www.gnuvola.org/software/gnugo/"))]) + (heap . + [(0 3) + nil "Heap (a.k.a. priority queue) data structure" single + ((:url . "http://www.dr-qubit.org/emacs.php") + (:keywords "extensions" "data structures" "heap" "priority queue"))]) + (html5-schema . + [(0 1) + nil "Add HTML5 schemas for use by nXML" tar + ((:keywords "html" "xml") + (:url . "https://github.com/validator/validator"))]) + (hydra . + [(0 13 4) + ((cl-lib + (0 5))) + "Make bindings that stick around." tar + ((:keywords "bindings") + (:url . "https://github.com/abo-abo/hydra"))]) + (ioccur . + [(2 4) + nil "Incremental occur" single + ((:url . "http://elpa.gnu.org/packages/ioccur.html") + (:keywords))]) + (iterators . + [(0 1) + ((emacs + (25))) + "Functions for working with iterators" single + ((:url . "http://elpa.gnu.org/packages/iterators.html") + (:keywords "extensions" "elisp"))]) + (javaimp . + [(0 6) + nil "Add and reorder Java import statements in Maven projects" single + ((:url . "http://elpa.gnu.org/packages/javaimp.html") + (:keywords "java" "maven" "programming"))]) + (jgraph-mode . + [(1 1) + ((cl-lib + (0 5))) + "Major mode for Jgraph files" single + ((:url . "http://elpa.gnu.org/packages/jgraph-mode.html") + (:keywords "tex" "wp"))]) + (js2-mode . + [(20150909) + ((emacs + (24 1)) + (cl-lib + (0 5))) + "Improved JavaScript editing mode" tar + ((:keywords "languages" "javascript") + (:url . "https://github.com/mooz/js2-mode/"))]) + (jumpc . + [(3 0) + nil "jump to previous insertion points" single + ((:url . "http://elpa.gnu.org/packages/jumpc.html") + (:keywords))]) + (landmark . + [(1 0) + nil "Neural-network robot that learns landmarks" single + ((:url . "http://elpa.gnu.org/packages/landmark.html") + (:keywords "games" "neural network" "adaptive search" "chemotaxis"))]) + (let-alist . + [(1 0 4) + nil "Easily let-bind values of an assoc-list by their names" single + ((:url . "http://elpa.gnu.org/packages/let-alist.html") + (:keywords "extensions" "lisp"))]) + (lex . + [(1 1) + nil "Lexical analyser construction" tar + ((:url . "http://elpa.gnu.org/packages/lex.html"))]) + (lmc . + [(1 3) + nil "Little Man Computer in Elisp" single + ((:url . "http://elpa.gnu.org/packages/lmc.html") + (:keywords))]) + (load-dir . + [(0 0 3) + nil "Load all Emacs Lisp files in a given directory" single + ((:url . "http://elpa.gnu.org/packages/load-dir.html") + (:keywords "lisp" "files" "convenience"))]) + (load-relative . + [(1 2) + nil "relative file load (within a multi-file Emacs package)" single + ((:url . "http://github.com/rocky/emacs-load-relative") + (:keywords "internal"))]) + (loc-changes . + [(1 2) + nil "keep track of positions even after buffer changes" single + ((:url . "http://github.com/rocky/emacs-loc-changes") + (:keywords))]) + (loccur . + [(1 2 2) + ((cl-lib + (0))) + "Perform an occur-like folding in current buffer" single + ((:url . "https://github.com/fourier/loccur") + (:keywords "matching"))]) + (markchars . + [(0 2 0) + nil "Mark chars fitting certain characteristics" single + ((:url . "http://elpa.gnu.org/packages/markchars.html") + (:keywords))]) + (math-symbol-lists . + [(1 0) + nil "Lists of Unicode math symbols and latex commands" single + ((:url . "https://github.com/vspinu/math-symbol-lists") + (:keywords "unicode" "symbols" "mathematics"))]) + (memory-usage . + [(0 2) + nil "Analyze the memory usage of Emacs in various ways" single + ((:url . "http://elpa.gnu.org/packages/memory-usage.html") + (:keywords "maint"))]) + (metar . + [(0 1) + ((cl-lib + (0 5))) + "Retrieve and decode METAR weather information" single + ((:url . "http://elpa.gnu.org/packages/metar.html") + (:keywords "comm"))]) + (midi-kbd . + [(0 2) + ((emacs + (25))) + "Create keyboard events from Midi input" single + ((:url . "http://elpa.gnu.org/packages/midi-kbd.html") + (:keywords "convenience" "hardware" "multimedia"))]) + (minibuffer-line . + [(0 1) + nil "Display status info in the minibuffer window" single + ((:url . "http://elpa.gnu.org/packages/minibuffer-line.html") + (:keywords))]) + (minimap . + [(1 2) + nil "Sidebar showing a \"mini-map\" of a buffer" single + ((:url . "http://elpa.gnu.org/packages/minimap.html") + (:keywords))]) + (multishell . + [(1 1 5) + nil "Easily use multiple shell buffers, local and remote." tar + ((:keywords "processes") + (:url . "https://github.com/kenmanheimer/EmacsMultishell"))]) + (muse . + [(3 20) + nil "Authoring and publishing tool for Emacs" tar + ((:keywords "hypermedia") + (:url . "http://mwolson.org/projects/EmacsMuse.html"))]) + (nameless . + [(0 5 1) + ((emacs + (24 4))) + "Hide package namespace in your emacs-lisp code" single + ((:url . "https://github.com/Malabarba/nameless") + (:keywords "convenience" "lisp"))]) + (names . + [(20151201 0) + ((emacs + (24 1)) + (cl-lib + (0 5))) + "Namespaces for emacs-lisp. Avoid name clobbering without hiding symbols." tar + ((:keywords "extensions" "lisp") + (:url . "https://github.com/Malabarba/names"))]) + (nhexl-mode . + [(0 1) + nil "Minor mode to edit files via hex-dump format" single + ((:url . "http://elpa.gnu.org/packages/nhexl-mode.html") + (:keywords "data"))]) + (nlinum . + [(1 6) + nil "Show line numbers in the margin" single + ((:url . "http://elpa.gnu.org/packages/nlinum.html") + (:keywords "convenience"))]) + (notes-mode . + [(1 30) + nil "Indexing system for on-line note-taking" tar + ((:url . "http://elpa.gnu.org/packages/notes-mode.html"))]) + (ntlm . + [(2 0 0) + nil "NTLM (NT LanManager) authentication support" single + ((:url . "http://elpa.gnu.org/packages/ntlm.html") + (:keywords "ntlm" "sasl" "comm"))]) + (num3-mode . + [(1 2) + nil "highlight groups of digits in long numbers" single + ((:url . "http://elpa.gnu.org/packages/num3-mode.html") + (:keywords "faces" "minor-mode"))]) + (oauth2 . + [(0 10) + nil "OAuth 2.0 Authorization Protocol" single + ((:url . "http://elpa.gnu.org/packages/oauth2.html") + (:keywords "comm"))]) + (omn-mode . + [(1 2) + nil "Support for OWL Manchester Notation" single + ((:url . "http://elpa.gnu.org/packages/omn-mode.html") + (:keywords))]) + (on-screen . + [(1 3 2) + ((cl-lib + (0))) + "guide your eyes while scrolling" single + ((:url . "https://github.com/michael-heerdegen/on-screen.el") + (:keywords "convenience"))]) + (org . + [(20160208) + nil "Outline-based notes management and organizer" tar nil]) + (osc . + [(0 1) + nil "Open Sound Control protocol library" single + ((:url . "http://elpa.gnu.org/packages/osc.html") + (:keywords "comm" "processes" "multimedia"))]) + (other-frame-window . + [(1 0 2) + ((emacs + (24 4))) + "Minor mode to enable global prefix keys for other frame/window buffer placement" single + ((:url . "http://elpa.gnu.org/packages/other-frame-window.html") + (:keywords "frame" "window"))]) + (pabbrev . + [(4 2 1) + nil "Predictive abbreviation expansion" single + ((:url . "http://elpa.gnu.org/packages/pabbrev.html") + (:keywords))]) + (pinentry . + [(0 1) + nil "GnuPG Pinentry server implementation" single + ((:url . "http://elpa.gnu.org/packages/pinentry.html") + (:keywords "gnupg"))]) + (poker . + [(0 1) + nil "Texas hold'em poker" single + ((:url . "http://elpa.gnu.org/packages/poker.html") + (:keywords "games"))]) + (python . + [(0 25 1) + ((emacs + (24 1)) + (cl-lib + (1 0))) + "Python's flying circus support for Emacs" single + ((:url . "https://github.com/fgallina/python.el") + (:keywords "languages"))]) + (quarter-plane . + [(0 1) + nil "Minor mode for quarter-plane style editing" single + ((:url . "http://elpa.gnu.org/packages/quarter-plane.html") + (:keywords "convenience" "wp"))]) + (queue . + [(0 1 1) + nil "Queue data structure" single + ((:url . "http://www.dr-qubit.org/emacs.php") + (:keywords "extensions" "data structures" "queue"))]) + (rainbow-mode . + [(0 12) + nil "Colorize color names in buffers" single + ((:url . "http://elpa.gnu.org/packages/rainbow-mode.html") + (:keywords "faces"))]) + (register-list . + [(0 1) + nil "Interactively list/edit registers" single + ((:url . "http://elpa.gnu.org/packages/register-list.html") + (:keywords "register"))]) + (rich-minority . + [(1 0 1) + ((cl-lib + (0 5))) + "Clean-up and Beautify the list of minor-modes." single + ((:url . "https://github.com/Malabarba/rich-minority") + (:keywords "mode-line" "faces"))]) + (rnc-mode . + [(0 1) + nil "Emacs mode to edit Relax-NG Compact files" single + ((:url . "http://elpa.gnu.org/packages/rnc-mode.html") + (:keywords "xml" "relaxng"))]) + (rudel . + [(0 3) + nil "A collaborative editing framework for Emacs" tar + ((:keywords "rudel" "collaboration") + (:url . "http://rudel.sourceforge.net/"))]) + (scroll-restore . + [(1 0) + nil "restore original position after scrolling" single + ((:url . "http://elpa.gnu.org/packages/scroll-restore.html") + (:keywords "scrolling"))]) + (seq . + [(1 11) + nil "Sequence manipulation functions" single + ((:url . "http://elpa.gnu.org/packages/seq.html") + (:keywords "sequences"))]) + (shen-mode . + [(0 1) + nil "A major mode for editing shen source code" tar + ((:keywords "languages" "shen") + (:url . "http://elpa.gnu.org/packages/shen-mode.html"))]) + (sisu-mode . + [(3 0 3) + nil "Major mode for SiSU markup text" single + ((:url . "http://elpa.gnu.org/packages/sisu-mode.html") + (:keywords "text" "processes" "tools"))]) + (sml-mode . + [(6 7) + nil "Major mode for editing (Standard) ML" single + ((:url . "http://elpa.gnu.org/packages/sml-mode.html") + (:keywords "sml"))]) + (soap-client . + [(3 0 2) + ((cl-lib + (0 5))) + "Access SOAP web services" tar + ((:keywords "soap" "web-services" "comm" "hypermedia") + (:url . "http://elpa.gnu.org/packages/soap-client.html"))]) + (sokoban . + [(1 4) + nil "Implementation of Sokoban for Emacs." tar + ((:keywords "games") + (:url . "http://elpa.gnu.org/packages/sokoban.html"))]) + (sotlisp . + [(1 4 1) + ((emacs + (24 1))) + "Write lisp at the speed of thought." single + ((:url . "https://github.com/Malabarba/speed-of-thought-lisp") + (:keywords "convenience" "lisp"))]) + (spinner . + [(1 7) + nil "Add spinners and progress-bars to the mode-line for ongoing operations" single + ((:url . "https://github.com/Malabarba/spinner.el") + (:keywords "processes" "mode-line"))]) + (stream . + [(2 1 0) + ((emacs + (25))) + "Implementation of streams" single + ((:url . "http://elpa.gnu.org/packages/stream.html") + (:keywords "stream" "laziness" "sequences"))]) + (svg . + [(0 1) + ((emacs + (25))) + "svg image creation functions" single + ((:url . "http://elpa.gnu.org/packages/svg.html") + (:keywords "image"))]) + (svg-clock . + [(1 0) + ((svg + (0 1)) + (emacs + (25 0))) + "Analog clock using Scalable Vector Graphics" single + ((:url . "http://elpa.gnu.org/packages/svg-clock.html") + (:keywords "demo" "svg" "clock"))]) + (swiper . + [(0 7 0) + ((emacs + (24 1))) + "Isearch with an overview. Oh, man!" tar + ((:keywords "matching") + (:url . "https://github.com/abo-abo/swiper"))]) + (tNFA . + [(0 1 1) + ((queue + (0 1))) + "Tagged non-deterministic finite-state automata" single + ((:url . "http://www.dr-qubit.org/emacs.php") + (:keywords "extensions" "matching" "data structures tnfa" "nfa" "dfa" "finite state automata" "automata" "regexp"))]) + (temp-buffer-browse . + [(1 4) + nil "temp buffer browse mode" single + ((:url . "http://elpa.gnu.org/packages/temp-buffer-browse.html") + (:keywords "convenience"))]) + (test-simple . + [(1 1) + ((cl-lib + (0))) + "Simple Unit Test Framework for Emacs Lisp" single + ((:url . "http://github.com/rocky/emacs-test-simple") + (:keywords "unit-test"))]) + (timerfunctions . + [(1 4 2) + ((cl-lib + (0 5))) + "Enhanced versions of some timer.el functions" single + ((:url . "http://elpa.gnu.org/packages/timerfunctions.html") + (:keywords))]) + (tiny . + [(0 1 1) + nil "Quickly generate linear ranges in Emacs" tar + ((:keywords "convenience") + (:url . "https://github.com/abo-abo/tiny"))]) + (transcribe . + [(1 0 2) + nil "Package for audio transcriptions" single + ((:url . "http://elpa.gnu.org/packages/transcribe.html") + (:keywords))]) + (trie . + [(0 2 6) + ((tNFA + (0 1 1)) + (heap + (0 3))) + "Trie data structure" single + ((:url . "http://www.dr-qubit.org/emacs.php") + (:keywords "extensions" "matching" "data structures trie" "ternary search tree" "tree" "completion" "regexp"))]) + (undo-tree . + [(0 6 5) + nil "Treat undo history as a tree" single + ((:url . "http://www.dr-qubit.org/emacs.php") + (:keywords "convenience" "files" "undo" "redo" "history" "tree"))]) + (uni-confusables . + [(0 1) + nil "Unicode confusables table" tar + ((:url . "http://elpa.gnu.org/packages/uni-confusables.html"))]) + (vlf . + [(1 7) + nil "View Large Files" tar + ((:keywords "large files" "utilities") + (:url . "https://github.com/m00natic/vlfi"))]) + (w3 . + [(4 0 49) + nil "Fully customizable, largely undocumented web browser for Emacs" tar + ((:keywords "faces" "help" "comm" "news" "mail" "processes" "mouse" "hypermedia") + (:url . "http://elpa.gnu.org/packages/w3.html"))]) + (wcheck-mode . + [(2016 1 30) + nil "General interface for text checkers" single + ((:url . "https://github.com/tlikonen/wcheck-mode") + (:keywords "text" "spell" "check" "languages" "ispell"))]) + (wconf . + [(0 2 0) + ((emacs + (24 4))) + "Minimal window layout manager" single + ((:url . "https://github.com/ilohmar/wconf") + (:keywords "windows" "frames" "layout"))]) + (web-server . + [(0 1 1) + ((emacs + (24 3))) + "Emacs Web Server" tar + ((:keywords "http" "server" "network") + (:url . "https://github.com/eschulte/emacs-web-server"))]) + (websocket . + [(1 5) + nil "Emacs WebSocket client and server" tar + ((:keywords "communication" "websocket" "server") + (:url . "http://elpa.gnu.org/packages/websocket.html"))]) + (windresize . + [(0 1) + nil "Resize windows interactively" single + ((:url . "http://elpa.gnu.org/packages/windresize.html") + (:keywords "window"))]) + (wisi . + [(1 1 2) + ((cl-lib + (0 4)) + (emacs + (24 2))) + "Utilities for implementing an indentation/navigation engine using a generalized LALR parser" tar + ((:keywords "parser" "indentation" "navigation") + (:url . "http://stephe-leake.org/emacs/ada-mode/emacs-ada-mode.html"))]) + (wpuzzle . + [(1 1) + nil "find as many word in a given time" single + ((:url . "http://elpa.gnu.org/packages/wpuzzle.html") + (:keywords))]) + (xclip . + [(1 3) + nil "use xclip to copy&paste" single + ((:url . "http://elpa.gnu.org/packages/xclip.html") + (:keywords "convenience" "tools"))]) + (xelb . + [(0 5) + ((emacs + (24 4)) + (cl-generic + (0 2))) + "X protocol Emacs Lisp Binding" tar + ((:keywords "unix") + (:url . "https://github.com/ch11ng/xelb"))]) + (xpm . + [(1 0 3) + nil "edit XPM images" tar + ((:keywords "multimedia" "xpm") + (:url . "http://www.gnuvola.org/software/xpm/"))]) + (yasnippet . + [(0 8 0) + nil "Yet another snippet extension for Emacs." tar + ((:keywords "convenience" "emulation") + (:url . "http://github.com/capitaomorte/yasnippet"))]) + (ztree . + [(1 0 3) + ((cl-lib + (0))) + "Text mode directory tree" tar + ((:keywords "files" "tools") + (:url . "https://github.com/fourier/ztree"))])) diff --git a/.emacs.d/elpa/archives/melpa/archive-contents b/.emacs.d/elpa/archives/melpa/archive-contents new file mode 100644 index 0000000..396545c --- /dev/null +++ b/.emacs.d/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 . [(20151031 959) ((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 . [(20151206 2105) nil "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 . [(20150408 2002) 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 . [(20160216 711) nil "A dark, medium contrast theme for Emacs" single ((:url . "https://github.com/NicolasPetton/zerodark-theme") (:keywords "themes"))]) (zencoding-mode . [(20140213 22) nil "Unfold CSS-selector-like expressions to markup" single ((:url . "https://github.com/rooney/zencoding") (:keywords "convenience"))]) (zenburn-theme . [(20160204 1216) 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"))]) (yesql-ghosts . [(20150220 437) ((s (1 9 0)) (dash (2 10 0)) (cider (0 8 0))) "Display ghostly yesql defqueries inline" single nil]) (ycmd . [(20160214 2344) ((emacs (24)) (f (0 17 1)) (dash (1 2 0)) (deferred (0 3 2)) (popup (0 5 0)) (cl-lib (0 5))) "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 . [(20160131 948) nil "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 . [(20140816 1044) 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"))]) (yandex-weather . [(20150821 414) nil "No description available." tar nil]) (yaml-tomato . [(20151122 2353) ((s (1 9))) "copy or show the yaml path currently under cursor." single ((:keywords "yaml"))]) (yaml-mode . [(20160217 653) ((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 . [(20160111 439) ((emacs (24))) "Displays weather information in mode-line" single ((:url . "https://github.com/lujun9972/yahoo-weather-mode") (:keywords "weather" "mode-line"))]) (yagist . [(20150425 551) ((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 . [(20151210 2301) ((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 . [(20150823 646) nil "ANSI & XTERM 256 color support" single nil]) (xresources-theme . [(20141219 917) nil "Use your .Xresources as your emacs theme" single ((:keywords "xresources" "theme"))]) (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]) (xmlunicode . [(20160130 909) 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 . [(20150902 1827) 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 . [(20151016 2153) ((json (1 3))) "View xkcd from Emacs" single ((:url . "https://github.com/vibhavp/emacs-xkcd") (:keywords "xkcd" "webcomic"))]) (xcscope . [(20160201 1926) 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 . [(20160214 5) 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 . [(20160211 1310) nil "Major mode for editing emacs lisp." single ((:url . "http://ergoemacs.org/emacs/xah-elisp-mode.html") (:keywords "lisp" "languages"))]) (x86-lookup . [(20160113 1403) ((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"))]) (wsd-mode . [(20160213 1217) 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 . [(20151111 101) ((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 . [(20160207 648) ((swiper (0 7 0)) (ace-link (0 1 0)) (hydra (0 13 0))) "A warrior does not press so many keys! (in org-mode)" single ((: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 . [(20160128 1201) ((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 . [(20150623 1034) nil "Tools for wisp: the Whitespace-to-Lisp preprocessor" single ((:keywords "languages" "lisp"))]) (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 . [(20160217 932) ((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 . [(20160213 654) ((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 . [(20151206 447) ((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 . [(20160124 2020) 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 . [(20160212 538) nil "major mode for editing web templates" single ((:url . "http://web-mode.org") (:keywords "languages"))]) (web-completion-data . [(20150623 333) 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 . [(20131118 226) 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 . [(20150116 2102) nil "show wc-like information in status bar" single ((:url . "http://www.dr-qubit.org/emacs.php") (:keywords "length" "characters" "words" "lines" "mode line"))]) (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 . [(20160129 1536) ((semi (1 14 7))) "Yet Another Message Interface on Emacsen" tar nil]) (wandbox . [(20160124 840) ((emacs (24)) (json (1 3))) "Wandbox API Library for Emacs" single ((: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 . [(20151117 1630) 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"))]) (volume . [(20150718 1309) nil "tweak your sound card volume from Emacs" single ((:url . "http://www.brockman.se/software/volume-el/"))]) (volatile-highlights . [(20141004 2240) 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 . [(20150411 416) ((visual-regexp (0 8))) "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 . [(20151206 519) ((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 . [(20151121 1551) ((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 . [(20160111 102) ((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"))]) (viewer . [(20141021 1138) 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 . [(20160114 249) ((ggtags (0 8 11)) (emacs (24 3)) (outshine (2 0))) "Utilities for navigating vhdl sources." single ((:url . "https://github.com/csantosb/vhdl-tools") (:keywords "vhdl"))]) (vertigo . [(20151110 2013) ((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 . [(20160202 2359) ((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 . [(20141031 22) 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 . [(20160120 1632) ((dash (2 12 0))) "Vagrant method for TRAMP" tar ((:url . "https://github.com/dougm/vagrant-tramp") (:keywords "vagrant"))]) (vagrant . [(20141125 1959) 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 . [(20160107 854) ((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 . [(20160209 1633) ((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 . [(20150805 2313) nil "shorten long url and expand tinyurl" single ((:url . "https://github.com/yuyang0/url-shortener"))]) (unkillable-scratch . [(20150327 2318) nil "Disallow buffers from being killed by regexp -- default is *scratch* buffer" single ((:keywords "scratch"))]) (unison-mode . [(20150104 414) 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 . [(20150817 1010) ((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 . [(20140307 128) 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 . [(20150807 2136) nil "Ujelly theme for GNU Emacs 24 (deftheme)" single ((:url . "http://github.com/marktran/color-theme-ujelly"))]) (uimage . [(20151012 604) nil "Url image minor mode." 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"))]) (typing-game . [(20151111 740) 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 . [(20160207 156) 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"))]) (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 . [(20160105 1024) ((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"))]) (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 . [(20160204 1055) ((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 . [(20151126 626) nil "Transpose windows arrangement in a frame" single ((:keywords "window"))]) (transmission . [(20160214 2049) ((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 . [(20130418 1239) ((emacs (24))) "A dark color theme by toxi" single ((:url . "http://hg.postspectacular.com/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 . [(20151210 1527) nil "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 . [(20150921 705) 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 . [(20160214 152) ((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"))]) (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]) (time-ext . [(20130130 1351) nil "more function for time/date" single ((:url . "http://www.emacswiki.org/cgi-bin/wiki/download/time-ext.el") (:keywords "lisp"))]) (tidy . [(20111222 956) nil "Interface to the HTML Tidy program" single ((:url . "http://www.emacswiki.org/elisp/tidy.el") (:keywords "languages"))]) (tide . [(20160130 43) ((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 . [(20150315 523) 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 . [(20150914 546) 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 . [(20151110 417) nil "Smart umlaut conversion for TeX." single ((:url . "http://hub.darcs.net/lyro/tex-smart-umlauts") (:keywords "tex" "wp"))]) (test-simple . [(20151110 1943) nil "Simple Unit Test Framework for Emacs Lisp" single ((:url . "http://github.com/rocky/emacs-test-simple") (:keywords "unit-test"))]) (test-kitchen . [(20151027 427) 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 . [(20151226 457) ((hcl-mode (0 1)) (cl-lib (0 5))) "Major mode for terraform configuration file" single ((:url . "https://github.com/syohex/emacs-terraform-mode"))]) (tern-django . [(20150121 1127) ((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 . [(20151228 511) ((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 . [(20141114 1314) nil "Send commands to Emacs from programs running under term.el" single ((:url . "https://github.com/CallumCameron/term-cmd") (:keywords "processes"))]) (term-alert . [(20141121 1205) ((term-cmd (1 0)) (alert (1 1))) "Get notifications when commands complete in the Emacs terminal emulator" single ((:url . "https://github.com/CallumCameron/term-alert") (:keywords "notifications" "processes"))]) (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+ . [(20130612 652) nil "term-mode enhancement" tar ((:url . "http://github.com/tarao/term+-el") (:keywords "terminal" "emulation"))]) (telephone-line . [(20151116 442) ((emacs (24 3)) (cl-lib (0 5)) (eieio (1 4)) (s (1 9 0)) (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"))]) (tao-theme . [(20151217 840) nil "Tao, light & dark themes for Emacs 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 . [(20150727 224) ((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 . [(20150618 2218) ((emacs (24 3))) "Extended tabulated-list-mode" tar ((:keywords "extensions" "lisp"))]) (tabbar-ruler . [(20160216 1932) ((tabbar (2 0 1)) (powerline (2 3)) (mode-icons (0 1 0))) "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 . [(20151231 2334) ((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 . [(20140217 1618) ((hide-lines (20130623))) "Major-mode for viewing log files" single ((:url . "https://github.com/vapniks/syslog-mode") (:keywords "unix"))]) (syntax-subword . [(20160205 1354) 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 . [(20151231 1608) 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"))]) (sync-recentf . [(20151005 326) 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 . [(20151118 100) 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 . [(20150114 215) nil "A *visual* way to choose a window to switch to" single ((:url . "http://tapoueh.org/emacs/switch-window.html") (: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 . [(20160215 140) ((emacs (24 1))) "Isearch with an overview. Oh, man!" tar ((: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-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 . [(20160217 1034) 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 . [(20160211 256) ((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 . [(20151013 614) ((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 . [(20130130 1351) nil "sudo support" single ((:url . "http://www.emacswiki.org/cgi-bin/wiki/download/sudo-ext.el") (:keywords "unix"))]) (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 . [(20151213 930) ((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]) (status . [(20151230 608) nil "This package adds support for status icons to Emacs." tar nil]) (state . [(20160108 536) ((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 . [(20160115 2139) ((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 . [(20141219 846) 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 . [(20151202 2004) ((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-indent . [(20150424 1716) nil "indentation of SQL statements" single ((:url . "https://github.com/bsvingen/sql-indent") (:keywords "languages"))]) (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 . [(20150505 1011) ((helm (1 6 9))) "Temporarily change default-directory for one command" single ((:url . "https://github.com/jwiegley/springboard") (:keywords "helm"))]) (spray . [(20150625 2345) 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 . [(20160103 1512) ((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 . [(20151104 914) ((cl-lib (0 5))) "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"))]) (spaces . [(20130610 49) nil "Create and switch between named window configurations." single ((:url . "https://github.com/chumpage/chumpy-windows") (:keywords "frames" "convenience"))]) (spacemacs-theme . [(20160121 1243) nil "Color theme with a dark and light versions" tar ((:keywords "color" "theme") (:url . "https://github.com/nashamri/spacemacs-theme"))]) (spaceline . [(20160120 359) ((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 . [(20150418 700) ((cl-lib (0 5)) (emacs (24))) "Sourcemap parser" single ((:url . "https://github.com/syohex/emacs-sourcemap"))]) (sourcekit . [(20151209 514) ((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"))]) (sourcegraph . [(20150403 1927) ((emacs (24 3))) "Minor mode for srclib" single ((:url . "https://github.com/sourcegraph/emacs-sourcegraph-mode") (:keywords "sourcegraph"))]) (soundklaus . [(20160210 1317) ((dash (2 12 1)) (emacs (24)) (emms (4 0)) (s (1 10 0)) (pkg-info (0 4)) (cl-lib (0 5))) "Play SoundCloud music in 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 . [(20151105 734) ((emacs (24 1))) "Write lisp at the speed of thought." single ((:url . "https://github.com/Malabarba/speed-of-thought-lisp") (:keywords "convenience" "lisp"))]) (sotclojure . [(20160121 1040) ((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 . [(20151124 911) nil "Major mode for ethereum's solidity language" single ((:keywords "languages"))]) (solarized-theme . [(20160106 15) ((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 . [(20150501 1100) ((emacs (24 4)) (cl-lib (0 5))) "Step through (Btrfs, ZFS, ...) snapshots of files" single ((:url . "https://github.com/mrBliss/snapshot-timemachine"))]) (snakemake-mode . [(20160209 1827) ((emacs (24))) "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 . [(20130921 2042) 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 . [(20131219 2039) 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"))]) (smarty-mode . [(20100703 458) nil "major mode for editing smarty templates" single ((:url . "none yet") (:keywords "smarty" "php" "languages" "templates"))]) (smartwin . [(20151230 111) ((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 . [(20160217 1102) ((cl-lib (0 3)) (dash (2 10 0))) "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 . [(20160111 932) ((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 . [(20160125 900) ((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"))]) (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-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 . [(20151126 22) ((sly (1 0 0 -3)) (company (0 7)) (emacs (24 3))) "sly completion backend for company mode" single ((:keywords "convenience" "lisp" "abbrev"))]) (sly . [(20160122 224) ((emacs (24 3))) "Sylvester the Cat's Common Lisp IDE" tar ((:url . "https://github.com/capitaomorte/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-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 . [(20160211 437) ((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 . [(20160201 1908) ((websocket (1 5)) (request (0 2 0)) (oauth2 (0 10)) (circe (2 2)) (alert (1 2)) (emojify (0 2))) "Slack client for Emacs" tar nil]) (skype . [(20131001 2118) nil "skype UI for emacs users.." tar ((:keywords "skype" "chat"))]) (skewer-reload-stylesheets . [(20150111 423) ((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]) (sisyphus . [(20160126 1419) ((emacs (24 4)) (m-buffer (0 14)) (dash (2 12 0))) "Test support functions" tar nil]) (simplezen . [(20130421 300) ((s (1 4 0)) (dash (1 1 0))) "A simple subset of zencoding-mode for Emacs." single nil]) (simplenote2 . [(20150630 716) ((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 . [(20160118 1011) ((rtm (0 1))) "Interactive Emacs mode for Remember The Milk" tar ((: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 . [(20151203 1425) nil "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 . [(20150427 932) nil "Simple project definition, chiefly for file finding, and grepping" tar ((:url . "https://github.com/re5et/simp") (:keywords "project" "grep" "find"))]) (signature . [(20140730 1249) nil "Signature Survey" tar nil]) (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"))]) (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 . [(20160208 148) ((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 . [(20160102 1501) ((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"))]) (semi . [(20160211 55) ((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"))]) (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-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 . [(20131117 1439) ((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 . [(20130220 403) 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-outline-popup . [(20150702 937) ((dash (2 9 0)) (popup (0 5 3)) (scala-mode2 (0 22)) (flx-ido (0 5))) "scala file summary popup" single ((:url . "https://github.com/ancane/scala-outline-popup.el") (:keywords "scala" "structure" "summary"))]) (scala-mode2 . [(20151226 1048) nil "Major mode for editing Scala >= 2.9" tar nil]) (scala-mode . [(20141205 1251) nil "Major mode for editing Scala code." tar ((:keywords "scala" "languages" "oop"))]) (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 . [(20160217 534) ((scala-mode2 (0 22))) "Major mode for sbt >= 0.12 with scala >= 2.9" tar nil]) (savekill . [(20140417 1934) 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 . [(20131228 1152) 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 . [(20160101 224) nil "Track (erc/org/dbus/...) events and react to them." tar nil]) (sass-mode . [(20150508 2012) ((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 . [(20151024 113) ((cl-lib (0 5)) (deferred (0 3 1))) "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 . [(20160115 58) 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 . [(20160216 1734) nil "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 . [(20151118 216) 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 . [(20151127 18) ((ruby-mode (1 0))) "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 . [(20160213 546) nil "A front-end for rtags" tar ((:url . "http://rtags.net"))]) (rspec-mode . [(20160124 1407) ((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 . [(20160208 1510) 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]) (robe . [(20160121 1551) ((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 . [(20151128 1512) 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 . [(20151126 2029) ((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 . [(20130526 1015) ((deferred (0 3 1)) (request (0 2 0))) "Wrap request.el by deferred" single nil]) (request . [(20160108 33) ((cl-lib (0 5))) "Compatible layer for URL request in Emacs" single nil]) (req-package . [(20151220 54) ((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 . [(20151030 1657) 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 1730) 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+ . [(20151231 1549) 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 . [(20150115 1101) ((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"))]) (redshank . [(20120510 1230) nil "No description available." tar nil]) (redpen-paragraph . [(20151206 741) ((emacs (24)) (cl-lib (0 5))) "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 . [(20150528 1228) ((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 . [(20160214 1626) ((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 . [(20151205 616) nil "Prefix lookup for RDF" single ((: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"))]) (rase . [(20120928 1345) nil "Run At Sun Event daemon" single ((:url . "https://github.com/m00natic/rase/") (:keywords "solar" "sunrise" "sunset" "midday" "midnight"))]) (ranger . [(20160203 501) ((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"))]) (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 . [(20150320 17) 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 . [(20160120 1229) ((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"))]) (quickrun . [(20160216 616) ((emacs (24)) (cl-lib (0 5))) "Run commands quickly" single ((:url . "https://github.com/syohex/emacs-quickrun"))]) (quickref . [(20130113 1500) ((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 . [(20160208 28) ((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 . [(20130126 1623) nil "No description available." 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 . [(20160108 28) nil "Python virtual environment interface" single ((:url . "http://github.com/jorgenschaefer/pyvenv") (:keywords "python" "virtualenv" "tools"))]) (pythonic . [(20160213 1326) ((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"))]) (python3-info . [(20151116 2231) nil "Python 3 info manual for Emacs" tar nil]) (python-x . [(20151229 948) ((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 . [(20160217 508) 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 . [(20160210 1559) 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 . [(20151104 2125) ((s (1 9 0))) "Easy Python test running in Emacs" single ((:url . "https://github.com/ionrock/pytest-el") (:keywords "pytest" "python" "testing"))]) (pylint . [(20160114 141) 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 . [(20151105 241) ((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 . [(20150525 1845) nil "functional, syntax highlighted pydoc navigation" single ((:url . "https://github.com/statmobile/pydoc") (:keywords "pydoc" "python"))]) (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 . [(20150730 1208) ((emacs (24 1)) (pkg-info (0 4))) "Major mode for Puppet manifests" single ((:url . "https://github.com/lunaryorn/puppet-mode") (:keywords "languages"))]) (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 . [(20151212 823) 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 . [(20160123 758) nil "PsySH, PHP interactive shell (REPL)" single ((:keywords "process" "php"))]) (psvn . [(20151103 1042) nil "Subversion interface for emacs" single nil]) (psession . [(20151114 1106) ((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 . [(20160203 1532) ((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 . [(20160211 1440) ((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-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 . [(20160210 905) ((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 . [(20141109 252) ((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 . [(20141207 1152) 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+ . [(20151231 1546) 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 . [(20151008 1449) ((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 . [(20160123 1400) ((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 . [(20160214 904) ((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 . [(20151222 1339) ((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 . [(20160123 1437) ((dash (2 10 0))) "Language mode for Pony" single ((:url . "https://github.com/seantallen/ponylang-mode") (:keywords "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 . [(20160217 1228) ((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 . [(20140102 1223) nil "A forward/back stack for point" single nil]) (pmdm . [(20151109 1036) nil "poor man's desktop-mode alternative." single ((:url . "https://bitbucket.com/inigoserna/pmdm.el"))]) (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"))]) (platformio-mode . [(20160109 2035) ((projectile (0 13 0))) "PlatformIO integration" single ((:url . "https://github.com/zachmassia/platformio-mode"))]) (plantuml-mode . [(20131031 1632) ((auto-complete (1 4))) "Major mode for plantuml" single ((:url . "https://github.com/wildsoul/plantuml-mode") (:keywords "uml" "ascii"))]) (planet-theme . [(20150627 751) ((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 . [(20150109 2254) 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]) (pinyin-search . [(20150719 1755) nil "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 . [(20151009 254) ((s (1 9 0)) (f (0 16 0)) (pkg-info (0 5))) "Launch PHP unit tests using phpunit" single ((: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 . [(20140920 1411) 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 . [(20151002 2030) nil "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 . [(20150217 2255) ((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 . [(20151115 107) ((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 . [(20151211 1454) ((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 . [(20160216 325) 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 . [(20160112 139) ((emacs (24))) "Preserve the scratch buffer across Emacs sessions" single ((:url . "https://github.com/Fanael/persistent-scratch"))]) (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 . [(20151013 1012) ((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 . [(20150518 700) 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 . [(20160203 1057) ((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"))]) (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 1155) 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 . [(20140203 116) 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 . [(20151105 1906) nil "a face for parentheses in lisp modes" single ((:url . "http://github.com/tarsius/paren-face"))]) (paren-completer . [(20150711 1523) ((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 . [(20150217 713) nil "minor mode for editing parentheses" single ((:keywords "lisp"))]) (paradox . [(20160119 1827) ((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 . [(20160210 400) ((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"))]) (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 . [(20160209 905) ((emacs (24 3)) (dash (2 10 0))) "package manager agnostic Emacs Lisp package utilities" single ((:url . "https://github.com/tarsius/packed") (:keywords "compile" "convenience" "lisp" "package" "library"))]) (package-utils . [(20150126 406) ((epl (0 7 -3))) "Extensions for package.el" single ((:url . "https://github.com/Silex/package-utils") (:keywords "package" "convenience"))]) (package-safe-delete . [(20150116 807) ((emacs (24)) (epl (0 7 -3))) "Safely delete package.el packages" single ((: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 . [(20160129 1332) ((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 . [(20150806 445) 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 . [(20151206 240) ((org (8)) (cl-lib (0 5))) "org Twiki and Foswiki export" single ((:url . "https://github.com/dfeich/org8-wikiexporters") (:keywords "org"))]) (ox-twbs . [(20151223 1120) 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 . [(20151022 2306) ((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-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 . [(20150604 26) nil "Github Flavored Markdown Back-End for Org Export Engine" single ((:keywords "org" "wp" "markdown" "github"))]) (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 . [(20150801 1002) ((emacs (24)) (dash (2 10 0)) (pkg-info (0 4))) "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 . [(20160204 1346) ((outorg (2 0)) (cl-lib (0 5))) "outline with outshine outshines outline" single ((:url . "https://github.com/tj64/outshine"))]) (outorg . [(20150910 1240) 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"))]) (osx-trash . [(20150723 735) ((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 . [(20160125 2128) ((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 . [(20150822 450) ((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 . [(20150104 818) 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 . [(20151106 1006) ((dash (1 3 2)) (org (8 0))) "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 . [(20160202 620) nil "Low-contrast green color theme." single nil]) (org2jekyll . [(20150906 647) ((dash-functional (2 11 0)) (s (1 9 0)) (deferred (0 3 1))) "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"))]) (org2blog . [(20151208 828) ((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 . [(20160108 126) ((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 . [(20160213 1107) ((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 . [(20151222 2347) 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 . [(20151129 1241) ((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 . [(20160131 1244) ((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 . [(20141204 1341) nil "Simple repository todo management with org-mode" single ((:url . "https://github.com/waymondo/org-repo-todo") (:keywords "convenience"))]) (org-ref . [(20160217 1826) ((dash (2 11 0)) (helm (1 5 5)) (helm-bibtex (1 0 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 . [(20160101 1550) ((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 . [(20150729 1515) ((org (8 2 10)) (s (1 9 0))) "Minimal password manager for Emacs Org Mode." single ((:url . "https://github.com/leafac/org-password-manager") (:keywords "password"))]) (org-pandoc . [(20130729 1850) nil "Export from Org using Pandoc" tar nil]) (org-page . [(20160216 447) ((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))) "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 . [(20151228 603) 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 . [(20151230 124) ((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 . [(20160104 636) ((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 . [(20160206 202) ((cl-lib (0 5))) "Declarative Local Programming with Org Elements" tar ((:url . "https://github.com/tj64/org-dp"))]) (org-download . [(20151030 716) ((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 . [(20151229 1100) nil "insert org-mode links from the clipboard" tar ((:url . "http://github.com/rexim/org-cliplink"))]) (org-caldav . [(20150131 152) ((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-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"))]) (open-junk-file . [(20130130 2320) 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"))]) (on-screen . [(20151108 2108) ((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 . [(20160212 347) ((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 . [(20151118 21) 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 . [(20160105 355) 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 . [(20150914 132) 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 . [(20130718 729) ((google-translate (0 4)) (org (8))) "Translation of text blocks in org-mode." single ((:url . "https://github.com/krisajenkins/ob-translate") (:keywords "org" "babel" "translate" "translation"))]) (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-scala . [(20160209 635) ((ensime (0 9 10))) "org-babel functions for scala evaluation" single ((:url . "github.com/reactormonk/ob-scala") (:keywords "scala"))]) (ob-restclient . [(20160201 456) ((restclient (0))) "org-babel functions for restclient-mode" single ((:url . "http://orgmode.org") (:keywords "literate programming" "reproducible research"))]) (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-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-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 . [(20151010 307) ((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 . [(20160210 258) ((s (1 9 0)) (cl-lib (0 5))) "http request in org-mode babel" tar ((:url . "http://github.com/zweifisch/ob-http"))]) (ob-go . [(20151211 1601) ((go-mode (1 0 0))) "org-babel functions for go evaluation" single ((: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-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-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 . [(20150804 1500) ((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 . [(20151017 2235) nil "Nyan Cat shows position in current buffer in mode-line." tar ((:url . "https://github.com/TeMPOraL/nyan-mode/") (:keywords "nyan" "cat" "lulz" "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 . [(20150413 1315) ((undo-tree (0 6 5)) (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 . [(20160213 840) nil "No description available." tar nil]) (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"))]) (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 . [(20160214 218) ((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 . [(20151026 315) 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 . [(20160216 108) ((emacs (24 4)) (epc (0 1 1)) (let-alist (1 0 1)) (commenter (0 5 1))) "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"))]) (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 . [(20150120 1040) 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 . [(20160214 532) 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 . [(20151203 757) ((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 . [(20151109 1658) ((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 . [(20151014 439) ((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 . [(20160213 817) nil "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 . [(20151206 1613) ((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 . [(20160215 1219) ((emacs (24))) "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-popup . [(20150223 1634) ((popup (0 5 2)) (mozc (0))) "Mozc with popup" single ((:keywords "i18n" "extentions"))]) (mozc-im . [(20150419 449) ((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 . [(20160211 1847) 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 . [(20150815 834) nil "more font-lock keywords for elisp" single ((:url . "http://github.com/tarsius/morlock") (:keywords "convenience"))]) (monroe . [(20141111 107) nil "Yet another client for nREPL" single ((:url . "http://www.github.com/sanel/monroe") (:keywords "languages" "clojure" "nrepl" "lisp"))]) (monokai-theme . [(20160104 1312) 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 . [(20150404 18) 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 . [(20160216 1821) 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"))]) (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 . [(20160212 748) ((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 . [(20160203 1608) ((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 . [(20160111 1149) ((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 . [(20160206 110) ((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]) (mic-paren . [(20140714 19) nil "advanced highlighting of matching parentheses" single ((:keywords "languages" "faces" "parenthesis" "matching"))]) (mhc . [(20160210 2037) ((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 . [(20160127 159) nil "Emacs interface for metafmt" 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 . [(20151228 734) nil "Mode for Merlin, an assistant for OCaml." tar ((:url . "http://github.com/the-lambda-church/merlin") (:keywords "ocaml" "languages"))]) (menu-bar+ . [(20151231 1422) 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 . [(20160123 1837) 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 . [(20151210 1016) ((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 . [(20140212 302) nil "Emacs mode for the programming language Maude" single ((:keywords "maude"))]) (matrix-client . [(20160205 1600) ((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 . [(20160210 227) nil "No description available." tar nil]) (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 . [(20151215 1043) nil "Lists of Unicode math symbols and latex commands" single ((:url . "https://github.com/vspinu/math-symbol-lists") (:keywords "unicode" "symbols" "mathematics"))]) (material-theme . [(20160211 2354) ((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 . [(20160207 858) ((s (1 9 0)) (dash (2 11 0)) (markdown-mode (2 0))) "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 . [(20160216 501) ((cl-lib (0 5))) "Emacs Major mode for Markdown-formatted text files" 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"))]) (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 . [(20150326 918) ((s (1 9 0)) (dash (2 9 0)) (pkg-info (0 5 0)) (request (0 1 0))) "Emacs client for Docker 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 . [(20160126 2026) ((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 . [(20151107 16) ((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 . [(20160203 629) 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 . [(20150923 140) ((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 . [(20160215 839) ((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 . [(20160217 747) ((emacs (24 4)) (magit (2 1 0))) "StGit extension for Magit" single ((:keywords "vc" "tools"))]) (magit-rockstar . [(20160117 1658) ((dash (2 12 1)) (magit (2 4 0))) "commit like a rockstar" single ((:url . "http://github.com/tarsius/magit-rockstar") (:keywords "convenience"))]) (magit-popup . [(20160130 649) ((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-gitflow . [(20160208 1304) ((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 . [(20160215 232) ((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 . [(20160128 1926) ((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 . [(20160204 1935) ((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 . [(20160214 1130) ((emacs (24 4)) (async (20150909 2257)) (dash (20151021 113)) (with-editor (20160128 1201)) (git-commit (20160119 1409)) (magit-popup (20160119 1409))) "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 . [(20160120 504) ((emacs (24)) (s (1 9 0))) "Enhance filetype major mode" single ((: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 . [(20151025 530) 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 . [(20151030 1449) ((emacs (24 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"))]) (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 . [(20120728 713) nil "Interactively updating text" single nil]) (live-py-mode . [(20160204 1714) ((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 . [(20160130 1907) 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 . [(20140508 1341) 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 . [(20130824 500) 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 . [(20160213 654) ((emacs (24 1)) (ace-window (0 9 0)) (iedit (0 97)) (swiper (0 4 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 . [(20150129 1316) nil "Highlight bound variables and quoted exprs." single ((:url . "https://github.com/Lindydancer/lisp-extra-font-lock") (:keywords "languages" "faces"))]) (linum-relative . [(20160117 2200) 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 . [(20160128 1254) ((avy (0 3 0)) (emacs (24 1))) "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 . [(20151227 1831) 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 . [(20160207 1043) 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 . [(20100119 1348) nil "Add legalese to your program files" single ((: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 . [(20160111 1834) 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 . [(20160209 917) 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 . [(20160104 1658) nil "preview LaTeX mathematical expressions." single ((:url . "https://gitlab.com/latex-math-preview/latex-math-preview") (:keywords "latex" "tex"))]) (latex-extra . [(20160209 745) ((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"))]) (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]) (kroman . [(20150827 1640) nil "Korean hangul romanization" single ((:keywords "korean" "roman"))]) (kpm-list . [(20130131 148) 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 . [(20150811 1129) ((dash (2 11 0)) (websocket (1 5))) "Remotely evaluate JavaScript in the WebKit debugger" single ((: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 . [(20150911 232) nil "browser keyword search from Emacs" single ((: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 . [(20151128 644) ((cl-lib (0 3))) "keymap utilities" single ((:url . "https://github.com/tarsius/keymap-utils") (:keywords "convenience" "extensions"))]) (keyfreq . [(20150924 2005) nil "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 . [(20150416 1258) 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 . [(20151209 104) 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 . [(20150120 2158) ((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 . [(20160119 743) ((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 . [(20150108 1235) 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 . [(20151104 1052) ((julia-mode (0 3))) "Major mode for an inferior Julia shell" tar nil]) (julia-mode . [(20150912 800) nil "Major mode for editing Julia source code" single ((:url . "https://github.com/JuliaLang/julia") (:keywords "languages"))]) (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 . [(20150830 1401) ((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 . [(20150902 949) nil "An improved JavaScript editing mode" tar ((:keywords "javascript" "languages"))]) (js2-refactor . [(20151029 507) ((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 . [(20160124 1132) ((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 . [(20151126 1838) ((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 . [(20160217 1631) ((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 . [(20151214 705) ((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 . [(20151214 705) ((emacs (24)) (jedi-core (0 2 2)) (auto-complete (1 4))) "a Python auto-completion for Emacs" single nil]) (jdee . [(20160207 28) ((emacs (24 3))) "Java Development Environment for Emacs" tar ((:url . "http://github.com/jdee-emacs/jdee") (:keywords "java" "tools"))]) (jbeans-theme . [(20151217 754) ((emacs (24))) "Jbeans theme for GNU Emacs 24 (deftheme)" single ((:url . "https://github.com/synic/jbeans-emacs"))]) (jazz-theme . [(20150910 844) 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 . [(20140727 2236) ((yasnippet (0 8 0))) "Yasnippets for Java" tar ((:url . "https://github.com/nekop/yasnippet-java-mode"))]) (java-imports . [(20160127 729) ((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 . [(20150329 1533) 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 . [(20151213 614) nil "Punish yourself for using Emacs inefficiently" single ((:url . "https://github.com/wasamasa/jammer") (:keywords "games"))]) (jade-mode . [(20150801 944) 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 849) 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"))]) (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 . [(20150321 2125) ((emacs (24)) (cl-lib (0 5))) "A library to create and use elisp iterators objects." single ((:url . "https://github.com/thierryvolpiatto/iterator"))]) (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+ . [(20160212 1323) 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 . [(20160203 1207) ((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 . [(20160208 237) nil "Interleaving text books since 2015" single ((:url . "https://github.com/rudolfochrist/interleave"))]) (interaction-log . [(20150603 1010) ((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 . [(20141119 427) 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 . [(20151104 1237) 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 . [(20160206 819) ((emacs (24 1)) (clojure-mode (5 1))) "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 . [(20160103 1431) ((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"))]) (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 . [(20150107 939) ((cl-lib (0 5))) "Imenu for multiple buffers" single ((:url . "https://gitorious.org/alezost-emacs/imenus") (: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 . [(20160213 532) ((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"))]) (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 . [(20150216 1342) 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 . [(20150915 2022) nil "Edit multiple regions in the same way simultaneously." tar ((:url . "http://www.emacswiki.org/emacs/Iedit") (:keywords "occurrence" "region" "simultaneous" "refactoring"))]) (ids-edit . [(20151128 435) ((emacs (24 3))) "IDS (Ideographic Description Sequence) editing tool" tar ((:url . "http://github.com/kawabata/ids-edit") (:keywords "text"))]) (idris-mode . [(20151030 407) ((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 . [(20151003 1833) nil "Makes ido-mode display vertically." single ((:url . "https://github.com/creichert/ido-vertical-mode.el") (:keywords "convenience"))]) (ido-ubiquitous . [(20160217 1053) ((emacs (24 1)) (ido-completing-read+ (3 11)) (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+ . [(20160217 1053) ((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 . [(20160208 2311) ((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 . [(20150605 2039) 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 . [(20160131 1003) 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 . [(20160126 57) ((cl-lib (0 5))) "Make bindings that stick around." tar ((:url . "https://github.com/abo-abo/hydra") (:keywords "bindings"))]) (hyde . [(20150615 1025) 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 . [(20160216 625) ((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 +# -- + \ No newline at end of file diff --git a/.emacs.d/elpa/yasnippet-20160131.948/snippets/html-mode/script.javascript-src b/.emacs.d/elpa/yasnippet-20160131.948/snippets/html-mode/script.javascript-src new file mode 100644 index 0000000..b64c4dc --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/html-mode/textarea b/.emacs.d/elpa/yasnippet-20160131.948/snippets/html-mode/textarea new file mode 100644 index 0000000..058498f --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/html-mode/th b/.emacs.d/elpa/yasnippet-20160131.948/snippets/html-mode/th new file mode 100644 index 0000000..3b5fab1 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/apr_assert b/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/apr_assert new file mode 100644 index 0000000..a3942be --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/assert b/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/assert new file mode 100644 index 0000000..686ffea --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/assertEquals b/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/assertEquals new file mode 100644 index 0000000..ce23dae --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/cls b/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/cls new file mode 100644 index 0000000..88f534f --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/constructor b/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/constructor new file mode 100644 index 0000000..602e496 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/define test method b/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/define test method new file mode 100644 index 0000000..fd9daf6 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/doc b/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/doc new file mode 100644 index 0000000..88f556e --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/equals b/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/equals new file mode 100644 index 0000000..e990966 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/file_class b/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/file_class new file mode 100644 index 0000000..e0a46f6 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/for b/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/for new file mode 100644 index 0000000..833827b --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/fori b/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/fori new file mode 100644 index 0000000..a417f2c --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/getter b/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/getter new file mode 100644 index 0000000..747f9f4 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/if b/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/if new file mode 100644 index 0000000..cae545f --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/ife b/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/ife new file mode 100644 index 0000000..975643f --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/import b/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/import new file mode 100644 index 0000000..56235a2 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/iterator b/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/iterator new file mode 100644 index 0000000..69fb2ac --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/javadoc b/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/javadoc new file mode 100644 index 0000000..5bc9051 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/lambda b/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/lambda new file mode 100644 index 0000000..a73a7a5 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/main b/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/main new file mode 100644 index 0000000..b24e49d --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/main_class b/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/main_class new file mode 100644 index 0000000..624b31c --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/method b/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/method new file mode 100644 index 0000000..7a6b9ed --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/new b/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/new new file mode 100644 index 0000000..f06091d --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/override b/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/override new file mode 100644 index 0000000..9878c85 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/param b/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/param new file mode 100644 index 0000000..4a1f44d --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/printf b/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/printf new file mode 100644 index 0000000..f93c965 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/println b/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/println new file mode 100644 index 0000000..7dd8f0d --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/return b/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/return new file mode 100644 index 0000000..5712e0c --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/test b/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/test new file mode 100644 index 0000000..a37d115 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/testClass b/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/testClass new file mode 100644 index 0000000..b01a68f --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/this b/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/this new file mode 100644 index 0000000..45201b4 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/toString b/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/toString new file mode 100644 index 0000000..0382a9e --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/try b/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/try new file mode 100644 index 0000000..1a17ba3 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/value b/.emacs.d/elpa/yasnippet-20160131.948/snippets/java-mode/value new file mode 100644 index 0000000..7ec38ef --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/al b/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/al new file mode 100644 index 0000000..04fbec4 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/class b/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/class new file mode 100644 index 0000000..84171bb --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/com b/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/com new file mode 100644 index 0000000..6179e18 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/debugger b/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/debugger new file mode 100644 index 0000000..09af6eb --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/each b/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/each new file mode 100644 index 0000000..74cbddd --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/el b/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/el new file mode 100644 index 0000000..ac13571 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/ev.add b/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/ev.add new file mode 100644 index 0000000..cf2a7e0 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/ev.fire b/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/ev.fire new file mode 100644 index 0000000..c90e9ed --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/for b/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/for new file mode 100644 index 0000000..d79ed03 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/function b/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/function new file mode 100644 index 0000000..8b36e86 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/if b/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/if new file mode 100644 index 0000000..7306759 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/init b/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/init new file mode 100644 index 0000000..feac58a --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/log b/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/log new file mode 100644 index 0000000..2f33f4d --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/multiline-comment b/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/multiline-comment new file mode 100644 index 0000000..1d34aed --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/param-comment b/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/param-comment new file mode 100644 index 0000000..e3c9d27 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/req.html b/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/req.html new file mode 100644 index 0000000..bc1491f --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/req.json b/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/req.json new file mode 100644 index 0000000..36fb03f --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/return-comment b/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/return-comment new file mode 100644 index 0000000..fc5dadf --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/type-inline-comment b/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/type-inline-comment new file mode 100644 index 0000000..ccc9430 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/type-multiline-comment b/.emacs.d/elpa/yasnippet-20160131.948/snippets/js-mode/type-multiline-comment new file mode 100644 index 0000000..92d7482 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/js2-mode b/.emacs.d/elpa/yasnippet-20160131.948/snippets/js2-mode new file mode 100755 index 0000000..e69de29 diff --git a/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/acronym b/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/acronym new file mode 100644 index 0000000..ea2314c --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/alertblock b/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/alertblock new file mode 100644 index 0000000..d259d2b --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/alg b/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/alg new file mode 100644 index 0000000..24a9c94 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/begin b/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/begin new file mode 100644 index 0000000..dabcbe8 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/block b/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/block new file mode 100644 index 0000000..6b16f4b --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/capgls b/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/capgls new file mode 100644 index 0000000..d469185 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/caption b/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/caption new file mode 100644 index 0000000..98e25fb --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/cite b/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/cite new file mode 100644 index 0000000..2e24838 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/code b/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/code new file mode 100644 index 0000000..cef9570 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/columns b/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/columns new file mode 100644 index 0000000..80388f1 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/emph b/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/emph new file mode 100644 index 0000000..36b19d7 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/enumerate b/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/enumerate new file mode 100644 index 0000000..d49ce37 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/figure b/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/figure new file mode 100644 index 0000000..a25d601 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/frac b/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/frac new file mode 100644 index 0000000..b35f8ef --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/frame b/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/frame new file mode 100644 index 0000000..f94357d --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/gls b/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/gls new file mode 100644 index 0000000..c6a7aac --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/glspl b/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/glspl new file mode 100644 index 0000000..699927b --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/if b/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/if new file mode 100644 index 0000000..2d80b81 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/includegraphics b/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/includegraphics new file mode 100644 index 0000000..d46c9a4 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/item b/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/item new file mode 100644 index 0000000..d4773f5 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/itemize b/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/itemize new file mode 100644 index 0000000..09a848f --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/label b/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/label new file mode 100644 index 0000000..96a72b4 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/listing b/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/listing new file mode 100644 index 0000000..3c95b17 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/movie b/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/movie new file mode 100644 index 0000000..a01d032 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/newcommand b/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/newcommand new file mode 100644 index 0000000..e9e03ca --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/newglossaryentry b/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/newglossaryentry new file mode 100644 index 0000000..66c964a --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/note b/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/note new file mode 100644 index 0000000..1122d7a --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/python b/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/python new file mode 100644 index 0000000..0ba0fc4 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/question b/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/question new file mode 100644 index 0000000..235eb59 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/section b/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/section new file mode 100644 index 0000000..88faeab --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/subf b/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/subf new file mode 100644 index 0000000..0497748 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/subfigure b/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/subfigure new file mode 100644 index 0000000..e93678b --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/subsec b/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/subsec new file mode 100644 index 0000000..5658494 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/textbf b/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/textbf new file mode 100644 index 0000000..84171d7 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/usepackage b/.emacs.d/elpa/yasnippet-20160131.948/snippets/latex-mode/usepackage new file mode 100644 index 0000000..2afd38b --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-interaction-mode/defun b/.emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-interaction-mode/defun new file mode 100644 index 0000000..5cf3d68 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/class b/.emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/class new file mode 100644 index 0000000..bc5eec9 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/comment b/.emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/comment new file mode 100644 index 0000000..107fad9 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/defpackage b/.emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/defpackage new file mode 100644 index 0000000..2e44ac2 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/do b/.emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/do new file mode 100644 index 0000000..6f90064 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/for b/.emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/for new file mode 100644 index 0000000..de8f644 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/foreach b/.emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/foreach new file mode 100644 index 0000000..a993bf1 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/format b/.emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/format new file mode 100644 index 0000000..d4f10ad --- /dev/null +++ b/.emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/format @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: format +# key: print +# -- +(format t "~& $0 ~%") diff --git a/.emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/if b/.emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/if new file mode 100644 index 0000000..cd57e3d --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/ifelse b/.emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/ifelse new file mode 100644 index 0000000..91854d8 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/ifnot b/.emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/ifnot new file mode 100644 index 0000000..467636e --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/slot b/.emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/slot new file mode 100644 index 0000000..2a51f64 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/switch b/.emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/switch new file mode 100644 index 0000000..6d002dd --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/typecast b/.emacs.d/elpa/yasnippet-20160131.948/snippets/lisp-mode/typecast new file mode 100644 index 0000000..4856e93 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/lua-mode/fun b/.emacs.d/elpa/yasnippet-20160131.948/snippets/lua-mode/fun new file mode 100644 index 0000000..f2cc839 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/m4-mode/def b/.emacs.d/elpa/yasnippet-20160131.948/snippets/m4-mode/def new file mode 100644 index 0000000..2cc90cb --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-automake-mode/noinst_HEADERS b/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-automake-mode/noinst_HEADERS new file mode 100644 index 0000000..ab0a30b --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-bsdmake-mode/PHONY b/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-bsdmake-mode/PHONY new file mode 100644 index 0000000..9652539 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-bsdmake-mode/echo b/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-bsdmake-mode/echo new file mode 100644 index 0000000..d772a6e --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-bsdmake-mode/gen b/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-bsdmake-mode/gen new file mode 100644 index 0000000..2b5e466 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-bsdmake-mode/if b/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-bsdmake-mode/if new file mode 100644 index 0000000..2e623f0 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-bsdmake-mode/var b/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-bsdmake-mode/var new file mode 100644 index 0000000..196f4d9 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/abspath b/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/abspath new file mode 100644 index 0000000..e02c55c --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/addprefix b/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/addprefix new file mode 100644 index 0000000..2edc1e3 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/addsuffix b/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/addsuffix new file mode 100644 index 0000000..6a3ebe4 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/dir b/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/dir new file mode 100644 index 0000000..bc3561b --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/make b/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/make new file mode 100644 index 0000000..16c49ce --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/notdir b/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/notdir new file mode 100644 index 0000000..d5e82d5 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/patsubst b/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/patsubst new file mode 100644 index 0000000..a966757 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/phony b/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/phony new file mode 100644 index 0000000..8da99d7 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/shell b/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/shell new file mode 100644 index 0000000..b550475 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/special b/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/special new file mode 100644 index 0000000..775021f --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/template b/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/template new file mode 100644 index 0000000..285624d --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/wildcard b/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-gmake-mode/wildcard new file mode 100644 index 0000000..c91dc9c --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-mode/all b/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-mode/all new file mode 100644 index 0000000..823886f --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-mode/clean b/.emacs.d/elpa/yasnippet-20160131.948/snippets/makefile-mode/clean new file mode 100644 index 0000000..7ade5eb --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/malabar-mode/variable b/.emacs.d/elpa/yasnippet-20160131.948/snippets/malabar-mode/variable new file mode 100644 index 0000000..16ec628 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/+ b/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/+ new file mode 100644 index 0000000..0407169 --- /dev/null +++ b/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/+ @@ -0,0 +1,5 @@ +#name : Unordered List +#contributor: Peng Deng +# -- ++ ${1:Text} ++$0 diff --git a/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/- b/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/- new file mode 100644 index 0000000..9d5c51d --- /dev/null +++ b/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/- @@ -0,0 +1,5 @@ +#name : Unordered List +#contributor: Peng Deng +# -- +- ${1:Text} +-$0 diff --git a/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/_ b/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/_ new file mode 100644 index 0000000..50ab476 --- /dev/null +++ b/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/_ @@ -0,0 +1,4 @@ +#name : Emphasis +#contributor: Peng Deng +# -- +_${1:Text}_ $0 diff --git a/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/__ b/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/__ new file mode 100644 index 0000000..b6304f3 --- /dev/null +++ b/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/__ @@ -0,0 +1,4 @@ +#name : Strong +#contributor: Peng Deng +# -- +**${1:Text}** $0 diff --git a/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/` b/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/` new file mode 100644 index 0000000..ae58211 --- /dev/null +++ b/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/` @@ -0,0 +1,4 @@ +#name : Inline Code +#contributor: Peng Deng +# -- +\`${1:Code}\` $0 diff --git a/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/h1.1 b/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/h1.1 new file mode 100644 index 0000000..8bb7ea2 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/h1.2 b/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/h1.2 new file mode 100644 index 0000000..57b178d --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/h2.1 b/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/h2.1 new file mode 100644 index 0000000..bfee3fc --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/h2.2 b/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/h2.2 new file mode 100644 index 0000000..8f94c73 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/h3 b/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/h3 new file mode 100644 index 0000000..44a6104 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/h4 b/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/h4 new file mode 100644 index 0000000..315140a --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/h5 b/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/h5 new file mode 100644 index 0000000..f50a785 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/h6 b/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/h6 new file mode 100644 index 0000000..1cdfebb --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/highlight b/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/highlight new file mode 100644 index 0000000..f1bce71 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/hr.1 b/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/hr.1 new file mode 100644 index 0000000..5fbe4f4 --- /dev/null +++ b/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/hr.1 @@ -0,0 +1,7 @@ +#name : Horizontal Rule (-) +#contributor: Peng Deng +# -- + +---------- + +$0 diff --git a/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/hr.2 b/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/hr.2 new file mode 100644 index 0000000..2d4de22 --- /dev/null +++ b/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/hr.2 @@ -0,0 +1,7 @@ +#name : Horizontal Rule (*) +#contributor: Peng Deng +# -- + +******* + +$0 diff --git a/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/img b/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/img new file mode 100644 index 0000000..69ee77d --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/link b/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/link new file mode 100644 index 0000000..dd7f99b --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/ol b/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/ol new file mode 100644 index 0000000..c8e3970 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/rimg b/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/rimg new file mode 100644 index 0000000..caafb60 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/rlb b/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/rlb new file mode 100644 index 0000000..681d9f0 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/rlink b/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/rlink new file mode 100644 index 0000000..e35a0c0 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/utf8 b/.emacs.d/elpa/yasnippet-20160131.948/snippets/markdown-mode/utf8 new file mode 100644 index 0000000..b21c56f --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/ned-mode/.yas-parents b/.emacs.d/elpa/yasnippet-20160131.948/snippets/ned-mode/.yas-parents new file mode 100644 index 0000000..0539988 --- /dev/null +++ b/.emacs.d/elpa/yasnippet-20160131.948/snippets/ned-mode/.yas-parents @@ -0,0 +1 @@ +prog-mode \ No newline at end of file diff --git a/.emacs.d/elpa/yasnippet-20160131.948/snippets/ned-mode/chan b/.emacs.d/elpa/yasnippet-20160131.948/snippets/ned-mode/chan new file mode 100644 index 0000000..b1dda9a --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/ned-mode/connections b/.emacs.d/elpa/yasnippet-20160131.948/snippets/ned-mode/connections new file mode 100644 index 0000000..a731e88 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/ned-mode/for b/.emacs.d/elpa/yasnippet-20160131.948/snippets/ned-mode/for new file mode 100644 index 0000000..62ed072 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/ned-mode/import b/.emacs.d/elpa/yasnippet-20160131.948/snippets/ned-mode/import new file mode 100644 index 0000000..47aa063 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/ned-mode/network b/.emacs.d/elpa/yasnippet-20160131.948/snippets/ned-mode/network new file mode 100644 index 0000000..a7691e3 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/ned-mode/simple b/.emacs.d/elpa/yasnippet-20160131.948/snippets/ned-mode/simple new file mode 100644 index 0000000..7db2698 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/ned-mode/submodules b/.emacs.d/elpa/yasnippet-20160131.948/snippets/ned-mode/submodules new file mode 100644 index 0000000..46c1612 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nesc-mode/.yas-parents b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nesc-mode/.yas-parents new file mode 100644 index 0000000..2fa94cd --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nesc-mode/TOSSIM b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nesc-mode/TOSSIM new file mode 100644 index 0000000..a7d6edb --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nesc-mode/command b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nesc-mode/command new file mode 100644 index 0000000..314e7a0 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nesc-mode/dbg b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nesc-mode/dbg new file mode 100644 index 0000000..ab9b580 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nesc-mode/event b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nesc-mode/event new file mode 100644 index 0000000..1cdc257 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nesc-mode/ifdef b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nesc-mode/ifdef new file mode 100644 index 0000000..dbe1a29 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nesc-mode/interface b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nesc-mode/interface new file mode 100644 index 0000000..495a6c4 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nesc-mode/module b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nesc-mode/module new file mode 100644 index 0000000..477f49e --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nesc-mode/nx b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nesc-mode/nx new file mode 100644 index 0000000..38da916 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nesc-mode/provides b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nesc-mode/provides new file mode 100644 index 0000000..175b621 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nesc-mode/sim b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nesc-mode/sim new file mode 100644 index 0000000..cd77218 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nesc-mode/uint8_t b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nesc-mode/uint8_t new file mode 100644 index 0000000..eb0144e --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nesc-mode/uses b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nesc-mode/uses new file mode 100644 index 0000000..cbb977d --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nsis-mode/.yas-parents b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nsis-mode/.yas-parents new file mode 100644 index 0000000..0539988 --- /dev/null +++ b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nsis-mode/.yas-parents @@ -0,0 +1 @@ +prog-mode \ No newline at end of file diff --git a/.emacs.d/elpa/yasnippet-20160131.948/snippets/nsis-mode/define b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nsis-mode/define new file mode 100644 index 0000000..223d364 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nsis-mode/function b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nsis-mode/function new file mode 100644 index 0000000..22926eb --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nsis-mode/if b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nsis-mode/if new file mode 100644 index 0000000..da3e92f --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nsis-mode/include b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nsis-mode/include new file mode 100644 index 0000000..a7e0f24 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nsis-mode/insert_macro b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nsis-mode/insert_macro new file mode 100644 index 0000000..451dbb6 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nsis-mode/instdir b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nsis-mode/instdir new file mode 100644 index 0000000..f5b14bc --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nsis-mode/macro b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nsis-mode/macro new file mode 100644 index 0000000..0316183 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nsis-mode/message b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nsis-mode/message new file mode 100644 index 0000000..37de365 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nsis-mode/outdir b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nsis-mode/outdir new file mode 100644 index 0000000..234b74d --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nsis-mode/outfile b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nsis-mode/outfile new file mode 100644 index 0000000..14abffc --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nsis-mode/section b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nsis-mode/section new file mode 100644 index 0000000..5f0556e --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/body b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/body new file mode 100644 index 0000000..ddcf0cf --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/br b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/br new file mode 100644 index 0000000..ba35773 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/doctype b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/doctype new file mode 100644 index 0000000..3fdcf17 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/doctype_xhtml1_strict b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/doctype_xhtml1_strict new file mode 100644 index 0000000..eca5860 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/doctype_xhtml1_transitional b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/doctype_xhtml1_transitional new file mode 100644 index 0000000..fba232a --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/form b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/form new file mode 100644 index 0000000..252253e --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/href b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/href new file mode 100644 index 0000000..47cb84a --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/html b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/html new file mode 100644 index 0000000..85e09f7 --- /dev/null +++ b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/html @@ -0,0 +1,6 @@ +#contributor : Anders Bach Nielsen +#name : ... +# -- + + $0 + diff --git a/.emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/img b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/img new file mode 100644 index 0000000..1f4382b --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/input b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/input new file mode 100644 index 0000000..80c3503 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/link b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/link new file mode 100644 index 0000000..d93b7a5 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/meta b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/meta new file mode 100644 index 0000000..dfee1f2 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/name b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/name new file mode 100644 index 0000000..592d0da --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/quote b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/quote new file mode 100644 index 0000000..20fed1e --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/style b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/style new file mode 100644 index 0000000..b80be1c --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/tag b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/tag new file mode 100644 index 0000000..7c6a766 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/tag_closing b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/tag_closing new file mode 100644 index 0000000..dcf5523 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/tag_newline b/.emacs.d/elpa/yasnippet-20160131.948/snippets/nxml-mode/tag_newline new file mode 100644 index 0000000..a1e1260 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/octave-mode/for b/.emacs.d/elpa/yasnippet-20160131.948/snippets/octave-mode/for new file mode 100644 index 0000000..c8e1dde --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/octave-mode/function b/.emacs.d/elpa/yasnippet-20160131.948/snippets/octave-mode/function new file mode 100644 index 0000000..ad2fe56 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/octave-mode/if b/.emacs.d/elpa/yasnippet-20160131.948/snippets/octave-mode/if new file mode 100644 index 0000000..c785a24 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/org-mode/code b/.emacs.d/elpa/yasnippet-20160131.948/snippets/org-mode/code new file mode 100644 index 0000000..89a94ff --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/org-mode/dot b/.emacs.d/elpa/yasnippet-20160131.948/snippets/org-mode/dot new file mode 100644 index 0000000..e9e76a1 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/org-mode/elisp b/.emacs.d/elpa/yasnippet-20160131.948/snippets/org-mode/elisp new file mode 100644 index 0000000..c96251e --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/org-mode/embedded b/.emacs.d/elpa/yasnippet-20160131.948/snippets/org-mode/embedded new file mode 100644 index 0000000..5e74820 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/org-mode/entry b/.emacs.d/elpa/yasnippet-20160131.948/snippets/org-mode/entry new file mode 100644 index 0000000..51d680a --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/org-mode/figure b/.emacs.d/elpa/yasnippet-20160131.948/snippets/org-mode/figure new file mode 100644 index 0000000..6c01df8 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/org-mode/img b/.emacs.d/elpa/yasnippet-20160131.948/snippets/org-mode/img new file mode 100644 index 0000000..9da54ba --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/org-mode/latex b/.emacs.d/elpa/yasnippet-20160131.948/snippets/org-mode/latex new file mode 100644 index 0000000..66541c2 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/org-mode/matrix b/.emacs.d/elpa/yasnippet-20160131.948/snippets/org-mode/matrix new file mode 100644 index 0000000..01f28c0 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/org-mode/verse b/.emacs.d/elpa/yasnippet-20160131.948/snippets/org-mode/verse new file mode 100644 index 0000000..02c691e --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/.yas-parents b/.emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/.yas-parents new file mode 100644 index 0000000..eed5b44 --- /dev/null +++ b/.emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/.yas-parents @@ -0,0 +1 @@ +text-mode diff --git a/.emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/eval b/.emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/eval new file mode 100644 index 0000000..a484014 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/for b/.emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/for new file mode 100644 index 0000000..1ba240f --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/fore b/.emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/fore new file mode 100644 index 0000000..c3b81d5 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/if b/.emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/if new file mode 100644 index 0000000..567db90 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/ife b/.emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/ife new file mode 100644 index 0000000..f278f21 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/ifee b/.emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/ifee new file mode 100644 index 0000000..d1bf237 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/sub b/.emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/sub new file mode 100644 index 0000000..05607d6 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/unless b/.emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/unless new file mode 100644 index 0000000..f91a652 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/while b/.emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/while new file mode 100644 index 0000000..2744530 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/xfore b/.emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/xfore new file mode 100644 index 0000000..018e140 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/xif b/.emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/xif new file mode 100644 index 0000000..ca8b563 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/xunless b/.emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/xunless new file mode 100644 index 0000000..dbb7d7d --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/xwhile b/.emacs.d/elpa/yasnippet-20160131.948/snippets/perl-mode/xwhile new file mode 100644 index 0000000..14c6308 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/prog-mode/.yas-setup.el b/.emacs.d/elpa/yasnippet-20160131.948/snippets/prog-mode/.yas-setup.el new file mode 100644 index 0000000..03d07cf --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/prog-mode/.yas-setup.elc b/.emacs.d/elpa/yasnippet-20160131.948/snippets/prog-mode/.yas-setup.elc new file mode 100644 index 0000000000000000000000000000000000000000..a0fc8049a1c75040f7793bad298be7bdc8a23ef8 GIT binary patch literal 513 zcmbtQu};G<5bX&00oGFh(MnBJl2%Y=&{S zC{G6PwY3C|=)i#tfj)Y4R)G$RI9mTsQ$Zs!pw>piuh0E5FP8r_bPx?67*z0#LOyVl zJ<7yqPcN&@22_g?70Z&-!5+N^3ZT%#n}IIiACuE(2n@!~nh4wqu_%9hC4{r8U*OzI zl4Pt+gPlc!yCYK8r=6+bobe3T+p)wrfwV4XrJVW2W$kb3V)l^2_C(5vF)|2GQX8IS UMp9`)bjXn2Qs3zg7Q0FE4X_24t^fc4 literal 0 HcmV?d00001 diff --git a/.emacs.d/elpa/yasnippet-20160131.948/snippets/prog-mode/fixme b/.emacs.d/elpa/yasnippet-20160131.948/snippets/prog-mode/fixme new file mode 100644 index 0000000..146db8b --- /dev/null +++ b/.emacs.d/elpa/yasnippet-20160131.948/snippets/prog-mode/fixme @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: fixme +# key: fi +# condition: (not (eq major-mode 'sh-mode)) +# -- +`(yas-with-comment "FIXME: ")` \ No newline at end of file diff --git a/.emacs.d/elpa/yasnippet-20160131.948/snippets/prog-mode/todo b/.emacs.d/elpa/yasnippet-20160131.948/snippets/prog-mode/todo new file mode 100644 index 0000000..973151f --- /dev/null +++ b/.emacs.d/elpa/yasnippet-20160131.948/snippets/prog-mode/todo @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: todo +# key: t +# -- +`(yas-with-comment "TODO: ")` \ No newline at end of file diff --git a/.emacs.d/elpa/yasnippet-20160131.948/snippets/prog-mode/xxx b/.emacs.d/elpa/yasnippet-20160131.948/snippets/prog-mode/xxx new file mode 100644 index 0000000..09df18b --- /dev/null +++ b/.emacs.d/elpa/yasnippet-20160131.948/snippets/prog-mode/xxx @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: xxx +# key: x +# -- +`(yas-with-comment "XXX: ")` \ No newline at end of file diff --git a/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/.yas-parents b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/.yas-parents new file mode 100644 index 0000000..75d003f --- /dev/null +++ b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/.yas-parents @@ -0,0 +1 @@ +prog-mode diff --git a/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/.yas-setup.el b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/.yas-setup.el new file mode 100644 index 0000000..6635232 --- /dev/null +++ b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/.yas-setup.el @@ -0,0 +1,22 @@ +(defun python-split-args (arg-string) + "Split a python argument string into ((name, default)..) tuples" + (mapcar (lambda (x) + (split-string x "[[:blank:]]*=[[:blank:]]*" t)) + (split-string arg-string "[[:blank:]]*,[[:blank:]]*" t))) + +(defun python-args-to-docstring () + "return docstring format for the python arguments in yas-text" + (let* ((indent (concat "\n" (make-string (current-column) 32))) + (args (python-split-args yas-text)) + (max-len (if args (apply 'max (mapcar (lambda (x) (length (nth 0 x))) args)) 0)) + (formatted-args (mapconcat + (lambda (x) + (concat (nth 0 x) (make-string (- max-len (length (nth 0 x))) ? ) " -- " + (if (nth 1 x) (concat "\(default " (nth 1 x) "\)")))) + args + indent))) + (unless (string= formatted-args "") + (mapconcat 'identity (list "Keyword Arguments:" formatted-args) indent)))) + +(add-hook 'python-mode-hook + '(lambda () (set (make-local-variable 'yas-indent-line) 'fixed))) diff --git a/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/.yas-setup.elc b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/.yas-setup.elc new file mode 100644 index 0000000000000000000000000000000000000000..bd780439820c73d53950dcaa7f2969559c0c4532 GIT binary patch literal 1325 zcmbtUTW`}a6z*f!KQI_b99*O&s42Ph!d4+VjR{Tg0E{P^Jh-vDT6OFwcDI&a&vBYv z*bpy^be!1d%ej2#OD1PuPxo7`R%bGqz^N`uAvvozLcv)33@9&!sT1z&Nlr+yL7uT8JE&&W){vx->oXR>lHlj5D~+6CL&A zqen5A#u!Rl$hEQ*!E3t+-s6c1PA*Q*&mmvZislxJ?A7V1Vqi4nRKc8s)by_;O)~~K zt)$=;*d+qvWS197c+%wxcT+FhWno7m(q=Vy9&*cj z!1#i$rS z1YY+I^kEQ%e&#!>VyL)XSL#k-u+UXOt-IlT`9lhg)7+Mt!19g#7g3I)!0O;uve>Q? zvZiT>-Hrq<7&>v%vI8GOz+TC8ms!+_0|E6vy2!qqu1d^+!VawTWyd+fw zeJkEf7?QXl;l2oHS<0;o@nER!>E|ZrCW9!0u=Z<}Bc;vU+fz66Jw*P(hXgxB&9qOZ zu7`c>Aso65GWGq(O(>VBuJu7(1cCqvkXo-OV)yKm3`Q9c0>U*d>=wuuzP;8JgOlb% zFvkwms9_u)IW>6rO9_@*uWmJ8XvUipPtsz}D7Z;_hFkFJN~F%I46bM;=p6r9hmPPK S*MSs@`*64r8_s;+@B9I@CyHAD literal 0 HcmV?d00001 diff --git a/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/__contains__ b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/__contains__ new file mode 100644 index 0000000..4d4ad50 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/__enter__ b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/__enter__ new file mode 100644 index 0000000..3dcc3ba --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/__exit__ b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/__exit__ new file mode 100644 index 0000000..cd9de7d --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/__getitem__ b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/__getitem__ new file mode 100644 index 0000000..939bd1a --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/__len__ b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/__len__ new file mode 100644 index 0000000..9e6c164 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/__new__ b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/__new__ new file mode 100644 index 0000000..0256580 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/__setitem__ b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/__setitem__ new file mode 100644 index 0000000..c7db5b1 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/all b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/all new file mode 100644 index 0000000..062e31a --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/arg b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/arg new file mode 100644 index 0000000..f5145ec --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/arg_positional b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/arg_positional new file mode 100644 index 0000000..b54fc46 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/ass b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/ass new file mode 100644 index 0000000..ec82efe --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/assertEqual b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/assertEqual new file mode 100644 index 0000000..29282b9 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/assertFalse b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/assertFalse new file mode 100644 index 0000000..41a9dcf --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/assertIn b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/assertIn new file mode 100644 index 0000000..74e1ee7 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/assertNotEqual b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/assertNotEqual new file mode 100644 index 0000000..6837407 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/assertNotIn b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/assertNotIn new file mode 100644 index 0000000..4780a7e --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/assertRaises b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/assertRaises new file mode 100644 index 0000000..db125da --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/assertRaises.with b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/assertRaises.with new file mode 100644 index 0000000..c97807e --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/assertTrue b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/assertTrue new file mode 100644 index 0000000..1cc59ac --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/celery_pdb b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/celery_pdb new file mode 100644 index 0000000..6095b2d --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/classmethod b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/classmethod new file mode 100644 index 0000000..3bffaac --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/cls b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/cls new file mode 100644 index 0000000..f857cdb --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/dec b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/dec new file mode 100644 index 0000000..b22c9e9 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/deftest b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/deftest new file mode 100644 index 0000000..394553a --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/django_test_class b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/django_test_class new file mode 100644 index 0000000..386e305 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/doc b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/doc new file mode 100644 index 0000000..2929e78 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/doctest b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/doctest new file mode 100644 index 0000000..a5e4bb5 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/eq b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/eq new file mode 100644 index 0000000..e19c328 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/for b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/for new file mode 100644 index 0000000..0033c87 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/from b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/from new file mode 100644 index 0000000..3a4acfc --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/function b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/function new file mode 100644 index 0000000..d7e8f12 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/function_docstring b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/function_docstring new file mode 100644 index 0000000..1f7f35b --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/if b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/if new file mode 100644 index 0000000..d1538a9 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/ife b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/ife new file mode 100644 index 0000000..4b8f613 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/ifmain b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/ifmain new file mode 100644 index 0000000..9575798 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/import b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/import new file mode 100644 index 0000000..f34bc39 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/init b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/init new file mode 100644 index 0000000..aece55c --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/init_docstring b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/init_docstring new file mode 100644 index 0000000..51af8db --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/interact b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/interact new file mode 100644 index 0000000..4b412c8 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/ipdbdebug b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/ipdbdebug new file mode 100644 index 0000000..f45ad75 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/iter b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/iter new file mode 100644 index 0000000..a4fed13 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/lambda b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/lambda new file mode 100644 index 0000000..08b268b --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/list b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/list new file mode 100644 index 0000000..63cef24 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/logger_name b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/logger_name new file mode 100644 index 0000000..9759dd9 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/logging b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/logging new file mode 100644 index 0000000..568eeea --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/main b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/main new file mode 100644 index 0000000..9f3c721 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/metaclass b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/metaclass new file mode 100644 index 0000000..1e688e4 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/method b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/method new file mode 100644 index 0000000..985ef0c --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/method_docstring b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/method_docstring new file mode 100644 index 0000000..8f5e78d --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/not_impl b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/not_impl new file mode 100644 index 0000000..515e353 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/np b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/np new file mode 100644 index 0000000..9f6327c --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/parse_args b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/parse_args new file mode 100644 index 0000000..aa61070 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/parser b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/parser new file mode 100644 index 0000000..29a04ea --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/pass b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/pass new file mode 100644 index 0000000..4734f7f --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/pl b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/pl new file mode 100644 index 0000000..29d905c --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/print b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/print new file mode 100644 index 0000000..cc1c797 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/prop b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/prop new file mode 100644 index 0000000..34e4fa1 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/reg b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/reg new file mode 100644 index 0000000..c4ebeac --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/repr b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/repr new file mode 100644 index 0000000..a1f6783 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/return b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/return new file mode 100644 index 0000000..641a308 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/script b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/script new file mode 100644 index 0000000..55e42e9 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/self b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/self new file mode 100644 index 0000000..4461022 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/self_without_dot b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/self_without_dot new file mode 100644 index 0000000..a1a0526 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/selfassign b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/selfassign new file mode 100644 index 0000000..95d7b2b --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/setdef b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/setdef new file mode 100644 index 0000000..2398eb1 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/setup b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/setup new file mode 100644 index 0000000..107abc1 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/size b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/size new file mode 100644 index 0000000..47a0f38 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/static b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/static new file mode 100644 index 0000000..19c3df9 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/str b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/str new file mode 100644 index 0000000..b0572e3 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/super b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/super new file mode 100644 index 0000000..23fba5d --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/test_class b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/test_class new file mode 100644 index 0000000..7342c5f --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/test_file b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/test_file new file mode 100644 index 0000000..e4b5315 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/trace b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/trace new file mode 100644 index 0000000..e475d62 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/try b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/try new file mode 100644 index 0000000..8836de6 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/tryelse b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/tryelse new file mode 100644 index 0000000..f2e44e4 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/unicode b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/unicode new file mode 100644 index 0000000..52d6b8d --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/utf8 b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/utf8 new file mode 100644 index 0000000..2ebd82e --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/while b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/while new file mode 100644 index 0000000..7b3539c --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/with b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/with new file mode 100644 index 0000000..7fcbd38 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/with_statement b/.emacs.d/elpa/yasnippet-20160131.948/snippets/python-mode/with_statement new file mode 100644 index 0000000..1be3692 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/rename_add_contr.py b/.emacs.d/elpa/yasnippet-20160131.948/snippets/rename_add_contr.py new file mode 100755 index 0000000..3ed7847 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/autoclass b/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/autoclass new file mode 100644 index 0000000..b207dd3 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/autofunction b/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/autofunction new file mode 100644 index 0000000..7ed5c5e --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/automodule b/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/automodule new file mode 100644 index 0000000..2929f77 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/class b/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/class new file mode 100644 index 0000000..66ad562 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/code b/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/code new file mode 100644 index 0000000..49ff111 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/digraph b/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/digraph new file mode 100644 index 0000000..448de13 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/function b/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/function new file mode 100644 index 0000000..8677632 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/graph b/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/graph new file mode 100644 index 0000000..f7d7b69 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/graphviz b/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/graphviz new file mode 100644 index 0000000..53ca449 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/image b/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/image new file mode 100644 index 0000000..402c9a5 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/inheritance b/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/inheritance new file mode 100644 index 0000000..e646c9a --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/literal_include b/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/literal_include new file mode 100644 index 0000000..9e2a7de --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/meta b/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/meta new file mode 100644 index 0000000..6aaae41 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/module b/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/module new file mode 100644 index 0000000..e60e18e --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/parsed_literal b/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/parsed_literal new file mode 100644 index 0000000..ee8c07c --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/pause b/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/pause new file mode 100644 index 0000000..0833e87 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/term b/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/term new file mode 100644 index 0000000..86624e2 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/url b/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/url new file mode 100644 index 0000000..ead9d35 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/verbatim b/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/verbatim new file mode 100644 index 0000000..1d0362c --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/warning b/.emacs.d/elpa/yasnippet-20160131.948/snippets/rst-mode/warning new file mode 100644 index 0000000..8f74b36 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/# b/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/# new file mode 100644 index 0000000..33581c8 --- /dev/null +++ b/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/# @@ -0,0 +1,4 @@ +#name : # => +#group : general +# -- +# => \ No newline at end of file diff --git a/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/=b b/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/=b new file mode 100644 index 0000000..22a013f --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/Comp b/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/Comp new file mode 100644 index 0000000..03f2b35 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/GLOB b/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/GLOB new file mode 100644 index 0000000..6667254 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/all b/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/all new file mode 100644 index 0000000..a98a9f4 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/am b/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/am new file mode 100644 index 0000000..7675a97 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/any b/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/any new file mode 100644 index 0000000..d0b6dd2 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/app b/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/app new file mode 100644 index 0000000..19bf60a --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/attribute b/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/attribute new file mode 100644 index 0000000..4e8e37a --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/bench b/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/bench new file mode 100644 index 0000000..e440919 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/bm b/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/bm new file mode 100644 index 0000000..4789f64 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/case b/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/case new file mode 100644 index 0000000..40c3529 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/cla b/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/cla new file mode 100644 index 0000000..81ccf45 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/cls b/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/cls new file mode 100644 index 0000000..ab81ca8 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/collect b/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/collect new file mode 100644 index 0000000..934014a --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/dee b/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/dee new file mode 100644 index 0000000..56d0a18 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/def b/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/def new file mode 100644 index 0000000..875f0ff --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/deli b/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/deli new file mode 100644 index 0000000..8476ef9 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/det b/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/det new file mode 100644 index 0000000..6a17da9 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/dow b/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/dow new file mode 100644 index 0000000..3b65271 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/ea b/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/ea new file mode 100644 index 0000000..9cdf8dc --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/eac b/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/eac new file mode 100644 index 0000000..f0d9cb1 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/eai b/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/eai new file mode 100644 index 0000000..5b0ed67 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/eav b/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/eav new file mode 100644 index 0000000..558e5b4 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/eawi b/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/eawi new file mode 100644 index 0000000..edf8418 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/for b/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/for new file mode 100644 index 0000000..03dd82c --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/forin b/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/forin new file mode 100644 index 0000000..36b4387 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/formula b/.emacs.d/elpa/yasnippet-20160131.948/snippets/ruby-mode/formula new file mode 100644 index 0000000..735b0d1 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/case b/.emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/case new file mode 100644 index 0000000..b16dcae --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/cc b/.emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/cc new file mode 100644 index 0000000..3eedbc7 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/co b/.emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/co new file mode 100644 index 0000000..7c3d371 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/cons b/.emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/cons new file mode 100644 index 0000000..bb2b26c --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/def b/.emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/def new file mode 100644 index 0000000..22a8ee9 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/doc b/.emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/doc new file mode 100644 index 0000000..60b5007 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/for b/.emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/for new file mode 100644 index 0000000..44a4253 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/if b/.emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/if new file mode 100644 index 0000000..28ff792 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/ls b/.emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/ls new file mode 100644 index 0000000..3e1fb51 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/main b/.emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/main new file mode 100644 index 0000000..4befc32 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/match b/.emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/match new file mode 100644 index 0000000..8aadeea --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/ob b/.emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/ob new file mode 100644 index 0000000..1890550 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/throw b/.emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/throw new file mode 100644 index 0000000..02ad549 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/try b/.emacs.d/elpa/yasnippet-20160131.948/snippets/scala-mode/try new file mode 100644 index 0000000..d0c8d04 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/sh-mode/args b/.emacs.d/elpa/yasnippet-20160131.948/snippets/sh-mode/args new file mode 100644 index 0000000..09fe3a0 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/sh-mode/bang b/.emacs.d/elpa/yasnippet-20160131.948/snippets/sh-mode/bang new file mode 100644 index 0000000..5e11f0e --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/sh-mode/for loop b/.emacs.d/elpa/yasnippet-20160131.948/snippets/sh-mode/for loop new file mode 100644 index 0000000..438706b --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/sh-mode/function b/.emacs.d/elpa/yasnippet-20160131.948/snippets/sh-mode/function new file mode 100644 index 0000000..c0f670a --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/sh-mode/if b/.emacs.d/elpa/yasnippet-20160131.948/snippets/sh-mode/if new file mode 100644 index 0000000..2dc537d --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/sh-mode/ife b/.emacs.d/elpa/yasnippet-20160131.948/snippets/sh-mode/ife new file mode 100644 index 0000000..f046a3e --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/snippet-mode/cont b/.emacs.d/elpa/yasnippet-20160131.948/snippets/snippet-mode/cont new file mode 100644 index 0000000..3783d54 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/snippet-mode/elisp b/.emacs.d/elpa/yasnippet-20160131.948/snippets/snippet-mode/elisp new file mode 100644 index 0000000..768e94d --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/snippet-mode/field b/.emacs.d/elpa/yasnippet-20160131.948/snippets/snippet-mode/field new file mode 100644 index 0000000..12ff0e0 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/snippet-mode/group b/.emacs.d/elpa/yasnippet-20160131.948/snippets/snippet-mode/group new file mode 100644 index 0000000..3ae8fd2 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/snippet-mode/mirror b/.emacs.d/elpa/yasnippet-20160131.948/snippets/snippet-mode/mirror new file mode 100644 index 0000000..2a45042 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/snippet-mode/vars b/.emacs.d/elpa/yasnippet-20160131.948/snippets/snippet-mode/vars new file mode 100644 index 0000000..ec4e4b6 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/snippets/ruby-mode/definitions/mod b/.emacs.d/elpa/yasnippet-20160131.948/snippets/snippets/ruby-mode/definitions/mod new file mode 100644 index 0000000..118400c --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/sql-mode/column b/.emacs.d/elpa/yasnippet-20160131.948/snippets/sql-mode/column new file mode 100644 index 0000000..90e4963 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/sql-mode/constraint b/.emacs.d/elpa/yasnippet-20160131.948/snippets/sql-mode/constraint new file mode 100644 index 0000000..989e508 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/sql-mode/constraint.1 b/.emacs.d/elpa/yasnippet-20160131.948/snippets/sql-mode/constraint.1 new file mode 100644 index 0000000..98d89f0 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/sql-mode/create b/.emacs.d/elpa/yasnippet-20160131.948/snippets/sql-mode/create new file mode 100644 index 0000000..a34624d --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/sql-mode/create.1 b/.emacs.d/elpa/yasnippet-20160131.948/snippets/sql-mode/create.1 new file mode 100644 index 0000000..1323daf --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/sql-mode/references b/.emacs.d/elpa/yasnippet-20160131.948/snippets/sql-mode/references new file mode 100644 index 0000000..f2e4eab --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/text-mode/.yas-parents b/.emacs.d/elpa/yasnippet-20160131.948/snippets/text-mode/.yas-parents new file mode 100644 index 0000000..c3ca481 --- /dev/null +++ b/.emacs.d/elpa/yasnippet-20160131.948/snippets/text-mode/.yas-parents @@ -0,0 +1 @@ +fundamental-mode diff --git a/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/assert b/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/assert new file mode 100644 index 0000000..574f865 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/docstring b/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/docstring new file mode 100644 index 0000000..6738353 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/for b/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/for new file mode 100644 index 0000000..f21b345 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/fun b/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/fun new file mode 100644 index 0000000..7579a3c --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/guard b/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/guard new file mode 100644 index 0000000..13d43fc --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/ifthen b/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/ifthen new file mode 100644 index 0000000..dfb1907 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/ifthenelse b/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/ifthenelse new file mode 100644 index 0000000..86d409f --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/let b/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/let new file mode 100644 index 0000000..1a0162e --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/list_comprehension b/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/list_comprehension new file mode 100644 index 0000000..86d4a53 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/main b/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/main new file mode 100644 index 0000000..3351548 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/match b/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/match new file mode 100644 index 0000000..18d4caa --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/module b/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/module new file mode 100644 index 0000000..7e14d14 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/open b/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/open new file mode 100644 index 0000000..cfc71f4 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/printf b/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/printf new file mode 100644 index 0000000..71a9a59 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/rec b/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/rec new file mode 100644 index 0000000..e901eb4 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/try b/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/try new file mode 100644 index 0000000..9c7faed --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/type b/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/type new file mode 100644 index 0000000..a81b0e1 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/type_type b/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/type_type new file mode 100644 index 0000000..c5b4ac9 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/val b/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/val new file mode 100644 index 0000000..6a565ac --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/while b/.emacs.d/elpa/yasnippet-20160131.948/snippets/tuareg-mode/while new file mode 100644 index 0000000..e4b1f07 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/typerex-mode b/.emacs.d/elpa/yasnippet-20160131.948/snippets/typerex-mode new file mode 100755 index 0000000..e69de29 diff --git a/.emacs.d/elpa/yasnippet-20160131.948/snippets/udev-mode/ENV b/.emacs.d/elpa/yasnippet-20160131.948/snippets/udev-mode/ENV new file mode 100644 index 0000000..e25b271 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/udev-mode/GOTO b/.emacs.d/elpa/yasnippet-20160131.948/snippets/udev-mode/GOTO new file mode 100644 index 0000000..2200b5d --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/udev-mode/KERNEL b/.emacs.d/elpa/yasnippet-20160131.948/snippets/udev-mode/KERNEL new file mode 100644 index 0000000..c27d937 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/udev-mode/add b/.emacs.d/elpa/yasnippet-20160131.948/snippets/udev-mode/add new file mode 100644 index 0000000..8cbd63b --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/udev-mode/env$ b/.emacs.d/elpa/yasnippet-20160131.948/snippets/udev-mode/env$ new file mode 100644 index 0000000..7c743b1 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/udev-mode/run b/.emacs.d/elpa/yasnippet-20160131.948/snippets/udev-mode/run new file mode 100644 index 0000000..cc0bb7b --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/web-mode b/.emacs.d/elpa/yasnippet-20160131.948/snippets/web-mode new file mode 100755 index 0000000..e69de29 diff --git a/.emacs.d/elpa/yasnippet-20160131.948/snippets/yaml-mode/entry b/.emacs.d/elpa/yasnippet-20160131.948/snippets/yaml-mode/entry new file mode 100644 index 0000000..f9cfbe7 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/yaml-mode/list b/.emacs.d/elpa/yasnippet-20160131.948/snippets/yaml-mode/list new file mode 100644 index 0000000..89d97eb --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/snippets/yaml-mode/section b/.emacs.d/elpa/yasnippet-20160131.948/snippets/yaml-mode/section new file mode 100644 index 0000000..5e8782d --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/yasnippet-autoloads.el b/.emacs.d/elpa/yasnippet-20160131.948/yasnippet-autoloads.el new file mode 100644 index 0000000..64619cd --- /dev/null +++ b/.emacs.d/elpa/yasnippet-20160131.948/yasnippet-autoloads.el @@ -0,0 +1,59 @@ +;;; yasnippet-autoloads.el --- automatically extracted autoloads +;; +;;; Code: +(add-to-list 'load-path (or (file-name-directory #$) (car load-path))) + +;;;### (autoloads nil "yasnippet" "yasnippet.el" (22209 51590 580162 +;;;;;; 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") (22209 51590 667587 +;;;;;; 128000)) + +;;;*** + +;; Local Variables: +;; version-control: never +;; no-byte-compile: t +;; no-update-autoloads: t +;; End: +;;; yasnippet-autoloads.el ends here diff --git a/.emacs.d/elpa/yasnippet-20160131.948/yasnippet-autoloads.el~ b/.emacs.d/elpa/yasnippet-20160131.948/yasnippet-autoloads.el~ new file mode 100644 index 0000000..a8667f9 --- /dev/null +++ b/.emacs.d/elpa/yasnippet-20160131.948/yasnippet-autoloads.el~ @@ -0,0 +1,11 @@ +;;; yasnippet-autoloads.el --- automatically extracted autoloads +;; +;;; Code: +(add-to-list 'load-path (or (file-name-directory #$) (car load-path))) + +;; Local Variables: +;; version-control: never +;; no-byte-compile: t +;; no-update-autoloads: t +;; End: +;;; yasnippet-autoloads.el ends here diff --git a/.emacs.d/elpa/yasnippet-20160131.948/yasnippet-pkg.el b/.emacs.d/elpa/yasnippet-20160131.948/yasnippet-pkg.el new file mode 100644 index 0000000..732b775 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/yasnippet.el b/.emacs.d/elpa/yasnippet-20160131.948/yasnippet.el new file mode 100644 index 0000000..69d6b26 --- /dev/null +++ b/.emacs.d/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/.emacs.d/elpa/yasnippet-20160131.948/yasnippet.elc b/.emacs.d/elpa/yasnippet-20160131.948/yasnippet.elc new file mode 100644 index 0000000000000000000000000000000000000000..1c534f73b915cdd355bf309159cc9b0692c2aba4 GIT binary patch literal 201294 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 L)&}E~K6>xJ^oRtu literal 0 HcmV?d00001 diff --git a/.emacs.d/irony/bin/irony-server b/.emacs.d/irony/bin/irony-server new file mode 100755 index 0000000000000000000000000000000000000000..937f6fca4b417c851668061581ec597a608179bf GIT binary patch literal 90361 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 gZoU~(${2:v}) diff --git a/.emacs.d/snippets/c++-mode/dpcast b/.emacs.d/snippets/c++-mode/dpcast new file mode 100644 index 0000000..384f202 --- /dev/null +++ b/.emacs.d/snippets/c++-mode/dpcast @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: dynamic pointer cast +# key: dpcast +# -- +std::dynamic_pointer_cast<${1:type}>(${2:v}) diff --git a/.emacs.d/snippets/c++-mode/forc b/.emacs.d/snippets/c++-mode/forc new file mode 100644 index 0000000..f598b12 --- /dev/null +++ b/.emacs.d/snippets/c++-mode/forc @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: for_c +# key: forc +# -- +for (${1:auto} ${2:i}: ${3:v}) { + $0 +} \ No newline at end of file diff --git a/.emacs.d/snippets/c++-mode/scast b/.emacs.d/snippets/c++-mode/scast new file mode 100644 index 0000000..2b042b3 --- /dev/null +++ b/.emacs.d/snippets/c++-mode/scast @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: static cast +# key: scast +# -- +static_cast<${1:type}>(${2:v}) diff --git a/.emacs.d/snippets/c++-mode/sct b/.emacs.d/snippets/c++-mode/sct new file mode 100644 index 0000000..648db90 --- /dev/null +++ b/.emacs.d/snippets/c++-mode/sct @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: struct +# key: sct +# -- +struct ${1:Name} { + ${1:$(yas/substr yas-text "[^: ]*")}(); + ${2:virtual ~${1:$(yas/substr yas-text "[^: ]*")}();} +}; +$0 \ No newline at end of file diff --git a/.emacs.d/snippets/c++-mode/spcast b/.emacs.d/snippets/c++-mode/spcast new file mode 100644 index 0000000..0f9f38d --- /dev/null +++ b/.emacs.d/snippets/c++-mode/spcast @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: static pointer cast +# key: spcast +# -- +std::static_pointer_cast<${1:type}>(${2:v}) diff --git a/.emacs.el b/.emacs.el new file mode 100755 index 0000000..daa782e --- /dev/null +++ b/.emacs.el @@ -0,0 +1,188 @@ +(require 'iso-transl) + +;; Packages +(require 'package) ;; You might already have this line +(add-to-list 'package-archives + '("melpa" . "http://melpa.org/packages/")) +(add-to-list 'package-archives + '("melpa" . "http://melpa.milkbox.net/packages/")) +(when (< emacs-major-version 24) + ;; For important compatibility libraries like cl-lib + (add-to-list 'package-archives '("gnu" . "http://elpa.gnu.org/packages/"))) +(package-initialize) ;; You might already have this line + +;; Encoding +(set-language-environment "UTF-8") +(delete-selection-mode 1) + +;; Indentation mode +(setq-default indent-tabs-mode nil) +(setq inhibit-startup-screen t) +(setq tab-width 4) + +;; Auto complete + +(yas-global-mode 1) + +(ac-config-default) + +(require 'auto-complete-clang-async) +(add-to-list 'ac-modes 'latex-mode) ; make auto-complete aware of `latex-mode` +(require 'ac-math) + +(defun ac-cc-mode-setup () + (require 'auto-complete-c-headers) + (setq ac-clang-complete-executable "~/.emacs.d/clang-complete") + (setq ac-clang-cflags (list "-std=c++11" "-I../inc")) + (setq ac-sources '(ac-source-clang-async)) + (add-to-list 'ac-sources 'ac-source-c-headers) + (ac-clang-launch-completion-process) + ) + +(defun ac-latex-mode-setup () ; add ac-sources to default ac-sources + (setq ac-sources + (append '(ac-source-math-unicode + ac-source-math-latex + ac-source-latex-commands) + ac-sources)) + ) + +(defun my-ac-config () + (add-hook 'c++-mode-common-hook 'ac-cc-mode-setup) + (add-hook 'c-mode-common-hook 'ac-cc-mode-setup) + (add-hook 'LaTeX-mode-hook 'ac-latex-mode-setup) + (add-hook 'auto-complete-mode-hook 'ac-common-setup) + (global-auto-complete-mode t)) + +(my-ac-config) + +(setq ac-math-unicode-in-math-p t) +(add-to-list 'ac-modes 'org-mode) +(ac-flyspell-workaround) + +;; Latex +(require 'tex-mik) +(setq TeX-auto-save t) +(setq TeX-parse-self t) +(setq-default TeX-master nil) + +(add-hook 'LaTeX-mode-hook 'visual-line-mode) +(add-hook 'LaTeX-mode-hook 'flyspell-mode) +(add-hook 'LaTeX-mode-hook 'LaTeX-math-mode) + +(add-hook 'LaTeX-mode-hook 'turn-on-reftex) +(setq reftex-plug-into-AUCTeX t) + +(require 'tex) +(TeX-global-PDF-mode t) + +;; C style +(setq c-default-style "k&r") +(setq c-basic-offset 4) + +;; CSS style +(setq css-indent-offset 2) + +;; No menu, scrollbar, display line and column +(menu-bar-mode -1) +(tool-bar-mode -1) +(scroll-bar-mode -1) +(column-number-mode t) +(line-number-mode t) + +;; Markdown mode +(autoload 'markdown-mode "markdown-mode" + "Major mode for editing Markdown files" t) +(add-to-list 'auto-mode-alist '("\\.text\\'" . markdown-mode)) +(add-to-list 'auto-mode-alist '("\\.markdown\\'" . markdown-mode)) +(add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-mode)) + +;; White space mode +(setq whitespace-line-column 100) +(add-hook 'python-mode-hook (lambda () (setq whitespace-line-column 140))) + +(global-whitespace-mode 1) + +;; Electric pair mode +(electric-pair-mode 1) +(show-paren-mode 1) +(setq show-paren-delay 0) + +;; R +(require 'ess-site) + +;; Run C programs directly from within emacs +(setq execute-command nil) +(setq compile-command nil) +(setq execute-buffer-name "*output*") +(setq execute-process-name "execute") + +(defun set-execute-command () + (interactive) + (setq sp (split-string (read-from-minibuffer "Execute command: "))) + (setq execute-command (combine-and-quote-strings (cons (file-truename (car sp)) (cdr sp))))) + +(defun kill-execute-c-program () + (interactive) + (if (get-process execute-process-name) + (delete-process (get-process execute-process-name)))) + +(defun execute-c-program () + (interactive) + (if (not execute-command) (set-execute-command)) + (kill-execute-c-program) + (setq old-buffer (current-buffer)) + (setq output-buffer (get-buffer-create execute-buffer-name)) + (switch-to-buffer-other-window output-buffer) + (end-of-buffer) + (insert (concat (propertize execute-command 'face 'bold) "\n")) + (switch-to-buffer-other-window old-buffer) + (start-process-shell-command execute-process-name execute-buffer-name execute-command) + ) + +(defun set-compile-command () + (interactive) + (setq compile-command (read-from-minibuffer "Compile command: "))) + +(defun compile-c-program () + (interactive) + (if (not compile-command) (set-compile-command)) + (compile compile-command)) + +(defun key-c-mode-setup () + (local-set-key [f1] 'compile-c-program) + (local-set-key [f2] 'execute-c-program) + (local-set-key [f3] 'kill-execute-c-program) + (local-set-key [f4] 'set-execute-command) + (local-set-key [f5] 'set-compile-command)) + +(add-hook 'c++-mode-common-hook 'key-c-mode-setup) +(add-hook 'c-mode-common-hook 'key-c-mode-setup) + +;; Flyspell dictionarie +(defun fd-switch-dictionary () + (interactive) + (let* ((dic ispell-current-dictionary) + (change (if (string= dic "francais") "english" "francais"))) + (ispell-change-dictionary change) + (message "Dictionary switched from %s to %s" dic change) + )) + +(defun key-latex-mode-setup () + (local-set-key [f8] 'fd-switch-dictionary)) + +(add-hook 'LaTeX-mode-hook 'key-latex-mode-setup) + +;; CUSTOM EMACS +(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. + '(safe-local-variable-values (quote ((encoding . utf-8))))) +(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. + )