From 588aac5317d46e7749be614555e957abfb0fcf11 Mon Sep 17 00:00:00 2001 From: Buddy Sandidge Date: Fri, 8 Apr 2016 12:24:44 -0700 Subject: [PATCH] Squashed 'vim/bundle/ultisnips/' changes from cecc7aad8..786145030 786145030 quick and dirty fix tests for vanilla vim ea8094c50 syntax: treat python in context/actions as string 61df32722 syntax highlighting: fix context highlighting 3a3e56a98 grant access to visual to context and actions 059c9a9da Merge pull request #679 from SirVer/overwrite-tabstops-from-py-interpolation 23a6ec87c Merge pull request #663 from kmarius/fix-transformation 8fdfde190 Fix escapes in conditional tabstob transformation 7536ac900 tabstops can be overwritten from interpolation a514585cd ignore .ropeproject ed40bebab Add test cases for conditional transformations 25882e95c add testcase for #658 0657e61e6 Merge pull request #643 from dNItro/master 4b27b7152 Testcase added! bdd9012eb Merge pull request #647 from alexlafroscia/master 6d38cad14 Allow Deoplete entries to show up with existing matches 203218297 More detailed documentation on multiline option 8a8e183b8 Documentation on multiline option b057f633e Add support to do transformation on multiple lines 3f2c591c3 Merge pull request #625 from chemzqm/location 0058e8664 doc: add link to options for #Anon() ec9b292ba fix typos in doc/UltiSnips.txt 52ade8fed doc for all param of SnippetsInCurrentScope 4e2e897de change g:current_ulti_dict_all to g:current_ulti_dict_info 319ccddcd Merge pull request #628 from kmarius/fix_syntax 9a73473e7 Fix highlighting for nested visual tabstob 6a69a4415 add all param to UltiSnips#SnippetsInCurrentScope dbd43ad27 Merge pull request #624 from chemzqm/patch-1 3a70765f4 syntax highlight for unite ultisnips 5a2dcc5cb disable tests in vanilla vim for #616 45e3775c1 fix #616: update state on edit w/o cursor move 1b481f312 Merge pull request #615 from SirVer/updated_changelog 60c47e8e9 Reworked README for change of maintenance. 2e9f12bfd Fixed doc/UltiSnips.txt for change of maintainer. 95d6e535e Updated ChangeLog for 3.1. c5a21c509 Merge pull request #611 from HerringtonDarkholme/deoplete 024374614 Add support for deoplete 9c73ce948 Fix a unicode bug in python3. 53bf0dbd7 Merge pull request #608 from JarrodCTaylor/master 53571bf4f Refactor: More descriptive method name 1d4d8b049 Enhancement: Align snippet names in unite source options ef72df8e7 Merge pull request #603 from seletskiy/do-not-break-last-jump-on-post-expand cba31b191 Use new path for neovims config directory. 6ea78e525 fix last jump $0 placeholder using post_expand c9699feed Fix docs: "'" has no special meaning in snippets. 0480b2243 Adapt to changed Neovim configuration directory. 1ce44ac9c Merge pull request #592 from seletskiy/show-backtrace-on-error 08b96cbdb print erroneous snippet location 698f2d491 print snippet information in backtrace (fix #551) d03b13a68 review: add comment about snippet_code 47a3d1862 review fixes: 3accb5cb4 mark line number in traceback 00e3a877d print executed code cc6ac3c06 Exit any snippets when entering a unite buffer. baa9c9709 Merge pull request #589 from seletskiy/autotrigger 6ad7472aa autotrigger: solve performance issues fde4a066c Disable Neovim tests, since they do not pass. 30ba8155a NEOVIM testing is just too flaky. Let's make it optional again. 69b7c501a Merge pull request #582 from seletskiy/autotrigger 76ebfec3c autotrigger: make snippets expand without e1e005a81 Merge pull request #575 from manishrjain/master c39ffb851 Fix link to Vimcasts ef2c0d6d8 Merge pull request #573 from ericdouglas/patch-1 e603117f6 Fix Tabstops and Placeholders index 036d0d9c2 Merge pull request #570 from dueyfinster/patch-1 74bbca2f9 Fixed URL e48d8a28e Rollback "Merge support for auto expand." 490430f91 Merge support for auto expand. 8c7ce8827 Allow neovim to fail for the moment. It is flaky on travis. c45867be5 add missing doc for autotrigger_only 9eb2de6c3 add test for vim<7.4.214 5a5de0734 neovim tests a994e3286 fix py3 tests 61e06bbc1 add note about version and fix tests 878f79ffd review fixes 8ff84758a fix tests cf2c473a8 Define UltiSnips#FileTypeChanged always b968bc3e9 Merge pull request #548 from blueyed/remove-bootstrap-again 5e2f58c35 Define UltiSnips#FileTypeChanged always 4a302149e Remove autoload/UltiSnips/bootstrap.vim again 29ad00ec0 Merge pull request #544 from wincent/fix-autocmd 3eabbe71a Use when firing user autocmds b3cd0cae1 Merge pull request #541 from hanschen/master 44644f1fd Add field numbers to avoid errors in Python 2.6 ffb9b7948 Do not run autocommands when using --noplugin. 6c4fb6f3f fix b->b2 case, fix merge 14ea90385 tests and docs 1356560f9 fix blumba test 5af229abc add error handling f80414fac prototype of autotrigger 7c74aa768 Merge pull request #537 from krisdages/master cc43d1251 Pipe-quoting helptag reference to UltiSnips-context-snippets c12867d1b Merge support for snippet-actions. 5638cdf4a review fix for == c3add0bef fix neovim tests 58a2094d4 review fixes 175e3ba52 fix doc 80 chars limit a39f3c241 revert access to UltiSnips_Manager bdecd9a8b fix not cleared context 3c4ac11af fix python3, finally b50c5c86c pass all args to snip.expand_anon 9649f15a9 fix buffer edits from jump action 5a663116f edge case: anon snip in pre-action 1e771de60 fix tests ba774c39c review fixes 8958b7134 add docs to the buffer proxy object bc29e2322 VimBufferHelper -> VimBufferProxy 972305725 fix expan_anon in pre-action, snip object, fixes 191ebd8e8 migrate to snip.* namespace 7ead6fa17 detect buffer changes via changedtick 760fd25e4 fix python3 compatibility 1ca82f76f pre/post-expand and post-jump actions 67fbdb2ad Handle $0 in a default text like any other tabstop. 5c211b0e7 Clear up pathogen installation instructions. 34679be7a Updated ChangeLog. 300156642 Support $n tabstops for snipMate snippets. e058d1d40 Added waffle.io badge. c68c9dd74 Add a webhook for gitter.im. 7f64510a7 Link to the Vimcasts about UltiSnips. cd0e60bc0 Remove no longer needed langmap translation. 290600c02 Pass the expected python version to the tests. 44db53b7b Even more leanient timings. 0be9d0f86 Even slower typing. eee82219b More lenient typing speed for Neovim. 306f0ace5 Add a testing interface that works for Neovim. 992e09463 Add a warning about changing the buffer in autocommands. c4ee3ecf1 Fire autocommands when setting up and tearing down inner state 29d7080d6 Do not set up inner state if it is already setup. 33db8b4ab Update pathogen installation instructions. 324a4f8ff Support regexp trigger ending in whitespace. 6b12b1141 Only set autocommands when there are snippets. 2ed217a05 Remove deprecated functions like a boss. becab789a Remove bootstrap.vim. Simplify startup. b13015d47 Remove sys.path manipulations. 5f75dde20 Remove snipMate compatibility script. 9822193e4 Make scripts actually executable. 4f65a7654 Fix testing and test against more scenarios. 5590f9b7b Merge pull request #522 from blueyed/use-vim-current-buffer 8c257e24e VimBuffer: use vim.current.buffer.number instead of vim.eval c3a0924b7 Require Vim 7.4 in preparation of removal of compatibility features. de70b1ed5 Exit snippets when entering/exiting command window. 3806a6987 Fix improper use of augroup in ftdetect. 2fb8820ff A backward compatible solution 00d50c3ae Remove augroup block 188e00f7b Merge pull request #493 from cwahbong/fold-fix ca1977231 Fix folding for snippet files. ab1cc1afa Remove documentation for using the same trigger for jump and expand. d6098193e Merge pull request #446 from seletskiy/context-snippets 50bb61cdc another test for error reporting 463e68a61 fix for correct error reporting 9587d9daa Merge pull request #486 from seletskiy/enhance-undo 2f355c233 another little fix in documentation 099d3bcfb Add more precise undo levels (expanding, jumping) 1b3ecf4a8 priority test, docs & fmt fixes 904fbdecf review fixes 4ab4c1df4 Do not use --interface anymore. 1bf07737b Make sure tmux is available before starting any test. 82ceb6288 Remove testing with GNU screen 2c15427b1 Merge pull request #482 from blueyed/check-python-support-for-UltiSnipsUsePythonVersion 87c3a7ba4 fix UltiSnipFunc test 709f8dc93 minor doc fix and new cursor variable 9861a6e6c typo fix in docs 66bc2e8f6 documentation, pull-requests fixes 0beefd4a1 fix context match on False value ed8cf4911 fix tests b3aec0705 proof of concept for context snips 800a54da1 bootstrap: use WarningMsg with python warning message ac42c83a7 bootstrap: verify that g:UltiSnipsUsePythonVersion is available 00848d7d6 Merge pull request #483 from cwahbong/master 3ccc14dca Try to work around transiently failing commands. aeb2e2420 Disabled unite test - it seems flaky. 4b39bf655 Priority must always be an integer. ee7e15558 Make install_vim.sh actually executable. 99eede1bf Started to test py2 and py3 on travis now. 01a17a1a4 Merge pull request #480 from KazuakiM/master bf20bc6f6 Update document for zero tabstop. 62a96bb05 Merge pull request #462 from kawing-chiu/fix-#457 71a8fdec5 Add contributor to doc. 42fc6c031 Merge branch 'improve_neocomplete' 3ae9b48cf Delete default setting in neocomplete/sources/ultisnips.vim f9a22111f Fix adjacent tabstop input issue. 1971030b5 Merge pull request #456 from spacewander/master 4d88df461 remove duplicate things in vim_test_case.py 56ac14840 Disable neocomplete test which fails right now. cf23624c0 A usable travis configuration. e11252655 More travis. ad2c6d35c Add travis badge and try running on python3 too. db00408a1 More travis. eb9adc50e More travis. f47ec08ef More travis. 348dd4346 More travis. c1aec63bd Typo in travis script. 35cdaba3a A travis script. 09876e008 Support for m (trim) snippet option. e04118766 Do not try to remap the keymaps if langnoremap is available and set. c1bde18cd Add support vim's langnoremap new option 8367587e4 Test fixes. 1a3d0ce4b tests: allow passing in PYTHON, and default to python2 6e787df80 tests: use return code from testrunner 936aac8da tests: add -x / --exitfirst option to fail fast 6602da89d tests: fix duplicate method name (test_SnippetPriorities) 125e6be78 tests: minor doc fixes 98fa887e5 tests: remove star imports, sort ed34607d3 Merge pull request #436 from waffle-iron/master 483dc4ab2 add waffle.io badge 81a628c6e Add option 'm' for trimming whitespaces in snippet d693259ab Add option to not traverse all of the rtp. 0ce8b2366 Less verbose pylint errors. b47e68652 do not walk &rtp if abs path to snips specified 6a787cdc7 Applied pyformat on entire codebase. e1436a8ae Accept numbers and text for disabling snipMate. d240aa24d Added Pyrohh to the list of contributors. 7df82bbe5 Merge pull request #415 from seletskiy/toggle-snipmate fc080b4fd add g:UltiSnipsEnableSnipMate 67630f4ae Merge pull request #414 from Pyrohh/master c050d68e5 Check if editor is Neovim when setting snippet_dir b26f2c97b Merge pull request #413 from lencioni/documentation bbb07646a Fix typo "endglobals" in documentation 6907b2444 Merge pull request #410 from tho/master 185f96c4d Fix list of trigger functions in documentation 6dd476750 Merge pull request #406 from jszakmeister/dont-rely-on-cwd e3159ce0d Merge pull request #407 from jszakmeister/update-documentation d85f0b0c2 Merge pull request #408 from tinypenguin/master d9691a912 Added a terminal emulator warning line for using c-tab combo with usnips eb82c6691 Add some documentation on running the test suite. 1f3f1ce64 Don't rely on having the tmux/screen cwd being in the project directory. e502c9ba8 Fix a couple of typos. 9028abd95 Fixes for Unicode issues by jszakmeister. 8b2115ec2 Fix #171: UltiSnips crashes in new file with text containing 0x80 char f4df1bd9e Teach _vim_enc to handle UnicodeDecodeErrors. 56aa817be Reset the unnamed register at the start of a test. cb8536d72 Merge pull request #394 from michamos/master f179fcf99 Map in select mode 1ad970379 Support for sw=0 in newer Vim versions. 4e72a5d08 Merge pull request #388 from blueyed/doc-ref-triggers e3abd6678 Added test case for shiftwidth=0 and added myself to contributors list. 14e5b4638 doc: add tags for trigger vars 482650a00 Use shiftwidth() where available. This allows UltiSnips to work properly when shiftwidth is zero. Per ":help shiftwidth": 8aeb1a2e3 Merge pull request #377 from petobens/master 0775156de Don't escape backslashes in :UltiSnipsEdit 386b3a097 Merge pull request #360 from tafryn/master cae25e533 Change indent level to 3(?!) spaces. 9c632378a Add missing newline to ftdetect. f6e33387a Clean-up vimpager check. c681560b4 Add 'context' value to g:UltiSnipsEditSplit. c79cfd50f Merge pull request #370 from sakana/master 1129ca67d Fix UltiSnipsEdit for g:UltiSnipsSnippetsDir paths that include spaces 2c3c4a777 Add 'context' value to g:UltiSnipsEditSplit 59defbdd5 Merge pull request #357 from kballard/tweak_ftplugin a69764dff Tweak the ftplugin 1292b0fae Merge pull request #355 from kballard/fix_syntax_nested_tabstop a8c9caae8 Add check to prevent errors when using vimpager. 81f917313 Fix highlighting of nested tab stops 279d6e63c Updates the doc for the new clearsnippets behavior. Slight rewording by me. c3660128a Implements clearsnippets by priority. 57ed954cc Merge pull request #348 from cwahbong/select-cr-fix 0abfc3bec Some refinements. 63f65ea87 Add/modify test cases for priority-based clearsnippets. 4784a9e12 Refactor: snippet dictionary does not keep the extend info now. 20f3832ff Code cleanup. 5c87806d7 Implement priority-based clearsnippets. a9aa8c76a Update document for priority based clearsnippets. a053433e4 Variable rename and illustration. 97bad9906 Add test case for #341 (github). f6ce0f92d Merge pull request #349 from m42e/master 79705c3fc Ignore Errors E403 from included syntax files e05788cec Fix issue #341 (github). 4dcfca755 Test refactorings. 1cf3b928f Refactor: split test.py into several smaller files. 9521b942b Merge pull request #340 from cwahbong/test-fix 0872600b9 Ahbong is contributer now. 0dc6a8e4a Now test.py check the version or tmux. b11d5496a Add docstrings for TempFileManager. 15a0a17af Fix tmux interface. e97d52c68 Merge pull request #342 from chivalry/master 2d8ae2fcd Correct misspelling 3002b6852 Solves waiting problem in an elegant way. cc4dc3703 Code cleanup for test.py. 9a98039d2 Fix test.py. ccf79ba82 Merge pull request #331 from kballard/tagbar_snippets dee826520 Support TagBar for snippets files d1f6f7ed8 Better syntax file. b10b62ae6 Twiddle indentation settings 67c7422ae Set up basic highlighting for snipmate files 40145103b Stop embedding python/viml/sh if the `` includes { 010e2c4fa Remove the coloring for python commands ebd62751e Tweak snippet/global highlighting to always highlight the end 30ecd1d1b Rewrite parsing for tab stops 5fa39faa9 fixup! Clean up miscellaneous syntax items 4b73864b7 Fix the docstring for ShellCodeToken 0dba6503e Clean up miscellaneous syntax items acc79747c Syntax highlight the snippet trigger properly 5760eb403 Fix empty snippets/globals d239402b7 Rewrite syntax matching for `global` cb2905c17 Rewrite syntax matching for `snippet` 5937cea08 Mark up syntax items with 'display' as appropriate b82759b25 Rewrite extends/priority/clearsnippets 672117c47 Add hierarchy to syntax file 739e3d94a Fix coloring of shell/VimL/Python command substitutions 5b80ef187 Properly handle \` escapes in commands 636546beb Fix syntax name cab150995 Fix embedded VimL highlighting 1ad7d54d7 Fix highlighting of Python/VimL commands 7b8641e1f Back out fix for #323. Fixes #324. 7d65e2141 Merge pull request #323 from opennota/master 93be385d3 Don't complain about undefined function e59a60cbe Fixed docu for clearsnippets. ee1a2bb2b Escape '\\' in UltiSnipsEdit. f2d9e8b60 Support for selection=old. da5b124af add support for selection=old e4f2e34fc Remove tool that converts snipMate snippets. As support is now build into ultisnips, this is no longer needed. bca51cb40 Brought back snipMate compatibility file. We cannot rely on people tracking vim-snippets to have the renmamed version of this available there. 5c8e3ca48 Merge pull request #275 from skeept/patch-2 fb58034b1 Re-add > before code. 1e6928d0a Merge pull request #276 from meonkeys/patch-1 2042ad476 README: adapt to Vundle interface change 98289510c Update UltiSnips.txt 04ef0f8f5 Merged unite source by Skeept. 2f8489944 Remove snipMate compatibility file. If at all, this should now live in vim-snippets. c21016573 All mappings should be 'silent'. 77a9d8941 simple test for unite interface eff62c336 Be more correct about encoding/decoding strings under py3. Patch by aeruder. cae27fba5 Ensure that _vim_{dec,enc} always succeeds on py3 15f39c080 Do not barf more than once when python is not found. Patch by blueyed. 210304884 Define all/other dummy functions used in autocommands 7da9dbe2a Add UltiSnipsFileType augroup and unset it if UltiSnips is disabled 3208654c4 Do not map keys if 'g:_uspy' could not be set c57c717e3 Delete autocommands when Bootstrap failed 2ad6ad449 Fix E168: :finish used outside of a sourced file a3e654fc5 _vimfiles -> vimfiles. Patch b Oberon. 7bee824db use function to invoqe unite cc1514542 add unite source b6d545ecd Properly escape locations on windows. ae70ec895 Escape correctly file names in windows. 4b4ee4885 Overwrite all snippets with lower priority on expansion. 511600124 Documentation fixes. fee999a71 Docs: remove a reference to defunct ! snippet option 360f58dbf Show where snippets are defined in selection. 7c34a3400 Escape \ when asking for snippets. cd99bdd3b selection=old cannot work with UltiSnips. 69e0acd58 Change the way placeholders are selected. 5aaeae5e8 Do not delete child that is already gone. 1b21741a2 Update ChangeLog. f40c3ac5e Made UltiSnipsEdit! more consistent with multiple filetypes. 5ac043669 Retry unmapping when we switched buffers. b0a3266a6 More tweaking. 940f4d9f2 tweaked readme 5fe88fdc9 Use the demo in the README. 764fd65a7 Added a nice interactive demo. 001c2a967 Added realname of petobens. c6906d85b Fixed a bug in UltiSnipsEdit! 6398a598b Made UltiSnipsEdit more useful and consistent. f44640923 Mention neocomplete in the docs. ba2f30fdf Adapted neosnippets source. Examples by petobens. e6d335aa4 Make the cloning direcotory explicit on stdout. 96557f397 Added integration test for SuperTab. a800b51e0 Removed no longer planned TODOs 147df653a Snippet sources can now be registered. 1ce706e3a Adapted neocomplete integration. a23911f7f Add option to only clone and immediately exit the test runner. c017806b1 Added preliminary support for neocomplete. 1ec523801 Added version checking for other plugins. f4cda8802 Add integration tests with YouCompleteMe. b65efa5aa Added quickstart to readme. 7b51ec6f6 Removed snippet contributors from README. 35e57fad0 Removes snippets. Please track honza/vim-snippets. c4fa2c03b Barf when using "snipmate" for UltiSnips. c9681051c Small fixes to the documentation. 1ec2f187b Updated ChangeLog. c690a3610 Empty lines do not end a snippet for snipMate. 14fca8523 Ups. Forgot to add this. fe7cb4cf8 Makes UltiSnips a drop in replacement for snipMate. 6b8bb1b64 Launch and exit vim for each test. 2c28b51db Allow tests to write arbitrary files into the runtimepath, not just snippet files. 48dcaa02b Attempted fix at several startup problems. 2d18d5365 Change initialization to make session work. git-subtree-dir: vim/bundle/ultisnips git-subtree-split: 78614503098571ecdb09f79bc9543aacdb0e41c0 --- .gitignore | 1 + .travis.yml | 29 + ChangeLog | 98 +- README.md | 73 + README.rst | 22 - UltiSnips/README | 21 - UltiSnips/all.snippets | 120 - UltiSnips/bib.snippets | 52 - UltiSnips/bindzone.snippets | 29 - UltiSnips/c.snippets | 155 - UltiSnips/coffee.snippets | 91 - UltiSnips/coffee_jasmine.snippets | 166 - UltiSnips/cpp.snippets | 57 - UltiSnips/cs.snippets | 328 -- UltiSnips/css.snippets | 407 -- UltiSnips/d.snippets | 584 --- UltiSnips/django.snippets | 238 -- UltiSnips/erlang.snippets | 100 - UltiSnips/eruby.snippets | 280 -- UltiSnips/go.snippets | 131 - UltiSnips/haskell.snippets | 63 - UltiSnips/help.snippets | 32 - UltiSnips/html.snippets | 302 -- UltiSnips/htmldjango.snippets | 3 - UltiSnips/htmljinja.snippets | 3 - UltiSnips/java.snippets | 431 --- UltiSnips/javascript.snippets | 162 - UltiSnips/javascript_jasmine.snippets | 169 - UltiSnips/javascript_jsdoc.snippets | 51 - UltiSnips/jinja2.snippets | 209 -- UltiSnips/json.snippets | 20 - UltiSnips/ledger.snippets | 8 - UltiSnips/lhaskell.snippets | 3 - UltiSnips/lua.snippets | 39 - UltiSnips/mako.snippets | 92 - UltiSnips/markdown.snippets | 42 - UltiSnips/objc.snippets | 272 -- UltiSnips/ocaml.snippets | 174 - UltiSnips/perl.snippets | 132 - UltiSnips/php.snippets | 264 -- UltiSnips/puppet.snippets | 232 -- UltiSnips/python.snippets | 533 --- UltiSnips/rails.snippets | 904 ----- UltiSnips/rst.snippets | 61 - UltiSnips/ruby.snippets | 570 --- UltiSnips/scss.snippets | 55 - UltiSnips/sh.snippets | 92 - UltiSnips/snippets.snippets | 21 - UltiSnips/tcl.snippets | 52 - UltiSnips/tex.snippets | 110 - UltiSnips/texmath.snippets | 56 - UltiSnips/vim.snippets | 60 - UltiSnips/xhtml.snippets | 3 - UltiSnips/xml.snippets | 16 - UltiSnips/zsh.snippets | 17 - after/plugin/UltiSnips_after.vim | 13 +- autoload/UltiSnips.vim | 94 +- autoload/UltiSnips/map_keys.vim | 78 +- autoload/UltiSnips/variables.vim | 48 - autoload/neocomplete/sources/ultisnips.vim | 32 + autoload/unite/sources/ultisnips.vim | 82 + ctags/UltiSnips.cnf | 3 + doc/UltiSnips.txt | 750 +++- doc/demo.gif | Bin 0 -> 1071709 bytes ftdetect/UltiSnips.vim | 16 +- ftplugin/snippets.vim | 31 + plugin/UltiSnips.vim | 104 +- plugin/snipMate_compatibility.vim | 28 - pylintrc | 1 + pythonx/UltiSnips/__init__.py | 9 +- pythonx/UltiSnips/_diff.py | 163 +- pythonx/UltiSnips/_vim.py | 291 +- pythonx/UltiSnips/buffer_proxy.py | 224 ++ pythonx/UltiSnips/compatibility.py | 96 +- pythonx/UltiSnips/debug.py | 28 +- pythonx/UltiSnips/escaping.py | 26 - pythonx/UltiSnips/indent_util.py | 29 +- pythonx/UltiSnips/position.py | 16 +- pythonx/UltiSnips/providers/__init__.py | 10 - pythonx/UltiSnips/providers/_base.py | 43 - .../providers/_snippet_dictionary.py | 80 - pythonx/UltiSnips/providers/snippet_file.py | 152 - pythonx/UltiSnips/providers/ultisnips_file.py | 125 - pythonx/UltiSnips/snippet/__init__.py | 1 + .../UltiSnips/snippet/definition/__init__.py | 4 + pythonx/UltiSnips/snippet/definition/_base.py | 433 +++ .../UltiSnips/snippet/definition/snipmate.py | 22 + .../UltiSnips/snippet/definition/ultisnips.py | 15 + pythonx/UltiSnips/snippet/parsing/__init__.py | 1 + pythonx/UltiSnips/snippet/parsing/_base.py | 68 + .../parsing}/_lexer.py | 118 +- pythonx/UltiSnips/snippet/parsing/snipmate.py | 38 + .../UltiSnips/snippet/parsing/ultisnips.py | 50 + pythonx/UltiSnips/snippet/source/__init__.py | 10 + pythonx/UltiSnips/snippet/source/_base.py | 97 + .../snippet/source/_snippet_dictionary.py | 60 + .../source/added.py} | 8 +- .../UltiSnips/snippet/source/file/__init__.py | 1 + .../UltiSnips/snippet/source/file/_base.py | 112 + .../UltiSnips/snippet/source/file/_common.py | 21 + .../UltiSnips/snippet/source/file/snipmate.py | 127 + .../snippet/source/file/ultisnips.py | 181 + pythonx/UltiSnips/snippet_definition.py | 214 -- pythonx/UltiSnips/snippet_manager.py | 723 +++- pythonx/UltiSnips/test_diff.py | 138 +- pythonx/UltiSnips/test_position.py | 20 +- pythonx/UltiSnips/text.py | 84 + pythonx/UltiSnips/text_objects/__init__.py | 10 +- pythonx/UltiSnips/text_objects/_base.py | 126 +- .../UltiSnips/text_objects/_escaped_char.py | 3 +- pythonx/UltiSnips/text_objects/_mirror.py | 11 +- pythonx/UltiSnips/text_objects/_parser.py | 76 - .../UltiSnips/text_objects/_python_code.py | 176 +- pythonx/UltiSnips/text_objects/_shell_code.py | 17 +- .../text_objects/_snippet_instance.py | 67 +- pythonx/UltiSnips/text_objects/_tabstop.py | 21 +- .../UltiSnips/text_objects/_transformation.py | 67 +- pythonx/UltiSnips/text_objects/_viml_code.py | 7 +- pythonx/UltiSnips/text_objects/_visual.py | 22 +- pythonx/UltiSnips/vim_state.py | 78 +- rplugin/python3/deoplete/sources/ultisnips.py | 21 + syntax/snippets.vim | 282 +- syntax/snippets_snipmate.vim | 47 + test.py | 3300 ----------------- test/__init__.py | 0 test/constant.py | 24 + test/test_AnonymousExpansion.py | 67 + test/test_Autocommands.py | 31 + test/test_Autotrigger.py | 74 + test/test_Chars.py | 254 ++ test/test_Completion.py | 34 + test/test_ContextSnippets.py | 166 + test/test_Editing.py | 152 + test/test_Expand.py | 73 + test/test_Fixes.py | 84 + test/test_Folding.py | 51 + test/test_Format.py | 157 + test/test_Interpolation.py | 491 +++ test/test_ListSnippets.py | 43 + test/test_Mirror.py | 272 ++ test/test_Movement.py | 83 + test/test_MultipleMatches.py | 72 + test/test_ParseSnippets.py | 316 ++ test/test_Plugin.py | 96 + test/test_Recursive.py | 265 ++ test/test_Selection.py | 125 + test/test_SnipMate.py | 191 + test/test_SnippetActions.py | 370 ++ test/test_SnippetOptions.py | 357 ++ test/test_SnippetPriorities.py | 158 + test/test_TabStop.py | 408 ++ test/test_Transformation.py | 269 ++ test/test_UltiSnipFunc.py | 171 + test/test_Visual.py | 204 + test/util.py | 17 + test/vim_interface.py | 278 ++ test/vim_test_case.py | 208 ++ test_all.py | 185 + travis_install.sh | 68 + travis_test.sh | 39 + utils/convert_snipmate_snippets.py | 108 - utils/get_tm_snippets.py | 77 +- 162 files changed, 10276 insertions(+), 13446 deletions(-) create mode 100644 .travis.yml create mode 100644 README.md delete mode 100644 README.rst delete mode 100644 UltiSnips/README delete mode 100644 UltiSnips/all.snippets delete mode 100644 UltiSnips/bib.snippets delete mode 100644 UltiSnips/bindzone.snippets delete mode 100644 UltiSnips/c.snippets delete mode 100644 UltiSnips/coffee.snippets delete mode 100644 UltiSnips/coffee_jasmine.snippets delete mode 100644 UltiSnips/cpp.snippets delete mode 100644 UltiSnips/cs.snippets delete mode 100644 UltiSnips/css.snippets delete mode 100644 UltiSnips/d.snippets delete mode 100644 UltiSnips/django.snippets delete mode 100644 UltiSnips/erlang.snippets delete mode 100644 UltiSnips/eruby.snippets delete mode 100644 UltiSnips/go.snippets delete mode 100644 UltiSnips/haskell.snippets delete mode 100644 UltiSnips/help.snippets delete mode 100644 UltiSnips/html.snippets delete mode 100644 UltiSnips/htmldjango.snippets delete mode 100644 UltiSnips/htmljinja.snippets delete mode 100644 UltiSnips/java.snippets delete mode 100644 UltiSnips/javascript.snippets delete mode 100644 UltiSnips/javascript_jasmine.snippets delete mode 100644 UltiSnips/javascript_jsdoc.snippets delete mode 100644 UltiSnips/jinja2.snippets delete mode 100644 UltiSnips/json.snippets delete mode 100644 UltiSnips/ledger.snippets delete mode 100644 UltiSnips/lhaskell.snippets delete mode 100644 UltiSnips/lua.snippets delete mode 100644 UltiSnips/mako.snippets delete mode 100644 UltiSnips/markdown.snippets delete mode 100644 UltiSnips/objc.snippets delete mode 100644 UltiSnips/ocaml.snippets delete mode 100644 UltiSnips/perl.snippets delete mode 100644 UltiSnips/php.snippets delete mode 100644 UltiSnips/puppet.snippets delete mode 100644 UltiSnips/python.snippets delete mode 100644 UltiSnips/rails.snippets delete mode 100644 UltiSnips/rst.snippets delete mode 100644 UltiSnips/ruby.snippets delete mode 100644 UltiSnips/scss.snippets delete mode 100644 UltiSnips/sh.snippets delete mode 100644 UltiSnips/snippets.snippets delete mode 100644 UltiSnips/tcl.snippets delete mode 100644 UltiSnips/tex.snippets delete mode 100644 UltiSnips/texmath.snippets delete mode 100644 UltiSnips/vim.snippets delete mode 100644 UltiSnips/xhtml.snippets delete mode 100644 UltiSnips/xml.snippets delete mode 100644 UltiSnips/zsh.snippets delete mode 100644 autoload/UltiSnips/variables.vim create mode 100644 autoload/neocomplete/sources/ultisnips.vim create mode 100644 autoload/unite/sources/ultisnips.vim create mode 100644 ctags/UltiSnips.cnf create mode 100644 doc/demo.gif delete mode 100644 plugin/snipMate_compatibility.vim create mode 100644 pythonx/UltiSnips/buffer_proxy.py delete mode 100644 pythonx/UltiSnips/escaping.py delete mode 100644 pythonx/UltiSnips/providers/__init__.py delete mode 100644 pythonx/UltiSnips/providers/_base.py delete mode 100644 pythonx/UltiSnips/providers/_snippet_dictionary.py delete mode 100644 pythonx/UltiSnips/providers/snippet_file.py delete mode 100644 pythonx/UltiSnips/providers/ultisnips_file.py create mode 100644 pythonx/UltiSnips/snippet/__init__.py create mode 100644 pythonx/UltiSnips/snippet/definition/__init__.py create mode 100644 pythonx/UltiSnips/snippet/definition/_base.py create mode 100644 pythonx/UltiSnips/snippet/definition/snipmate.py create mode 100644 pythonx/UltiSnips/snippet/definition/ultisnips.py create mode 100644 pythonx/UltiSnips/snippet/parsing/__init__.py create mode 100644 pythonx/UltiSnips/snippet/parsing/_base.py rename pythonx/UltiSnips/{text_objects => snippet/parsing}/_lexer.py (84%) create mode 100644 pythonx/UltiSnips/snippet/parsing/snipmate.py create mode 100644 pythonx/UltiSnips/snippet/parsing/ultisnips.py create mode 100644 pythonx/UltiSnips/snippet/source/__init__.py create mode 100644 pythonx/UltiSnips/snippet/source/_base.py create mode 100644 pythonx/UltiSnips/snippet/source/_snippet_dictionary.py rename pythonx/UltiSnips/{providers/added_snippets_provider.py => snippet/source/added.py} (60%) create mode 100644 pythonx/UltiSnips/snippet/source/file/__init__.py create mode 100644 pythonx/UltiSnips/snippet/source/file/_base.py create mode 100644 pythonx/UltiSnips/snippet/source/file/_common.py create mode 100644 pythonx/UltiSnips/snippet/source/file/snipmate.py create mode 100644 pythonx/UltiSnips/snippet/source/file/ultisnips.py delete mode 100644 pythonx/UltiSnips/snippet_definition.py create mode 100644 pythonx/UltiSnips/text.py delete mode 100644 pythonx/UltiSnips/text_objects/_parser.py create mode 100644 rplugin/python3/deoplete/sources/ultisnips.py create mode 100644 syntax/snippets_snipmate.vim delete mode 100755 test.py create mode 100644 test/__init__.py create mode 100644 test/constant.py create mode 100644 test/test_AnonymousExpansion.py create mode 100644 test/test_Autocommands.py create mode 100644 test/test_Autotrigger.py create mode 100644 test/test_Chars.py create mode 100644 test/test_Completion.py create mode 100644 test/test_ContextSnippets.py create mode 100644 test/test_Editing.py create mode 100644 test/test_Expand.py create mode 100644 test/test_Fixes.py create mode 100644 test/test_Folding.py create mode 100644 test/test_Format.py create mode 100644 test/test_Interpolation.py create mode 100644 test/test_ListSnippets.py create mode 100644 test/test_Mirror.py create mode 100644 test/test_Movement.py create mode 100644 test/test_MultipleMatches.py create mode 100644 test/test_ParseSnippets.py create mode 100644 test/test_Plugin.py create mode 100644 test/test_Recursive.py create mode 100644 test/test_Selection.py create mode 100644 test/test_SnipMate.py create mode 100644 test/test_SnippetActions.py create mode 100644 test/test_SnippetOptions.py create mode 100644 test/test_SnippetPriorities.py create mode 100644 test/test_TabStop.py create mode 100644 test/test_Transformation.py create mode 100644 test/test_UltiSnipFunc.py create mode 100644 test/test_Visual.py create mode 100644 test/util.py create mode 100644 test/vim_interface.py create mode 100644 test/vim_test_case.py create mode 100755 test_all.py create mode 100755 travis_install.sh create mode 100755 travis_test.sh delete mode 100755 utils/convert_snipmate_snippets.py diff --git a/.gitignore b/.gitignore index bb169b4..2584ce0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ *.pyc *.swp doc/tags +.ropeproject/ diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..7cd60de --- /dev/null +++ b/.travis.yml @@ -0,0 +1,29 @@ +language: python + +python: + - 2.7 + - 3.3 + - 3.4 +env: + - VIM_VERSION="74" + - VIM_VERSION="mercurial" + # - VIM_VERSION="NEOVIM" + +install: + # Some of these commands fail transiently. We keep retrying them until they succeed. + - until sudo add-apt-repository ppa:kalakris/tmux -y; do sleep 10; done + - until sudo add-apt-repository ppa:neovim-ppa/unstable -y; do sleep 10; done + - until sudo apt-get update -qq; do sleep 10; done + - until sudo apt-get install -qq -y --force-yes tmux xclip gdb neovim mercurial; do sleep 10; done + - ./travis_install.sh + +script: + - ./travis_test.sh + +notifications: + webhooks: + urls: + - https://webhooks.gitter.im/e/558acac434012ba838cd + on_success: change # options: [always|never|change] default: always + on_failure: always # options: [always|never|change] default: always + on_start: false # default: false diff --git a/ChangeLog b/ChangeLog index 2665648..f8cdc04 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,71 @@ -version 2.2: +version 3.1 (TODO: date): + - This is the last release done by @SirVer. The new maintainer of UltiSnips + is @seletskiy. The repository remains https://github.com/SirVer/ultisnips, + so this should not affect any users. This is also the last release to be + published on vim.org. Please follow the master branch on GitHub for the + latest stable version. + - New option `e`: Context aware snippets. This gives very precise and + powerful control over which snippet should be expanded depending on + surrounding code. *UltiSnips-context-snippets* + - New option `m`: Trim whitespace in all snippet lines. + - Very powerful, freely configurable pre/post-expand and post-jump actions + allow for transforming the buffer outside the snippet. *UltiSnips-snippet-actions* + - Automatic triggering of snippets without the need to press the expand + trigger. *UltiSnips-autotrigger* + - Better error reporting for snippet errors including python stacktraces + and listing of executed code. + - Undo is more granular. Each jump and expand is now a separate undo step. + - UltiSnips now emits autocommands on certain events. *UltiSnips-custom-autocommands* + - clearsnippets now clears all snippets below the current priority. This + fits better with the priority system introduced in 3.0. + - snipMate snippets support can be disabled. *UltiSnipsEnableSnipMate* + - UltiSnipsEditSplit got a new value 'context'. *UltiSnipsEditSplit* + - Improved syntax highlighting for snippets filetype. + - Mappings and autocommands are now only established when needed, i.e. when + a snippet is active. This boosts performance outside of snippets. + - New integration with Unite, TagBar, and deoplete. + - New Ctags configuration file for snippet definitions. + - Bug fixes, performance improvements, code cleanups and refactorings. + - No longer supports Vim < 7.4. + +version 3.0 (02-Mar-2014): + - Organisational changes: The project is now hosted on github. Snippets are + now shipped separately - please track honza/vim-snippets. + - UltiSnips is now a drop in replacement for snipMate - it parses snipMate + snippets and expands them emulating snipMates smaller feature set. + - Filetype tab completion for UltiSnipsEdit. + - UltiSnipsEdit now only edits private snippet files. Use UltiSnipsEdit! if + you want to edit shipped files. + - New option 's' which strips trailing whitespace before jumping to next + tabstop + - New option 'a' which converts non-ascii characters into ascii characters + in transformations. + - New keyword in snippet files: priority defines which snippets should + overwrite others. This deprecates the '!' option. + *UltiSnips-adding-snippets* + - Remove common whitespace of visual line selections before inserting in an + indented tabstop. + - Support for overwriting the snippet directory name on a per buffer basis + to support per project snippets. *UltiSnips-snippet-search-path* + - The keymaps for jumping in snippets are now only mapped when a snippet is + active, allowing them to be used for something else otherwise. + - Expanding and jumping no longer overwrites the unnamed register. + - Integration with Valloric/YouCompleteMe and Shougo/neocomplete.vim. + - Other plugins can add sources for snippets to create snippets on the fly. + *UltiSnips-extending* + - Vim functions now indicates if it did any work. + *UltiSnips-trigger-functions* + - For python extensions: UltiSnips adds itself to the sys.path and can be + easily imported if it is available. *UltiSnips-python-module-path* + - A new function giving programmatic access to the snippets currently + available for expansion for other plugins integrating with UltiSnips. + *UltiSnips_SnippetsInCurrentScope* + - New or improved snippets (now in a different repo): all, bib, c, cpp, cs, + d, django, eruby, go, haskell, html, html, htmljinja, java, javascript, + js, ledger, ocaml, perl, php, puppet, python, ruby, scss, sh, tex, vim, + xml, zsh. + +version 2.2 (01-Sep-2012): - Support to silence Python-not-found warnings. *UltiSnips-python-warning* - Matchit support for snippet files. - Improvements to syntax file. @@ -9,17 +76,17 @@ version 2.2: json, html, coffee, coffee_jasmine, javascript_jasmine, ruby, php, markdown. -version 2.1: +version 2.1 (14-Feb-2012): - Python interpolation access to text from visual selection via snip.v. - Support for transformations of ${VISUAL} texts. - New or improved snippets: python, tex, texmath, ruby, rails, html, django - -version 2.0: + +version 2.0 (05-Feb-2012): - Backwards incompatible change: Support for normal mode editing. Snippets are no longer exited when leaving insert mode but only by leaving the text span of the snippets. This allows usage of normal mode commands and autoformatting. It also increases compatibility with other plugins. - - Backwards incompatible change: Changed glob patterns for snippets to + - Backwards incompatible change: Changed glob patterns for snippets to behave more like Vim *UltiSnips-adding-snippets* - Backwards incompatible change: Zero Tabstop is no longer removed in nested snippets @@ -28,21 +95,21 @@ version 2.0: - Full support for :py3. UltiSnips now works with python >= 2.6 or >= 3.2. - New or improved snippets: python, all -version 1.6: +version 1.6 (30-Dec-2011): - Significant speed improvements and a few bugs fixed. - Better handling of non ASCII chars in snippets by assuming UTF-8 encoding when no other information is available. - Contributions for UltiSnips are now also accepted on GitHub: https://github.com/SirVer/ultisnips/ - New or improved snippets: ruby, rails, xhtml -version 1.5: +version 1.5 (24-Sep-2011): - Some critical bug fixes for new vim versions. - New or improved snippets: tex, texmath, python, jinja2, go, puppet, xhtml - - Configuration of search path for snippets *UltiSnips-snippet-search-path* + - Configuration of search path for snippets *UltiSnips-snippet-search-path* - New parser implementation: A little faster, more flexible and less bugged. -version 1.4: - - New or improved snippets: php, html, djangohtml, mako, lua +version 1.4 (17-Jul-2011): + - New or improved snippets: php, html, djangohtml, mako, lua - Snippets are now listed alphabetically by their trigger, no longer in order of appearance - Snippet files are now automatically reloaded when they change. @@ -55,7 +122,7 @@ version 1.4: - snippets definition files now have the filetype 'snippets'. It used to be 'snippet'. -version 1.3: +version 1.3 (14-Feb-2011): - Erlang snippets (g0rdin) - Other VimScripts can now define and immediately expand anonymous snippets ( *UltiSnips_Anon* ) (Ryan Wooden) @@ -68,7 +135,7 @@ version 1.3: missing. (Rupa Deadwyler) - Added UltiSnipsReset and UltiSnipsEdit (Idea by JCEB) -version 1.2: +version 1.2 (24-Aug-2010): - many bugs were fixed - smode mappings for printable characters are now removed before expanding a snippet. This is configurable. *UltiSnips-warning-smappings* @@ -77,17 +144,17 @@ version 1.2: more *UltiSnips-globals* - added support for multi word and regular expression triggers. Very powerful in combination with python interpolation. - - Python interpolation became much more powerful *UltiSnips-python* + - Python interpolation became much more powerful *UltiSnips-python* - added support for clearsnippets command *UltiSnips-clearing-snippets* - added support for option w which is a little more strict than i. - added support for listing of valid triggers. Defaults to . - added support for option i (inword expansion) - extends keyword is now supported on the first line of snippet files. This makes it easy to define special cases, for example cpp extends c: a cpp trigger is useless - in c, but a c trigger is valuable for cpp. + in c, but a c trigger is valuable for cpp. - UltiSnips now adheres to expandtab and tabstop options of vim -version 1.1: +version 1.1 (21-Jul-2009): - Made triggers configurable. You can also use the same trigger for expanding and tabbing. The TextMate configuration and is now possible. @@ -98,4 +165,3 @@ version 1.1: with the same tab trigger ( *UltiSnips-adding-snippets* ) - Support for dotted filetype syntax. Now snippets for more than one filetype can be active ( *UltiSnips-adding-snippets* ) - diff --git a/README.md b/README.md new file mode 100644 index 0000000..d03d6eb --- /dev/null +++ b/README.md @@ -0,0 +1,73 @@ +[![Build Status](https://travis-ci.org/SirVer/ultisnips.svg?branch=master)](https://travis-ci.org/SirVer/ultisnips) +[![Stories in Ready](https://badge.waffle.io/SirVer/ultisnips.png?label=ready&title=Ready)](https://waffle.io/SirVer/ultisnips) +[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/SirVer/ultisnips?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) + +UltiSnips +========= + +UltiSnips is the ultimate solution for snippets in Vim. It has tons of features +and is very fast. + +![GIF Demo](https://raw.github.com/SirVer/ultisnips/master/doc/demo.gif) + +In this demo I am editing a python file. I first expand the `#!` snippet, then +the `class` snippet. The completion menu comes from +[YouCompleteMe](https://github.com/Valloric/YouCompleteMe), UltiSnips also +integrates with [neocomplete](https://github.com/Shougo/neocomplete.vim). I can +jump through placeholders and add text while the snippet inserts text in other +places automatically: when I add `Animal` as a base class, `__init__` gets +updated to call the base class constructor. When I add arguments to the +constructor, they automatically get assigned to instance variables. I then +insert my personal snippet for `print` debugging. Note that I left insert mode, +inserted another snippet and went back to add an additional argument to +`__init__` and the class snippet was still active and added another instance +variable. + +The official home of UltiSnips is at . +Please add pull requests and issues there. + +UltiSnips was started in Jun 2009 by @SirVer. In Dec 2015, maintenance was +handed over to @seletskiy. + +Quick Start +----------- + +This assumes you are using [Vundle](https://github.com/gmarik/Vundle.vim). Adapt +for your plugin manager of choice. Put this into your `.vimrc`. + + " Track the engine. + Plugin 'SirVer/ultisnips' + + " Snippets are separated from the engine. Add this if you want them: + Plugin 'honza/vim-snippets' + + " Trigger configuration. Do not use if you use https://github.com/Valloric/YouCompleteMe. + let g:UltiSnipsExpandTrigger="" + let g:UltiSnipsJumpForwardTrigger="" + let g:UltiSnipsJumpBackwardTrigger="" + + " If you want :UltiSnipsEdit to split your window. + let g:UltiSnipsEditSplit="vertical" + +UltiSnips comes with comprehensive +[documentation](https://github.com/SirVer/ultisnips/blob/master/doc/UltiSnips.txt). +As there are more options and tons of features I suggest you at least skim it. + +Screencasts +----------- + +From a gentle introduction to really advanced in a few minutes: The blog posts +of the screencasts contain more advanced examples of the things discussed in the +videos. + +- [Episode 1: What are snippets and do I need them?](http://www.sirver.net/blog/2011/12/30/first-episode-of-ultisnips-screencast/) +- [Episode 2: Creating Basic Snippets](http://www.sirver.net/blog/2012/01/08/second-episode-of-ultisnips-screencast/) +- [Episode 3: What's new in version 2.0](http://www.sirver.net/blog/2012/02/05/third-episode-of-ultisnips-screencast/) +- [Episode 4: Python Interpolation](http://www.sirver.net/blog/2012/03/31/fourth-episode-of-ultisnips-screencast/) + +Also the excellent [Vimcasts](http://vimcasts.org) dedicated three episodes to +UltiSnips: + +- [Meet UltiSnips](http://vimcasts.org/episodes/meet-ultisnips/) +- [Using Python interpolation in UltiSnips snippets](http://vimcasts.org/episodes/ultisnips-python-interpolation/) +- [Using selected text in UltiSnips snippets](http://vimcasts.org/episodes/ultisnips-visual-placeholder/) diff --git a/README.rst b/README.rst deleted file mode 100644 index a5c261f..0000000 --- a/README.rst +++ /dev/null @@ -1,22 +0,0 @@ -UltiSnips -========= - -This is the official repository for UltiSnips. Send Pull request to -SirVer/ultisnips, not the automatic clone from vim-scripts or any -other fork of this project. - -Screencasts ------------ - -The blog posts of the screencasts contain more advanced examples of the things -discussed in the videos. - -* `Episode 1: What are snippets and do I need them?`__ -* `Episode 2: Creating Basic Snippets`__ -* `Episode 3: What's new in version 2.0`__ -* `Episode 4: Python Interpolation`__ - -__ http://www.sirver.net/blog/2011/12/30/first-episode-of-ultisnips-screencast/ -__ http://www.sirver.net/blog/2012/01/08/second-episode-of-ultisnips-screencast/ -__ http://www.sirver.net/blog/2012/02/05/third-episode-of-ultisnips-screencast/ -__ http://www.sirver.net/blog/2012/03/31/fourth-episode-of-ultisnips-screencast/ diff --git a/UltiSnips/README b/UltiSnips/README deleted file mode 100644 index eafd086..0000000 --- a/UltiSnips/README +++ /dev/null @@ -1,21 +0,0 @@ -This directory contains the main scripts that come bundled with UltiSnips. - -Standing On The Shoulders of Giants -=================================== - -The snippets have been collected from various other project which I want to -express my gratitude for. My main source for inspiration where the following -two projects: - - TextMate: http://svn.textmate.org/trunk/Bundles/ - SnipMate: http://code.google.com/p/snipmate/ - -All snippets from those sources were copied and cleaned up, so that they are - - not using shell script, only python (so they are cross platform compatible) - - not using any feature that UltiSnips doesn't offer - -UltiSnips has seen contributions by various individuals. Those contributions -have been merged into this collection seamlessly and without further comments. - --- vim:ft=rst:nospell: - diff --git a/UltiSnips/all.snippets b/UltiSnips/all.snippets deleted file mode 100644 index 085440a..0000000 --- a/UltiSnips/all.snippets +++ /dev/null @@ -1,120 +0,0 @@ -# This file contains snippets that are always defined. I personally -# have snippets for signatures and often needed texts - -priority -50 - -############## -# NICE BOXES # -############## -global !p -import string, vim - -""" Maps a filetype to comment format used for boxes. -Automatically filled during usage""" -_commentDict = { } - -def _parse_comments(s): - """ Parses vim's comments option to extract comment format """ - i = iter(s.split(",")) - - rv = [] - try: - while True: - # get the flags and text of a comment part - flags, text = next(i).split(':', 1) - - if len(flags) == 0: - rv.append((text, text, text, "")) - # parse 3-part comment, but ignore those with O flag - elif flags[0] == 's' and 'O' not in flags: - ctriple = [] - indent = "" - - if flags[-1] in string.digits: - indent = " " * int(flags[-1]) - ctriple.append(text) - - flags,text = next(i).split(':', 1) - assert(flags[0] == 'm') - ctriple.append(text) - - flags,text = next(i).split(':', 1) - assert(flags[0] == 'e') - ctriple.append(text) - ctriple.append(indent) - - rv.append(ctriple) - elif flags[0] == 'b': - if len(text) == 1: - rv.insert(0, (text,text,text, "")) - except StopIteration: - return rv - -def _get_comment_format(): - """ Returns a 4-element tuple representing the comment format for - the current file. """ - return _parse_comments(vim.eval("&comments"))[0] - - -def make_box(twidth, bwidth=None): - b, m, e, i = _get_comment_format() - bwidth_inner = bwidth - 3 - max(len(b), len(i + e)) if bwidth else twidth + 2 - sline = b + m + bwidth_inner * m[0] + 2 * m[0] - nspaces = (bwidth_inner - twidth) // 2 - mlines = i + m + " " + " " * nspaces - mlinee = " " + " "*(bwidth_inner - twidth - nspaces) + m - eline = i + m + bwidth_inner * m[0] + 2 * m[0] + e - return sline, mlines, mlinee, eline - -def foldmarker(): - "Return a tuple of (open fold marker, close fold marker)" - return vim.eval("&foldmarker").split(",") - -endglobal - -snippet box "A nice box with the current comment symbol" b -`!p -box = make_box(len(t[1])) -snip.rv = box[0] + '\n' + box[1] -`${1:content}`!p -box = make_box(len(t[1])) -snip.rv = box[2] + '\n' + box[3]` -$0 -endsnippet - -snippet bbox "A nice box over the full width" b -`!p -width = int(vim.eval("&textwidth")) or 71 -box = make_box(len(t[1]), width) -snip.rv = box[0] + '\n' + box[1] -`${1:content}`!p -box = make_box(len(t[1]), width) -snip.rv = box[2] + '\n' + box[3]` -$0 -endsnippet - -snippet fold "Insert a vim fold marker" b -`!p snip.rv = _get_comment_format()[0]` ${1:Fold description} `!p snip.rv = foldmarker()[0]`${2:1} `!p snip.rv = _get_comment_format()[2]` -endsnippet - -snippet foldc "Insert a vim fold close marker" b -`!p snip.rv = _get_comment_format()[0]` ${2:1}`!p snip.rv = foldmarker()[1]` `!p snip.rv = _get_comment_format()[2]` -endsnippet - -snippet foldp "Insert a vim fold marker pair" b -`!p snip.rv = _get_comment_format()[0]` ${1:Fold description} `!p snip.rv = foldmarker()[0]` `!p snip.rv = _get_comment_format()[2]` -${2:${VISUAL:Content}} -`!p snip.rv = _get_comment_format()[0]` `!p snip.rv = foldmarker()[1]` $1 `!p snip.rv = _get_comment_format()[2]` -endsnippet - -########################## -# LOREM IPSUM GENERATORS # -########################## -snippet lorem "Lorem Ipsum - 50 Words" b -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod -tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At -vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, -no sea takimata sanctus est Lorem ipsum dolor sit amet. -endsnippet - -# vim:ft=snippets: diff --git a/UltiSnips/bib.snippets b/UltiSnips/bib.snippets deleted file mode 100644 index c9b8df5..0000000 --- a/UltiSnips/bib.snippets +++ /dev/null @@ -1,52 +0,0 @@ -priority -50 - -snippet online "Online resource" b -@online{${1:name}, - author={${2:author}}, - title={${3:title}}, - date={${4:date}}, - url={${5:url}} -} -$0 -endsnippet - -snippet article "Article reference" b -@article{${1:name}, - author={${2:author}}, - title={${3:title}}, - journaltitle={${4:journal}}, - volume={${5:NN}}, - number={${6:NN}}, - year={${7:YYYY}}, - pages={${8:NN}--${9:NN}} -} -$0 -endsnippet - -snippet book "Book reference" b -@book{${1:name}, - author={${2:author}}, - title={${3:title}}, - subtitle={${4:subtitle}}, - year={${5:YYYY}}, - location={${6:somewhere}}, - publisher={${7:publisher}}, - pages={${8:NN}--${9:NN}} -} -$0 -endsnippet - -snippet inb "In Book reference" b -@inbook{${1:name}, - author={${2:author}}, - title={${3:title}}, - subtitle={${4:subtitle}}, - booktitle={${5:book}}, - editor={${6:editor}}, - year={${7:YYYY}}, - location={${8:somewhere}}, - publisher={${9:publisher}}, - pages={${10:NN}--${11:NN}} -} -$0 -endsnippet diff --git a/UltiSnips/bindzone.snippets b/UltiSnips/bindzone.snippets deleted file mode 100644 index b8ab0df..0000000 --- a/UltiSnips/bindzone.snippets +++ /dev/null @@ -1,29 +0,0 @@ -priority -50 - -global !p -def newsoa(): - import datetime - now = datetime.datetime.now() - # return standard SOA formatted serial for today - return now.strftime("%Y%m%d00") -endglobal - -snippet zone "Bootstrap a new Bind zonefile" b -$TTL 86400 -@ IN SOA ${1:example.net}. ${2:hostmaster.$1}.( - `!p snip.rv = newsoa()`; serial - 21600; refresh every 6 hours - 3600; retry after one hour - 604800; expire after a week - 86400 ); minimum TTL of 1 day - - IN NS ns01.$1. - IN MX 10 mail.$1. - -ns01.$1 IN A -mail.$1 IN A -endsnippet - -snippet A "Insert A Record" b -${1:hostname} IN A ${2:ip} -endsnippet diff --git a/UltiSnips/c.snippets b/UltiSnips/c.snippets deleted file mode 100644 index 5b8eae8..0000000 --- a/UltiSnips/c.snippets +++ /dev/null @@ -1,155 +0,0 @@ -########################################################################### -# TextMate Snippets # -########################################################################### - -priority -50 - -snippet def "#define ..." -#define ${1} -endsnippet - -snippet ifndef "#ifndef ... #define ... #endif" -#ifndef ${1/([A-Za-z0-9_]+).*/$1/} -#define ${1:SYMBOL} ${2:value} -#endif -endsnippet - -snippet #if "#if #endif" b -#if ${1:0} -${VISUAL}${0:${VISUAL/(.*)/(?1::code)/}} -#endif -endsnippet - -snippet inc "#include local header (inc)" -#include "${1:`!p snip.rv = snip.basename + '.h'`}" -endsnippet - -snippet Inc "#include <> (Inc)" -#include <${1:.h}> -endsnippet - -snippet mark "#pragma mark (mark)" -#if 0 -${1:#pragma mark - -}#pragma mark $2 -#endif - -$0 -endsnippet - -snippet main "main() (main)" -int main(int argc, char *argv[]) -{ - ${VISUAL}${0:${VISUAL/(.*)/(?1::\/* code *\/)/}} - return 0; -} -endsnippet - -snippet for "for loop (for)" -for (${2:i} = 0; $2 < ${1:count}; ${3:++$2}) -{ - ${VISUAL}${0:${VISUAL/(.*)/(?1::\/* code *\/)/}} -} -endsnippet - -snippet fori "for int loop (fori)" -for (${4:int} ${2:i} = 0; $2 < ${1:count}; ${3:++$2}) -{ - ${VISUAL}${0:${VISUAL/(.*)/(?1::\/* code *\/)/}} -} -endsnippet - -snippet enum "Enumeration" -enum ${1:name} { $0 }; -endsnippet - -snippet once "Include header once only guard" -#ifndef ${1:`!p -if not snip.c: - import random, string - name = re.sub(r'[^A-Za-z0-9]+','_', snip.fn).upper() - rand = ''.join(random.sample(string.ascii_letters+string.digits, 8)) - snip.rv = ('%s_%s' % (name,rand)).upper() -else: - snip.rv = snip.c`} -#define $1 - -${0} - -#endif /* end of include guard: $1 */ - -endsnippet - -snippet td "Typedef" -typedef ${1:int} ${2:MyCustomType}; -endsnippet - -snippet wh "while loop" -while(${1:/* condition */}) { - ${VISUAL}${0:${VISUAL/(.*)/(?1::\/* code *\/)/}} -} -endsnippet - -snippet do "do...while loop (do)" -do { - ${VISUAL}${0:${VISUAL/(.*)/(?1::\/* code *\/)/}} -} while(${1:/* condition */}); -endsnippet - -snippet fprintf "fprintf ..." -fprintf(${1:stderr}, "${2:%s}\n"${2/([^%]|%%)*(%.)?.*/(?2:, :\);)/}$3${2/([^%]|%%)*(%.)?.*/(?2:\);)/} -endsnippet - -snippet if "if .. (if)" -if (${1:/* condition */}) -{ - ${VISUAL}${0:${VISUAL/(.*)/(?1::\/* code *\/)/}} -} -endsnippet - -snippet el "else .. (else)" -else { - ${VISUAL}${0:${VISUAL/(.*)/(?1::\/* code *\/)/}} -} -endsnippet - -snippet eli "else if .. (eli)" -else if (${1:/* condition */}) { - ${VISUAL}${0:${VISUAL/(.*)/(?1::\/* code *\/)/}} -} -endsnippet - -snippet ife "if .. else (ife)" -if (${1:/* condition */}) -{ - ${2:/* code */} -} -else -{ - ${3:/* else */} -} -endsnippet - -snippet printf "printf .. (printf)" -printf("${1:%s}\n"${1/([^%]|%%)*(%.)?.*/(?2:, :\);)/}$2${1/([^%]|%%)*(%.)?.*/(?2:\);)/} -endsnippet - -snippet st "struct" -struct ${1:`!p snip.rv = (snip.basename or "name") + "_t"`} -{ - ${0:/* data */} -}; -endsnippet - -snippet fun "function" b -${1:void} ${2:function_name}(${3}) -{ - ${VISUAL}${0:${VISUAL/(.*)/(?1::\/* code *\/)/}} -} -endsnippet - -snippet fund "function declaration" b -${1:void} ${2:function_name}(${3}); -endsnippet - -# vim:ft=snippets: diff --git a/UltiSnips/coffee.snippets b/UltiSnips/coffee.snippets deleted file mode 100644 index 68fe31c..0000000 --- a/UltiSnips/coffee.snippets +++ /dev/null @@ -1,91 +0,0 @@ -# From the TextMate bundle - -priority -50 - -snippet fun "Function" b -${1:name} = (${2:args}) -> - ${0:# body...} -endsnippet - -snippet bfun "Function (bound)" b -${1:(${2:args}) }=> - ${0:# body...} -endsnippet - -snippet if "If" b -if ${1:condition} - ${0:# body...} -endsnippet - -snippet ife "If .. Else" b -if ${1:condition} - ${2:# body...} -else - ${3:# body...} -endsnippet - -snippet elif "Else if" b -else if ${1:condition} - ${0:# body...} -endsnippet - -snippet ifte "Ternary if" b -if ${1:condition} then ${2:value} else ${3:other} -endsnippet - -snippet unl "Unless" b -${1:action} unless ${2:condition} -endsnippet - -snippet fora "Array Comprehension" b -for ${1:name} in ${2:array} - ${0:# body...} -endsnippet - -snippet foro "Object Comprehension" b -for ${1:key}, ${2:value} of ${3:Object} - ${0:# body...} -endsnippet - -snippet forr "Range Comprehension (inclusive)" b -for ${1:name} in [${2:start}..${3:finish}]${4: by ${5:step}} - ${0:# body...} -endsnippet - -snippet forrex "Range Comprehension (exclusive)" b -for ${1:name} in [${2:start}...${3:finish}]${4: by ${5:step}} - ${0:# body...} -endsnippet - -snippet swi "Switch" b -switch ${1:object} - when ${2:value} - ${0:# body...} -endsnippet - -snippet cla "Class" b -class ${1:ClassName}${2: extends ${3:Ancestor}} - - ${4:constructor: (${5:args}) -> - ${6:# body...}} - $7 -endsnippet - -snippet try "Try .. Catch" b -try - $1 -catch ${2:error} - $3 -endsnippet - -snippet req "Require" b -${1/^'?(\w+)'?$/\L$1\E/} = require(${1:'${2:sys}'}) -endsnippet - -snippet # "Interpolated Code" -#{$1}$0 -endsnippet - -snippet log "Log" b -console.log ${1:"${2:msg}"} -endsnippet diff --git a/UltiSnips/coffee_jasmine.snippets b/UltiSnips/coffee_jasmine.snippets deleted file mode 100644 index 0dd35cd..0000000 --- a/UltiSnips/coffee_jasmine.snippets +++ /dev/null @@ -1,166 +0,0 @@ -# -# CoffeeScript versions -- adapted from the JS TextMate bundle + additions -# for some jasmine-jquery matchers -# -priority -50 - -extends coffee - -priority -49 - -snippet des "Describe (coffee)" b -describe '${1:description}', -> - $0 -endsnippet - -snippet it "it (coffee)" b -it '${1:description}', -> - $0 -endsnippet - -snippet bef "before each (coffee)" b -beforeEach -> - $0 -endsnippet - -snippet aft "after each (coffee)" b -afterEach -> - $0 -endsnippet - -snippet any "any (coffee)" b -jasmine.any($1) -endsnippet - -snippet ru "runs (coffee)" b -runs -> - $0 -endsnippet - -snippet wa "waits (coffee)" b -waits($1) -endsnippet - -snippet ex "expect (coffee)" b -expect(${1:target})$0 -endsnippet - -snippet ee "expect to equal (coffee)" b -expect(${1:target}).toEqual(${2:value}) -endsnippet - -snippet em "expect to match (coffee)" b -expect(${1:target}).toMatch(${2:pattern}) -endsnippet - -snippet eha "expect to have attribute (coffee)" b -expect(${1:target}).toHaveAttr('${2:attr}'${3:, '${4:value}'}) -endsnippet - -snippet et "expect to be truthy (coffee)" b -expect(${1:target}).toBeTruthy() -endsnippet - -snippet ef "expect to be falsy (coffee)" b -expect(${1:target}).toBeFalsy() -endsnippet - -snippet ed "expect to be defined (coffee)" b -expect(${1:target}).toBeDefined() -endsnippet - -snippet en "expect to be null (coffee)" b -expect(${1:target}).toBeNull() -endsnippet - -snippet ec "expect to contain (coffee)" b -expect(${1:target}).toContain(${2:value}) -endsnippet - -snippet ev "expect to be visible (coffee)" b -expect(${1:target}).toBeVisible() -endsnippet - -snippet eh "expect to be hidden (coffee)" b -expect(${1:target}).toBeHidden() -endsnippet - -snippet notx "expect not (coffee)" b -expect(${1:target}).not$0 -endsnippet - -snippet note "expect not to equal (coffee)" b -expect(${1:target}).not.toEqual(${2:value}) -endsnippet - -snippet notm "expect not to match (coffee)" b -expect(${1:target}).not.toMatch(${2:pattern}) -endsnippet - -snippet notha "expect to not have attribute (coffee)" b -expect(${1:target}).not.toHaveAttr('${2:attr}'${3:, '${4:value}'}) -endsnippet - -snippet nott "expect not to be truthy (coffee)" b -expect(${1:target}).not.toBeTruthy() -endsnippet - -snippet notf "expect not to be falsy (coffee)" b -expect(${1:target}).not.toBeFalsy() -endsnippet - -snippet notd "expect not to be defined (coffee)" b -expect(${1:target}).not.toBeDefined() -endsnippet - -snippet notn "expect not to be null (coffee)" b -expect(${1:target}).not.toBeNull() -endsnippet - -snippet notc "expect not to contain (coffee)" b -expect(${1:target}).not.toContain(${2:value}) -endsnippet - -snippet notv "expect not to be visible (coffee)" b -expect(${1:target}).not.toBeVisible() -endsnippet - -snippet noth "expect not to be hidden (coffee)" b -expect(${1:target}).not.toBeHidden() -endsnippet - -snippet s "spy on (coffee)" b -spyOn(${1:object}, "${2:method}")$0 -endsnippet - -snippet sr "spy on and return (coffee)" b -spyOn(${1:object}, "${2:method}").andReturn(${3:arguments}) -endsnippet - -snippet st "spy on and throw (coffee)" b -spyOn(${1:object}, "${2:method}").andThrow(${3:exception}) -endsnippet - -snippet sct "spy on and call through (coffee)" b -spyOn(${1:object}, "${2:method}").andCallThrough() -endsnippet - -snippet scf "spy on and call fake (coffee)" b -spyOn(${1:object}, "${2:method}").andCallFake(${3:function}) -endsnippet - -snippet esc "expect was called (coffee)" b -expect(${1:target}).wasCalled() -endsnippet - -snippet escw "expect was called with (coffee)" b -expect(${1:target}).wasCalledWith(${2:arguments}) -endsnippet - -snippet notsc "expect was not called (coffee)" b -expect(${1:target}).wasNotCalled() -endsnippet - -snippet noscw "expect was not called with (coffee)" b -expect(${1:target}).wasNotCalledWith(${2:arguments}) -endsnippet diff --git a/UltiSnips/cpp.snippets b/UltiSnips/cpp.snippets deleted file mode 100644 index 3d79a64..0000000 --- a/UltiSnips/cpp.snippets +++ /dev/null @@ -1,57 +0,0 @@ -priority -50 - -extends c - -# We want to overwrite everything in parent ft. -priority -49 - -########################################################################### -# TextMate Snippets # -########################################################################### -snippet beginend "$1.begin(), $1.end() (beginend)" -${1:v}${1/^.*?(-)?(>)?$/(?2::(?1:>:.))/}begin(), $1${1/^.*?(-)?(>)?$/(?2::(?1:>:.))/}end() -endsnippet - -snippet cl "class .. (class)" -class ${1:`!p snip.rv = snip.basename or "name"`} -{ -public: - ${1/(\w+).*/$1/} (${2:arguments}); - virtual ~${1/(\w+).*/$1/} (); - -private: - ${0:/* data */} -}; -endsnippet - -snippet ns "namespace .. (namespace)" -namespace${1/.+/ /m}${1:`!p snip.rv = snip.basename or "name"`} -{ - ${VISUAL}${0:${VISUAL/(.*)/(?1::\/* code *\/)/}} -}${1/.+/ \/* /m}$1${1/.+/ *\/ /m} -endsnippet - -snippet readfile "read file (readF)" -std::vector v; -if (FILE *fp = fopen(${1:"filename"}, "r")) -{ - char buf[1024]; - while(size_t len = fread(buf, 1, sizeof(buf), fp)) - v.insert(v.end(), buf, buf + len); - fclose(fp); -} -endsnippet - -snippet map "std::map (map)" -std::map<${1:key}, ${2:value}> map$0; -endsnippet - -snippet vector "std::vector (v)" -std::vector<${1:char}> v$0; -endsnippet - -snippet tp "template (template)" -template -endsnippet - -# vim:ft=snippets: diff --git a/UltiSnips/cs.snippets b/UltiSnips/cs.snippets deleted file mode 100644 index aca245e..0000000 --- a/UltiSnips/cs.snippets +++ /dev/null @@ -1,328 +0,0 @@ -####################################################################### -# C# Snippets for UltiSnips # -####################################################################### - -priority -50 - -######################### -# classes and structs # -######################### - -snippet namespace "namespace" b -namespace ${1:MyNamespace} -{ - ${VISUAL}$0 -} -endsnippet - -snippet class "class" w -class ${1:MyClass} -{ - $0 -} -endsnippet - -snippet struct "struct" w -struct ${1:MyStruct} -{ - $0 -} -endsnippet - -snippet interface "interface" w -interface I${1:Interface} -{ - $0 -} -endsnippet - -snippet enum "enumeration" b -enum ${1:MyEnum} { ${2:Item} }; -endsnippet - - -############ -# Main() # -############ - -snippet sim "static int main" b -static int Main(string[] args) -{ - $0 -} -endsnippet - -snippet svm "static void main" b -static void Main(string[] args) -{ - $0 -} -endsnippet - - -################ -# properties # -################ - -snippet prop "Simple property declaration" b -public ${1:int} ${2:MyProperty} { get; set; } -endsnippet - -snippet propfull "Full property declaration" b -private ${1:int} ${2:_myProperty}; - -public $1 ${3:MyProperty} -{ - get { return $2; } - set { $2 = value; } -} -endsnippet - -snippet propg "Property with a private setter" b -public ${1:int} ${2:MyProperty} { get; private set; } -endsnippet - - -############ -# blocks # -############ - -snippet #if "#if #endif" b -#if ${1:DEBUG} -${VISUAL}$0 -#endif -endsnippet - -snippet #region "#region #endregion" b -#region ${1:Region} -${VISUAL}$0 -#endregion -endsnippet - - -########### -# loops # -########### - -snippet for "for loop" b -for (int ${1:i} = 0; $1 < ${2:10}; $1++) -{ - ${VISUAL}$0 -} -endsnippet - -snippet forr "for loop (reverse)" b -for (int ${1:i} = ${2:10}; $1 >= 0; $1--) -{ - ${VISUAL}$0 -} -endsnippet - -snippet foreach "foreach loop" b -foreach (${3:var} ${2:item} in ${1:items}) -{ - ${VISUAL}$0 -} -endsnippet - -snippet while "while loop" b -while (${1:true}) -{ - ${VISUAL}$0 -} -endsnippet - -snippet do "do loop" b -do -{ - ${VISUAL}$0 -} while (${1:true}); -endsnippet - - -############### -# branching # -############### - -snippet if "if statement" b -if ($1) -{ - ${VISUAL}$0 -} -endsnippet - -snippet ife "if else statement" b -if ($1) -{ - ${VISUAL}$0 -} -else -{ -} -endsnippet - -snippet elif "else if" b -else if ($1) -{ - $0 -} -endsnippet - -snippet elseif "else if" b -else if ($1) -{ - $0 -} -endsnippet - -snippet ifnn "if not null" b -if ($1 != null) -{ - ${VISUAL}$0 -} -endsnippet - -snippet switch "switch statement" b -switch (${1:statement}) -{ - case ${2:value}: - break; - - default: - $0break; -} -endsnippet - -snippet case "case" b -case ${1:value}: - $2 - break; -endsnippet - - -############## -# wrappers # -############## - -snippet using "using statement" b -using (${1:resource}) -{ - ${VISUAL}$0 -} -endsnippet - -snippet unchecked "unchecked block" b -unchecked -{ - ${VISUAL}$0 -} -endsnippet - -snippet checked "checked block" b -checked -{ - ${VISUAL}$0 -} -endsnippet - -snippet unsafe "unsafe" b -unsafe -{ - ${VISUAL}$0 -} -endsnippet - - -######################## -# exception handling # -######################## - -snippet try "try catch block" b -try -{ - ${VISUAL}$0 -} -catch (${1:Exception} ${2:e}) -{ - throw; -} -endsnippet - -snippet tryf "try finally block" b -try -{ - ${VISUAL}$0 -} -finally -{ -} -endsnippet - -snippet throw "throw" -throw new ${1}Exception("${2}"); -endsnippet - - -########## -# LINQ # -########## - -snippet from "LINQ syntax" b -var ${1:seq} = - from ${2:item1} in ${3:items1} - join ${4:item2} in ${5:items2} on $2.${6:prop1} equals $4.${7:prop2} - select ${8:$2.prop3} - where ${9:clause} -endsnippet - - -############################ -# feedback and debugging # -############################ - -snippet da "Debug.Assert" b -Debug.Assert(${1:true}); -endsnippet - -snippet cw "Console.WriteLine" b -Console.WriteLine("$1"); -endsnippet - -# as you first type comma-separated parameters on the right, {n} values appear in the format string -snippet cwp "Console.WriteLine with parameters" b -Console.WriteLine("${2:`!p -snip.rv = ' '.join(['{' + str(i) + '}' for i in range(t[1].count(','))]) -`}"${1:, something}); -endsnippet - -snippet mbox "Message box" b -MessageBox.Show("${1:message}"); -endsnippet - - -################## -# full methods # -################## - -snippet equals "Equals method" b -public override bool Equals(object obj) -{ - if (obj == null || GetType() != obj.GetType()) - { - return false; - } - $0 - return base.Equals(obj); -} -endsnippet - - -############## -# comments # -############## - -snippet /// "XML comment" b -/// -/// $1 -/// -endsnippet diff --git a/UltiSnips/css.snippets b/UltiSnips/css.snippets deleted file mode 100644 index 32c3f21..0000000 --- a/UltiSnips/css.snippets +++ /dev/null @@ -1,407 +0,0 @@ -########################################################################### -# Most of these came from TextMate # -########################################################################### - -priority -50 - -snippet ! "!important CSS (!)" -${1:!important} -endsnippet - -snippet fixed "Fixed Position Bottom 100% wide IE6" -${2:bottom: auto;}top: expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight-${1:THE HEIGHT OF THIS THING IN PIXELS})); -${3:left: expression(eval(document.documentElement.scrollLeft)); -}${4:width: expression(eval(document.documentElement.clientWidth));}$0 -endsnippet - -snippet background "background-attachment: scroll:fixed (background)" -background-attachment: ${1:scroll/fixed};$0 -endsnippet - -snippet background "background-color: color-hex (background)" -background-color: #${1:DDD};$0 -endsnippet - -snippet background "background-color: color-name (background)" -background-color: ${1:red};$0 -endsnippet - -snippet background "background-color: color-rgb (background)" -background-color: rgb(${1:255},${2:255},${3:255});$0 -endsnippet - -snippet background "background-color: transparent (background)" -background-color: transparent;$0 -endsnippet - -snippet background "background-image: none (background)" -background-image: none;$0 -endsnippet - -snippet background "background-image: url (background)" -background-image: url($1);$0 -endsnippet - -snippet background "background-position: position (background)" -background-position: ${1:top left/top center/top right/center left/center center/center right/bottom left/bottom center/bottom right/x-% y-%/x-pos y-pos};$0 -endsnippet - -snippet background "background-repeat: r:r-x:r-y:n-r (background)" -background-repeat: ${1:repeat/repeat-x/repeat-y/no-repeat};$0 -endsnippet - -snippet background "background: color image repeat attachment position (background)" -background:${6: #${1:DDD}} url($2) ${3:repeat/repeat-x/repeat-y/no-repeat} ${4:scroll/fixed} ${5:top left/top center/top right/center left/center center/center right/bottom left/bottom center/bottom right/x-% y-%/x-pos y-pos};$0 -endsnippet - -snippet border "border-bottom-color: size style color (border)" -border-bottom-color: #${1:999};$0 -endsnippet - -snippet border "border-bottom-style: size style color (border)" -border-bottom-style: ${1:none/hidden/dotted/dashed/solid/double/groove/ridge/inset/outset};$0 -endsnippet - -snippet border "border-bottom-width: size style color (border)" -border-bottom-width: ${1:1}px ${2:solid} #${3:999};$0 -endsnippet - -snippet border "border-bottom: size style color (border)" -border-bottom: ${1:1}px ${2:solid} #${3:999};$0 -endsnippet - -snippet border "border-color: color (border)" -border-color: ${1:999};$0 -endsnippet - -snippet border "border-left-color: color (border)" -border-right-color: #${1:999};$0 -endsnippet - -snippet border "border-left-style: style (border)" -border-left-style: ${1:none/hidden/dotted/dashed/solid/double/groove/ridge/inset/outset};$0 -endsnippet - -snippet border "border-left-width: size (border)" -border-left-width: ${1:1}px -endsnippet - -snippet border "border-left: size style color (border)" -border-left: ${1:1}px ${2:solid} #${3:999};$0 -endsnippet - -snippet border "border-right-color: color (border)" -border-right-color: #${1:999};$0 -endsnippet - -snippet border "border-right-style: style (border)" -border-right-style: ${1:none/hidden/dotted/dashed/solid/double/groove/ridge/inset/outset};$0 -endsnippet - -snippet border "border-right-width: size (border)" -border-right-width: ${1:1}px -endsnippet - -snippet border "border-right: size style color (border)" -border-right: ${1:1}px ${2:solid} #${3:999};$0 -endsnippet - -snippet border "border-style: style (border)" -border-style: ${1:none/hidden/dotted/dashed/solid/double/groove/ridge/inset/outset};$0 -endsnippet - -snippet border "border-top-color: color (border)" -border-top-color: #${1:999};$0 -endsnippet - -snippet border "border-top-style: style (border)" -border-top-style: ${1:none/hidden/dotted/dashed/solid/double/groove/ridge/inset/outset};$0 -endsnippet - -snippet border "border-top-width: size (border)" -border-top-width: ${1:1}px -endsnippet - -snippet border "border-top: size style color (border)" -border-top: ${1:1}px ${2:solid} #${3:999};$0 -endsnippet - -snippet border "border-width: width (border)" -border-width: ${1:1px};$0 -endsnippet - -snippet border "border: size style color (border)" -border: ${1:1px} ${2:solid} #${3:999};$0 -endsnippet - -snippet clear "clear: value (clear)" -clear: ${1:left/right/both/none};$0 -endsnippet - -snippet color "color: color-hex (color)" -color: #${1:DDD};$0 -endsnippet - -snippet color "color: color-name (color)" -color: ${1:red};$0 -endsnippet - -snippet color "color: color-rgb (color)" -color: rgb(${1:255},${2:255},${3:255});$0 -endsnippet - -snippet cursor "cursor: type (cursor)" -cursor: ${1:default/auto/crosshair/pointer/move/*-resize/text/wait/help};$0 -endsnippet - -snippet cursor "cursor: url (cursor)" -cursor: url($1);$0 -endsnippet - -snippet direction "direction: ltr|rtl (direction)" -direction: ${1:ltr|rtl};$0 -endsnippet - -snippet display "display: block (display)" -display: block;$0 -endsnippet - -snippet display "display: common-types (display)" -display: ${1:none/inline/block/list-item/run-in/compact/marker};$0 -endsnippet - -snippet display "display: inline (display)" -display: inline;$0 -endsnippet - -snippet display "display: table-types (display)" -display: ${1:table/inline-table/table-row-group/table-header-group/table-footer-group/table-row/table-column-group/table-column/table-cell/table-caption};$0 -endsnippet - -snippet float "float: left:right:none (float)" -float: ${1:left/right/none};$0 -endsnippet - -snippet font "font-family: family (font)" -font-family: ${1:Arial, "MS Trebuchet"}, ${2:sans-}serif;$0 -endsnippet - -snippet font "font-size: size (font)" -font-size: ${1:100%};$0 -endsnippet - -snippet font "font-style: normal:italic:oblique (font)" -font-style: ${1:normal/italic/oblique};$0 -endsnippet - -snippet font "font-variant: normal:small-caps (font)" -font-variant: ${1:normal/small-caps};$0 -endsnippet - -snippet font "font-weight: weight (font)" -font-weight: ${1:normal/bold};$0 -endsnippet - -snippet font "font: style variant weight size:line-height font -family (font)" -font: ${1:normal/italic/oblique} ${2:normal/small-caps} ${3:normal/bold} ${4:1em/1.5em} ${5:Arial}, ${6:sans-}serif;$0 -endsnippet - -snippet font "font: size font (font)" -font: ${1:75%} ${2:"Lucida Grande", "Trebuchet MS", Verdana,} ${3:sans-}serif;$0 -endsnippet - -snippet letter "letter-spacing: length-em (letter)" -letter-spacing: $1em;$0 -endsnippet - -snippet letter "letter-spacing: length-px (letter)" -letter-spacing: $1px;$0 -endsnippet - -snippet list "list-style-image: url (list)" -list-style-image: url($1);$0 -endsnippet - -snippet list "list-style-position: pos (list)" -list-style-position: ${1:inside/outside};$0 -endsnippet - -snippet list "list-style-type: asian (list)" -list-style-type: ${1:cjk-ideographic/hiragana/katakana/hiragana-iroha/katakana-iroha};$0 -endsnippet - -snippet list "list-style-type: marker(list)" -list-style-type: ${1:none/disc/circle/square};$0 -endsnippet - -snippet list "list-style-type: numeric (list)" -list-style-type: ${1:decimal/decimal-leading-zero/zero};$0 -endsnippet - -snippet list "list-style-type: other (list)" -list-style-type: ${1:hebrew/armenian/georgian};$0 -endsnippet - -snippet list "list-style-type: roman-alpha-greek (list)" -list-style-type: ${1:lower-roman/upper-roman/lower-alpha/upper-alpha/lower-greek/lower-latin/upper-latin};$0 -endsnippet - -snippet list "list-style: type position image (list)" -list-style: ${1:none/disc/circle/square/decimal/zero} ${2:inside/outside} url($3);$0 -endsnippet - -snippet margin "margin-bottom: length (margin)" -margin-bottom: ${1:20px};$0 -endsnippet - -snippet margin "margin-left: length (margin)" -margin-left: ${1:20px};$0 -endsnippet - -snippet margin "margin-right: length (margin)" -margin-right: ${1:20px};$0 -endsnippet - -snippet margin "margin-top: length (margin)" -margin-top: ${1:20px};$0 -endsnippet - -snippet margin "margin: all (margin)" -margin: ${1:20px};$0 -endsnippet - -snippet margin "margin: T R B L (margin)" -margin: ${1:20px} ${2:0px} ${3:40px} ${4:0px};$0 -endsnippet - -snippet margin "margin: V H (margin)" -margin: ${1:20px} ${2:0px};$0 -endsnippet - -snippet marker "marker-offset: auto (marker)" -marker-offset: auto;$0 -endsnippet - -snippet marker "marker-offset: length (marker)" -marker-offset: ${1:10px};$0 -endsnippet - -snippet overflow "overflow: type (overflow)" -overflow: ${1:visible/hidden/scroll/auto};$0 -endsnippet - -snippet padding "padding-bottom: length (margin)" -padding-bottom: ${1:20px};$0 -endsnippet - -snippet padding "padding-left: length (margin)" -padding-left: ${1:20px};$0 -endsnippet - -snippet padding "padding-right: length (margin)" -padding-right: ${1:20px};$0 -endsnippet - -snippet padding "padding-top: length (margin)" -padding-top: ${1:20px};$0 -endsnippet - -snippet padding "padding: T R B L (padding)" -padding: ${1:20px} ${2:0px} ${3:40px} ${4:0px};$0 -endsnippet - -snippet padding "padding: V H (padding)" -padding: ${1:20px} ${2:0px};$0 -endsnippet - -snippet padding "padding: all (padding)" -padding: ${1:20px};$0 -endsnippet - -snippet position "position: type (position)" -position: ${1:static/relative/absolute/fixed};$0 -endsnippet - -snippet { "properties { } ( } )" -{ - /* $1 */ - $0 - -endsnippet - -snippet scrollbar "scrollbar" -scrollbar-base-color: ${1:#CCCCCC};${2: -scrollbar-arrow-color: ${3:#000000}; -scrollbar-track-color: ${4:#999999}; -scrollbar-3dlight-color: ${5:#EEEEEE}; -scrollbar-highlight-color: ${6:#FFFFFF}; -scrollbar-face-color: ${7:#CCCCCC}; -scrollbar-shadow-color: ${9:#999999}; -scrollbar-darkshadow-color: ${8:#666666};} -endsnippet - -snippet selection "selection" -$1::-moz-selection, -$1::selection { - color: ${2:inherit}; - background: ${3:inherit}; -} -endsnippet - -snippet text "text-align: left:center:right (txt)" -text-align: ${1:left/right/center/justify};$0 -endsnippet - -snippet text "text-decoration: none:underline:overline:line-through:blink (text)" -text-decoration: ${1:none/underline/overline/line-through/blink};$0 -endsnippet - -snippet text "text-indent: length (text)" -text-indent: ${1:10}px;$0 -endsnippet - -snippet text "text-shadow: color-hex x y blur (text)" -text-shadow: #${1:DDD} ${2:10px} ${3:10px} ${4:2px};$0 -endsnippet - -snippet text "text-shadow: color-rgb x y blur (text)" -text-shadow: rgb(${1:255},${2:255},${3:255}) ${4:10px} ${5:10px} ${6:2px};$0 -endsnippet - -snippet text "text-shadow: none (text)" -text-shadow: none;$0 -endsnippet - -snippet text "text-transform: capitalize:upper:lower (text)" -text-transform: ${1:capitalize/uppercase/lowercase};$0 -endsnippet - -snippet text "text-transform: none (text)" -text-transform: none;$0 -endsnippet - -snippet vertical "vertical-align: type (vertical)" -vertical-align: ${1:baseline/sub/super/top/text-top/middle/bottom/text-bottom/length/%};$0 -endsnippet - -snippet visibility "visibility: type (visibility)" -visibility: ${1:visible/hidden/collapse};$0 -endsnippet - -snippet white "white-space: normal:pre:nowrap (white)" -white-space: ${1:normal/pre/nowrap};$0 -endsnippet - -snippet word "word-spacing: length (word)" -word-spacing: ${1:10px};$0 -endsnippet - -snippet word "word-spacing: normal (word)" -word-spacing: normal;$0 -endsnippet - -snippet z "z-index: index (z)" -z-index: $1;$0 -endsnippet - -# vim:ft=snippets: diff --git a/UltiSnips/d.snippets b/UltiSnips/d.snippets deleted file mode 100644 index 3a718c3..0000000 --- a/UltiSnips/d.snippets +++ /dev/null @@ -1,584 +0,0 @@ -# Simple shortcuts - -priority -50 - -snippet imp "import (imp)" b -import ${1:std.stdio}; -endsnippet - -snippet pimp "public import (pimp)" b -public import ${1:/*module*/}; -endsnippet - -snippet over "override (over)" b -override ${1:/*function*/} -endsnippet - -snippet al "alias (al)" -alias ${1:/*orig*/} ${2:/*alias*/}; -endsnippet - -snippet mixin "mixin (mixin)" b -mixin ${1:/*mixed_in*/} ${2:/*name*/}; -endsnippet - -snippet new "new (new)" -new ${1}(${2}); -endsnippet - -snippet scpn "@safe const pure nothrow (scpn)" -@safe const pure nothrow -endsnippet - -snippet spn "@safe pure nothrow (spn)" -@safe pure nothrow -endsnippet - -snippet cont "continue (cont)" -continue; -endsnippet - -snippet dis "@disable (dis)" b -@disable ${1:/*method*/}; -endsnippet - -snippet pub "public (pub)" b -public: - ${1:/*members*/} -endsnippet - -snippet priv "private (priv)" b -private: - ${1:/*members*/} -endsnippet - -snippet prot "protected (prot)" b -protected: - ${1:/*members*/} -endsnippet - -snippet pack "package (pack)" b -package: - ${1:/*members*/} -endsnippet - -snippet ret "return (ret)" -return ${1:/*value to return*/}; -endsnippet - -snippet auto "auto (auto)" b -auto ${1:/*variable*/} = ${2:/*value*/}; -endsnippet - -snippet con "const (con)" b -const ${1:/*variable*/} = ${2:/*value*/}; -endsnippet - -snippet siz "size_t (siz)" b -size_t ${1:/*variable*/} = ${2:/*value*/}; -endsnippet - -snippet sup "super (sup)" b -super(${1:/*args*/}); -endsnippet - -# Phobos - -snippet tup "tuple (tup)" -tuple(${1:/*args*/}) -endsnippet - -snippet wr "writeln (wr)" -writeln(${1:/*args*/}); -endsnippet - -snippet to "to (to)" -to!(${1:/*type*/})(${2:/*arg*/}) -endsnippet - -snippet enf "enforce (enf)" b -enforce(${1:/*condition*/}, - new ${2}Exception(${3:/*args*/})); -endsnippet - -# Branches - -snippet if "if .. (if)" -if(${1:/*condition*/}) -{ - ${VISUAL}${0:/*code*/} -} -endsnippet - -snippet ife "if .. else (ife)" b -if(${1:/*condition*/}) -{ - ${2:/*code*/} -} -else -{ - ${3:/*else*/} -} -endsnippet - -snippet el "else (el)" b -else -{ - ${VISUAL}${1:/*code*/} -} -endsnippet - -snippet elif "else if (elif)" b -else if(${1:/*condition*/}) -{ - ${VISUAL}${0:/*code*/} -} -endsnippet - -snippet sw "switch (sw)" -switch(${1:/*var*/}) -{ - case ${2:/*value*/}: - ${3:/*code*/} - break; - case ${4:/*value*/}: - ${5:/*code*/} - break; - ${7:/*more cases*/} - default: - ${6:assert(false);} -} -endsnippet - -snippet fsw "final switch (fsw)" -switch(${1:/*var*/}) -{ - case ${2:/*value*/}: - ${3:/*code*/} - break; - case ${4:/*value*/}: - ${5:/*code*/} - break; - ${7:/*more cases*/} -} -endsnippet - -snippet case "case (case)" b -case ${1:/*value*/}: - ${2:/*code*/} - break; -endsnippet - -snippet ?: "ternary operator (?:)" -${1:/*condition*/} ? ${2:/*then*/} : ${3:/*else*/}$4 -endsnippet - -# Loops - -snippet do "do while (do)" b -do -{ - ${VISUAL}${2:/*code*/} -} while(${1:/*condition*/}); -endsnippet - -snippet wh "while (wh)" b -while(${1:/*condition*/}) -{ - ${VISUAL}${2:/*code*/} -} -endsnippet - -snippet for "for (for)" b -for (${4:size_t} ${2:i} = 0; $2 < ${1:count}; ${3:++$2}) -{ - ${VISUAL}${0:/*code*/} -} -endsnippet - -snippet forever "forever (forever)" b -for(;;) -{ - ${VISUAL}${0:/*code*/} -} -endsnippet - -snippet fore "foreach (fore)" -foreach(${1:/*elem*/}; ${2:/*range*/}) -{ - ${VISUAL}${3:/*code*/} -} -endsnippet - -snippet forif "foreach if (forif)" b -foreach(${1:/*elem*/}; ${2:/*range*/}) if(${3:/*condition*/}) -{ - ${VISUAL}${4:/*code*/} -} -endsnippet - -# Contracts -snippet in "in contract (in)" b -in -{ - assert(${1:/*condition*/}, "${2:error message}"); - ${3} -} -body -endsnippet - -snippet out "out contract (out)" b -out${1:(result)} -{ - assert(${2:/*condition*/}, "${3:error message}"); - ${4} -} -body -endsnippet - -snippet inv "invariant (inv)" b -invariant() -{ - assert(${1:/*condition*/}, "${2:error message}"); - ${3} -} -endsnippet - -# Functions (generic) - -snippet fun "function definition (fun)" -${1:void} ${2:/*function name*/}(${3:/*args*/}) ${4:@safe pure nothrow} -{ - ${VISUAL}${5:/*code*/} -} -endsnippet - -snippet void "void function definition (void)" -void ${1:/*function name*/}(${2:/*args*/}) ${3:@safe pure nothrow} -{ - ${VISUAL}${4:/*code*/} -} -endsnippet - -snippet this "ctor (this)" w -this(${1:/*args*/}) -{ - ${VISUAL}${2:/*code*/} -} -endsnippet - -snippet get "getter property (get)" -@property ${1:/*type*/} ${2:/*member_name*/}() const pure nothrow {return ${3:$2_};} -endsnippet - -snippet set "setter property (set)" -@property void ${1:/*member_name*/}(${2:/*type*/} rhs) pure nothrow {${3:$1_} = rhs;} -endsnippet - -# Functions (concrete) - -snippet main "Main" b -void main(string[] args) -{ - ${VISUAL}${0: /*code*/} -} -endsnippet - -# Mixins - -snippet signal "signal (signal)" b -mixin Signal!(${1:/*args*/}) ${2:/*name*/}; -endsnippet - -# Scope - -snippet scope "scope (scope)" b -scope(${1:exit}) -{ - ${VISUAL}${2:/*code*/} -} -endsnippet - -# With - -snippet with "with (with)" -with(${1}) -{ - ${VISUAL}${2:/*code*/} -} -endsnippet - -# Exception handling - -snippet try "try/catch (try)" b -try -{ - ${VISUAL}${1:/*code to try*/} -} -catch(${2}Exception e) -{ - ${3:/*handle exception*/} -} -endsnippet - -snippet tryf "try/catch/finally (tryf)" b -try -{ - ${VISUAL}${1:/*code to try*/} -} -catch(${2}Exception e) -{ - ${3:/*handle exception*/} -} -finally -{ - ${4:/*cleanup*/} -} -endsnippet - -snippet catch "catch (catch)" b -catch(${1}Exception e) -{ - ${2:/*handle exception*/} -} -endsnippet - -snippet thr "throw (thr)" -throw new ${1}Exception("${2}"); -endsnippet - - -# Type declarations - -snippet struct "struct (struct)" -struct ${1:`!p snip.rv = (snip.basename or "name")`} -{ - ${2} -} -endsnippet - -snippet union "union (union)" -union ${1:`!p snip.rv = (snip.basename or "name")`} -{ - ${2} -} -endsnippet - -snippet class "class (class)" -class ${1:`!p snip.rv = (snip.basename or "name")`} -{ - ${2} -} -endsnippet - -snippet inter "interface (inter)" -interface ${1:`!p snip.rv = (snip.basename or "name")`} -{ - ${2} -} -endsnippet - -snippet enum "enum (enum)" -enum ${1:`!p snip.rv = (snip.basename or "name")`} -{ - ${2} -} -endsnippet - - -# Exception declarations - -snippet exc "exception declaration (exc)" b -/// ${3:/*documentation*/} -class ${1}Exception : ${2}Exception -{ - public this(string msg, string file = __FILE__, int line = __LINE__) - { - super(msg, file, line); - } -} -endsnippet - - -# Conditional compilation - -snippet version "version (version)" b -version(${1:/*version name*/}) -{ - ${VISUAL}${2:/*code*/} -} -endsnippet - -snippet debug "debug" b -debug -{ - ${VISUAL}${1:/*code*/} -} -endsnippet - - -# Templates - -snippet temp "template (temp)" b -template ${2:/*name*/}(${1:/*args*/}) -{ - ${3:/*code*/} -} -endsnippet - - -# Asserts - -snippet ass "assert (ass)" b -assert(${1:false}, "${2:TODO}"); - -endsnippet - - -# Unittests - -snippet unittest "unittest (unittest)" b -unittest -{ - ${1:/*code*/} -} -endsnippet - - -# Common member functions - -snippet opDis "opDispatch (opDis)" b -${1:/*return type*/} opDispatch(string s)() -{ - ${2:/*code*/}; -} -endsnippet - -snippet op= "opAssign (op=)" b -void opAssign(${1} rhs) ${2:@safe pure nothrow} -{ - ${2:/*code*/} -} -endsnippet - -snippet opCmp "opCmp (opCmp)" b -int opCmp(${1} rhs) @safe const pure nothrow -{ - ${2:/*code*/} -} -endsnippet - -snippet opApply "opApply (opApply)" b -int opApply(int delegate(ref ${1:/*iterated type/s*/}) dg) -{ - int result = 0; - ${2:/*loop*/} - { - result = dg(${3:/*arg/s*/}); - if(result){break;} - } - return result; -} -endsnippet - -snippet toString "toString (toString)" b -string toString() @safe const pure nothrow -{ - ${1:/*code*/} -} -endsnippet - - -# Comments - - -snippet todo "TODO (todo)" -// TODO: ${1} -endsnippet - - -# DDoc - -snippet doc "generic ddoc block (doc)" b -/// ${1:description} -/// -/// ${2:details} -endsnippet - -snippet fdoc "function ddoc block (fdoc)" b -/// ${1:description} -/// -/// ${2:Params: ${3:param} = ${4:param description} -/// ${5}} -/// -/// ${6:Returns: ${7:return value}} -/// -/// ${8:Throws: ${9}Exception ${10}} -endsnippet - -snippet Par "Params (Par)" -Params: ${1:param} = ${2:param description} -/// ${3} -endsnippet - -snippet Ret "Returns (Ret)" -Returns: ${1:return value/s} -endsnippet - -snippet Thr "Throws (Thr)" -Throws: ${1}Exception ${2} -endsnippet - -snippet Example "Examples (Example)" -Examples: -/// -------------------- -/// ${1:example code} -/// -------------------- -endsnippet - - -# License blocks - -snippet gpl "GPL (gpl)" b -// 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 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, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -// -// Copyright (C) ${1:Author}, `!v strftime("%Y")` - -${2} -endsnippet - -snippet boost "Boost (boost)" b -// Copyright ${1:Author} `!v strftime("%Y")`. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -${2} -endsnippet - - -# New module - -snippet module "New module (module)" b -// Copyright ${1:Author} `!v strftime("%Y")`. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -module ${2}.`!v Filename('$1', 'name')`; - - -${3} -endsnippet diff --git a/UltiSnips/django.snippets b/UltiSnips/django.snippets deleted file mode 100644 index 9d6ce27..0000000 --- a/UltiSnips/django.snippets +++ /dev/null @@ -1,238 +0,0 @@ -priority -50 - -# Generic Tags -snippet % -{% ${1} %}${2} -endsnippet - -snippet %% -{% ${1:tag_name} %} - ${2} -{% end$1 %} -endsnippet - -snippet { -{{ ${1} }}${2} -endsnippet - -# Template Tags - -snippet autoescape -{% autoescape ${1:off} %} - ${2} -{% endautoescape %} -endsnippet - -snippet block -{% block ${1} %} - ${2} -{% endblock $1 %} -endsnippet - -snippet # -{# ${1:comment} #} -endsnippet - -snippet comment -{% comment %} - ${1} -{% endcomment %} -endsnippet - -snippet cycle -{% cycle ${1:val1} ${2:val2} ${3:as ${4}} %} -endsnippet - -snippet debug -{% debug %} -endsnippet - -snippet extends -{% extends "${1:base.html}" %} -endsnippet - -snippet filter -{% filter ${1} %} - ${2} -{% endfilter %} -endsnippet - -snippet firstof -{% firstof ${1} %} -endsnippet - -snippet for -{% for ${1} in ${2} %} - ${3} -{% endfor %} -endsnippet - -snippet empty -{% empty %} - ${1} -endsnippet - -snippet if -{% if ${1} %} - ${2} -{% endif %} -endsnippet - -snippet else -{% else %} - ${1} -endsnippet - -snippet ifchanged -{% ifchanged %}${1}{% endifchanged %} -endsnippet - -snippet ifequal -{% ifequal ${1} ${2} %} - ${3} -{% endifequal %} -endsnippet - -snippet ifnotequal -{% ifnotequal ${1} ${2} %} - ${3} -{% endifnotequal %} -endsnippet - -snippet include -{% include "${1}" %} -endsnippet - -snippet load -{% load ${1} %} -endsnippet - -snippet now -{% now "${1:jS F Y H:i}" %} -endsnippet - -snippet regroup -{% regroup ${1} by ${2} as ${3} %} -endsnippet - -snippet spaceless -{% spaceless %}${1}{% endspaceless %} -endsnippet - -snippet ssi -{% ssi ${1} %} -endsnippet - -snippet trans -{% trans "${1:string}" %} -endsnippet - -snippet url -{% url ${1} as ${2} %} -endsnippet - -snippet widthratio -{% widthratio ${1:this_value} ${2:max_value} ${3:100} %} -endsnippet - -snippet with -{% with ${1} as ${2} %} -endsnippet - -# Template Filters - -# Note: Since SnipMate can't determine which template filter you are -# expanding without the "|" character, these do not add the "|" -# character. These save a few keystrokes still. - -# Note: Template tags that take no arguments are not implemented. - -snippet add -add:"${1}" -endsnippet - -snippet center -center:"${1}" -endsnippet - -snippet cut -cut:"${1}" -endsnippet - -snippet date -date:"${1}" -endsnippet - -snippet default -default:"${1}" -endsnippet - -snippet defaultifnone -default_if_none:"${1}" -endsnippet - -snippet dictsort -dictsort:"${1}" -endsnippet - -snippet dictsortrev -dictsortreversed:"${1}" -endsnippet - -snippet divisibleby -divisibleby:"${1}" -endsnippet - -snippet floatformat -floatformat:"${1}" -endsnippet - -snippet getdigit -get_digit:"${1}" -endsnippet - -snippet join -join:"${1}" -endsnippet - -snippet lengthis -length_is:"${1}" -endsnippet - -snippet pluralize -pluralize:"${1}" -endsnippet - -snippet removetags -removetags:"${1}" -endsnippet - -snippet slice -slice:"${1}" -endsnippet - -snippet stringformat -stringformat:"${1}" -endsnippet - -snippet time -time:"${1}" -endsnippet - -snippet truncatewords -truncatewords:${1} -endsnippet - -snippet truncatewordshtml -truncatewords_html:${1} -endsnippet - -snippet urlizetrunc -urlizetrunc:${1} -endsnippet - -snippet wordwrap -wordwrap:${1} -endsnippet - -# vim:ft=snippets: diff --git a/UltiSnips/erlang.snippets b/UltiSnips/erlang.snippets deleted file mode 100644 index e27fbef..0000000 --- a/UltiSnips/erlang.snippets +++ /dev/null @@ -1,100 +0,0 @@ -########################################################################### -# TEXTMATE SNIPPETS # -########################################################################### - -priority -50 - -snippet pat "Case:Receive:Try Clause" -${1:pattern}${2: when ${3:guard}} ->; - ${4:body} -endsnippet - -snippet beh "Behaviour Directive" --behaviour (${1:behaviour}). -endsnippet - -snippet case "Case Expression" -case ${1:expression} of - ${2:pattern}${3: when ${4:guard}} -> - ${5:body} -end -endsnippet - -snippet def "Define Directive" --define (${1:macro}${2: (${3:param})}, ${4:body}). -endsnippet - -snippet exp "Export Directive" --export ([${1:function}/${2:arity}]). -endsnippet - -snippet fun "Fun Expression" -fun - (${1:pattern})${2: when ${3:guard}} -> - ${4:body} -end -endsnippet - -snippet fu "Function" -${1:function} (${2:param})${3: when ${4:guard}} -> - ${5:body} -endsnippet - -snippet if "If Expression" -if - ${1:guard} -> - ${2:body} -end -endsnippet - -snippet ifdef "Ifdef Directive" --ifdef (${1:macro}). -endsnippet - -snippet ifndef "Ifndef Directive" --ifndef (${1:macro}). -endsnippet - -snippet imp "Import Directive" --import (${1:module}, [${2:function}/${3:arity}]). -endsnippet - -snippet inc "Include Directive" --include ("${1:file}"). -endsnippet - -snippet mod "Module Directive" --module (${1:`!p snip.rv = snip.basename or "module"`}). -endsnippet - -snippet rcv "Receive Expression" -receive -${1: ${2:pattern}${3: when ${4:guard}} -> - ${5:body}} -${6:after - ${7:expression} -> - ${8:body}} -end -endsnippet - -snippet rec "Record Directive" --record (${1:record}, {${2:field}${3: = ${4:value}}}). -endsnippet - -snippet try "Try Expression" -try${1: ${2:expression}${3: of - ${4:pattern}${5: when ${6:guard}} -> - ${7:body}}} -${8:catch - ${9:pattern}${10: when ${11:guard}} -> - ${12:body}} -${13:after - ${14:body}} -end -endsnippet - -snippet undef "Undef Directive" --undef (${1:macro}). -endsnippet - -# vim:ft=snippets: diff --git a/UltiSnips/eruby.snippets b/UltiSnips/eruby.snippets deleted file mode 100644 index cd87c1c..0000000 --- a/UltiSnips/eruby.snippets +++ /dev/null @@ -1,280 +0,0 @@ -priority -50 - -# TextMate added these variables to cope with changes in ERB handling -# in different versions of Rails -- for instance, Rails 3 automatically -# strips whitespace so that it's no longer necessary to use a form like -# <% end -%>, but if you're still maintaining Rails 2 projects, you -# can't omit the minus sign and get the same behavior. -# -# The following regex replace substitutes the function below for the -# TextMate variable references after the snippets are converted: -# -# /\v\$\{(TM_RAILS_TEMPLATE_([^_]+)_RUBY_([^_\s]+))\}/`!p textmate_var('\1', snip)`/g -# -global !p -def textmate_var(var, snip): - lookup = dict( - TM_RAILS_TEMPLATE_START_RUBY_EXPR = snip.opt('g:tm_rails_template_start_ruby_expr', '<%= '), - TM_RAILS_TEMPLATE_END_RUBY_EXPR = snip.opt('g:tm_rails_template_end_ruby_expr', ' %>'), - TM_RAILS_TEMPLATE_START_RUBY_INLINE = snip.opt('g:tm_rails_template_start_ruby_inline', '<% '), - TM_RAILS_TEMPLATE_END_RUBY_INLINE = snip.opt('g:tm_rails_template_end_ruby_inline', ' %>'), - TM_RAILS_TEMPLATE_END_RUBY_BLOCK = '<% end %>' - ) - snip.rv = lookup[var] - return -endglobal - - -########################################################################### -# GENERATED FROM get_tm_snippets.py + REGEX REPLACE # -########################################################################### - -snippet fi "<%= Fixtures.identify(:symbol) %>" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`Fixtures.identify(:${1:name})`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)`$0 -endsnippet - -snippet ft "form_tag" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_INLINE', snip)`form_tag(${1::action => "${5:update}"}${6:, {:${8:class} => "${9:form}"\}}) do`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)` - $0 -`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_BLOCK', snip)` -endsnippet - -snippet end "end (ERB)" -<% end -%> -endsnippet - -snippet for "for loop (ERB)" -<% if !${1:list}.blank? %> - <% for ${2:item} in ${1} %> - $3 - <% end %> -<% else %> - $4 -<% end %> - -endsnippet - -snippet ffcb "form_for check_box" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`f.check_box :${1:attribute}`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)` -endsnippet - -snippet ffff "form_for file_field 2" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`f.file_field :${1:attribute}`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)` -endsnippet - -snippet ffhf "form_for hidden_field 2" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`f.hidden_field :${1:attribute}`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)` -endsnippet - -snippet ffl "form_for label 2" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`f.label :${1:attribute}${2:, "${3:${1/[[:alpha:]]+|(_)/(?1: :\u$0)/g}}"}`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)` -endsnippet - -snippet ffpf "form_for password_field 2" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`f.password_field :${1:attribute}`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)` -endsnippet - -snippet ffrb "form_for radio_box 2" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`f.radio_box :${1:attribute}, :${2:tag_value}`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)` -endsnippet - -snippet ffs "form_for submit 2" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`f.submit "${1:Submit}"${2:, :disable_with => '${3:$1ing...}'}`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)` -endsnippet - -snippet ffta "form_for text_area 2" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`f.text_area :${1:attribute}`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)` -endsnippet - -snippet fftf "form_for text_field 2" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`f.text_field :${1:attribute}`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)` -endsnippet - -snippet fields "fields_for" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_INLINE', snip)`fields_for :${1:model}, @${2:$1} do |$1|`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_INLINE', snip)` - $0 -`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_BLOCK', snip)` -endsnippet - -snippet f. "f_fields_for (nff)" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_INLINE', snip)`f.fields_for :${1:attribute} do |${2:f}|`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_INLINE', snip)` -$0 -`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_BLOCK', snip)` -endsnippet - -snippet f. "f.checkbox" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`f.check_box :${1:attribute}`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)` -endsnippet - -snippet f. "f.file_field" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`f.file_field :${1:attribute}`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)` -endsnippet - -snippet f. "f.hidden_field" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`f.hidden_field :${1:attribute}`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)` -endsnippet - -snippet f. "f.label" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`f.label :${1:attribute}${2:, "${3:${1/[[:alpha:]]+|(_)/(?1: :\u$0)/g}}"}`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)` -endsnippet - -snippet f. "f.password_field" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`f.password_field :${1:attribute}`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)` -endsnippet - -snippet f. "f.radio_box" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`f.radio_box :${1:attribute}, :${2:tag_value}`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)` -endsnippet - -snippet f. "f.submit" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`f.submit "${1:Submit}"${2:, :disable_with => '${3:$1ing...}'}`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)` -endsnippet - -snippet f. "f.text_area" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`f.text_area :${1:attribute}`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)` -endsnippet - -snippet f. "f.text_field" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`f.text_field :${1:attribute}`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)` -endsnippet - -snippet ffe "form_for with errors" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`error_messages_for :${1:model}`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)` - -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`form_for @${2:$1} do |f|`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)` - $0 -`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_BLOCK', snip)` -endsnippet - -snippet ff "form_for" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`form_for @${1:model} do |f|`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)` - $0 -`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_BLOCK', snip)` -endsnippet - -snippet ist "image_submit_tag" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`image_submit_tag("${1:agree.png}"${2:${3:, :id => "${4:${1/^(\w+)(\.\w*)?$/$1/}}"}${5:, :name => "${6:${1/^(\w+)(\.\w*)?$/$1/}}"}${7:, :class => "${8:${1/^(\w+)(\.\w*)?$/$1/}-button}"}${9:, :disabled => ${10:false}}})`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)` -endsnippet - -snippet it "image_tag" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`image_tag "$1${2:.png}"${3:${4:, :title => "${5:title}"}${6:, :class => "${7:class}"}}`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)` -endsnippet - -snippet layout "layout" -layout "${1:template_name}"${2:${3:, :only => ${4:[:${5:action}, :${6:action}]}}${7:, :except => ${8:[:${9:action}, :${10:action}]}}} -endsnippet - -snippet jit "javascript_include_tag" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`javascript_include_tag ${1::all}${2:, :cache => ${3:true}}`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)` -endsnippet - -snippet lia "link_to (action)" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`link_to "${1:link text...}", :action => "${2:index}"`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)` -endsnippet - -snippet liai "link_to (action, id)" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`link_to "${1:link text...}", :action => "${2:edit}", :id => ${3:@item}`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)` -endsnippet - -snippet lic "link_to (controller)" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`link_to "${1:link text...}", :controller => "${2:items}"`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)` -endsnippet - -snippet lica "link_to (controller, action)" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`link_to "${1:link text...}", :controller => "${2:items}", :action => "${3:index}"`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)` -endsnippet - -snippet licai "link_to (controller, action, id)" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`link_to "${1:link text...}", :controller => "${2:items}", :action => "${3:edit}", :id => ${4:@item}`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)` -endsnippet - -snippet linpp "link_to (nested path plural)" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`link_to ${1:"${2:link text...}"}, ${3:${10:parent}_${11:child}_path(${12:@}${13:${10}})}`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)` -endsnippet - -snippet linp "link_to (nested path)" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`link_to ${1:"${2:link text...}"}, ${3:${12:parent}_${13:child}_path(${14:@}${15:${12}}, ${16:@}${17:${13}})}`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)` -endsnippet - -snippet lipp "link_to (path plural)" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`link_to ${1:"${2:link text...}"}, ${3:${4:model}s_path}`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)` -endsnippet - -snippet lip "link_to (path)" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`link_to ${1:"${2:link text...}"}, ${3:${12:model}_path(${13:@}${14:${12}})}`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)` -endsnippet - -snippet lim "link_to model" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`link_to ${1:model}.${2:name}, ${3:${4:$1}_path(${14:$1})}`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)` -endsnippet - -snippet hide "page.hide (*ids)" -page.hide ${1:"${2:id(s)}"} -endsnippet - -snippet ins "page.insert_html (position, id, partial)" -page.insert_html :${1:top}, ${2:"${3:id}"}, :${4:partial => "${5:template}"} -endsnippet - -snippet rep "page.replace (id, partial)" -page.replace ${1:"${2:id}"}, :${3:partial => "${4:template}"} -endsnippet - -snippet reph "page.replace_html (id, partial)" -page.replace_html ${1:"${2:id}"}, :${3:partial => "${4:template}"} -endsnippet - -snippet show "page.show (*ids)" -page.show ${1:"${2:id(s)}"} -endsnippet - -snippet tog "page.toggle (*ids)" -page.toggle ${1:"${2:id(s)}"} -endsnippet - -snippet vis "page.visual_effect (effect, id)" -page.visual_effect :${1:toggle_slide}, ${2:"${3:DOM ID}"} -endsnippet - -snippet rp "render (partial) (rp)" -render :partial => "${1:item}" -endsnippet - -snippet rpc "render (partial,collection) (rpc)" -render :partial => "${1:item}", :collection => ${2:@$1s} -endsnippet - -snippet rpl "render (partial,locals) (rpl)" -render :partial => "${1:item}", :locals => { :${2:$1} => ${3:@$1}$0 } -endsnippet - -snippet rpo "render (partial,object) (rpo)" -render :partial => "${1:item}", :object => ${2:@$1} -endsnippet - -snippet rps "render (partial,status) (rps)" -render :partial => "${1:item}", :status => ${2:500} -endsnippet - -snippet slt "stylesheet_link_tag" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`stylesheet_link_tag ${1::all}${2:, :cache => ${3:true}}`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)` -endsnippet - -snippet st "submit_tag" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`submit_tag "${1:Save changes}"${2:, :id => "${3:submit}"}${4:, :name => "${5:$3}"}${6:, :class => "${7:form_$3}"}${8:, :disabled => ${9:false}}${10:, :disable_with => "${11:Please wait...}"}`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)` -endsnippet - -snippet else "else (ERB)" -<% else %> - $0 -endsnippet - -snippet if "if (ERB)" -<% if ${1:condition} %>$0 -endsnippet - -snippet lf "link_to_function" -`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`link_to_function ${1:"${2:Greeting}"}, "${3:alert('Hello world!')}"$4`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)` -endsnippet - -# vim:ft=snippets: diff --git a/UltiSnips/go.snippets b/UltiSnips/go.snippets deleted file mode 100644 index d01e3f1..0000000 --- a/UltiSnips/go.snippets +++ /dev/null @@ -1,131 +0,0 @@ -# Snippets for Go - -priority -50 - -# when to abbriviate and when not? -# b doesn't work here, because it ignores whitespace -# optional local name? -snippet /^import/ "Import declaration" r -import ( - "${1:package}" -) -endsnippet - -snippet /^package/ "Package declaration" r -// Package $1 provides ... -package ${1:main} -endsnippet - -# Mostly converted from: https://github.com/AlanQuatermain/go-tmbundle -snippet /^cons/ "Constants declaration" r -const ( - ${1:constant}${2/(.+)/ /}${2:type} = ${0:value} -) -endsnippet - -snippet /^con/ "Constant declaration" r -const ${1:name}${2/(.+)/ /}${2:type} = ${0:value} -endsnippet - -snippet iota "Iota constant generator" b -const ( - ${1:constant}${2/(.+)/ /}${2:type} = iota -) -endsnippet - -snippet struct "Struct declaration" b -type ${1:Struct} struct { - ${0:${VISUAL}} -} -endsnippet - -snippet interface "Interface declaration" b -type ${1:Interface} interface { - ${0:${VISUAL}} -} -endsnippet - -# statements -snippet for "For loop" b -for ${1:condition}${1/(.+)/ /}{ - ${0:${VISUAL}} -} -endsnippet - -snippet forr "For range loop" b -for ${2:name} := range ${1:collection} { - ${0:${VISUAL}} -} -endsnippet - -snippet if "If statement" b -if ${1:condition}${1/(.+)/ /}{ - ${0:${VISUAL}} -} -endsnippet - -snippet switch "Switch statement" b -switch ${1:expression}${1/(.+)/ /}{ -case${0} -} -endsnippet - -snippet select "Select statement" b -select { -case${0} -} -endsnippet - -snippet case "Case clause" b -case ${1:condition}: - ${0:${VISUAL}} -endsnippet - -snippet default "Default clause" b -default: - ${0:${VISUAL}} -endsnippet - -# functions -snippet /^main/ "Main function" r -func main() { - ${0:${VISUAL}} -} -endsnippet - -snippet /^meth/ "Method" r -func (${1:receiver} ${2:type}) ${3:name}(${4:params})${5/(.+)/ /}${5:type} { - ${0:${VISUAL}} -} -endsnippet - -snippet func "Function" b -func ${1:name}(${2:params})${3/(.+)/ /}${3:type} { - ${0:${VISUAL}} -} -endsnippet - -# types and variables -snippet map "Map type" b -map[${1:keytype}]${2:valtype} -endsnippet - -snippet : "Variable declaration :=" b -${1:name} := ${0:value} -endsnippet - -snippet var "Variable declaration" b -var ${1:name}${2/(.+)/ /}${2:type}${3: = ${0:value}} -endsnippet - -snippet vars "Variables declaration" b -var ( - ${1:name}${2/(.+)/ /}${2:type}${3: = ${0:value} } -) -endsnippet - -snippet json "JSON field" -\`json:"${1:displayName}"\` -endsnippet - -# vim:ft=snippets: diff --git a/UltiSnips/haskell.snippets b/UltiSnips/haskell.snippets deleted file mode 100644 index ad217fd..0000000 --- a/UltiSnips/haskell.snippets +++ /dev/null @@ -1,63 +0,0 @@ -priority -50 - -snippet if "if ... then ... else ..." -if ${1:condition} - then ${2:expression} - else ${3:expression} -endsnippet - -snippet case "case ... of ..." -case ${1:expression} of - ${2:pattern} -> ${3:expression} - ${4:pattern} -> ${5:expression} -endsnippet - -snippet :: "Type signature" -${1:name} :: ${2:Type} -> ${3:Type} -endsnippet - -snippet => "Type constraint" -(${1:Class} ${2:Type var}) => ${3:$2} -endsnippet - -snippet def "Function definition" -${1:name} :: ${2:Type} -> ${3:Type} -endsnippet - -snippet def[] "Function definition for list patterns" -${1:name} :: [${2:Type}] -> ${3:Type} -$1 [] = ${4:undefined} -$1 ${5:(x:xs)} = ${6:undefined} -endsnippet - -snippet = "Function clause" -${1:name} ${2:pattern} = ${3:undefined} -endsnippet - -snippet 2= "Function clause" -${1:name} ${2:pattern} = ${3:undefined} -$1 ${4:pattern} = ${5:undefined} -endsnippet - -snippet 3= "Function clause" -${1:name} ${2:pattern} = ${3:undefined} -$1 ${4:pattern} = ${5:undefined} -$1 ${6:pattern} = ${7:undefined} -endsnippet - -snippet | "Guard" -| ${1:predicate} = ${2:undefined} -endsnippet - -snippet \ "Lambda expression" -\ ${1:pattern} -> ${2:expression} -endsnippet - -snippet [|] "List comprehension" -[${3:foo }$1 | ${1:x} <- ${2:xs} ] -endsnippet - -snippet let "let ... in ..." -let ${1:name} = ${2:expression} -in ${3:expression} -endsnippet diff --git a/UltiSnips/help.snippets b/UltiSnips/help.snippets deleted file mode 100644 index 6132738..0000000 --- a/UltiSnips/help.snippets +++ /dev/null @@ -1,32 +0,0 @@ -# Snippets for VIM Help Files - -priority -50 - -global !p -def sec_title(snip, t): - file_start = snip.fn.split('.')[0] - sec_name = t[1].strip("1234567890. ").lower().replace(' ', '-') - return ("*%s-%s*" % (file_start, sec_name)).rjust(78-len(t[1])) -endglobal - -snippet sec "Section marker" b -============================================================================== -${1:SECTION}`!p snip.rv = sec_title(snip, t)` - -$0 -endsnippet - -snippet ssec "Sub section marker" b -${1:Subsection}`!p snip.rv = sec_title(snip, t) -snip += "-"*len(t[1])` - -$0 -endsnippet - -snippet sssec "Subsub Section marker" b -${1:SubSubsection}:`!p snip.rv = sec_title(snip, t)` - -$0 -endsnippet - -# vim:ft=snippets: diff --git a/UltiSnips/html.snippets b/UltiSnips/html.snippets deleted file mode 100644 index 31f7cc3..0000000 --- a/UltiSnips/html.snippets +++ /dev/null @@ -1,302 +0,0 @@ -priority -50 - -########################################################################### -# TextMate Snippets # -########################################################################### - -global !p -def x(snip): - if snip.ft.startswith("x"): - snip.rv = '/' - else: - snip.rv = "" -endglobal - -############ -# Doctypes # -############ -snippet doctype "DocType XHTML 1.0 Strict" b - - -endsnippet - -snippet doctype "DocType XHTML 1.0 Transitional" b - - -endsnippet - -snippet doctype "DocType XHTML 1.1" b - - -endsnippet - -snippet doctype "HTML - 4.0 Transitional (doctype)" b - - -endsnippet - -snippet doctype "HTML - 5.0 (doctype)" b - - -endsnippet - -############# -# Shortcuts # -############# -snippet down "Down (down)" -↓ -endsnippet - -snippet enter "Enter (enter)" -⌅ -endsnippet - -snippet escape "Escape (escape)" -⎋ -endsnippet - -snippet shift "Shift (shift)" -⇧ -endsnippet - -snippet tab "Tab (tab)" -⇥ -endsnippet - -snippet up "Up (up)" -↑ -endsnippet - -snippet return "Return (return)" -↩ -endsnippet - -snippet right "Right (right)" -→ -endsnippet - -snippet left "Left (left)" -← -endsnippet - -snippet option "Option (option)" -⌥ -endsnippet - -####################### -# Conditional inserts # -####################### -snippet ! "IE Conditional Comment: Internet Explorer 5_0 only" -$0 -endsnippet - -snippet ! "IE Conditional Comment: Internet Explorer 5_5 only" -$0 -endsnippet - -snippet ! "IE Conditional Comment: Internet Explorer 5_x" -$0 -endsnippet - -snippet ! "IE Conditional Comment: Internet Explorer 6 and below" -$0 -endsnippet - -snippet ! "IE Conditional Comment: Internet Explorer 6 only" -$0 -endsnippet - -snippet ! "IE Conditional Comment: Internet Explorer 7+" -$0 -endsnippet - -snippet ! "IE Conditional Comment: Internet Explorer" -$0 -endsnippet - -snippet ! "IE Conditional Comment: NOT Internet Explorer" -${1: IE Conditional Comment: NOT Internet Explorer }$0 -endsnippet - -############# -# HTML TAGS # -############# -snippet input "Input with Label" w - - -endsnippet - -snippet input "XHTML " w - -endsnippet - - -snippet opt "Option" w -${3:$2} -endsnippet - -snippet select "Select Box" w - -endsnippet - - -snippet textarea "XHTML -endsnippet - -snippet mailto "XHTML " w -${3:email me} -endsnippet - -snippet base "XHTML " w - -endsnippet - -snippet img "XHTML " w - -endsnippet - -snippet body "XHTML " - - $0 - -endsnippet - -snippet div "XHTML
" w - - $0 -
-endsnippet - -snippet form "XHTML
" w - - $0 - -

-
-endsnippet - -snippet h1 "XHTML

" w -

${1}

-endsnippet - -snippet head "XHTML " - - - ${1:`!p snip.rv = snip.basename or "Page Title"`} - $0 - -endsnippet - -snippet link "XHTML " w - -endsnippet - -snippet meta "XHTML " w - -endsnippet - -snippet scriptsrc "XHTML -endsnippet - -snippet script "XHTML -endsnippet - -snippet style "XHTML -endsnippet - -snippet table "XHTML " w -
- - -
${5:Header}
${0:Data}
-endsnippet - -snippet a "Link" w -${4:Anchor Text} -endsnippet - -snippet p "paragraph" w -

$0

-endsnippet - -snippet li "list item" w -
  • $0
  • -endsnippet - -snippet ul "unordered list" w -
      -$0 -
    -endsnippet - -snippet td "table cell" w -$0 -endsnippet - -snippet tr "table row" w -$0 -endsnippet - -snippet title "XHTML " w -<title>${1:`!p snip.rv = snip.basename or "Page Title"`} -endsnippet - -snippet fieldset "Fieldset" w -
    - $1 - $0 -
    -endsnippet - -snippet movie "Embed QT movie (movie)" b - - - - - - -endsnippet - -snippet html5 "HTML5 Template" - - - - ${1} - - - -
    - ${2} -
    -
    - ${4} -
    - - -endsnippet -# vim:ft=snippets: diff --git a/UltiSnips/htmldjango.snippets b/UltiSnips/htmldjango.snippets deleted file mode 100644 index 5836a2f..0000000 --- a/UltiSnips/htmldjango.snippets +++ /dev/null @@ -1,3 +0,0 @@ -priority -50 - -extends html, django diff --git a/UltiSnips/htmljinja.snippets b/UltiSnips/htmljinja.snippets deleted file mode 100644 index fa3b3c2..0000000 --- a/UltiSnips/htmljinja.snippets +++ /dev/null @@ -1,3 +0,0 @@ -priority -50 - -extends html, jinja2 diff --git a/UltiSnips/java.snippets b/UltiSnips/java.snippets deleted file mode 100644 index 96cc7a9..0000000 --- a/UltiSnips/java.snippets +++ /dev/null @@ -1,431 +0,0 @@ -priority -50 - -# Many of the snippets here use a global option called -# "g:ultisnips_java_brace_style" which, if set to "nl" will put a newline -# before '{' braces. -# Setting "g:ultisnips_java_junit" will change how the test method snippet -# looks, it is defaulted to junit4, setting this option to 3 will remove the -# @Test annotation from the method - -global !p -def junit(snip): - if snip.opt("g:ultisnips_java_junit", "") == "3": - snip += "" - else: - snip.rv += "@Test\n\t" - -def nl(snip): - if snip.opt("g:ultisnips_java_brace_style", "") == "nl": - snip += "" - else: - snip.rv += " " -def getArgs(group): - import re - word = re.compile('[a-zA-Z><.]+ \w+') - return [i.split(" ") for i in word.findall(group) ] - -def camel(word): - return word[0].upper() + word[1:] - -endglobal - -snippet sleep "try sleep catch" b -try { - Thread.sleep(${1:1000}); -} catch (InterruptedException e){ - e.printStackTrace(); -} -endsnippet - -snippet /i|n/ "new primitive or int" br -${1:int} ${2:i} = ${3:1}; -$0 -endsnippet - -snippet /o|v/ "new Object or variable" br -${1:Object} ${2:var} = new $1(${3}); -endsnippet - -snippet f "field" b -${1:private} ${2:String} ${3:`!p snip.rv = t[2].lower()`}; -endsnippet - -snippet ab "abstract" b -abstract $0 -endsnippet - -snippet as "assert" b -assert ${1:test}${2/(.+)/(?1: \: ")/}${2:Failure message}${2/(.+)/(?1:")/};$0 -endsnippet - -snippet at "assert true" b -assertTrue(${1:actual}); -endsnippet - -snippet af "assert false" b -assertFalse(${1:actual});$0 -endsnippet - -snippet ae "assert equals" b -assertEquals(${1:expected}, ${2:actual}); -endsnippet - -snippet br "break" -break; - -endsnippet - -snippet cs "case" b -case $1: - $2 -$0 -endsnippet - -snippet ca "catch" b -catch (${1:Exception} ${2:e})`!p nl(snip)`{ - $0 -} -endsnippet - -snippet cle "class extends" b -public class ${1:`!p -snip.rv = snip.basename or "untitled"`} ${2:extends ${3:Parent} }${4:implements ${5:Interface} }{ - $0 -} -endsnippet - -snippet clc "class with constructor, fields, setter and getters" b -public class `!p -snip.rv = snip.basename or "untitled"` { -`!p -args = getArgs(t[1]) -if len(args) == 0: snip.rv = "" -for i in args: - snip.rv += "\n\tprivate " + i[0] + " " + i[1]+ ";" -if len(args) > 0: - snip.rv += "\n"` - public `!p snip.rv = snip.basename or "unknown"`($1) { `!p -args = getArgs(t[1]) -for i in args: - snip.rv += "\n\t\tthis." + i[1] + " = " + i[1] + ";" -if len(args) == 0: - snip.rv += "\n"` - }$0 -`!p -args = getArgs(t[1]) -if len(args) == 0: snip.rv = "" -for i in args: - snip.rv += "\n\tpublic void set" + camel(i[1]) + "(" + i[0] + " " + i[1] + ") {\n" + "\ - \tthis." + i[1] + " = " + i[1] + ";\n\t}\n" - - snip.rv += "\n\tpublic " + i[0] + " get" + camel(i[1]) + "() {\ - \n\t\treturn " + i[1] + ";\n\t}\n" -` -} -endsnippet - -snippet clc "class with constructor, with field names" b -public class `!p -snip.rv = snip.basename or "untitled"` { -`!p -args = getArgs(t[1]) -for i in args: - snip.rv += "\n\tprivate " + i[0] + " " + i[1]+ ";" -if len(args) > 0: - snip.rv += "\n"` - public `!p snip.rv = snip.basename or "unknown"`($1) { `!p -args = getArgs(t[1]) -for i in args: - snip.rv += "\n\t\tthis." + i[1] + " = " + i[1] -if len(args) == 0: - snip.rv += "\n"` - } -} -endsnippet - -snippet clc "class and constructor" b -public class `!p -snip.rv = snip.basename or "untitled"` { - - public `!p snip.rv = snip.basename or "untitled"`($2) { - $0 - } -} -endsnippet - -snippet cl "class" b -public class ${1:`!p -snip.rv = snip.basename or "untitled"`} { - $0 -} -endsnippet - -snippet cos "constant string" b -public static final String ${1:var} = "$2";$0 -endsnippet - -snippet co "constant" b -public static final ${1:String} ${2:var} = $3;$0 -endsnippet - -snippet de "default" b -default: - $0 -endsnippet - -snippet elif "else if" b -else if ($1)`!p nl(snip)`{ - $0 -} -endsnippet - -snippet /el(se)?/ "else" br -else`!p nl(snip)`{ - $0 -} -endsnippet - -snippet fi "final" b -final $0 -endsnippet - -snippet fore "for (each)" b -for ($1 : $2)`!p nl(snip)`{ - $0 -} -endsnippet - -snippet fori "for" b -for (int ${1:i} = 0; $1 < ${2:10}; $1++)`!p nl(snip)`{ - $0 -} -endsnippet - -snippet for "for" b -for ($1; $2; $3)`!p nl(snip)`{ - $0 -} -endsnippet - -snippet if "if" b -if ($1)`!p nl(snip)`{ - $0 -} -endsnippet - -snippet imt "import junit_framework_TestCase;" b -import junit.framework.TestCase; -$0 -endsnippet - -snippet im "import" b -import ${1:java}.${2:util}.$0 -endsnippet - -snippet in "interface" b -interface ${1:`!p snip.rv = snip.basename or "untitled"`} ${2:extends ${3:Parent} }{ - $0 -} -endsnippet - -snippet cc "constructor call or setter body" -this.${1:var} = $1; -endsnippet - -snippet list "Collections List" b -List<${1:String}> ${2:list} = new ${3:Array}List<$1>(); -endsnippet - -snippet map "Collections Map" b -Map<${1:String}, ${2:String}> ${3:map} = new ${4:Hash}Map<$1, $2>(); -endsnippet - -snippet set "Collections Set" b -Set<${1:String}> ${2:set} = new ${3:Hash}Set<$1>(); -endsnippet - -snippet /Str?|str/ "String" br -String $0 -endsnippet - -snippet cn "Constructor" b -public `!p snip.rv = snip.basename or "untitled"`(${1:}) { - $0 -} -endsnippet - -snippet cn "constructor, \w fields + assigments" b - `!p -args = getArgs(t[1]) -for i in args: - snip.rv += "\n\tprivate " + i[0] + " " + i[1]+ ";" -if len(args) > 0: - snip.rv += "\n"` -public `!p snip.rv = snip.basename or "unknown"`($1) { `!p -args = getArgs(t[1]) -for i in args: - snip.rv += "\n\t\tthis." + i[1] + " = " + i[1] -if len(args) == 0: - snip.rv += "\n"` -} -endsnippet - -snippet j.b "java_beans_" i -java.beans. -endsnippet - -snippet j.i "java_io" i -java.io. -endsnippet - -snippet j.m "java_math" i -java.math. -endsnippet - -snippet j.n "java_net_" i -java.net. -endsnippet - -snippet j.u "java_util_" i -java.util. -endsnippet - -snippet main "method (main)" b -public static void main(String[] args)`!p nl(snip)`{ - $0 -} -endsnippet - -snippet try "try/catch" b -try { - $1 -} catch(${2:Exception} ${3:e}){ - ${4:e.printStackTrace();} -} -endsnippet - -snippet mt "method throws" b -${1:private} ${2:void} ${3:method}(${4}) ${5:throws $6 }{ - $0 -} -endsnippet - -snippet m "method" b -${1:private} ${2:void} ${3:method}(${4}) { - $0 -} -endsnippet - -snippet md "Method With javadoc" b -/** - * ${7:Short Description}`!p -for i in getArgs(t[4]): - snip.rv += "\n\t * @param " + i[1] + " usage..."` - * `!p -if "throws" in t[5]: - snip.rv = "\n\t * @throws " + t[6] -else: - snip.rv = ""` `!p -if not "void" in t[2]: - snip.rv = "\n\t * @return object" -else: - snip.rv = ""` - **/ -${1:public} ${2:void} ${3:method}($4) ${5:throws $6 }{ - $0 -} -endsnippet - -snippet /get(ter)?/ "getter" br -public ${1:String} get${2:Name}() { - return `!p snip.rv = t[2].lower()`; -} -endsnippet - -snippet /set(ter)?/ "setter" br -public void set${1:Name}(${2:String} $1) { - return this.`!p snip.rv = t[1].lower()` = `!p snip.rv = t[1].lower()`; -} -endsnippet - -snippet /se?tge?t|ge?tse?t|gs/ "setter and getter" br -public void set${1:Name}(${2:String} `!p snip.rv = t[1].lower()`) { - this.`!p snip.rv = t[1].lower()` = `!p snip.rv = t[1].lower()`; -} - -public $2 get$1() { - return `!p snip.rv = t[1].lower()`; -} -endsnippet - -snippet pa "package" b -package $0 -endsnippet - -snippet p "print" b -System.out.print($1);$0 -endsnippet - -snippet pl "println" b -System.out.println($1);$0 -endsnippet - -snippet pr "private" b -private $0 -endsnippet - -snippet po "protected" b -protected $0 -endsnippet - -snippet pu "public" b -public $0 -endsnippet - -snippet re "return" b -return $0 -endsnippet - -snippet st "static" -static $0 -endsnippet - -snippet sw "switch" b -switch ($1)`!p nl(snip)`{ - case $2: $0 -} -endsnippet - -snippet sy "synchronized" -synchronized $0 -endsnippet - -snippet tc "test case" -public class ${1:`!p snip.rv = snip.basename or "untitled"`} extends ${2:TestCase}`!p nl(snip)`{ - $0 -} -endsnippet - -snippet t "test" b -`!p junit(snip)`public void test${1:Name}() { - $0 -} -endsnippet - -snippet tt "test throws" b -`!p junit(snip)`public void test${1:Name}() ${2:throws Exception }{ - $0 -} -endsnippet - -snippet th "throw" b -throw new $0 -endsnippet - -snippet wh "while" b -while ($1)`!p nl(snip)`{ - $0 -} -endsnippet - -# vim:ft=snippets: diff --git a/UltiSnips/javascript.snippets b/UltiSnips/javascript.snippets deleted file mode 100644 index f8d4790..0000000 --- a/UltiSnips/javascript.snippets +++ /dev/null @@ -1,162 +0,0 @@ -priority -50 - -########################################################################### -# TextMate Snippets # -########################################################################### -snippet get "Get Elements" -getElement${1/(T)|.*/(?1:s)/}By${1:T}${1/(T)|(I)|.*/(?1:agName)(?2:d)/}('$2') -endsnippet - -snippet '':f "object method string" -'${1:${2:#thing}:${3:click}}': function(element) { - ${VISUAL}$0 -}${10:,} -endsnippet - -snippet :f "Object Method" -${1:method_name}: function(${3:attribute}) { - ${VISUAL}$0 -}${10:,} -endsnippet - -snippet :, "Object Value JS" -${1:value_name}: ${0:value}, -endsnippet - -snippet : "Object key key: 'value'" -${1:key}: ${2:"${3:value}"}${4:, } -endsnippet - -snippet proto "Prototype (proto)" -${1:class_name}.prototype.${2:method_name} = function(${3:first_argument}) { - ${VISUAL}$0 -}; - -endsnippet - -snippet for "for (...) {...} (counting up)" b -for (var ${1:i} = 0, ${2:len} = ${3:Things.length}; $1 < $2; $1++) { - ${VISUAL}$0 -} -endsnippet - -snippet ford "for (...) {...} (counting down, faster)" b -for (var ${2:i} = ${1:Things.length} - 1; $2 >= 0; $2--) { - ${VISUAL}$0 -} -endsnippet - -snippet fun "function (fun)" -function ${1:function_name}(${2:argument}) { - ${VISUAL}$0 -} -endsnippet - -snippet iife "Immediately-Invoked Function Expression (iife)" -(function (${1:argument}) { - ${VISUAL}$0 -}(${2:$1})); -endsnippet - -snippet ife "if ___ else" -if (${1:condition}) { - ${2://code} -} -else { - ${3://code} -} -endsnippet - -snippet if "if" -if (${1:condition}) { - ${VISUAL}$0 -} -endsnippet - -snippet timeout "setTimeout function" -setTimeout(function() { - ${VISUAL}$0 -}${2:.bind(${3:this})}, ${1:10}); -endsnippet - -# Snippets for Console Debug Output - -snippet ca "console.assert" b -console.assert(${1:assertion}, ${2:"${3:message}"}); -endsnippet - -snippet cclear "console.clear" b -console.clear(); -endsnippet - -snippet cdir "console.dir" b -console.dir(${1:object}); -endsnippet - -snippet cdirx "console.dirxml" b -console.dirxml(${1:object}); -endsnippet - -snippet ce "console.error" b -console.error(${1:"${2:value}"}); -endsnippet - -snippet cgroup "console.group" b -console.group("${1:label}"); -${VISUAL}$0 -console.groupEnd(); -endsnippet - -snippet cgroupc "console.groupCollapsed" b -console.groupCollapsed("${1:label}"); -${VISUAL}$0 -console.groupEnd(); -endsnippet - -snippet ci "console.info" b -console.info(${1:"${2:value}"}); -endsnippet - -snippet cl "console.log" b -console.log(${1:"${2:value}"}); -endsnippet - -snippet cprof "console.profile" b -console.profile("${1:label}"); -${VISUAL}$0 -console.profileEnd(); -endsnippet - -snippet ctable "console.table" b -console.table(${1:"${2:value}"}); -endsnippet - -snippet ctime "console.time" b -console.time("${1:label}"); -${VISUAL}$0 -console.timeEnd("$1"); -endsnippet - -snippet ctimestamp "console.timeStamp" b -console.timeStamp("${1:label}"); -endsnippet - -snippet ctrace "console.trace" b -console.trace(); -endsnippet - -snippet cw "console.warn" b -console.warn(${1:"${2:value}"}); -endsnippet - -# AMD (Asynchronous Module Definition) snippets - -snippet def "define an AMD module" -define(${1:optional_name, }[${2:'jquery'}], ${3:callback}); -endsnippet - -snippet req "require an AMD module" -require([${1:'dependencies'}], ${2:callback}); -endsnippet - -# vim:ft=snippets: diff --git a/UltiSnips/javascript_jasmine.snippets b/UltiSnips/javascript_jasmine.snippets deleted file mode 100644 index 0d8f7af..0000000 --- a/UltiSnips/javascript_jasmine.snippets +++ /dev/null @@ -1,169 +0,0 @@ -priority -50 -extends javascript -priority -49 - -# JavaScript versions -- from the TextMate bundle + some additions -# for jasmine-jquery matchers -# - -snippet des "Describe (js)" b -describe('${1:description}', function() { - $0 -}); -endsnippet - -snippet it "it (js)" b -it('${1:description}', function() { - $0 -}); -endsnippet - -snippet bef "before each (js)" b -beforeEach(function() { - $0 -}); -endsnippet - -snippet aft "after each (js)" b -afterEach(function() { - $0 -}); -endsnippet - -snippet any "any (js)" b -jasmine.any($1) -endsnippet - -snippet ru "runs (js)" b -runs(function() { - $0 -}); -endsnippet - -snippet wa "waits (js)" b -waits($1); -endsnippet - -snippet ex "expect (js)" b -expect(${1:target})$0; -endsnippet - -snippet ee "expect to equal (js)" b -expect(${1:target}).toEqual(${2:value}); -endsnippet - -snippet em "expect to match (js)" b -expect(${1:target}).toMatch(${2:pattern}); -endsnippet - -snippet eha "expect to have attribute (js)" b -expect(${1:target}).toHaveAttr('${2:attr}'${3:, '${4:value}'}); -endsnippet - -snippet et "expect to be truthy (js)" b -expect(${1:target}).toBeTruthy(); -endsnippet - -snippet ef "expect to be falsy (js)" b -expect(${1:target}).toBeFalsy(); -endsnippet - -snippet ed "expect to be defined (js)" b -expect(${1:target}).toBeDefined(); -endsnippet - -snippet en "expect to be null (js)" b -expect(${1:target}).toBeNull(); -endsnippet - -snippet ec "expect to contain (js)" b -expect(${1:target}).toContain(${2:value}); -endsnippet - -snippet ev "expect to be visible (js)" b -expect(${1:target}).toBeVisible(); -endsnippet - -snippet eh "expect to be hidden (js)" b -expect(${1:target}).toBeHidden(); -endsnippet - -snippet notx "expect not (js)" b -expect(${1:target}).not$0; -endsnippet - -snippet note "expect not to equal (js)" b -expect(${1:target}).not.toEqual(${2:value}); -endsnippet - -snippet notm "expect not to match (js)" b -expect(${1:target}).not.toMatch(${2:pattern}); -endsnippet - -snippet notha "expect to not have attribute (js)" b -expect(${1:target}).not.toHaveAttr('${2:attr}'${3:, '${4:value}'}); -endsnippet - -snippet nott "expect not to be truthy (js)" b -expect(${1:target}).not.toBeTruthy(); -endsnippet - -snippet notf "expect not to be falsy (js)" b -expect(${1:target}).not.toBeFalsy(); -endsnippet - -snippet notd "expect not to be defined (js)" b -expect(${1:target}).not.toBeDefined(); -endsnippet - -snippet notn "expect not to be null (js)" b -expect(${1:target}).not.toBeNull(); -endsnippet - -snippet notc "expect not to contain (js)" b -expect(${1:target}).not.toContain(${2:value}); -endsnippet - -snippet notv "expect not to be visible (js)" b -expect(${1:target}).not.toBeVisible(); -endsnippet - -snippet noth "expect not to be hidden (js)" b -expect(${1:target}).not.toBeHidden(); -endsnippet - -snippet s "spy on (js)" b -spyOn(${1:object}, '${2:method}')$0; -endsnippet - -snippet sr "spy on and return (js)" b -spyOn(${1:object}, '${2:method}').andReturn(${3:arguments}); -endsnippet - -snippet st "spy on and throw (js)" b -spyOn(${1:object}, '${2:method}').andThrow(${3:exception}); -endsnippet - -snippet sct "spy on and call through (js)" b -spyOn(${1:object}, '${2:method}').andCallThrough(); -endsnippet - -snippet scf "spy on and call fake (js)" b -spyOn(${1:object}, '${2:method}').andCallFake(${3:function}); -endsnippet - -snippet esc "expect was called (js)" b -expect(${1:target}).wasCalled(); -endsnippet - -snippet escw "expect was called with (js)" b -expect(${1:target}).wasCalledWith(${2:arguments}); -endsnippet - -snippet notsc "expect was not called (js)" b -expect(${1:target}).wasNotCalled(); -endsnippet - -snippet noscw "expect was not called with (js)" b -expect(${1:target}).wasNotCalledWith(${2:arguments}); -endsnippet diff --git a/UltiSnips/javascript_jsdoc.snippets b/UltiSnips/javascript_jsdoc.snippets deleted file mode 100644 index ca943fc..0000000 --- a/UltiSnips/javascript_jsdoc.snippets +++ /dev/null @@ -1,51 +0,0 @@ -priority -50 - -# JSDoc snippets - -snippet /* "A JSDoc comment" b -/** - * ${1:${VISUAL}}$0 - */ -endsnippet - -snippet @au "@author email (First Last)" -@author ${1:`!v g:snips_author_email`} (${2:`!v g:snips_author`}) -endsnippet - -snippet @li "@license Description" -@license ${1:MIT}$0 -endsnippet - -snippet @ver "@version Semantic version" -@version ${1:0.1.0}$0 -endsnippet - -snippet @fileo "@fileoverview Description" b -/** - * @fileoverview ${1:${VISUAL:A description of the file}}$0 - */ -endsnippet - -snippet @constr "@constructor" -@constructor -endsnippet - -snippet @p "@param {Type} varname Description" -@param {${1:Type}} ${2:varname} ${3:Description} -endsnippet - -snippet @ret "@return {Type} Description" -@return {${1:Type}} ${2:Description} -endsnippet - -snippet @pri "@private" -@private -endsnippet - -snippet @over "@override" -@override -endsnippet - -snippet @pro "@protected" -@protected -endsnippet diff --git a/UltiSnips/jinja2.snippets b/UltiSnips/jinja2.snippets deleted file mode 100644 index ded01dc..0000000 --- a/UltiSnips/jinja2.snippets +++ /dev/null @@ -1,209 +0,0 @@ -priority -50 - -# http://jinja.pocoo.org/ - -# jinja2 is a full featured template engine for Python. It has full -# unicode support, an optional integrated sandboxed execution -# environment, widely used and BSD licensed. - -# possible extends: -#extends html - - -snippet block "block" b -{% block ${1:name} %} - $2 -{% endblock $1 %} -endsnippet - - -snippet {{ "variable" b -{{ $1 }} -endsnippet - - -snippet {# "comment" b -{# $1 #} -endsnippet - - -snippet # "comment" b -{# $1 #} -endsnippet - - -snippet raw "escaped block" b -{% raw %} - $1 -{% endraw %} -endsnippet - - -snippet extends "extends" b -{% extends "${1:template}" %} -endsnippet - - -snippet include "include" b -{% include "${1:template}" %} -endsnippet - - -snippet import "import" b -{% import "${1:template}" %} -endsnippet - - -snippet from "from/import/as" b -{% from "${1:template}" import ${2:name}${3: as ${4:$2}} %} -endsnippet - - -snippet filter "filter" b -{% filter ${1:filter} %} - $2 -{% endfilter %} -endsnippet - - -# Being able to quickly remove the whole 'else' block seems faster to me than -# choosing between 'for' and 'for/else' snippets from the menu. -# snippet for "for" b -# {% for ${1:item} in ${2:sequence} %} -# $3${4: -# {% else %} -# $5} -# {% endfor %} -# endsnippet - - -snippet for "for" b -{% for ${1:item} in ${2:sequence} %} - $3 -{% endfor %} -endsnippet - - -snippet for "for/else" b -{% for ${1:item} in ${2:sequence} %} - $3 -{% else %} - $4 -{% endfor %} -endsnippet - - -snippet if "if" b -{% if ${1:expr} %} - $2 -{% endif %} -endsnippet - - -snippet if "if/else" b -{% if ${1:expr} %} - $2 -{% else %} - $3 -{% endif %} -endsnippet - - -snippet if "if/elif/else" b -{% if ${1:expr} %} - $2 -{% elif %} - $3 -{% else %} - $4 -{% endif %} -endsnippet - - -snippet macro "macro" b -{% macro ${1:name}(${2:args}) %} - $3 -{% endmacro %} -endsnippet - - -snippet call "call" b -{% call ${1:name}(${2:args}) %} - $3 -{% endcall %} -endsnippet - - -snippet set "set" b -{% set ${1:name} = ${2:'value'} %} -endsnippet - - -snippet trans "translation" b -{% trans %} - $1 -{% endtrans %} -endsnippet - - -snippet with "with" b -{% with %} - $1 -{% endwith %} -endsnippet - -snippet autoescape "autoescape" b -{% autoescape ${1:true} %} - $2 -{% endautoescape %} -endsnippet - -# Filters -# @todo: expand only when snippet is preceeded by a | - -snippet batch "batch items" w -batch(linecount=$1, fill_with=${2:None}) -endsnippet - - -snippet dictsort "sort and yield (key, value) pairs" w -dictsort(case_sensitive=${1:False}, by=${2:'key'}) -endsnippet - - -snippet round "round number" w -round(precision=${1:0}, method=${2:'common|ceil|floor'}) -endsnippet - - -snippet urlize "convert plain-text url to " w -urlize(trim_url_limit=${1:None}, nofollow=${2:False}) -endsnippet - - -snippet wordwrap "wordwrap" w -wordwrap(width=${1:79}, break_long_words=${2:True}) -endsnippet - - -snippet truncate "truncate" w -truncate(lenght=${1:79}, killwords=${2:False}, end=${3:'...''}) -endsnippet - - -snippet sum "sum of sequence of numbers + start" w -sum(attribute=${1:None}, start=${2:0}) -endsnippet - - -snippet sort "sort an iterable" w -sort(reverse=${1:False}, case_sensitive=${2:False}, attribute=${3:None}) -endsnippet - - -snippet indent "indent" w -indent(width=${1:4}, indentfirst=${2:False}) -endsnippet - - -# vim:ft=snippets: diff --git a/UltiSnips/json.snippets b/UltiSnips/json.snippets deleted file mode 100644 index b0cad83..0000000 --- a/UltiSnips/json.snippets +++ /dev/null @@ -1,20 +0,0 @@ -priority -50 - -snippet s "String" b -"${1:key}": "${0:value}", -endsnippet - -snippet n "number" b -"${1:key}": ${0:value}, -endsnippet - -snippet a "Array" b -[ - ${VISUAL}$0 -], -endsnippet -snippet o "Object" b -{ - ${VISUAL}$0 -}, -endsnippet diff --git a/UltiSnips/ledger.snippets b/UltiSnips/ledger.snippets deleted file mode 100644 index 4bf4691..0000000 --- a/UltiSnips/ledger.snippets +++ /dev/null @@ -1,8 +0,0 @@ -priority -50 - -snippet t "Transaction" b -${1:`!v strftime("%Y")`}-${2:`!v strftime("%m")`}-${3:`!v strftime("%d")`} ${4:*} ${5:Payee} - ${6:Expenses} \$${7:0.00} - ${8:Assets:Checking} -$0 -endsnippet diff --git a/UltiSnips/lhaskell.snippets b/UltiSnips/lhaskell.snippets deleted file mode 100644 index 29169a5..0000000 --- a/UltiSnips/lhaskell.snippets +++ /dev/null @@ -1,3 +0,0 @@ -priority -50 - -extends haskell diff --git a/UltiSnips/lua.snippets b/UltiSnips/lua.snippets deleted file mode 100644 index bc59c60..0000000 --- a/UltiSnips/lua.snippets +++ /dev/null @@ -1,39 +0,0 @@ -priority -50 - -################################# -# Snippets for the Lua language # -################################# -snippet #! "Shebang header" b -#!/usr/bin/env lua -$0 -endsnippet - -snippet !fun(ction)?! "New function" br -function ${1:new_function}(${2:args}) - $0 -end -endsnippet - -snippet forp "pair for loop" b -for ${1:name},${2:val} in pairs(${3:table_name}) do - $0 -end -endsnippet - -snippet fori "ipair for foop" b -for ${1:idx},${2:val} in ipairs(${3:table_name}) do - $0 -end -endsnippet - -snippet for "numeric for loop" b -for ${1:i}=${2:first},${3:last}${4/^..*/(?0:,:)/}${4:step} do - $0 -end -endsnippet - -snippet local "local x = 1" -local ${1:x} = ${0:1} -endsnippet - -# vim:ft=snippets: diff --git a/UltiSnips/mako.snippets b/UltiSnips/mako.snippets deleted file mode 100644 index fb31ec8..0000000 --- a/UltiSnips/mako.snippets +++ /dev/null @@ -1,92 +0,0 @@ -priority -50 - -################# -# From snipmate # -################# -snippet def "definition" b -<%def name="${1:name}"> - ${2:} - -endsnippet - -snippet call "call" b -<%call expr="${1:name}"> - ${2:} - -endsnippet - -snippet doc "doc" b -<%doc> - ${1:} - -endsnippet - -snippet text "text" b -<%text> - ${1:} - -endsnippet - -snippet for "for" b -% for ${1:i} in ${2:iter}: - ${3:} -% endfor -endsnippet - -snippet if "if " b -% if ${1:condition}: - ${2:} -% endif -endsnippet - -snippet if "if/else" b -% if ${1:condition}: - ${2:} -% else: - ${3:} -% endif -endsnippet - -snippet try "try" b -% try: - ${1:} -% except${2:}: - ${3:pass} -% endtry -endsnippet - -snippet wh "wh" b -% while ${1:}: - ${2:} -% endwhile -endsnippet - -snippet $ "$" i -${${1:}} -endsnippet - -snippet <% "<%" b -<% ${1:} %> -endsnippet - -snippet -endsnippet - -snippet inherit "inherit" b -<%inherit file="${1:filename}" /> -endsnippet - -snippet include "include" b -<%include file="${1:filename}" /> -endsnippet - -snippet namespace "namespace" b -<%namespace file="${1:name}" /> -endsnippet - -snippet page "page" b -<%page args="${1:}" /> -endsnippet - -# vim:ft=snippets: diff --git a/UltiSnips/markdown.snippets b/UltiSnips/markdown.snippets deleted file mode 100644 index fa708ab..0000000 --- a/UltiSnips/markdown.snippets +++ /dev/null @@ -1,42 +0,0 @@ -priority -50 - -########################### -# Sections and Paragraphs # -########################### -snippet sec "Section" b -# ${1:Section Name} # -$0 -endsnippet - -snippet ssec "Sub Section" b -## ${1:Section Name} ## -$0 -endsnippet - -snippet sssec "SubSub Section" b -### ${1:Section Name} ### -$0 -endsnippet - -snippet par "Paragraph" b -#### ${1:Paragraph Name} #### -$0 -endsnippet - -snippet spar "Paragraph" b -##### ${1:Paragraph Name} ##### -$0 -endsnippet - -################ -# Common stuff # -################ -snippet link "Link to something" -[${1:${VISUAL:Text}}](${3:http://${2:www.url.com}})$0 -endsnippet - -snippet img "Image" -![${1:pic alt}](${2:path}${3/.+/ "/}${3:opt title}${3/.+/"/})$0 -endsnippet - -# vim:ft=snippets: diff --git a/UltiSnips/objc.snippets b/UltiSnips/objc.snippets deleted file mode 100644 index 45e41fc..0000000 --- a/UltiSnips/objc.snippets +++ /dev/null @@ -1,272 +0,0 @@ -priority -50 - -########################################################################### -# TextMate Snippets # -########################################################################### - -snippet imp "#import (imp)" b -#import "${1:`!p snip.rv = re.sub(r'\..*$', '.h', fn)`}" -endsnippet - -snippet Imp "#import <> (Imp)" -#import <${1:Cocoa/Cocoa.h}> -endsnippet - -snippet cl "020 Class (objc)" -@interface ${1:`!p -if len(fn): - snip.rv = re.sub(r'\..*$', '', fn) -else: - snip.rv = "object" -`} : ${2:NSObject} -{ -} -@end - -@implementation $1 -- (id)init -{ - if((self = [super init])) - {$0 - } - return self; -} -@end -endsnippet - -snippet array "NSArray (array)" -NSMutableArray *${1:array} = [NSMutableArray array]; -endsnippet - -snippet dict "NSDictionary (dict)" -NSMutableDictionary *${1:dict} = [NSMutableDictionary dictionary]; -endsnippet - -snippet forarray "for NSArray loop (forarray)" -unsigned int ${1:object}Count = [${2:array} count]; - -for(unsigned int index = 0; index < $1Count; index += 1) -{ - ${3:id} $1 = [$2 objectAtIndex:index]; - $0 -} -endsnippet - -snippet objacc "Object Accessors (objacc)" -- (${1:id})${2:thing} -{ - return $2; -} - -- (void)set${2/./\u$0/}:($1)aValue -{ - $0${1/( \*)?$/(?1:$1: )/}old${2/./\u$0/} = $2; - $2 = [aValue retain]; - [old${2/./\u$0/} release]; -} -endsnippet - -snippet sel "@selector" -@selector(${1:method}:) -endsnippet - -snippet cdacc "CoreData Accessors Implementation" -- (${1:id})${2:attribute} -{ - [self willAccessValueForKey:@"$2"]; - $1 value = [self primitiveValueForKey:@"$2"]; - [self didAccessValueForKey:@"$2"]; - return value; -} - -- (void)set${2/./\u$0/}:($1)aValue -{ - [self willChangeValueForKey:@"$2"]; - [self setPrimitiveValue:aValue forKey:@"$2"]; - [self didChangeValueForKey:@"$2"]; -} -endsnippet - -snippet delegate "Delegate Responds to Selector" -if([${1:[self delegate]} respondsToSelector:@selector(${2:selfDidSomething:})]) - [$1 ${3:${2/((^\s*([A-Za-z0-9_]*:)\s*)|(:\s*$)|(:\s*))/(?2:$2self :\:<>)(?4::)(?5: :)/g}}]; - -endsnippet - -snippet thread "Detach New NSThread" -[NSThread detachNewThreadSelector:@selector(${1:method}:) toTarget:${2:aTarget} withObject:${3:anArgument}] -endsnippet - -snippet ibo "IBOutlet (ibo)" -IBOutlet ${1:NSSomeClass} *${2:${1/^[A-Z](?:[A-Z]+|[a-z]+)([A-Z]\w*)/\l$1/}}; -endsnippet - -snippet I "Initialize Implementation (I)" -+ (void)initialize -{ - [[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys: - $0@"value", @"key", - nil]]; -} -endsnippet - -snippet bind "Key:value binding (bind)" -bind:@"${1:binding}" toObject:${2:observableController} withKeyPath:@"${3:keyPath}" options:${4:nil} -endsnippet - -snippet arracc "LoD array (arracc)" -- (void)addObjectTo${1:Things}:(${2:id})anObject -{ - [${3:${1/./\l$0/}} addObject:anObject]; -} - -- (void)insertObject:($2)anObject in$1AtIndex:(unsigned int)i -{ - [$3 insertObject:anObject atIndex:i]; -} - -- ($2)objectIn$1AtIndex:(unsigned int)i -{ - return [$3 objectAtIndex:i]; -} - -- (unsigned int)indexOfObjectIn$1:($2)anObject -{ - return [$3 indexOfObject:anObject]; -} - -- (void)removeObjectFrom$1AtIndex:(unsigned int)i -{ - [$3 removeObjectAtIndex:i]; -} - -- (unsigned int)countOf$1 -{ - return [$3 count]; -} - -- (NSArray *${1/./\l$0/} -{ - return $3; -} - -- (void)set$1:(NSArray *)new$1 -{ - [$3 setArray:new$1]; -} -endsnippet - -snippet arracc "LoD array interface (arracc)" -- (void)addObjectTo${1:Things}:(${2:id})anObject; -- (void)insertObject:($2)anObject in$1AtIndex:(unsigned int)i; -- ($2)objectIn$1AtIndex:(unsigned int)i; -- (unsigned int)indexOfObjectIn$1:($2)anObject; -- (void)removeObjectFrom$1AtIndex:(unsigned int)i; -- (unsigned int)countOf$1; -- (NSArray *)${1/./\l$0/}; -- (void)set$1:(NSArray *)new$1; -endsnippet - -snippet focus "Lock Focus" -[self lockFocus]; -$0 -[self unlockFocus]; -endsnippet - -snippet pool "NSAutoreleasePool (pool)" -NSAutoreleasePool *pool = [NSAutoreleasePool new]; -$0 -[pool drain]; -endsnippet - -snippet log "NSLog (log) 2" -NSLog(@"$1"${1/[^%]*(%)?.*/(?1:, :\);)/}$2${1/[^%]*(%)?.*/(?1:\);)/} -endsnippet - -snippet alert "NSRunAlertPanel (alert)" -int choice = NSRunAlertPanel(@"${1:Something important!}", @"${2:Something important just happend, and now I need to ask you, do you want to continue?}", @"${3:Continue}", @"${4:Cancel}", nil); -if(choice == NSAlertDefaultReturn) // "$3" -{ - $0; -} -else if(choice == NSAlertAlternateReturn) // "$4" -{ - $0 -} -endsnippet - -snippet format "NSString stringWithFormat (format)" -[NSString stringWithFormat:@"$1", $2]$0 -endsnippet - -snippet objacc "Object Accessors Interface (objacc)" -- (${1:id})${2:thing}; -- (void)set${2/./\u$0/}:($1)aValue; -endsnippet - -snippet prop "Property" -@property (${1/^(e)$|.*/(?1:r)/}${1:r}${1/^(?:(r)|(e)|(c)|(a))$|.*/(?1:etain)(?2:adonly)(?3:opy)(?4:ssign)/}) ${2:NSSomeClass}$ *${3:${2/^[A-Z](?:[A-Z]+|[a-z]+)([A-Z]\w*)/\l$1/}}; -endsnippet - -snippet getprefs "Read from defaults (getprefs)" -[[NSUserDefaults standardUserDefaults] objectForKey:${1:key}]; -endsnippet - -snippet obs "Register for Notification" -[[NSNotificationCenter defaultCenter] addObserver:${1:self} selector:@selector(${3:${2/^([A-Z]{2})?(.+?)(Notification)?$/\l$2/}}:) name:${2:NSWindowDidBecomeMainNotification} object:${4:nil}]; -endsnippet - -snippet responds "Responds to Selector" -if ([${1:self} respondsToSelector:@selector(${2:someSelector:})]) -{ - [$1 ${3:${2/((:\s*$)|(:\s*))/:<>(?3: )/g}}]; -} -endsnippet - -snippet gsave "Save and Restore Graphics Context (gsave)" -[NSGraphicsContext saveGraphicsState]; -$0 -[NSGraphicsContext restoreGraphicsState]; - -endsnippet - -snippet acc "Scalar Accessors (acc)" -- (${1:unsigned int})${2:thing} -{ - return ${3:$2}; -} - -- (void)set${2/./\u$0/}:(${1:unsigned int})new${2/./\u$0/} -{ - $3 = new${2/./\u$0/}; -} -endsnippet - -snippet acc "Scalar Accessors Interface (acc)" -- (${1:unsigned int})${2:thing}; -- (void)set${2/./\u$0/}:($1)new${2/./\u$0/}; -endsnippet - -snippet stracc "String Accessors (stracc)" -- (NSString *)${1:thing} -{ - return ${2:$1}; -} - -- (void)set${1/.*/\u$0/}:(NSString *)/})${3:a${1/.*/\u$0/}} -{ - $3 = [$3 copy]; - [$2 release]; - $2 = $3; -} -endsnippet - -snippet syn "Synthesize" -@synthesize ${1:property}; -endsnippet - -snippet setprefs "Write to defaults (setprefs)" -[[NSUserDefaults standardUserDefaults] setObject:${1:object} forKey:${2:key}]; -endsnippet - -# vim:ft=snippets: diff --git a/UltiSnips/ocaml.snippets b/UltiSnips/ocaml.snippets deleted file mode 100644 index 1ebc347..0000000 --- a/UltiSnips/ocaml.snippets +++ /dev/null @@ -1,174 +0,0 @@ -priority -50 - -snippet rs "raise" b -raise (${1:Not_found}) -endsnippet - -snippet open "open" -let open ${1:module} in -${2:e} -endsnippet - -snippet try "try" -try ${1:e} -with ${2:Not_found} -> ${3:()} -endsnippet - -snippet ref "ref" -let ${1:name} = ref ${2:val} in -${3:e} -endsnippet - -snippet matchl "pattern match on a list" -match ${1:list} with -| [] -> ${2:()} -| x::xs -> ${3:()} -endsnippet - -snippet matcho "pattern match on an option type" -match ${1:x} with -| Some(${2:y}) -> ${3:()} -| None -> ${4:()} -endsnippet - -snippet fun "anonymous function" -(fun ${1:x} -> ${2:x}) -endsnippet - -snippet cc "commment" -(* ${1:comment} *) -endsnippet - -snippet let "let .. in binding" -let ${1:x} = ${2:v} in -${3:e} -endsnippet - -snippet lr "let rec" -let rec ${1:f} = - ${2:expr} -endsnippet - -snippet if "if" -if ${1:(* condition *)} then - ${2:(* A *)} -else - ${3:(* B *)} -endsnippet - -snippet If "If" -if ${1:(* condition *)} then - ${2:(* A *)} -endsnippet - -snippet while "while" -while ${1:(* condition *)} do - ${2:(* A *)} -done -endsnippet - -snippet for "for" -for ${1:i} = ${2:1} to ${3:10} do - ${4:(* BODY *)} -done -endsnippet - -snippet match "match" -match ${1:(* e1 *)} with -| ${2:p} -> ${3:e2} -endsnippet - -snippet Match "match" -match ${1:(* e1 *)} with -| ${2:p} -> ${3:e2} -endsnippet - -snippet class "class" -class ${1:name} = object - ${2:methods} -end -endsnippet - -snippet obj "obj" -object - ${2:methods} -end -endsnippet - -snippet Obj "object" -object (self) - ${2:methods} -end -endsnippet - -snippet {{ "object functional update" -{< ${1:x} = ${2:y} >} -endsnippet - -snippet beg "beg" -begin - ${1:block} -end -endsnippet - -snippet ml "module instantiantion with functor" -module ${1:Mod} = ${2:Functor}(${3:Arg}) -endsnippet - -snippet mod "module - no signature" -module ${1:(* Name *)} = struct - ${2:(* BODY *)} -end -endsnippet - -snippet Mod "module with signature" -module ${1:(* Name *)} : ${2:(* SIG *)} = struct - ${3:(* BODY *)} -end -endsnippet - -snippet sig "anonymous signature" -sig - ${2:(* BODY *)} -end -endsnippet - -snippet sigf "functor signature or anonymous functor" -functor (${1:Arg} : ${2:ARG}) -> ${3:(* BODY *)} -endsnippet - -snippet func "define functor - no signature" -module ${1:M} (${2:Arg} : ${3:ARG}) = struct - ${4:(* BODY *)} -end -endsnippet - -snippet Func "define functor - with signature" -module ${1:M} (${2:Arg} : ${3:ARG}) : ${4:SIG} = struct - ${5:(* BODY *)} -end -endsnippet - -snippet mot "Declare module signature" -module type ${1:(* Name *)} = sig - ${2:(* BODY *)} -end -endsnippet - -snippet module "Module with anonymous signature" -module ${1:(* Name *)} : sig - ${2:(* SIGNATURE *)} -end = struct - ${3:(* BODY *)} -end -endsnippet - -snippet oo "odoc" -(** ${1:odoc} *) -endsnippet - -snippet qt "inline qtest" -(*$T ${1:name} - ${2:test} -*) -endsnippet diff --git a/UltiSnips/perl.snippets b/UltiSnips/perl.snippets deleted file mode 100644 index abaae3f..0000000 --- a/UltiSnips/perl.snippets +++ /dev/null @@ -1,132 +0,0 @@ -priority -50 - -########################################################################### -# TextMate Snippets # -########################################################################### -snippet ife "Conditional if..else (ife)" -if ($1) { - ${2:# body...} -} -else { - ${3:# else...} -} - -endsnippet - -snippet ifee "Conditional if..elsif..else (ifee)" -if ($1) { - ${2:# body...} -} -elsif ($3) { - ${4:# elsif...} -} -else { - ${5:# else...} -} - -endsnippet - -snippet xunless "Conditional one-line (unless)" -${1:expression} unless ${2:condition}; - -endsnippet - -snippet xif "Conditional one-line (xif)" -${1:expression} if ${2:condition}; - -endsnippet - -snippet sub "Function (sub)" -sub ${1:function_name} { - ${2:# body...} -} - -endsnippet - -snippet xfore "Loop one-line (xforeach)" -${1:expression} foreach @${2:array}; - -endsnippet - -snippet xwhile "Loop one-line (xwhile)" -${1:expression} while ${2:condition}; - -endsnippet - -snippet test "Test" -#!/usr/bin/env perl -w - -use strict; -use Test::More tests => ${1:1}; -use ${2:ModuleName}; - -ok(${3:assertion}); - -endsnippet - -snippet class "class" -package ${1:ClassName}; - -${2:use parent qw(${3:ParentClass});}${2/.+/\n\n/}sub new { - my $class = shift; - $class = ref $class if ref $class; - my $self = bless {}, $class; - $self; -} - -1; - -endsnippet - -snippet eval "eval" -local $@; -eval { - ${1:# do something risky...} -}; -if (my $${2:exception} = $@) { - ${3:# handle failure...} -} - -endsnippet - -snippet for "for" -for (my $${1:var} = 0; $$1 < ${2:expression}; $$1++) { - ${3:# body...} -} - -endsnippet - -snippet fore "foreach" -foreach ${1:my $${2:x}} (@${3:array}) { - ${4:# body...} -} - -endsnippet - -snippet if "if" -if ($1) { - ${2:# body...} -} - -endsnippet - -snippet slurp "slurp" -my $${1:var} = do { local $/ = undef; open my $fh, '<', ${2:$file}; <$fh> }; - -endsnippet - -snippet unless "unless" -unless ($1) { - ${2:# body...} -} - -endsnippet - -snippet while "while" -while ($1) { - ${2:# body...} -} - -endsnippet - -# vim:ft=snippets: diff --git a/UltiSnips/php.snippets b/UltiSnips/php.snippets deleted file mode 100644 index 24f6cc5..0000000 --- a/UltiSnips/php.snippets +++ /dev/null @@ -1,264 +0,0 @@ -priority -50 - -## Snippets from SnipMate, taken from -## https://github.com/scrooloose/snipmate-snippets.git - -snippet array "array" -$${1:arrayName} = array('${2}' => ${3});${4} -endsnippet - -snippet def "def" -define('${1}'${2});${3} -endsnippet - -snippet do "do" -do { - ${2:// code... } -} while (${1:/* condition */});" -endsnippet - -snippet doc_f "doc_f" -/** - * $2 - * @return ${4:void} - * @author ${5:`!v g:snips_author`} - **/ -${1:public }function ${2:someFunc}(${3}) -{${6} -} -endsnippet - -snippet doc_i "doc_i" -/** - * $1 - * @package ${2:default} - * @author ${3:`!v g:snips_author`} - **/ -interface ${1:someClass} -{${4} -} // END interface $1" -endsnippet - -snippet else "else" -else { - ${1:// code...} -} -endsnippet - -snippet for "for" -for ($${2:i} = 0; $$2 < ${1:count}; $$2${3:++}) { - ${4:// code...} -} -endsnippet - -snippet foreachk "foreachk" -foreach ($${1:variable} as $${2:key} => $${3:value}){ - ${4:// code...} -} -endsnippet - -snippet get "get" -$_GET['${1}']${2} -endsnippet - -snippet if "if" -if (${1:/* condition */}) { - ${2:// code...} -} -endsnippet - -snippet inc "inc" -include '${1:file}';${2} -endsnippet - -snippet log "log" -error_log(var_export(${1}, true));${2} -endsnippet - -snippet post "post" -$_POST['${1}']${2} -endsnippet - -snippet req1 "req1" -require_once '${1:file}';${2} -endsnippet - -snippet session "session" -$_SESSION['${1}']${2} -endsnippet - -snippet t "t" -$${1:retVal} = (${2:condition}) ? ${3:a} : ${4:b};${5} -endsnippet - -snippet var "var" -var_export(${1});${2} -endsnippet - -snippet getter "PHP Class Getter" b -/* - * Getter for $1 - */ -public function get${1/\w+\s*/\u$0/}() -{ - return $this->$1;$2 -} -$4 -endsnippet - -snippet setter "PHP Class Setter" b -/* - * Setter for $1 - */ -public function set${1/\w+\s*/\u$0/}($$1) -{ - $this->$1 = $$1;$3 - ${4:return $this;} -} -$0 -endsnippet - -snippet gs "PHP Class Getter Setter" b -/* - * Getter for ${1/(\w+)\s*;/$1/} - */ -public function get${1/(\w+)\s*;/\u$1/}() -{ - return $this->${1/(\w+)\s*;/$1/};$2 -} - -/* - * Setter for ${1/(\w+)\s*;/$1/} - */ -public function set${1/(\w+)\s*;/\u$1/}($${1/(\w+)\s*;/$1/}) -{ - $this->${1/(\w+)\s*;/$1/} = $${1/(\w+)\s*;/$1/};$3 - ${4:return $this;} -} -$0 -endsnippet - -snippet pub "Public function" b -public function ${1:name}(${2:$param}) -{ - ${VISUAL}${3:return null;} -} -$0 -endsnippet - -snippet pro "Protected function" b -protected function ${1:name}(${2:$param}) -{ - ${VISUAL}${3:return null;} -} -$0 -endsnippet - -snippet pri "Private function" b -private function ${1:name}(${2:$param}) -{ - ${VISUAL}${3:return null;} -} -$0 -endsnippet - -snippet pubs "Public static function" b -public static function ${1:name}(${2:$param}) -{ - ${VISUAL}${3:return null;} -} -$0 -endsnippet - -snippet pros "Protected static function" b -protected static function ${1:name}(${2:$param}) -{ - ${VISUAL}${3:return null;} -} -$0 -endsnippet - -snippet pris "Private static function" b -private static function ${1:name}(${2:$param}) -{ - ${VISUAL}${3:return null;} -} -$0 -endsnippet - -snippet fu "Function snip" b -function ${1:name}(${2:$param}) -{ - ${VISUAL}${3:return null;} -} -$0 -endsnippet - -snippet fore "Foreach loop" -foreach ($${1:variable} as $${3:value}){ - ${VISUAL}${4} -} -$0 -endsnippet - -snippet new "New class instance" b -$$1 = new $1($2); -$0 -endsnippet - -snippet ife "if else" -if (${1:/* condition */}) { - ${2:// code...} -} else { - ${3:// code...} -} -$0 -endsnippet - -snippet class "Class declaration template" b -/** - * Class ${1:`!p snip.rv=snip.fn.split('.')[0]`} - * @author ${2:`!v g:snips_author`} - */ -class $1 -{ - public function ${3:__construct}(${4:$options}) - { - ${4:// code} - } -} -$0 -endsnippet - -snippet construct "__construct()" b -/** - * @param $2mixed ${1/, /\n * \@param mixed /g} - */ -public function __construct(${1:$dependencies}) -{${1/\$(\w+)(, )*/\n $this->$1 = $$1;/g} -} -$0 -endsnippet - -snippet pr "Dumb debug helper in HTML" -echo '
    ' . var_export($1, 1) . '
    ';$0 -endsnippet - -snippet pc "Dumb debug helper in cli" -var_export($1);$0 -endsnippet - -# Symfony 2 based snippets -snippet sfa "Symfony 2 Controller action" -/** -* @Route("/${1:route_name}", name="$1") -* @Template() -*/ -public function $1Action($2) -{ - $3 - return ${4:array();}$0 -} -endsnippet - -# :vim:ft=snippets: diff --git a/UltiSnips/puppet.snippets b/UltiSnips/puppet.snippets deleted file mode 100644 index a8fc1ed..0000000 --- a/UltiSnips/puppet.snippets +++ /dev/null @@ -1,232 +0,0 @@ -priority -50 - -######################################################################### -# Python helper code # -######################################################################### - -global !p -import vim -import os.path -def get_module_namespace_and_basename(): - """This function will try to guess the current class or define name you are - trying to create. Note that for this to work you should be using the module - structure as per the style guide. Examples inputs and it's output - * /home/nikolavp/puppet/modules/collectd/manifests/init.pp -> collectd - * /home/nikolavp/puppet/modules/collectd/manfistes/mysql.pp -> collectd::mysql - """ - first_time = True - current_file_path_without_ext = vim.eval('expand("%:p:r")') or "" - if not current_file_path_without_ext: - return "name" - parts = os.path.split(current_file_path_without_ext) - namespace = '' - while parts[0] and parts[0] != '/': - if parts[1] == 'init' and first_time and not namespace: - first_time = False - parts = os.path.split(parts[0]) - continue - if parts[1] == 'manifests': - return os.path.split(parts[0])[1] + ('::' + namespace).rstrip(':') - else: - namespace = parts[1] + '::' + namespace - parts = os.path.split(parts[0]) - # couldn't guess the namespace. The user is editing a raw file in no module like the site.pp file - return "name" -endglobal - -############################################################################### -# Puppet Language Constructs # -# See http://docs.puppetlabs.com/puppet/latest/reference/lang_summary.html # -############################################################################### - -snippet class "Class declaration" b -class ${1:`!p snip.rv = get_module_namespace_and_basename()`} { - ${0:# body} -} -endsnippet - -snippet define "Definition" b -define ${1:`!p snip.rv = get_module_namespace_and_basename()`} { - ${0:# body} -} -endsnippet - -################################################################# -# Puppet Types # -# See http://docs.puppetlabs.com/references/latest/type.html # -################################################################# - -snippet cron "Cron resource type" b -cron { '${1:name}': - user => ${2:user}, - command => '${3:command}', - minute => ${3:minute}, - hour => ${4:hour}, -} -endsnippet - -snippet exec "Exec resource type" b -exec { '${1:command}': - refreshonly => true, -} -endsnippet - -snippet file "File resource type" b -file { '${1:name}': - source => "puppet://${2:path}", - mode => ${3:mode}, -endsnippet - -snippet File "Defaults for file" b -File { - owner => ${1:username}, - group => ${2:groupname}, -} -endsnippet - -snippet group "Group resource type" b -group { '${1:groupname}': - ensure => ${3:present}, - gid => ${2:gid}, -endsnippet - -snippet mount "Mount resource type" b -mount { '${1:path}': - device => '${2:/dev}', - fstype => '${3:filesystem}', - ensure => mounted, - options => 'rw,errors=remount-ro', -} -endsnippet - -snippet package "Package resource type" b -package { '${1:name}': - ensure => ${2:installed}, -} -endsnippet - -snippet user "user resource type" b -user { '${1:username}': - ensure => ${2:present}, - uid => ${3:uid}, - gid => ${4:gid}, - comment => ${5:gecos}, - home => ${6:homedirectory}, - managehome => false, - require => Group['${7:group'}], -endsnippet - -snippet service "Service resource type" b -service { '${1:name}': - hasstatus => true, - enable => true, - ensure => running, -} -endsnippet - -######################################################################## -# Puppet Functions # -# See http://docs.puppetlabs.com/references/latest/function.html # -######################################################################## - -snippet alert "Alert Function" b -alert("${1:message}")${0} -endsnippet - -snippet crit "Crit Function" b -crit("${1:message}")${0} -endsnippet - -snippet debug "Debug Function" b -debug("${1:message}")${0} -endsnippet - -snippet defined "Defined Function" b -defined(${1:Resource}["${2:name}"])${0} -endsnippet - -snippet emerg "Emerg Function" b -emerg("${1:message}")${0} -endsnippet - -snippet extlookup "Simple Extlookup" b -$${1:Variable} = extlookup("${2:Lookup}")${0} -endsnippet - -snippet extlookup "Extlookup with defaults" b -$${1:Variable} = extlookup("${2:Lookup}", ${3:Default})${0} -endsnippet - -snippet extlookup "Extlookup with defaults and custom data file" b -$${1:Variable} = extlookup("${2:Lookup}", ${3:Default}, ${4:Data Source})${0} -endsnippet - -snippet fail "Fail Function" b -fail("${1:message}")${0} -endsnippet - -snippet hiera "Hiera Function" b -$${1:Variable} = hiera("${2:Lookup}")${0} -endsnippet - -snippet hiera "Hiera with defaults" b -$${1:Variable} = hiera("${2:Lookup}", ${3:Default})${0} -endsnippet - -snippet hiera "Hiera with defaults and override" b -$${1:Variable} = hiera("${2:Lookup}", ${3:Default}, ${4:Override})${0} -endsnippet - -snippet hiera_hash "Hiera Hash Function" b -$${1:Variable} = hiera_hash("${2:Lookup}")${0} -endsnippet - -snippet hiera_hash "Hiera Hash with defaults" b -$${1:Variable} = hiera_hash("${2:Lookup}", ${3:Default})${0} -endsnippet - -snippet hiera_hash "Hiera Hash with defaults and override" b -$${1:Variable} = hiera_hash("${2:Lookup}", ${3:Default}, ${4:Override})${0} -endsnippet - -snippet hiera_include "Hiera Include Function" b -hiera_include("${1:Lookup}")${0} -endsnippet - -snippet include "Include Function" b -include ${1:classname}${0} -endsnippet - -snippet info "Info Function" b -info("${1:message}")${0} -endsnippet - -snippet inline_template "Inline Template Function" b -inline_template("<%= ${1:template} %>")${0} -endsnippet - -snippet notice "Notice Function" b -notice("${1:message}")${0} -endsnippet - -snippet realize "Realize Function" b -realize(${1:Resource}["${2:name}"])${0} -endsnippet - -snippet regsubst "Regsubst Function" b -regsubst($${1:Target}, '${2:regexp}', '${3:replacement}')${0} -endsnippet - -snippet split "Split Function" b -$${1:Variable} = split($${1:Target}, '${2:regexp}')${0} -endsnippet - -snippet versioncmp "Version Compare Function" b -$${1:Variable} = versioncmp('${1:version}', '${2:version}')${0} -endsnippet - -snippet warning "Warning Function" b -warning("${1:message}")${0} -endsnippet - -# vim:ft=snippets: diff --git a/UltiSnips/python.snippets b/UltiSnips/python.snippets deleted file mode 100644 index 357d01d..0000000 --- a/UltiSnips/python.snippets +++ /dev/null @@ -1,533 +0,0 @@ -priority -50 - -########################################################################### -# TEXTMATE SNIPPETS # -########################################################################### - -#! header -snippet #! "Shebang header for python scripts" b -#!/usr/bin/env python -# encoding: utf-8 -$0 -endsnippet - -snippet ifmain "ifmain" b -if __name__ == '__main__': - ${1:main()}$0 -endsnippet - -snippet for "for loop" b -for ${1:item} in ${2:iterable}: - ${3:pass} -endsnippet - -########## -# COMMON # -########## - -# The smart def and smart class snippets use a global option called -# "g:ultisnips_python_style" which, if set to "doxygen" will use doxygen -# style comments in docstrings. - -global !p - -NORMAL = 0x1 -DOXYGEN = 0x2 -SPHINX = 0x3 - -SINGLE_QUOTES = 0x1 -DOUBLE_QUOTES = 0x2 - -def get_args(arglist): - args = [arg.split('=')[0].strip() for arg in arglist.split(',') if arg] - args = [arg for arg in args if arg and arg != "self"] - - return args - - -def get_quoting_style(snip): - style = snip.opt("g:ultisnips_python_quoting_style", "double") - if style == 'single': - return SINGLE_QUOTES - return DOUBLE_QUOTES - -def tripple_quotes(snip): - if get_quoting_style(snip) == SINGLE_QUOTES: - return "'''" - return '"""' - -def get_style(snip): - style = snip.opt("g:ultisnips_python_style", "normal") - - if style == "doxygen": return DOXYGEN - elif style == "sphinx": return SPHINX - else: return NORMAL - - -def format_arg(arg, style): - if style == DOXYGEN: - return "@param %s @todo" % arg - elif style == SPHINX: - return ":param %s: @todo" % arg - elif style == NORMAL: - return ":%s: @todo" % arg - - -def format_return(style): - if style == DOXYGEN: - return "@return: @todo" - elif style in (NORMAL, SPHINX): - return ":returns: @todo" - - -def write_docstring_args(args, snip): - if not args: - snip.rv += ' {0}'.format(tripple_quotes(snip)) - return - - snip.rv += '\n' + snip.mkline('', indent='') - - style = get_style(snip) - - for arg in args: - snip += format_arg(arg, style) - - -def write_init_body(args, parents, snip): - parents = [p.strip() for p in parents.split(",")] - parents = [p for p in parents if p != 'object'] - - for p in parents: - snip += p + ".__init__(self)" - - if parents: - snip.rv += '\n' + snip.mkline('', indent='') - - for arg in args: - snip += "self._%s = %s" % (arg, arg) - - -def write_slots_args(args, snip): - args = ['"_%s"' % arg for arg in args] - snip += '__slots__ = (%s,)' % ', '.join(args) - -endglobal - -######################################## -# Class & Special Method Name Snippets # -######################################## - -snippet class "class with docstrings" b -class ${1:MyClass}(${2:object}): - - `!p snip.rv = tripple_quotes(snip)`${3:Docstring for $1. }`!p snip.rv = tripple_quotes(snip)` - - def __init__(self$4): - `!p snip.rv = tripple_quotes(snip)`${5:@todo: to be defined1.}`!p -snip.rv = "" -snip >> 2 - -args = get_args(t[4]) - -write_docstring_args(args, snip) -if args: - snip.rv += '\n' + snip.mkline('', indent='') - snip += '{0}'.format(tripple_quotes(snip)) - -write_init_body(args, t[2], snip) -` - $0 -endsnippet - - -snippet slotclass "class with slots and docstrings" b -class ${1:MyClass}(${2:object}): - - `!p snip.rv = tripple_quotes(snip)`${3:Docstring for $1. }`!p snip.rv = tripple_quotes(snip)` -`!p -snip >> 1 -args = get_args(t[4]) -write_slots_args(args, snip) -` - - def __init__(self$4): - `!p snip.rv = tripple_quotes(snip)`${5:@todo: to be defined.}`!p -snip.rv = "" -snip >> 2 - -args = get_args(t[4]) - -write_docstring_args(args, snip) -if args: - snip.rv += '\n' + snip.mkline('', indent='') - snip += tripple_quotes(snip) - -write_init_body(args, t[2], snip) -` - $0 -endsnippet - - -snippet contain "methods for emulating a container type" b -def __len__(self): - ${1:pass} - -def __getitem__(self, key): - ${2:pass} - -def __setitem__(self, key, value): - ${3:pass} - -def __delitem__(self, key): - ${4:pass} - -def __iter__(self): - ${5:pass} - -def __reversed__(self): - ${6:pass} - -def __contains__(self, item): - ${7:pass} -endsnippet - - -snippet context "context manager methods" b -def __enter__(self): - ${1:pass} - -def __exit__(self, exc_type, exc_value, traceback): - ${2:pass} -endsnippet - - -snippet attr "methods for customizing attribute access" b -def __getattr__(self, name): - ${1:pass} - -def __setattr__(self, name, value): - ${2:pass} - -def __delattr__(self, name): - ${3:pass} -endsnippet - - -snippet desc "methods implementing descriptors" b -def __get__(self, instance, owner): - ${1:pass} - -def __set__(self, instance, value): - ${2:pass} - -def __delete__(self, instance): - ${3:pass} -endsnippet - - -snippet cmp "methods implementing rich comparison" -def __eq__(self, other): - ${1:pass} - -def __ne__(self, other): - ${2:pass} - -def __lt__(self, other): - ${3:pass} - -def __le__(self, other): - ${4:pass} - -def __gt__(self, other): - ${5:pass} - -def __ge__(self, other): - ${6:pass} - -def __cmp__(self, other): - ${7:pass} -endsnippet - - -snippet repr "methods implementing string representation" -def __repr__(self): - ${1:pass} - -def __str__(self): - ${2:pass} - -def __unicode__(self): - ${3:pass} -endsnippet - - -# note: reflected operands and augmented arithmeitc assignements have been -# intentionally ommited to reduce verbosity. -snippet numeric "methods for emulating a numeric type" b -def __add__(self, other): - ${1:pass} - -def __sub__(self, other): - ${2:pass} - -def __mul__(self, other): - ${3:pass} - -def __div__(self, other): - ${4:pass} - -def __truediv__(self, other): - ${5:pass} - -def __floordiv__(self, other): - ${6:pass} - - -def __mod__(self, other): - ${7:pass} - -def __divmod__(self, other): - ${8:pass} - -def __pow__(self, other): - ${9:pass} - - -def __lshift__(self, other): - ${10:pass} - -def __rshift__(self, other): - ${11:pass} - -def __and__(self, other): - ${12:pass} - -def __xor__(self, other): - ${13:pass} - -def __or__(self, other): - ${14:pass} - - -def __neg__(self): - ${15:pass} - -def __pos__(self): - ${16:pass} - -def __abs__(self): - ${17:pass} - -def __invert__(self): - ${18:pass} - - -def __complex__(self): - ${19:pass} - -def __int__(self): - ${20:pass} - -def __long__(self): - ${21:pass} - -def __float__(self): - ${22:pass} - - -def __oct__(self): - ${22:pass} - -def __hex__(self): - ${23:pass} - - -def __index__(self): - ${24:pass} - -def __coerce__(self, other): - ${25:pass} -endsnippet - -snippet def "function with docstrings" b -def ${1:function}(`!p -if snip.indent: - snip.rv = 'self' + (", " if len(t[2]) else "")`${2:arg1}): - `!p snip.rv = tripple_quotes(snip)`${4:@todo: Docstring for $1.}`!p -snip.rv = "" -snip >> 1 - -args = get_args(t[2]) -if args: - write_docstring_args(args, snip) - -style = get_style(snip) -snip += format_return(style) -snip.rv += '\n' + snip.mkline('', indent='') -snip += tripple_quotes(snip) ` - ${0:pass} -endsnippet - - -# doesn't expand when there is a word in front -snippet /(^|(?<=\W))\./ "self." r -self. -endsnippet - -snippet from "from module import name" b -from ${1:module} import ${2:Stuff} -endsnippet - - -############## -# PROPERTIES # -############## -snippet roprop "Read Only Property" b -@property -def ${1:name}(self): - ${2:return self._$1}$0 -endsnippet - -snippet rwprop "Read write property" b -def ${1:name}(): - `!p snip.rv = tripple_quotes(snip) if t[2] else '' -`${2:@todo: Docstring for $1.}`!p -if t[2]: - snip >> 1 - - style = get_style(snip) - snip.rv += '\n' + snip.mkline('', indent='') - snip += format_return(style) - snip.rv += '\n' + snip.mkline('', indent='') - snip += tripple_quotes(snip) -else: - snip.rv = ""` - def fget(self): - return self._$1$0 - - def fset(self, value): - self._$1 = value - return locals() - -$1 = property(**$1(), doc=$1.__doc__) -endsnippet - - -#################### -# If / Else / Elif # -#################### -snippet if "If" b -if ${1:condition}: - ${2:pass} -endsnippet - -snippet ife "If / Else" b -if ${1:condition}: - ${2:pass} -else: - ${3:pass} -endsnippet - -snippet ifee "If / Elif / Else" b -if ${1:condition}: - ${2:pass} -elif ${3:condition}: - ${4:pass} -else: - ${5:pass} -endsnippet - - -########################## -# Try / Except / Finally # -########################## -snippet try "Try / Except" b -try: - ${1:pass} -except ${2:Exception}, ${3:e}: - ${4:raise $3} -endsnippet - -snippet try "Try / Except / Else" b -try: - ${1:pass} -except ${2:Exception}, ${3:e}: - ${4:raise $3} -else: - ${5:pass} -endsnippet - -snippet try "Try / Except / Finally" b -try: - ${1:pass} -except ${2:Exception}, ${3:e}: - ${4:raise $3} -finally: - ${5:pass} -endsnippet - -snippet try "Try / Except / Else / Finally" b -try: - ${1:pass} -except${2: ${3:Exception}, ${4:e}}: - ${5:raise} -else: - ${6:pass} -finally: - ${7:pass} -endsnippet - - -##################### -# Assertions & Tests # -##################### - -snippet pdb "Set PDB breakpoint" b -import pdb; pdb.set_trace() -endsnippet - -snippet ipdb "Set IPDB breakpoint" b -import ipdb; ipdb.set_trace() -endsnippet - -snippet pudb "Set PUDB breakpoint" b -import pudb; pudb.set_trace() -endsnippet - -snippet ae "Assert equal" b -self.assertEqual(${1:first},${2:second}) -endsnippet - -snippet at "Assert True" b -self.assertTrue(${0:exp}) -endsnippet - -snippet af "Assert False" b -self.assertFalse(${1:expression}) -endsnippet - -snippet aae "Assert almost equal" b -self.assertAlmostEqual(${1:first},${2:second}) -endsnippet - -snippet ar "Assert raises" b -self.assertRaises(${1:exception}, ${2:func}${3/.+/, /}${3:arguments}) -endsnippet - - -snippet testcase "pyunit testcase" b -class Test${1:Class}(${2:unittest.TestCase}): - - `!p snip.rv = tripple_quotes(snip)`${3:Test case docstring.}`!p snip.rv = tripple_quotes(snip)` - - def setUp(self): - ${4:pass} - - def tearDown(self): - ${5:pass} - - def test_${6:name}(self): - ${7:pass} -endsnippet - -# vim:ft=snippets: diff --git a/UltiSnips/rails.snippets b/UltiSnips/rails.snippets deleted file mode 100644 index 5c52179..0000000 --- a/UltiSnips/rails.snippets +++ /dev/null @@ -1,904 +0,0 @@ -priority -50 - -snippet anaf "accepts_nested_attributes_for" -accepts_nested_attributes_for :${1:association_name}${2:${3:, :allow_destroy => true}${4:, :reject_if => proc \{ |obj| ${5:obj.blank?} \}}} - -endsnippet - -snippet tcbi "Create binary column" -t.binary :${1:title}${2:, :limit => ${3:2}.megabytes} -$0 -endsnippet - -snippet tcb "Create boolean column" -t.boolean :${1:title} -$0 -endsnippet - -snippet cla "Create controller class" -class ${1:Model}Controller < ApplicationController - before_filter :find_${2:model} - - $0 - - private - def find_${2} - @$2 = ${3:$1}.find(params[:id]) if params[:id] - end -end -endsnippet - -snippet tcda "Create date column" -t.date :${1:title} -$0 -endsnippet - -snippet tcdt "Create datetime column" -t.datetime :${1:title} -$0 -endsnippet - -snippet tcd "Create decimal column" -t.decimal :${1:title}${2:${3:, :precision => ${4:10}}${5:, :scale => ${6:2}}} -$0 -endsnippet - -snippet tcf "Create float column" -t.float :${1:title} -$0 -endsnippet - -snippet cla "Create functional test class" -require 'test_helper' - -class ${1:Model}ControllerTest < ActionController::TestCase - test$0 -end - -endsnippet - -snippet tci "Create integer column" -t.integer :${1:title} -$0 -endsnippet - -snippet tcl "Create lock_version column" -t.integer :lock_version, :null => false, :default => 0 -$0 -endsnippet - -# FIXME: handling literal bracket pair inside of nested tab groups? -snippet tcr "Create references column" -t.references :${1:taggable}${2:, :polymorphic => ${3:{ :default => '${4:Photo}' \}}} -$0 -endsnippet - -snippet resources "Create resources controller class" -class ${1:Model}sController < ApplicationController - before_filter :find_${1/./\l$0/}, :only => [:show, :edit, :update, :destroy] - - # GET /${1/./\l$0/}s - # GET /${1/./\l$0/}s.xml - def index - @${1/./\l$0/}s = ${1:Model}.all - - respond_to do |wants| - wants.html # index.html.erb - wants.xml { render :xml => @${1/./\l$0/}s } - end - end - - # GET /${1/./\l$0/}s/1 - # GET /${1/./\l$0/}s/1.xml - def show - respond_to do |wants| - wants.html # show.html.erb - wants.xml { render :xml => @${1/./\l$0/} } - end - end - - # GET /${1/./\l$0/}s/new - # GET /${1/./\l$0/}s/new.xml - def new - @${1/./\l$0/} = ${1:Model}.new - - respond_to do |wants| - wants.html # new.html.erb - wants.xml { render :xml => @${1/./\l$0/} } - end - end - - # GET /${1/./\l$0/}s/1/edit - def edit - end - - # POST /${1/./\l$0/}s - # POST /${1/./\l$0/}s.xml - def create - @${1/./\l$0/} = ${1:Model}.new(params[:${1/./\l$0/}]) - - respond_to do |wants| - if @${1/./\l$0/}.save - flash[:notice] = '${1:Model} was successfully created.' - wants.html { redirect_to(@${1/./\l$0/}) } - wants.xml { render :xml => @${1/./\l$0/}, :status => :created, :location => @${1/./\l$0/} } - else - wants.html { render :action => "new" } - wants.xml { render :xml => @${1/./\l$0/}.errors, :status => :unprocessable_entity } - end - end - end - - # PUT /${1/./\l$0/}s/1 - # PUT /${1/./\l$0/}s/1.xml - def update - respond_to do |wants| - if @${1/./\l$0/}.update_attributes(params[:${1/./\l$0/}]) - flash[:notice] = '${1:Model} was successfully updated.' - wants.html { redirect_to(@${1/./\l$0/}) } - wants.xml { head :ok } - else - wants.html { render :action => "edit" } - wants.xml { render :xml => @${1/./\l$0/}.errors, :status => :unprocessable_entity } - end - end - end - - # DELETE /${1/./\l$0/}s/1 - # DELETE /${1/./\l$0/}s/1.xml - def destroy - @${1/./\l$0/}.destroy - - respond_to do |wants| - wants.html { redirect_to(${1/./\l$0/}s_url) } - wants.xml { head :ok } - end - end - - private - def find_${1/./\l$0/} - @${1/./\l$0/} = ${1:Model}.find(params[:id]) - end - -end - -endsnippet - -snippet tcs "Create string column" -t.string :${1:title} -$0 -endsnippet - -snippet tct "Create text column" -t.text :${1:title} -$0 -endsnippet - -snippet tcti "Create time column" -t.time :${1:title} -$0 -endsnippet - -snippet tcts "Create timestamp column" -t.timestamp :${1:title} -$0 -endsnippet - -snippet tctss "Create timestamps columns" -t.timestamps -$0 -endsnippet - -snippet mcol "Migration Create Column (mcc)" -t.column ${1:title}, :${2:string} -$0 -endsnippet - -snippet mccc "Migration Create Column Continue (mccc)" -t.column ${1:title}, :${2:string} -mccc$0 -endsnippet - -snippet mtab "Migration Drop Create Table (mdct)" -drop_table :${1:table}${2: [press tab twice to generate create_table]} -endsnippet - -snippet mcol "Migration Remove and Add Column (mrac)" -remove_column :${1:table}, :${2:column}${3: [press tab twice to generate add_column]} -endsnippet - -snippet rdb "RAILS_DEFAULT_LOGGER.debug (rdb)" -RAILS_DEFAULT_LOGGER.debug "${1:message}"$0 -endsnippet - -snippet tre "Table column(s) rename" -t.rename(:${1:old_column_name}, :${2:new_column_name}) -$0 -endsnippet - -snippet art "Test Assert Redirected To (art)" -assert_redirected_to ${2::action => "${1:index}"} -endsnippet - -snippet asre "Test Assert Response (are)" -assert_response :${1:success}, @response.body$0 -endsnippet - -snippet aftc "after_create" -after_create $0 -endsnippet - -snippet aftd "after_destroy" -after_destroy $0 -endsnippet - -snippet afts "after_save" -after_save $0 -endsnippet - -snippet aftu "after_update" -after_update $0 -endsnippet - -snippet aftv "after_validation" -after_validation $0 -endsnippet - -snippet aftvoc "after_validation_on_create" -after_validation_on_create $0 -endsnippet - -snippet aftvou "after_validation_on_update" -after_validation_on_update $0 -endsnippet - -snippet asg "assert(var = assigns(:var))" -assert(${1:var} = assigns(:${1}), "Cannot find @${1}") -$0 -endsnippet - -snippet asd "assert_difference" -assert_difference "${1:Model}.${2:count}", ${3:1} do - $0 -end -endsnippet - -snippet asnd "assert_no_difference" -assert_no_difference "${1:Model}.${2:count}" do - $0 -end -endsnippet - -snippet artnpp "assert_redirected_to (nested path plural)" -assert_redirected_to ${10:${2:parent}_${3:child}_path(${4:@}${5:${2}})} -endsnippet - -snippet artnp "assert_redirected_to (nested path)" -assert_redirected_to ${2:${12:parent}_${13:child}_path(${14:@}${15:${12}}, ${16:@}${17:${13}})} -endsnippet - -snippet artpp "assert_redirected_to (path plural)" -assert_redirected_to ${10:${2:model}s_path} -endsnippet - -snippet artp "assert_redirected_to (path)" -assert_redirected_to ${2:${12:model}_path(${13:@}${14:${12}})} -endsnippet - -snippet asrj "assert_rjs" -assert_rjs :${1:replace}, ${2:"${3:dom id}"} -endsnippet - -snippet ass "assert_select" -assert_select '${1:path}'${2:, :${3:text} => ${4:'${5:inner_html}'}}${6: do - $0 -end} -endsnippet - -snippet befc "before_create" -before_create $0 -endsnippet - -snippet befd "before_destroy" -before_destroy $0 -endsnippet - -snippet befs "before_save" -before_save $0 -endsnippet - -snippet befu "before_update" -before_update $0 -endsnippet - -snippet befv "before_validation" -before_validation $0 -endsnippet - -snippet befvoc "before_validation_on_create" -before_validation_on_create $0 -endsnippet - -snippet befvou "before_validation_on_update" -before_validation_on_update -endsnippet - -snippet bt "belongs_to (bt)" -belongs_to :${1:object}${2:, :class_name => "${3:${1/[[:alpha:]]+|(_)/(?1::\u$0)/g}}", :foreign_key => "${4:${1}_id}"} -endsnippet - -snippet crw "cattr_accessor" -cattr_accessor :${0:attr_names} -endsnippet - -snippet defcreate "def create - resource" -def create - @${1:model} = ${2:${1/[[:alpha:]]+|(_)/(?1::\u$0)/g}}.new(params[:$1]) - $0 - respond_to do |wants| - if @$1.save - flash[:notice] = '$2 was successfully created.' - wants.html { redirect_to(@$1) } - wants.xml { render :xml => @$1, :status => :created, :location => @$1 } - else - wants.html { render :action => "new" } - wants.xml { render :xml => @$1.errors, :status => :unprocessable_entity } - end - end -end - -endsnippet - -snippet test "test do..end" -test "${1:something interesting}" do - $0 -end -endsnippet - -snippet deftg "def get request" -def test_should_get_${1:action} - ${2:@${3:model} = ${4:$3s}(:${5:fixture_name}) - }get :${1}${6:, :id => @$3.to_param} - assert_response :success - $0 -end -endsnippet - -snippet deftp "def post request" -def test_should_post_${1:action} - ${3:@$2 = ${4:$2s}(:${5:fixture_name}) - }post :${1}${6:, :id => @$2.to_param}, :${2:model} => { $0 } - assert_response :redirect - -end -endsnippet - -snippet fina "find(:all)" -find(:all${1:, :conditions => ['${2:${3:field} = ?}', ${5:true}]}) -endsnippet - -snippet finf "find(:first)" -find(:first${1:, :conditions => ['${2:${3:field} = ?}', ${5:true}]}) -endsnippet - -snippet fini "find(id)" -find(${1:id}) -endsnippet - -snippet fine "find_each" -find_each(${1::conditions => {:${2:field} => ${3:true}\}}) do |${4:${TM_CURRENT_WORD/(\w+)\./\L$1/g}}| - $0 -end -endsnippet - -snippet finb "find_in_batches" -find_in_batches(${1::conditions => {:${2:field} => ${3:true}\}}) do |${4:${TM_CURRENT_WORD/(\w+)\./\L$1/g}}s| - $4s.each do |$4| - $0 - end -end -endsnippet - -snippet habtm "has_and_belongs_to_many (habtm)" -has_and_belongs_to_many :${1:object}${2:, :join_table => "${3:table_name}", :foreign_key => "${4:${1}_id}"} -endsnippet - -snippet hm "has_many (hm)" -has_many :${1:object}s${2:, :class_name => "${1}", :foreign_key => "${4:reference}_id"} -endsnippet - -snippet hmt "has_many (through)" -has_many :${1:objects}, :through => :${2:join_association}${3:, :source => :${4:${2}_table_foreign_key_to_${1}_table}} -endsnippet - -snippet hmd "has_many :dependent => :destroy" -has_many :${1:object}s${2:, :class_name => "${1}", :foreign_key => "${4:reference}_id"}, :dependent => :destroy$0 -endsnippet - -snippet ho "has_one (ho)" -has_one :${1:object}${2:, :class_name => "${3:${1/[[:alpha:]]+|(_)/(?1::\u$0)/g}}", :foreign_key => "${4:${1}_id}"} -endsnippet - -snippet logd "logger.debug" -${1:Rails.}logger.debug { "${1:message}" }$0 -endsnippet - -snippet loge "logger.error" -logger.error { "${1:message}" }$0 -endsnippet - -snippet logf "logger.fatal" -logger.fatal { "${1:message}" }$0 -endsnippet - -snippet logi "logger.info" -logger.info { "${1:message}" }$0 -endsnippet - -snippet logw "logger.warn" -logger.warn { "${1:message}" }$0 -endsnippet - -snippet mp "map(&:sym_proc)" -map(&:${1:id}) -endsnippet - -snippet mapca "map.catch_all" -${1:map}.catch_all "*${2:anything}", :controller => "${3:default}", :action => "${4:error}" - -endsnippet - -snippet map "map.named_route" -${1:map}.${2:connect} '${3::controller/:action/:id}' -endsnippet - -snippet mapr "map.resource" -${1:map}.resource :${2:resource}${10: do |${11:$2}| - $0 -end} -endsnippet - -snippet maprs "map.resources" -${1:map}.resources :${2:resource}${10: do |${11:$2}| - $0 -end} -endsnippet - -snippet mapwo "map.with_options" -${1:map}.with_options :${2:controller} => '${3:thing}' do |${4:$3}| - $0 -end - -endsnippet - -snippet mrw "mattr_accessor" -mattr_accessor :${0:attr_names} -endsnippet - -snippet ncl "named_scope lambda" -named_scope :name, lambda { |${1:param}| { :conditions => ${3:['${4:${5:field} = ?}', ${6:$1}]} } } - -endsnippet - -snippet nc "named_scope" -named_scope :name${1:, :joins => :${2:table}}, :conditions => ${3:['${4:${5:field} = ?}', ${6:true}]} - -endsnippet - -snippet dscope "default_scope" -default_scope ${1:order(${2:'${3:created_at DESC}'})} -endsnippet - -snippet flash "flash[...]" -flash[:${1:notice}] = "${2:Successfully created...}"$0 -endsnippet - -snippet rea "redirect_to (action)" -redirect_to :action => "${1:index}" -endsnippet - -snippet reai "redirect_to (action, id)" -redirect_to :action => "${1:show}", :id => ${0:@item} -endsnippet - -snippet rec "redirect_to (controller)" -redirect_to :controller => "${1:items}" -endsnippet - -snippet reca "redirect_to (controller, action)" -redirect_to :controller => "${1:items}", :action => "${2:list}" -endsnippet - -snippet recai "redirect_to (controller, action, id)" -redirect_to :controller => "${1:items}", :action => "${2:show}", :id => ${0:@item} -endsnippet - -snippet renpp "redirect_to (nested path plural)" -redirect_to(${2:${10:parent}_${11:child}_path(${12:@}${13:${10}})}) -endsnippet - -snippet renp "redirect_to (nested path)" -redirect_to(${2:${12:parent}_${13:child}_path(${14:@}${15:${12}}, ${16:@}${17:${13}})}) -endsnippet - -snippet repp "redirect_to (path plural)" -redirect_to(${2:${10:model}s_path}) -endsnippet - -snippet rep "redirect_to (path)" -redirect_to(${2:${12:model}_path(${13:@}${14:${12}})}) -endsnippet - -snippet reb "redirect_to :back" -redirect_to :back -endsnippet - -snippet ra "render (action)... (ra)" -render :action => "${1:action}" -endsnippet - -snippet ral "render (action,layout) (ral)" -render :action => "${1:action}", :layout => "${2:layoutname}" -endsnippet - -snippet rf "render (file) (rf)" -render :file => "${1:filepath}" -endsnippet - -snippet rfu "render (file,use_full_path) (rfu)" -render :file => "${1:filepath}", :use_full_path => ${2:false} -endsnippet - -snippet ri "render (inline) (ri)" -render :inline => "${1:<%= 'hello' %>}" -endsnippet - -snippet ril "render (inline,locals) (ril)" -render :inline => "${1:<%= 'hello' %>}", :locals => { ${2::name} => "${3:value}"$4 } -endsnippet - -snippet rit "render (inline,type) (rit)" -render :inline => "${1:<%= 'hello' %>}", :type => ${2::rxml} -endsnippet - -snippet rl "render (layout) (rl)" -render :layout => "${1:layoutname}" -endsnippet - -snippet rn "render (nothing) (rn)" -render :nothing => ${1:true} -endsnippet - -snippet rns "render (nothing,status) (rns)" -render :nothing => ${1:true}, :status => ${2:401} -endsnippet - -snippet rt "render (text) (rt)" -render :text => "${1:text to render...}" -endsnippet - -snippet rtl "render (text,layout) (rtl)" -render :text => "${1:text to render...}", :layout => "${2:layoutname}" -endsnippet - -snippet rtlt "render (text,layout => true) (rtlt)" -render :text => "${1:text to render...}", :layout => ${2:true} -endsnippet - -snippet rts "render (text,status) (rts)" -render :text => "${1:text to render...}", :status => ${2:401} -endsnippet - -snippet ru "render (update)" -render :update do |${2:page}| - $2.$0 -end -endsnippet - -snippet rest "respond_to" -respond_to do |wants| - wants.${1:html}${2: { $0 \}} -end -endsnippet - -snippet resw "respond_with" -respond_with(${1:@${2:model}})${3: do |format| - format.${4:html} { $0 \} -end} -endsnippet - -# FIXME -snippet returning "returning do |variable| ... end" -returning ${1:variable} do${2/(^(?\s*[a-z_][a-zA-Z0-9_]*\s*)(,\g)*,?\s*$)|.*/(?1: |)/}${2:v}${2/(^(?\s*[a-z_][a-zA-Z0-9_]*\s*)(,\g)*,?\s*$)|.*/(?1:|)/} - $0 -end -endsnippet - -snippet t. "t.binary (tcbi)" -t.binary :${1:title}${2:, :limit => ${3:2}.megabytes} -t.$0 -endsnippet - -snippet t. "t.boolean (tcb)" -t.boolean :${1:title} -t.$0 -endsnippet - -snippet t. "t.date (tcda)" -t.date :${1:title} -t.$0 -endsnippet - -snippet t. "t.datetime (tcdt)" -t.datetime :${1:title} -t.$0 -endsnippet - -snippet t. "t.decimal (tcd)" -t.decimal :${1:title}${2:${3:, :precision => ${4:10}}${5:, :scale => ${6:2}}} -t.$0 -endsnippet - -snippet t. "t.float (tcf)" -t.float :${1:title} -t.$0 -endsnippet - -snippet t. "t.integer (tci)" -t.integer :${1:title} -t.$0 -endsnippet - -snippet t. "t.lock_version (tcl)" -t.integer :lock_version, :null => false, :default => 0 -t.$0 -endsnippet - -snippet t. "t.references (tcr)" -t.references :${1:taggable}${2:, :polymorphic => ${3:{ :default => '${4:Photo}' \}}} -t.$0 -endsnippet - -snippet t. "t.rename (tre)" -t.rename(:${1:old_column_name}, :${2:new_column_name}) -t.$0 -endsnippet - -snippet t. "t.string (tcs)" -t.string :${1:title} -t.$0 -endsnippet - -snippet t. "t.text (tct)" -t.text :${1:title} -t.$0 -endsnippet - -snippet t. "t.time (tcti)" -t.time :${1:title} -t.$0 -endsnippet - -snippet t. "t.timestamp (tcts)" -t.timestamp :${1:title} -t.$0 -endsnippet - -snippet t. "t.timestamps (tctss)" -t.timestamps -t.$0 -endsnippet - -snippet vaoif "validates_acceptance_of if" -validates_acceptance_of :${1:terms}${2:${3:, :accept => "${4:1}"}${5:, :message => "${6:You must accept the terms of service}"}}, :if => proc { |obj| ${7:obj.condition?} }} -endsnippet - -snippet vao "validates_acceptance_of" -validates_acceptance_of :${1:terms}${2:${3:, :accept => "${4:1}"}${5:, :message => "${6:You must accept the terms of service}"}} -endsnippet - -snippet va "validates_associated (va)" -validates_associated :${1:attribute}${2:, :on => :${3:create}} -endsnippet - -snippet vaif "validates_associated if (vaif)" -validates_associated :${1:attribute}${2:, :on => :${3:create}, :if => proc { |obj| ${5:obj.condition?} }} -endsnippet - -snippet vc "validates_confirmation_of (vc)" -validates_confirmation_of :${1:attribute}${2:, :on => :${3:create}, :message => "${4:should match confirmation}"} -endsnippet - -snippet vcif "validates_confirmation_of if (vcif)" -validates_confirmation_of :${1:attribute}${2:, :on => :${3:create}, :message => "${4:should match confirmation}", :if => proc { |obj| ${5:obj.condition?} }} -endsnippet - -snippet ve "validates_exclusion_of (ve)" -validates_exclusion_of :${1:attribute}${2:, :in => ${3:%w( ${4:mov avi} )}, :on => :${5:create}, :message => "${6:extension %s is not allowed}"} -endsnippet - -snippet veif "validates_exclusion_of if (veif)" -validates_exclusion_of :${1:attribute}${2:, :in => ${3:%w( ${4:mov avi} )}, :on => :${5:create}, :message => "${6:extension %s is not allowed}"}, :if => proc { |obj| ${7:obj.condition?} }} -endsnippet - -snippet vfif "validates_format_of if" -validates_format_of :${1:attribute}, :with => /${2:^[${3:\w\d}]+\$}/${4:, :on => :${5:create}, :message => "${6:is invalid}"}, :if => proc { |obj| ${7:obj.condition?} }} -endsnippet - -snippet vf "validates_format_of" -validates_format_of :${1:attribute}, :with => /${2:^[${3:\w\d}]+\$}/${4:, :on => :${5:create}, :message => "${6:is invalid}"} -endsnippet - -snippet viif "validates_inclusion_of if" -validates_inclusion_of :${1:attribute}${2:, :in => ${3:%w( ${4:mov avi} )}, :on => :${5:create}, :message => "${6:extension %s is not included in the list}"}, :if => proc { |obj| ${7:obj.condition?} }} -endsnippet - -snippet vi "validates_inclusion_of" -validates_inclusion_of :${1:attribute}${2:, :in => ${3:%w( ${4:mov avi} )}, :on => :${5:create}, :message => "${6:extension %s is not included in the list}"} -endsnippet - -snippet vl "validates_length_of (vl)" -validates_length_of :${1:attribute}, :within => ${2:3..20}${3:, :on => :${4:create}, :message => "${5:must be present}"} -endsnippet - -snippet vlif "validates_length_of if" -validates_length_of :${1:attribute}, :within => ${2:3..20}${3:, :on => :${4:create}, :message => "${5:must be present}"}, :if => proc { |obj| ${6:obj.condition?} }} -endsnippet - -snippet vnif "validates_numericality_of if" -validates_numericality_of :${1:attribute}${2:, :on => :${3:create}, :message => "${4:is not a number}"}, :if => proc { |obj| ${5:obj.condition?} }} -endsnippet - -snippet vn "validates_numericality_of" -validates_numericality_of :${1:attribute}${2:, :on => :${3:create}, :message => "${4:is not a number}"} -endsnippet - -snippet vp "validates_presence_of (vp)" -validates_presence_of :${1:attribute}${2:, :on => :${3:create}, :message => "${4:can't be blank}"} -endsnippet - -snippet vpif "validates_presence_of if (vpif) 2" -validates_presence_of :${1:attribute}${2:, :on => :${3:create}, :message => "${4:can't be blank}"}, :if => proc { |obj| ${5:obj.condition?} }} -endsnippet - -snippet vu "validates_uniqueness_of (vu)" -validates_uniqueness_of :${1:attribute}${2:, :on => :${3:create}, :message => "${4:must be unique}"} -endsnippet - -snippet vuif "validates_uniqueness_of if (vuif)" -validates_uniqueness_of :${1:attribute}${2:, :on => :${3:create}, :message => "${4:must be unique}", :if => proc { |obj| ${6:obj.condition?} }} -endsnippet - -snippet verify "verify -- render" -verify :only => [:$1], :method => :post, :render => {:status => 500, :text => "use HTTP-POST"} - -endsnippet - -snippet verify "verify -- redirect" -verify :only => [:$1], :session => :user, :params => :id, :redirect_to => {:action => '${2:index}'} - -endsnippet - -snippet wants "wants_format" -wants.${1:js|xml|html}${2: { $0 \}} -endsnippet - -snippet xdelete "xhr delete" -xhr :delete, :${1:destroy}, :id => ${2:1}$0 -endsnippet - -snippet xget "xhr get" -xhr :get, :${1:show}${2:, :id => ${3:1}}$0 -endsnippet - -snippet xpost "xhr post" -xhr :post, :${1:create}, :${2:object} => { $3 } -endsnippet - -snippet xput "xhr put" -xhr :put, :${1:update}, :id => ${2:1}, :${3:object} => { $4 }$0 -endsnippet - -snippet finl "find(:last)" -find(:last${1:, :conditions => ['${2:${3:field} = ?}', ${5:true}]}) -endsnippet - -snippet sweeper "Create sweeper class" -class ${1:Model}Sweeper < ActionController::Caching::Sweeper - observe ${1:Model} - - def after_save(${1/./\l$0/}) - expire_cache(${1/./\l$0/}) - end - - def after_destroy(${1/./\l$0/}) - expire_cache(${1/./\l$0/}) - end - - private - - def expire_cache(${1/./\l$0/}) - ${0:expire_page ${1/./\l$0/}s_path - expire_page ${1/./\l$0/}_path(${1/./\l$0/})} - end - -end -endsnippet - -snippet col "collection routes" -collection do - ${1:get :${2:action}} - ${3:put :${4:action}} - ${5:post :${6:action}} - ${7:delete :${8:action}} -end -endsnippet - -snippet format "format (respond_with)" -format.${1:html|xml|json|js|any} { $0 } -endsnippet - -snippet gem "gem" -gem '${1:name}'${2:${3:, "${4:1.0}"}${5:${6:, :require => ${7:"${8:$1}"}}${9:, :group => :${10:test}}}} -endsnippet - -snippet gemg "gem :git" -gem '${1:paperclip}', :git => "${2:git://github.com/thoughtbot/paperclip.git}"${3:, :branch => "${4:rails3}"} -endsnippet - -snippet match "match" -match '${1:${2::controller}${3:/${4::action}${5:/${6::id}${7:(.:format)}}}}'${8: => '${9:$2}#${10:$4}'${11:, :as => :${12:$10}}} -endsnippet - -snippet member "member routes" -member do - ${1:get :${2:action}} - ${3:put :${4:action}} - ${5:post :${6:action}} - ${7:delete :${8:action}} -end -endsnippet - -snippet res "resources" -resources :${1:posts}${2: do - $3 -end} -endsnippet - -snippet scope "scope" -scope :${1:name}, ${2:joins(:${3:table}).}where(${4:'${5:$3.${6:field}} = ?', ${7:'${8:value}'}}) -endsnippet - -snippet scopel "scope lambda" -scope :${1:name}, lambda { |${2:param}| ${3:where(${4::${5:field} => ${6:"${7:value}"}})} } -endsnippet - -snippet scopee "scope with extension" -scope :${1:name}, ${2:where(${3::${4:field} => ${5:'${6:value}'}})} do - def ${7:method_name} - $0 - end -end -endsnippet - -snippet sb "scoped_by" -scoped_by_${1:attribute}(${2:id}) -endsnippet - -snippet setup "setup do..end" -setup do - $0 -end -endsnippet - -snippet trans "Translation snippet" -I18n.t('`!v substitute(substitute(substitute(@%, substitute(getcwd() . "/", "\/", "\\\\/", "g"), "", ""), "\\(\\.\\(html\\|js\\)\\.\\(haml\\|erb\\)\\|\\(_controller\\)\\?\\.rb\\)$", "", ""), "/", ".", "g")`.${2:${1/[^\w]/_/g}}${3}', :default => "${1:some_text}"${4})${5:$0} -endsnippet - -snippet route_spec -it 'routes to #${1:action}' do - ${2:get}('/${3:url}').should route_to('`!v substitute(expand('%:t:r'), '_routing_spec$', '', '')`#$1'${4:, ${5:params}})${6} -end -endsnippet - -# vim:ft=snippets: diff --git a/UltiSnips/rst.snippets b/UltiSnips/rst.snippets deleted file mode 100644 index 0894ef3..0000000 --- a/UltiSnips/rst.snippets +++ /dev/null @@ -1,61 +0,0 @@ -priority -50 - -########################################################################### -# General Stuff # -########################################################################### -snippet part "Part" b -`!p snip.rv = len(t[1])*'#'` -${1:Part name} -`!p snip.rv = len(t[1])*'#'` - -$0 -endsnippet - -snippet sec "Section" b -${1:Section name} -`!p snip.rv = len(t[1])*'='` - -$0 -endsnippet - -snippet ssec "Subsection" b -${1:Section name} -`!p snip.rv = len(t[1])*'-'` - -$0 -endsnippet - -snippet sssec "Subsubsection" b -${1:Section name} -`!p snip.rv = len(t[1])*'^'` - -$0 -endsnippet - -snippet chap "Chapter" b -`!p snip.rv = len(t[1])*'*'` -${1:Chapter name} -`!p snip.rv = len(t[1])*'*'` - -$0 -endsnippet - -snippet para "Paragraph" b -${1:Paragraph name} -`!p snip.rv = len(t[1])*'"'` - -$0 -endsnippet - -########################################################################### -# More Specialized Stuff. # -########################################################################### -snippet cb "Code Block" b -.. code-block:: ${1:lua} - - ${2:code} - -$0 -endsnippet - -# vim:ft=snippets: diff --git a/UltiSnips/ruby.snippets b/UltiSnips/ruby.snippets deleted file mode 100644 index 09a114f..0000000 --- a/UltiSnips/ruby.snippets +++ /dev/null @@ -1,570 +0,0 @@ -priority -50 - -snippet "^#!" "#!/usr/bin/env ruby" r -#!/usr/bin/env ruby -$0 -endsnippet - - -snippet "^# ?[uU][tT][fF]-?8" "# encoding: UTF-8" r -# encoding: UTF-8 -$0 -endsnippet - - - -snippet If " if " -${1:command} if ${0:expression} -endsnippet - - - -snippet Unless " unless " -${1:command} unless ${0:expression} -endsnippet - - - -snippet if "if ... end" -if ${1:condition} - ${2:# TODO} -end -endsnippet - - - -snippet ife "if ... else ... end" -if ${1:condition} - ${2:# TODO} -else - ${3:# TODO} -end -endsnippet - - - -snippet ifee "if ... elseif ... else ... end" -if ${1:condition} - ${2:# TODO} -elsif ${3:condition} - ${4:# TODO} -else - ${0:# TODO} -end -endsnippet - - - -snippet unless "unless ... end" -unless ${1:condition} - ${0:# TODO} -end -endsnippet - - - -snippet unlesse "unless ... else ... end" -unless ${1:condition} - ${2:# TODO} -else - ${0:# TODO} -end -endsnippet - - - -snippet unlesee "unless ... elseif ... else ... end" -unless ${1:condition} - ${2:# TODO} -elsif ${3:condition} - ${4:# TODO} -else - ${0:# TODO} -end -endsnippet - - - -snippet "\b(de)?f" "def ..." r -def ${1:function_name}${2: ${3:*args}} - ${0:# TODO} -end -endsnippet - - - -snippet defi "def initialize ..." -def initialize${1: ${2:*args}} - ${0:# TODO} -end -endsnippet - - - -snippet defr "def ... rescue ..." -def ${1:function_name}${2: ${3:*args}} - ${4:# TODO} -rescue - ${0:# TODO} -end -endsnippet - - - -snippet For "(..).each { || }" -(${1:from}..${2:to}).each { |${3:i}| ${4:# TODO} } -endsnippet - - - -snippet for "(..).each do || end" -(${1:from}..${2:to}).each do |${3:i}| - ${0:# TODO} -end -endsnippet - - - -snippet "(\S+)\.Merge!" ".merge!() { |,,| }" r -`!p snip.rv=match.group(1)`.merge!(${1:other_hash}) { |${2:key},${3:oldval},${4:newval}| ${5:block} } -endsnippet - - - -snippet "(\S+)\.merge!" ".merge!() do |,,| end" r -`!p snip.rv=match.group(1)`.merge!(${1:other_hash}) do |${2:key},${3:oldval},${4:newval}| - ${0:block} -end -endsnippet - - - -snippet "(\S+)\.Del(ete)?_?if" ".delete_if { |,| }" r -`!p snip.rv=match.group(1)`.delete_if { |${1:key},${2:value}| ${3:# TODO} } -endsnippet - - - -snippet "(\S+)\.del(ete)?_?if" ".delete_if do |,| end" r -`!p snip.rv=match.group(1)`.delete_if do |${1:key},${2:value}| - ${0:# TODO} -end -endsnippet - - - -snippet "(\S+)\.Keep_?if" ".keep_if { |,| }" r -`!p snip.rv=match.group(1)`.keep_if { |${1:key},${2:value}| ${3:# TODO} } -endsnippet - - - -snippet "(\S+)\.keep_?if" ".keep_if do ,| end" r -`!p snip.rv=match.group(1)`.keep_if do |${1:key},${2:value}| - ${0:# TODO} -end -endsnippet - - - -snippet "(\S+)\.Reject" ".reject { |,| }" r -`!p snip.rv=match.group(1)`.reject { |${1:key},${2:value}| ${3:# TODO} } -endsnippet - - - -snippet "(\S+)\.reject" ".reject do ,| end" r -`!p snip.rv=match.group(1)`.reject do |${1:key},${2:value}| - ${0:# TODO} -end -endsnippet - - - -snippet "(\S+)\.Select" ".select { || }" r -`!p snip.rv=match.group(1)`.select { |${1:item}| ${2:block} } -endsnippet - - - -snippet "(\S+)\.select" ".select do || end" r -`!p snip.rv=match.group(1)`.select do |${1:item}| - ${0:block} -end -endsnippet - - - -snippet "(\S+)\.Sort" ".sort { |
    ,| }" r -`!p snip.rv=match.group(1)`.sort { |${1:a},${2:b}| ${3:# TODO} } -endsnippet - - - -snippet "(\S+)\.sort" ".sort do |,| end" r -`!p snip.rv=match.group(1)`.sort do |${1:a},${2:b}| - ${0:# TODO} -end -endsnippet - - - -snippet "(\S+)\.Each_?k(ey)?" ".each_key { || }" r -`!p snip.rv=match.group(1)`.each_key { |${1:key}| ${2:# TODO} } -endsnippet - - - -snippet "(\S+)\.each_?k(ey)?" ".each_key do |key| end" r -`!p snip.rv=match.group(1)`.each_key do |${1:key}| - ${0:# TODO} -end -endsnippet - - - -snippet "(\S+)\.Each_?val(ue)?" ".each_value { || }" r -`!p snip.rv=match.group(1)`.each_value { |${1:value}| ${2:# TODO} } -endsnippet - - - -snippet "(\S+)\.each_?val(ue)?" ".each_value do || end" r -`!p snip.rv=match.group(1)`.each_value do |${1:value}| - ${0:# TODO} -end -endsnippet - - - -snippet Each ".each { || }" -${1:elements}.each { |${2:${1/s$//}}| ${3:# TODO} } -endsnippet - - - -snippet each ".each do || end" -${1:elements}.each do |${2:${1/s$//}}| - ${0:# TODO} -end -endsnippet - - - -snippet "each_?s(lice)?" ".each_slice(n) do |slice| end" r -${1:elements}.each_slice(${2:2}) do |${3:slice}| - ${0:# TODO} -end -endsnippet - - - -snippet "Each_?s(lice)?" ".each_slice(n) { |slice| }" r -${1:elements}.each_slice(${2:2}) { |${3:slice}| ${0:# TODO} } -endsnippet - - - - -snippet "(\S+)\.Map" ".map { || }" r -`!p snip.rv=match.group(1)`.map { |${1:`!p -element_name = match.group(1).lstrip('$@') -ematch = re.search("([A-Za-z][A-Za-z0-9_]+?)s?[^A-Za-z0-9_]*?$", element_name) -try: - wmatch = re.search("([A-Za-z][A-Za-z0-9_]+)$", ematch.group(1)) - snip.rv = wmatch.group(1).lower() -except: - snip.rv = 'element' -`}| ${2:# TODO} } -endsnippet - - - -snippet "(\S+)\.map" ".map do || end" r -`!p snip.rv=match.group(1)`.map do |${1:`!p -element_name = match.group(1).lstrip('$@') -ematch = re.search("([A-Za-z][A-Za-z0-9_]+?)s?[^A-Za-z0-9_]*?$", element_name) -try: - wmatch = re.search("([A-Za-z][A-Za-z0-9_]+)$", ematch.group(1)) - snip.rv = wmatch.group(1).lower() -except: - snip.rv = 'element' -`}| - ${0:# TODO} -end -endsnippet - - - -snippet "(\S+)\.Rev(erse)?_?each" ".reverse_each { || }" r -`!p snip.rv=match.group(1)`.reverse_each { |${1:`!p -element_name = match.group(1).lstrip('$@') -ematch = re.search("([A-Za-z][A-Za-z0-9_]+?)s?[^A-Za-z0-9_]*?$", element_name) -try: - wmatch = re.search("([A-Za-z][A-Za-z0-9_]+)$", ematch.group(1)) - snip.rv = wmatch.group(1).lower() -except: - snip.rv = 'element' -`}| ${2:# TODO} } -endsnippet - - - -snippet "(\S+)\.rev(erse)?_?each" ".reverse_each do || end" r -`!p snip.rv=match.group(1)`.reverse_each do |${1:`!p -element_name = match.group(1).lstrip('$@') -ematch = re.search("([A-Za-z][A-Za-z0-9_]+?)s?[^A-Za-z0-9_]*?$", element_name) -try: - wmatch = re.search("([A-Za-z][A-Za-z0-9_]+)$", ematch.group(1)) - snip.rv = wmatch.group(1).lower() -except: - snip.rv = 'element' -`}| - ${0:# TODO} -end -endsnippet - - - -snippet "(\S+)\.Each" ".each { || }" r -`!p snip.rv=match.group(1)`.each { |${1:`!p -element_name = match.group(1).lstrip('$@') -ematch = re.search("([A-Za-z][A-Za-z0-9_]+?)s?[^A-Za-z0-9_]*?$", element_name) -try: - wmatch = re.search("([A-Za-z][A-Za-z0-9_]+)$", ematch.group(1)) - snip.rv = wmatch.group(1).lower() -except: - snip.rv = 'element' -`}| ${2:# TODO} } -endsnippet - - - -snippet "(\S+)\.each" ".each do || end" r -`!p snip.rv=match.group(1)`.each do |${1:`!p -element_name = match.group(1).lstrip('$@') -ematch = re.search("([A-Za-z][A-Za-z0-9_]+?)s?[^A-Za-z0-9_]*?$", element_name) -try: - wmatch = re.search("([A-Za-z][A-Za-z0-9_]+)$", ematch.group(1)) - snip.rv = wmatch.group(1).lower() -except: - snip.rv = 'element' -`}| - ${0:# TODO} -end -endsnippet - - - - -snippet "(\S+)\.Each_?w(ith)?_?i(ndex)?" ".each_with_index { |,| }" r -`!p snip.rv=match.group(1)`.each_with_index { |${1:`!p -element_name = match.group(1).lstrip('$@') -ematch = re.search("([A-Za-z][A-Za-z0-9_]+?)s?[^A-Za-z0-9_]*?$", element_name) -try: - wmatch = re.search("([A-Za-z][A-Za-z0-9_]+)$", ematch.group(1)) - snip.rv = wmatch.group(1).lower() -except: - snip.rv = 'element' -`},${2:i}| ${3:# TODO} }$0 -endsnippet - - - -snippet "(\S+)\.each_?w(ith)?_?i(ndex)?" ".each_with_index do |,| end" r -`!p snip.rv=match.group(1)`.each_with_index do |${1:`!p -element_name = match.group(1).lstrip('$@') -ematch = re.search("([A-Za-z][A-Za-z0-9_]+?)s?[^A-Za-z0-9_]*?$", element_name) -try: - wmatch = re.search("([A-Za-z][A-Za-z0-9_]+)$", ematch.group(1)) - snip.rv = wmatch.group(1).lower() -except: - snip.rv = 'element' -`},${2:i}| - ${0:# TODO} -end -endsnippet - - - - -snippet "(\S+)\.Each_?p(air)?" ".each_pair { |,| }" r -`!p snip.rv=match.group(1)`.each_pair { |${1:key},${2:value}| ${3:# TODO} } -endsnippet - - - -snippet "(\S+)\.each_?p(air)?" ".each_pair do |,| end" r -`!p snip.rv=match.group(1)`.each_pair do |${1:key},${2:value}| - ${0:# TODO} -end -endsnippet - - - -snippet "(\S+)\.sub" ".sub() { }" r -`!p snip.rv=match.group(1)`.sub(${1:expression}) { ${2:"replace_with"} } -endsnippet - - - -snippet "(\S+)\.gsub" ".gsub() { }" r -`!p snip.rv=match.group(1)`.gsub(${1:expression}) { ${2:"replace_with"} } -endsnippet - - - -snippet "(\S+)\.index" ".index { |item| }" r -`!p snip.rv=match.group(1)`.index { |${1:item}| ${2:block} } -endsnippet - - - -snippet "(\S+)\.Index" ".index do |item| ... end" r -`!p snip.rv=match.group(1)`.index do |${1:item}| - ${0:block} -end -endsnippet - - - -snippet do "do || ... end" i -do |${1:args}| - $0 -end -endsnippet - - - -snippet Do "do ... end" i -do - $0 -end -endsnippet - - -snippet until "until ... end" -until ${1:expression} - ${0:# TODO} -end -endsnippet - - - -snippet Until "begin ... end until " -begin - ${0:# TODO} -end until ${1:expression} -endsnippet - - - -snippet while "while ... end" -while ${1:expression} - ${0:# TODO} -end -endsnippet - - - -snippet While "begin ... end while " -begin - ${0:# TODO} -end while ${1:expression} -endsnippet - - - -snippet "\b(r|attr)" "attr_reader :" r -attr_reader :${0:attr_names} -endsnippet - - - -snippet "\b(w|attr)" "attr_writer :" r -attr_writer :${0:attr_names} -endsnippet - - - -snippet "\b(rw|attr)" "attr_accessor :" r -attr_accessor :${0:attr_names} -endsnippet - - - -snippet begin "begin ... rescue ... end" -begin - ${1:# TODO} -rescue - ${0:# TODO} -end -endsnippet - - - -snippet begin "begin ... rescue ... else ... ensure ... end" -begin - ${1:# Raise exception} -rescue Exception => e - puts e.message - puts e.backtrace.inspect - ${2:# Rescue} -else - ${3:# other exception} -ensure - ${0:# always excute} -end -endsnippet - - - -snippet rescue -rescue Exception => e - puts e.message - puts e.backtrace.inspect - ${0:# Rescue} -endsnippet - - - -snippet "\b(case|sw(itch)?)" "case when ... end" r -case ${1:variable} -when ${2:expression} -$0 -end -endsnippet - - - -snippet alias "alias : :" -alias :${1:new_name} :${2:old_name} -endsnippet - - - -snippet class "class def initialize ... end end" -class ${1:class_name} - def initialize ${2:*args} - $0 - end -end -endsnippet - - - -snippet module "module" -module ${1:module_name} - $0 -end -endsnippet - - - -snippet ### -=begin - $0 -=end -endsnippet - -# vim: set ts=2 sw=2 expandtab: diff --git a/UltiSnips/scss.snippets b/UltiSnips/scss.snippets deleted file mode 100644 index 70a44a0..0000000 --- a/UltiSnips/scss.snippets +++ /dev/null @@ -1,55 +0,0 @@ -priority -50 - -snippet /@?imp/ "@import '...';" br -@import '${1:file}'; -endsnippet - -snippet /@?inc/ "@include mixin(...);" br -@include ${1:mixin}(${2:arguments}); -endsnippet - -snippet /@?ext?/ "@extend %placeholder;" br -@extend %${1:placeholder}; -endsnippet - -snippet /@?mixin/ "@mixin (...) { ... }" br -@mixin ${1:name}(${2:arguments}) { - ${VISUAL}$0 -} -endsnippet - -snippet /@?fun/ "@function (...) { ... }" br -@function ${1:name}(${2:arguments}) { - ${VISUAL}$0 -} -endsnippet - -snippet /@?if/ "@if (...) { ... }" br -@if ${1:condition} { - ${VISUAL}$0 -} -endsnippet - -snippet /(} )?@?else/ "@else { ... }" br -@else ${1:condition} { - ${VISUAL}$0 -} -endsnippet - -snippet /@?for/ "@for loop" br -@for ${1:$i} from ${2:1} through ${3:3} { - ${VISUAL}$0 -} -endsnippet - -snippet /@?each/ "@each loop" br -@each ${1:$item} in ${2:item, item, item} { - ${VISUAL}$0 -} -endsnippet - -snippet /@?while/ "@while loop" br -@while ${1:$i} ${2:>} ${3:0} { - ${VISUAL}$0 -} -endsnippet diff --git a/UltiSnips/sh.snippets b/UltiSnips/sh.snippets deleted file mode 100644 index 9cc4577..0000000 --- a/UltiSnips/sh.snippets +++ /dev/null @@ -1,92 +0,0 @@ -priority -50 - -global !p -import vim - -# Tests for the existence of a variable declared by Vim's filetype detection -# suggesting the type of shell script of the current file -def testShell(scope, shell): - return vim.eval("exists('" + scope + ":is_" + shell + "')") - -# Loops over the possible variables, checking for global variables -# first since they indicate an override by the user. -def getShell(): - for scope in ["g", "b"]: - for shell in ["bash", "posix", "sh", "kornshell"]: - if testShell(scope, shell) == "1": - if shell == "kornshell": - return "ksh" - if shell == "posix": - return "sh" - return shell - return "sh" -endglobal - -########################################################################### -# TextMate Snippets # -########################################################################### -snippet #! -`!p snip.rv = '#!/bin/' + getShell() + "\n\n" ` -endsnippet - -snippet !env "#!/usr/bin/env (!env)" -`!p snip.rv = '#!/usr/bin/env ' + getShell() + "\n\n" ` -endsnippet - -snippet temp "Tempfile" -${1:TMPFILE}="$(mktemp -t ${2:`!p -snip.rv = re.sub(r'[^a-zA-Z]', '_', snip.fn) or "untitled" -`})" -${3:${4/(.+)/trap "/}${4:rm -f '$${1/.*\s//}'}${4/(.+)/" 0 # EXIT\n/}${5/(.+)/trap "/}${5:rm -f '$${1/.*\s//}'; exit 1}${5/(.+)/" 2 # INT\n/}${6/(.+)/trap "/}${6:rm -f '$${1/.*\s//}'; exit 1}${6/(.+)/" 1 15 # HUP TERM\n/}} - -endsnippet - -snippet case "case .. esac (case)" -case ${1:word} in - ${2:pattern} ) - $0;; -esac -endsnippet - -snippet elif "elif .. (elif)" -elif ${2:[[ ${1:condition} ]]}; then - ${0:#statements} -endsnippet - -snippet for "for ... done (for)" -for (( i = 0; i < ${1:10}; i++ )); do - ${0:#statements} -done -endsnippet - -snippet forin "for ... in ... done (forin)" -for ${1:i}${2/.+/ in /}${2:words}; do - ${0:#statements} -done -endsnippet - -snippet here "here document (here)" -<<-${2:'${1:TOKEN}'} - $0 -${1/['"`](.+)['"`]/$1/} -endsnippet - -snippet if "if ... then (if)" -if ${2:[[ ${1:condition} ]]}; then - ${0:#statements} -fi -endsnippet - -snippet until "until ... (done)" -until ${2:[[ ${1:condition} ]]}; do - ${0:#statements} -done -endsnippet - -snippet while "while ... (done)" -while ${2:[[ ${1:condition} ]]}; do - ${0:#statements} -done -endsnippet - -# vim:ft=snippets: diff --git a/UltiSnips/snippets.snippets b/UltiSnips/snippets.snippets deleted file mode 100644 index ee0c8c7..0000000 --- a/UltiSnips/snippets.snippets +++ /dev/null @@ -1,21 +0,0 @@ -priority -50 - -# We use a little hack so that the snippet is expanded -# and parsed correctly -snippet snip "Snippet definition" b -`!p snip.rv = "snippet"` ${1:Tab_trigger} "${2:Description}" ${3:b} -$0 -`!p snip.rv = "endsnippet"` -endsnippet - -snippet global "Global snippet" b -`!p snip.rv = "global"` !p -$0 -`!p snip.rv = "endglobal"` -endsnippet - -snippet vis "${VISUAL}" i -\$\{VISUAL${1:${2:default}${3:/transform/}}\} -endsnippet - -# vim:ft=snippets: diff --git a/UltiSnips/tcl.snippets b/UltiSnips/tcl.snippets deleted file mode 100644 index 6584915..0000000 --- a/UltiSnips/tcl.snippets +++ /dev/null @@ -1,52 +0,0 @@ -priority -50 - -########################################################################### -# TEXTMATE SNIPPETS # -########################################################################### -snippet for "for... (for)" b -for {${1:set i 0}} {${2:\$i < \$n}} {${3:incr i}} { - ${4} -} - -endsnippet - -snippet foreach "foreach... (foreach)" -foreach ${1:var} ${2:\$list} { - ${3} -} - -endsnippet - -snippet if "if... (if)" b -if {${1:condition}} { - ${2} -} - -endsnippet - -snippet proc "proc... (proc)" b -proc ${1:name} {${2:args}} \ -{ - ${3} -} - -endsnippet - -snippet switch "switch... (switch)" b -switch ${1:-exact} -- ${2:\$var} { - ${3:match} { - ${4} - } - default {${5}} -} - -endsnippet - -snippet while "while... (while)" b -while {${1:condition}} { - ${2} -} - -endsnippet - -# vim:ft=snippets: diff --git a/UltiSnips/tex.snippets b/UltiSnips/tex.snippets deleted file mode 100644 index c32d21f..0000000 --- a/UltiSnips/tex.snippets +++ /dev/null @@ -1,110 +0,0 @@ -priority -50 - -extends texmath - -snippet "b(egin)?" "begin{} / end{}" br -\begin{${1:something}} - ${0:${VISUAL}} -\end{$1} -endsnippet - -snippet tab -\begin{${1:t}${1/(t)$|(a)$|(.*)/(?1:abular)(?2:rray)/}}{${2:c}} -$0${2/((?<=.)c|l|r)|./(?1: & )/g} -\end{$1${1/(t)$|(a)$|(.*)/(?1:abular)(?2:rray)/}} -endsnippet - -snippet fig "Figure environment" b -\begin{figure}${2:[htpb]} - \centering - \includegraphics[width=${3:0.8}\linewidth]{${4:name.ext}} - \caption{${4/(\w+)\.\w+/\u$1/}$0} - \label{fig:${4/(\w+)\.\w+/$1/}} -\end{figure} -endsnippet - -snippet enum "Enumerate" b -\begin{enumerate} - \item $0 -\end{enumerate} -endsnippet - -snippet item "Itemize" b -\begin{itemize} - \item $0 -\end{itemize} -endsnippet - -snippet desc "Description" b -\begin{description} - \item[$1] $0 -\end{description} -endsnippet - -snippet it "Individual item" b -\item ${1} -$0 -endsnippet - -snippet part "Part" b -\part{${1:part name}} -\label{prt:${2:${1/(\w+)|\W+/(?1:\L$0\E:_)/ga}}} - -${0} -endsnippet - -snippet cha "Chapter" b -\chapter{${1:chapter name}} -\label{cha:${2:${1/\\\w+\{(.*?)\}|\\(.)|(\w+)|([^\w\\]+)/(?4:_:\L$1$2$3\E)/ga}}} - -${0} -endsnippet - -snippet sec "Section" b -\section{${1:section name}} -\label{sec:${2:${1/\\\w+\{(.*?)\}|\\(.)|(\w+)|([^\w\\]+)/(?4:_:\L$1$2$3\E)/ga}}} - -${0} -endsnippet - -snippet sub "Subsection" b -\subsection{${1:subsection name}} -\label{sub:${2:${1/\\\w+\{(.*?)\}|\\(.)|(\w+)|([^\w\\]+)/(?4:_:\L$1$2$3\E)/ga}}} - -${0} -endsnippet - -snippet ssub "Subsubsection" b -\subsubsection{${1:subsubsection name}} -\label{ssub:${2:${1/\\\w+\{(.*?)\}|\\(.)|(\w+)|([^\w\\]+)/(?4:_:\L$1$2$3\E)/ga}}} - -${0} -endsnippet - -snippet par "Paragraph" b -\paragraph{${1:paragraph name}} -\label{par:${2:${1/\\\w+\{(.*?)\}|\\(.)|(\w+)|([^\w\\]+)/(?4:_:\L$1$2$3\E)/ga}}} - -${0} -endsnippet - -snippet subp "Subparagraph" b -\subparagraph{${1:subparagraph name}} -\label{par:${2:${1/\\\w+\{(.*?)\}|\\(.)|(\w+)|([^\w\\]+)/(?4:_:\L$1$2$3\E)/ga}}} - -${0} -endsnippet - -snippet ni "Non-indented paragraph" b -\noindent -${0} -endsnippet - -snippet pac "Package" b -\usepackage[${1:options}]{${2:package}}$0 -endsnippet - -snippet lp "Long parenthesis" -\left(${1:${VISUAL:contents}}\right)$0 -endsnippet -# vim:ft=snippets: diff --git a/UltiSnips/texmath.snippets b/UltiSnips/texmath.snippets deleted file mode 100644 index d0a25e9..0000000 --- a/UltiSnips/texmath.snippets +++ /dev/null @@ -1,56 +0,0 @@ -priority -50 - -############## -# MATH STUFF # -############## -snippet eq "Equation" b -\begin{equation} - $0 -\end{equation} -endsnippet - -snippet eqnn "Equation without number" b -\begin{equation*} - $0 -\end{equation*} -endsnippet - -snippet eqa "Equation array" b -\begin{eqnarray} - $1 & $2 & $0 -\end{eqnarray} -endsnippet - -snippet eqann "Equation array without numbers" b -\begin{eqnarray*} - $1 & $2 & $0 -\end{eqnarray*} - -endsnippet -snippet frac "Fraction" w -\frac{${1:${VISUAL:nom}}}{${2:denom}} -endsnippet - -snippet mat "Smart Matrix" -\begin{${1:p/b/v/V/B/small}matrix} - $0 -\end{$1matrix} -endsnippet - -snippet lr( "left( right)" w -\left( ${1:${VISUAL}} \right) -endsnippet - -snippet lr| "left| right|" w -\left| ${1:${VISUAL}} \right| -endsnippet - -snippet lr{ "left\{ right\}" w -\left\\{ ${1:${VISUAL}} \right\\} -endsnippet - -snippet lr[ "left[ right]" w -\left[ ${1:${VISUAL}} \right] -endsnippet - -# vim:ft=snippets: diff --git a/UltiSnips/vim.snippets b/UltiSnips/vim.snippets deleted file mode 100644 index 5ff22d2..0000000 --- a/UltiSnips/vim.snippets +++ /dev/null @@ -1,60 +0,0 @@ -priority -50 - -########################################################################### -# SnipMate Snippets # -########################################################################### -snippet header -" File: ${1:`!v expand('%:t')`} -" Author: ${2:`!v g:snips_author`} -" Description: ${3} -${4:" Last Modified: `!v strftime("%B %d, %Y")`} - -$0 -endsnippet - -snippet gvar "Global / configuration variable" -if !exists("g:${1:MyUltraImportantVar}") - let g:$1 = ${2:"${3:}"} -endif -endsnippet - -snippet guard -if exists('${1:did_`!p snip.rv = snip.fn.replace('.','_')`}') || &cp${2: || version < 700} - finish -endif -let $1 = 1${3} -endsnippet - -snippet f -fun ${1:function_name}(${2}) - ${3:" code} -endf -endsnippet - -snippet for -for ${1:needle} in ${2:haystack} - ${3:" code} -endfor -endsnippet - -snippet wh -while ${1:condition} - ${2:" code} -endw -endsnippet - -snippet if -if ${1:condition} - ${2:" code} -endif -endsnippet - -snippet ife -if ${1:condition} - ${2} -else - ${3} -endif -endsnippet - -# vim:ft=snippets: diff --git a/UltiSnips/xhtml.snippets b/UltiSnips/xhtml.snippets deleted file mode 100644 index a9c5a29..0000000 --- a/UltiSnips/xhtml.snippets +++ /dev/null @@ -1,3 +0,0 @@ -priority -50 - -extends html diff --git a/UltiSnips/xml.snippets b/UltiSnips/xml.snippets deleted file mode 100644 index 92dfb6e..0000000 --- a/UltiSnips/xml.snippets +++ /dev/null @@ -1,16 +0,0 @@ -priority -50 - -snippet xml "XML declaration" b - - -endsnippet - -snippet t "Simple tag" b -<${1:tag}> - ${2:content} - -endsnippet - -snippet ti "Inline tag" b -<${1:tag}>${2:content} -endsnippet diff --git a/UltiSnips/zsh.snippets b/UltiSnips/zsh.snippets deleted file mode 100644 index f7986ea..0000000 --- a/UltiSnips/zsh.snippets +++ /dev/null @@ -1,17 +0,0 @@ -priority -50 - -extends sh - -priority -49 - -snippet #! "shebang" b -#!/bin/zsh - -endsnippet - -snippet !env "#!/usr/bin/env (!env)" b -#!/usr/bin/env zsh - -endsnippet - -# vim:ft=snippets: diff --git a/after/plugin/UltiSnips_after.vim b/after/plugin/UltiSnips_after.vim index ca885a6..33ad9e0 100644 --- a/after/plugin/UltiSnips_after.vim +++ b/after/plugin/UltiSnips_after.vim @@ -1,13 +1,8 @@ -" File: UltiSnips_after.vim -" Author: Holger Rapp -" Description: Called after everything else to reclaim keys (Needed for -" Supertab) -" Last Modified: July 27, 2009 +" Called after everything else to reclaim keys (Needed for Supertab) -if exists('did_UltiSnips_after') || &cp || version < 700 - finish +if exists("b:did_after_plugin_ultisnips_after") || !exists("g:_uspy") + finish endif +let b:did_after_plugin_ultisnips_after = 1 call UltiSnips#map_keys#MapKeys() - -let did_UltiSnips_after=1 diff --git a/autoload/UltiSnips.vim b/autoload/UltiSnips.vim index c09d5c3..6000ff0 100644 --- a/autoload/UltiSnips.vim +++ b/autoload/UltiSnips.vim @@ -1,40 +1,19 @@ -" File: UltiSnips.vim -" Author: Holger Rapp -" Description: The Ultimate Snippets solution for Vim +if exists("b:did_autoload_ultisnips") || !exists("g:_uspy") + " Define no-op function, called via ftdetect/UltiSnips.vim. + " TODO(sirver): Add a test for that using a bad g:UltiSnipsPythonVersion + " setting. Without this fix moving the cursor will spam errors, with this + " it should not. + function! UltiSnips#FileTypeChanged() + endfunction -if exists('did_UltiSnips_autoload') || &cp || version < 700 finish endif +let b:did_autoload_ultisnips = 1 -" Define dummy version of function called by autocommand setup in -" ftdetect/UltiSnips.vim. If the function isn't defined (probably due to -" using a copy of vim without python support) it will cause an error anytime a -" new file is opened. -function! UltiSnips#FileTypeChanged() -endfunction - -if !exists("g:UltiSnipsUsePythonVersion") - let g:_uspy=":py3 " - if !has("python3") - if !has("python") - if !exists("g:UltiSnipsNoPythonWarning") - echo "UltiSnips requires py >= 2.6 or any py3" - endif - finish - endif - let g:_uspy=":py " - endif - let g:UltiSnipsUsePythonVersion = "" -else - if g:UltiSnipsUsePythonVersion == 2 - let g:_uspy=":py " - else - let g:_uspy=":py3 " - endif -endif - +" Also import vim as we expect it to be imported in many places. +exec g:_uspy "import vim" +exec g:_uspy "from UltiSnips import UltiSnips_Manager" -" FUNCTIONS {{{ function! s:compensate_for_pum() """ The CursorMovedI event is not triggered while the popup-menu is visible, """ and it's by this event that UltiSnips updates its vim-state. The fix is @@ -45,13 +24,17 @@ function! s:compensate_for_pum() endif endfunction -function! UltiSnips#Edit(...) +function! UltiSnips#Edit(bang, ...) if a:0 == 1 && a:1 != '' let type = a:1 else - exec g:_uspy "vim.command(\"let type = '%s'\" % UltiSnips_Manager._primary_filetype)" + let type = "" + endif + exec g:_uspy "vim.command(\"let file = '%s'\" % UltiSnips_Manager._file_to_edit(vim.eval(\"type\"), vim.eval('a:bang')))" + + if !len(file) + return endif - exec g:_uspy "vim.command(\"let file = '%s'\" % UltiSnips_Manager._file_to_edit(vim.eval(\"type\")))" let mode = 'e' if exists('g:UltiSnipsEditSplit') @@ -59,9 +42,14 @@ function! UltiSnips#Edit(...) let mode = 'vs' elseif g:UltiSnipsEditSplit == 'horizontal' let mode = 'sp' + elseif g:UltiSnipsEditSplit == 'context' + let mode = 'vs' + if winwidth(0) <= 2 * (&tw ? &tw : 80) + let mode = 'sp' + endif endif endif - exe ':'.mode.' '.file + exe ':'.mode.' '.escape(file, ' ') endfunction function! UltiSnips#AddFiletypes(filetypes) @@ -101,9 +89,13 @@ function! UltiSnips#ListSnippets() return "" endfunction -function! UltiSnips#SnippetsInCurrentScope() +function! UltiSnips#SnippetsInCurrentScope(...) let g:current_ulti_dict = {} - exec g:_uspy "UltiSnips_Manager.snippets_in_current_scope()" + let all = get(a:, 1, 0) + if all + let g:current_ulti_dict_info = {} + endif + exec g:_uspy "UltiSnips_Manager.snippets_in_current_scope(" . all . ")" return g:current_ulti_dict endfunction @@ -131,18 +123,6 @@ function! UltiSnips#FileTypeChanged() endfunction -function! UltiSnips#AddSnippet(trigger, value, description, options, ...) - " Takes the same arguments as SnippetManager.add_snippet. - echoerr "Deprecated UltiSnips#AddSnippet called. Please use UltiSnips#AddSnippetWithPriority." | sleep 1 - exec g:_uspy "args = vim.eval(\"a:000\")" - exec g:_uspy "trigger = vim.eval(\"a:trigger\")" - exec g:_uspy "value = vim.eval(\"a:value\")" - exec g:_uspy "description = vim.eval(\"a:description\")" - exec g:_uspy "options = vim.eval(\"a:options\")" - exec g:_uspy "UltiSnips_Manager.add_snippet(trigger, value, description, options, *args)" - return "" -endfunction - function! UltiSnips#AddSnippetWithPriority(trigger, value, description, options, filetype, priority) exec g:_uspy "trigger = vim.eval(\"a:trigger\")" exec g:_uspy "value = vim.eval(\"a:value\")" @@ -175,14 +155,8 @@ endf function! UltiSnips#LeavingInsertMode() exec g:_uspy "UltiSnips_Manager._leaving_insert_mode()" endfunction -" }}} -" Expand our path -exec g:_uspy "import vim, os, sys" -exec g:_uspy "new_path = os.path.abspath(os.path.join( - \ vim.eval('expand(\":h\")'), '..', 'pythonx'))" -exec g:_uspy "vim.command(\"let g:UltiSnipsPythonPath = '%s'\" % new_path)" -exec g:_uspy "if not hasattr(vim, 'VIM_SPECIAL_PATH'): sys.path.append(new_path)" -exec g:_uspy "from UltiSnips import UltiSnips_Manager" - -let did_UltiSnips_autoload=1 +function! UltiSnips#TrackChange() + exec g:_uspy "UltiSnips_Manager._track_change()" +endfunction +" }}} diff --git a/autoload/UltiSnips/map_keys.vim b/autoload/UltiSnips/map_keys.vim index aa0bce9..218b507 100644 --- a/autoload/UltiSnips/map_keys.vim +++ b/autoload/UltiSnips/map_keys.vim @@ -1,38 +1,72 @@ -call UltiSnips#variables#WasRun() +if exists("b:did_autoload_ultisnips_map_keys") || !exists("g:_uspy") + finish +endif +let b:did_autoload_ultisnips_map_keys = 1 + +" The trigger used to expand a snippet. +" NOTE: expansion and forward jumping can, but needn't be the same trigger +if !exists("g:UltiSnipsExpandTrigger") + let g:UltiSnipsExpandTrigger = "" +endif + +" The trigger used to display all triggers that could possible +" match in the current position. +if !exists("g:UltiSnipsListSnippets") + let g:UltiSnipsListSnippets = "" +endif + +" The trigger used to jump forward to the next placeholder. +" NOTE: expansion and forward jumping can be the same trigger. +if !exists("g:UltiSnipsJumpForwardTrigger") + let g:UltiSnipsJumpForwardTrigger = "" +endif + +" The trigger to jump backward inside a snippet +if !exists("g:UltiSnipsJumpBackwardTrigger") + let g:UltiSnipsJumpBackwardTrigger = "" +endif + +" Should UltiSnips unmap select mode mappings automagically? +if !exists("g:UltiSnipsRemoveSelectModeMappings") + let g:UltiSnipsRemoveSelectModeMappings = 1 +end + +" If UltiSnips should remove Mappings, which should be ignored +if !exists("g:UltiSnipsMappingsToIgnore") + let g:UltiSnipsMappingsToIgnore = [] +endif + +" UltiSnipsEdit will use this variable to decide if a new window +" is opened when editing. default is "normal", allowed are also +" "vertical", "horizontal", and "context". +if !exists("g:UltiSnipsEditSplit") + let g:UltiSnipsEditSplit = 'normal' +endif + +" A list of directory names that are searched for snippets. +if !exists("g:UltiSnipsSnippetDirectories") + let g:UltiSnipsSnippetDirectories = [ "UltiSnips" ] +endif + +" Enable or Disable snipmate snippet expansion. +if !exists("g:UltiSnipsEnableSnipMate") + let g:UltiSnipsEnableSnipMate = 1 +endif function! UltiSnips#map_keys#MapKeys() - " Map the keys correctly if g:UltiSnipsExpandTrigger == g:UltiSnipsJumpForwardTrigger - exec "inoremap " . g:UltiSnipsExpandTrigger . " =UltiSnips#ExpandSnippetOrJump()" exec "snoremap " . g:UltiSnipsExpandTrigger . " :call UltiSnips#ExpandSnippetOrJump()" else exec "inoremap " . g:UltiSnipsExpandTrigger . " =UltiSnips#ExpandSnippet()" exec "snoremap " . g:UltiSnipsExpandTrigger . " :call UltiSnips#ExpandSnippet()" endif - exec 'xnoremap ' . g:UltiSnipsExpandTrigger. ' :call UltiSnips#SaveLastVisualSelection()gvs' + exec "xnoremap " . g:UltiSnipsExpandTrigger. " :call UltiSnips#SaveLastVisualSelection()gvs" exec "inoremap " . g:UltiSnipsListSnippets . " =UltiSnips#ListSnippets()" exec "snoremap " . g:UltiSnipsListSnippets . " :call UltiSnips#ListSnippets()" snoremap c snoremap c snoremap c -endf - -function! UltiSnips#map_keys#MapInnerKeys() - if g:UltiSnipsExpandTrigger != g:UltiSnipsJumpForwardTrigger - exec "inoremap " . g:UltiSnipsJumpForwardTrigger . " =UltiSnips#JumpForwards()" - exec "snoremap " . g:UltiSnipsJumpForwardTrigger . " :call UltiSnips#JumpForwards()" - endif - exec "inoremap " . g:UltiSnipsJumpBackwardTrigger . " =UltiSnips#JumpBackwards()" - exec "snoremap " . g:UltiSnipsJumpBackwardTrigger . " :call UltiSnips#JumpBackwards()" -endf - -function! UltiSnips#map_keys#RestoreInnerKeys() - if g:UltiSnipsExpandTrigger != g:UltiSnipsJumpForwardTrigger - exec "iunmap " . g:UltiSnipsJumpForwardTrigger - exec "sunmap " . g:UltiSnipsJumpForwardTrigger - endif - exec "iunmap " . g:UltiSnipsJumpBackwardTrigger - exec "sunmap " . g:UltiSnipsJumpBackwardTrigger + snoremap "_c endf diff --git a/autoload/UltiSnips/variables.vim b/autoload/UltiSnips/variables.vim deleted file mode 100644 index d5555c9..0000000 --- a/autoload/UltiSnips/variables.vim +++ /dev/null @@ -1,48 +0,0 @@ -" Kludge to make sure that this file is really run. -function! UltiSnips#variables#WasRun() -endfunction - -" The trigger used to expand a snippet. -" NOTE: expansion and forward jumping can, but needn't be the same trigger -if !exists("g:UltiSnipsExpandTrigger") - let g:UltiSnipsExpandTrigger = "" -endif - -" The trigger used to display all triggers that could possible -" match in the current position. -if !exists("g:UltiSnipsListSnippets") - let g:UltiSnipsListSnippets = "" -endif - -" The trigger used to jump forward to the next placeholder. -" NOTE: expansion and forward jumping can, but needn't be the same trigger -if !exists("g:UltiSnipsJumpForwardTrigger") - let g:UltiSnipsJumpForwardTrigger = "" -endif - -" The trigger to jump backward inside a snippet -if !exists("g:UltiSnipsJumpBackwardTrigger") - let g:UltiSnipsJumpBackwardTrigger = "" -endif - -" Should UltiSnips unmap select mode mappings automagically? -if !exists("g:UltiSnipsRemoveSelectModeMappings") - let g:UltiSnipsRemoveSelectModeMappings = 1 -end - -" If UltiSnips should remove Mappings, which should be ignored -if !exists("g:UltiSnipsMappingsToIgnore") - let g:UltiSnipsMappingsToIgnore = [] -endif - -" UltiSnipsEdit will use this variable to decide if a new window -" is opened when editing. default is "normal", allowed are also -" "vertical", "horizontal" -if !exists("g:UltiSnipsEditSplit") - let g:UltiSnipsEditSplit = 'normal' -endif - -" A list of directory names that are searched for snippets. -if !exists("g:UltiSnipsSnippetDirectories") - let g:UltiSnipsSnippetDirectories = [ "UltiSnips" ] -endif diff --git a/autoload/neocomplete/sources/ultisnips.vim b/autoload/neocomplete/sources/ultisnips.vim new file mode 100644 index 0000000..5f45e5e --- /dev/null +++ b/autoload/neocomplete/sources/ultisnips.vim @@ -0,0 +1,32 @@ +let s:save_cpo = &cpo +set cpo&vim + +let s:source = { + \ 'name' : 'ultisnips', + \ 'kind' : 'keyword', + \ 'mark' : '[US]', + \ 'rank' : 8, + \ 'matchers' : + \ (g:neocomplete#enable_fuzzy_completion ? + \ ['matcher_fuzzy'] : ['matcher_head']), + \ } + +function! s:source.gather_candidates(context) + let suggestions = [] + let snippets = UltiSnips#SnippetsInCurrentScope() + for trigger in keys(snippets) + let description = get(snippets, trigger) + call add(suggestions, { + \ 'word' : trigger, + \ 'menu' : self.mark . ' '. description + \ }) + endfor + return suggestions +endfunction + +function! neocomplete#sources#ultisnips#define() + return s:source +endfunction + +let &cpo = s:save_cpo +unlet s:save_cpo diff --git a/autoload/unite/sources/ultisnips.vim b/autoload/unite/sources/ultisnips.vim new file mode 100644 index 0000000..1ded37f --- /dev/null +++ b/autoload/unite/sources/ultisnips.vim @@ -0,0 +1,82 @@ +let s:save_cpo = &cpo +set cpo&vim + +let s:unite_source = { + \ 'name': 'ultisnips', + \ 'hooks': {}, + \ 'action_table': {}, + \ 'syntax' : 'uniteSource__Ultisnips', + \ 'default_action': 'expand', + \ } + +let s:unite_source.action_table.preview = { + \ 'description' : 'ultisnips snippets', + \ 'is_quit' : 0, + \ } + +function! s:unite_source.hooks.on_syntax(args, context) abort + syntax case ignore + syntax match uniteSource__UltisnipsHeader /^.*$/ + \ containedin=uniteSource__Ultisnips + syntax match uniteSource__UltisnipsTrigger /\v^\s.{-}\ze\s/ contained + \ containedin=uniteSource__UltisnipsHeader + \ nextgroup=uniteSource__UltisnipsDescription + syntax match uniteSource__UltisnipsDescription /\v.{3}\s\zs\w.*$/ contained + \ containedin=uniteSource__UltisnipsHeader + + highlight default link uniteSource__UltisnipsTrigger Identifier + highlight default link uniteSource__UltisnipsDescription Statement +endfunction + +function! s:unite_source.action_table.preview.func(candidate) + " no nice preview at this point, cannot get snippet text + let snippet_preview = a:candidate['word'] + echo snippet_preview +endfunction + +let s:unite_source.action_table.expand = { + \ 'description': 'expand the current snippet', + \ 'is_quit': 1 + \} + +function! s:unite_source.action_table.expand.func(candidate) + let delCurrWord = (getline(".")[col(".")-1] == " ") ? "" : "diw" + exe "normal " . delCurrWord . "a" . a:candidate['trigger'] . " " + call UltiSnips#ExpandSnippet() + return '' +endfunction + +function! s:unite_source.get_longest_snippet_len(snippet_list) + let longest = 0 + for snip in items(a:snippet_list) + if strlen(snip['word']) > longest + let longest = strlen(snip['word']) + endif + endfor + return longest +endfunction + +function! s:unite_source.gather_candidates(args, context) + let default_val = {'word': '', 'unite__abbr': '', 'is_dummy': 0, 'source': + \ 'ultisnips', 'unite__is_marked': 0, 'kind': 'command', 'is_matched': 1, + \ 'is_multiline': 0} + let snippet_list = UltiSnips#SnippetsInCurrentScope() + let max_len = s:unite_source.get_longest_snippet_len(snippet_list) + let canditates = [] + for snip in items(snippet_list) + let curr_val = copy(default_val) + let curr_val['word'] = printf('%-*s', max_len, snip[0]) . " " . snip[1] + let curr_val['trigger'] = snip[0] + call add(canditates, curr_val) + endfor + return canditates +endfunction + +function! unite#sources#ultisnips#define() + return s:unite_source +endfunction + +"unlet s:unite_source + +let &cpo = s:save_cpo +unlet s:save_cpo diff --git a/ctags/UltiSnips.cnf b/ctags/UltiSnips.cnf new file mode 100644 index 0000000..c30aa8b --- /dev/null +++ b/ctags/UltiSnips.cnf @@ -0,0 +1,3 @@ +--langdef=UltiSnips +--langmap=UltiSnips:.snippets +--regex-UltiSnips=/^snippet (.*)/\1/s,snippet/ diff --git a/doc/UltiSnips.txt b/doc/UltiSnips.txt index b29d79c..45c1fd5 100644 --- a/doc/UltiSnips.txt +++ b/doc/UltiSnips.txt @@ -12,7 +12,8 @@ UltiSnips *snippet* *snippets* *UltiSnips* 3.1 Commands |UltiSnips-commands| 3.2 Triggers |UltiSnips-triggers| 3.2.1 Using your own trigger functions |UltiSnips-trigger-functions| - 3.2.2 Path to Python Module |UltiSnips-python-module-path| + 3.2.2 Custom autocommands |UltiSnips-custom-autocommands| + 3.2.3 Path to Python Module |UltiSnips-python-module-path| 3.3 Snippet Search Path |UltiSnips-snippet-search-path| 3.4 Warning About Select Mode Mappings |UltiSnips-warning-smappings| 3.5 Functions |UltiSnips-functions| @@ -36,12 +37,17 @@ UltiSnips *snippet* *snippets* *UltiSnips* 4.7.1 Replacement String |UltiSnips-replacement-string| 4.7.2 Demos |UltiSnips-demos| 4.8 Clearing snippets |UltiSnips-clearing-snippets| -5. Support for other plugins |UltiSnips-other-plugins| + 4.9 Context snippets |UltiSnips-context-snippets| + 4.10 Snippet actions |UltiSnips-snippet-actions| + 4.10.1 Pre-expand actions |UltiSnips-pre-expand-actions| + 4.10.2 Post-expand actions |UltiSnips-post-expand-actions| + 4.10.3 Post-jump actions |UltiSnips-post-jump-actions| + 4.11 Autotrigger |UltiSnips-autotrigger| +5. UltiSnips and Other Plugins |UltiSnips-other-plugins| + 5.1 Existing Integrations |UltiSnips-integrations| + 5.2 Extending UltiSnips |UltiSnips-extending| 6. Helping Out |UltiSnips-helping| -7. Contact |UltiSnips-contact| -8. Contributors |UltiSnips-contributors| - 8.1 Patches & Coding |UltiSnips-contricoding| - 8.2 Snippets |UltiSnips-contrisnippets| +7. Contributors |UltiSnips-contributors| This plugin only works if 'compatible' is not set. {Vi does not have any of these features} @@ -58,28 +64,29 @@ Snippets are common in structured text like source code but can also be used for general editing like, for example, inserting a signature in an email or inserting the current date in a text file. -UltiSnips was developed using the TDD (Test-driven development) philosophy. -This ensures that features do not disappear and bugs do not reappear after -they have been fixed. - -On my blog, http://www.sirver.net, I posted several short screencasts, which -make a great introduction to UltiSnips, illustrating its features and usage. +@SirVer posted several short screencasts which make a great introduction to +UltiSnips, illustrating its features and usage. http://www.sirver.net/blog/2011/12/30/first-episode-of-ultisnips-screencast/ http://www.sirver.net/blog/2012/01/08/second-episode-of-ultisnips-screencast/ http://www.sirver.net/blog/2012/02/05/third-episode-of-ultisnips-screencast/ http://www.sirver.net/blog/2012/03/31/fourth-episode-of-ultisnips-screencast/ +Also the excellent [Vimcasts](http://vimcasts.org) dedicated three episodes to +UltiSnips: + +http://vimcasts.org/episodes/meet-ultisnips/ +http://vimcasts.org/episodes/ultisnips-python-interpolation/ +http://vimcasts.org/episodes/ultisnips-visual-placeholder/ 1.1 Requirements *UltiSnips-requirements* ---------------- -This plugin works with Vim version 7.0 or later. It only works if the +This plugin works with Vim version 7.4 or later. It only works if the 'compatible' setting is not set. -This plugin requires python >= 2.6. It has been specifically tested using -python 2.7 and python 3.2 but should theoretically work on all versions of -python >= 2.6. +This plugin is tested against Python 2.7, 3.3 or 3.4. All other versions are +unsupported, but might work. The Python 2.x or Python 3.x interface must be available. In other words, Vim must be compiled with either the |+python| feature or the |+python3| feature. @@ -124,7 +131,7 @@ permission to use his snippets. ============================================================================= 2. Installation and Updating *UltiSnips-installnupdate* -The recommended way of getting ultisnips is to track SirVer/ultisnips on +The recommended way of getting UltiSnips is to track SirVer/ultisnips on github. The master branch is always stable. Using Pathogen: *UltiSnips-using-pathogen* @@ -132,8 +139,11 @@ Using Pathogen: *UltiSnips-using-pathogen* If you are a pathogen user, you can track the official mirror of UltiSnips on github: > - $ cd ~/.vim/ - $ git submodule add git://github.com/SirVer/ultisnips.git bundle/ultisnips + $ cd ~/.vim/bundle && git clone git://github.com/SirVer/ultisnips.git + +If you also want the default snippets, also track > + + $ cd ~/.vim/bundle && git clone git://github.com/honza/vim-snippets.git See the pathogen documentation for more details on how to update a bundle. @@ -154,16 +164,19 @@ Restart Vim and UltiSnips should work. To access the help, use > :helptags ~/.vim/ultisnips_rep/doc :help UltiSnips +UltiSnips comes without snippets. The default snippets can be found here: +https://github.com/honza/vim-snippets + ============================================================================= 3. Settings & Commands *UltiSnips-settings* 3.1 Commands *UltiSnips-commands* ------------ *:UltiSnipsEdit* -The UltiSnipsEdit command opens the private snippet definition file for the -current filetype for editing. If a definition file does not exist, a new file -is opened with the appropriate name. Snippet definition files are standard -text files and can be edited directly. UltiSnipsEdit makes it easier. +The UltiSnipsEdit command opens a private snippet definition file for the +current filetype. If no snippet file exists, a new file is created. If used as +UltiSnipsEdit! all public snippet files are taken into account too. If +multiple files match the search, the user gets to choose the file. There are several variables associated with the UltiSnipsEdit command. @@ -173,6 +186,8 @@ g:UltiSnipsEditSplit Defines how the edit window is opened. Possible |normal| Default. Opens in the current window. |horizontal| Splits the window horizontally. |vertical| Splits the window vertically. + |context| Splits the window vertically or + horizontally depending on context. *g:UltiSnipsSnippetsDir* g:UltiSnipsSnippetsDir @@ -180,7 +195,25 @@ g:UltiSnipsSnippetsDir files are stored in. For example, if the variable is set to "~/.vim/mydir/UltiSnips" and the current 'filetype' is "cpp", then :UltiSnipsEdit will open - "~/.vim/mydir/UltiSnips/cpp.snippets". + "~/.vim/mydir/UltiSnips/cpp.snippets". Note that + directories named "snippets" are reserved for + snipMate snippets and cannot be used. + + *g:UltiSnipsSnippetDirectories* +g:UltiSnipsSnippetDirectories + Defines the directories for looking for snippets. + Do not mix up this variable with previous one. + More information about that variable can + be found at section |UltiSnips-snippet-search-path|. + + *g:UltiSnipsEnableSnipMate* +g:UltiSnipsEnableSnipMate + Enable looking for SnipMate snippets in + &runtimepath. UltiSnips will search only for + directories named 'snippets' while looking for + SnipMate snippets. Defaults to "1", so UltiSnips + will look for SnipMate snippets. + *:UltiSnipsAddFiletypes* The UltiSnipsAddFiletypes command allows for explicit merging of other snippet @@ -209,24 +242,20 @@ The priority will then be rails -> ruby -> programming -> all. 3.2 Triggers *UltiSnips-triggers* ------------ + *g:UltiSnipsExpandTrigger* *g:UltiSnipsListSnippets* + *g:UltiSnipsJumpForwardTrigger* *g:UltiSnipsJumpBackwardTrigger* You can define the keys used to trigger UltiSnips actions by setting global variables. Variables define the keys used to expand a snippet, jump forward and jump backwards within a snippet, and list all available snippets in the -current expand context. The variables with their default values are: > +current expand context. Be advised, that some terminal emulators don't send + to the running program. The variables with their default values are: > g:UltiSnipsExpandTrigger g:UltiSnipsListSnippets g:UltiSnipsJumpForwardTrigger g:UltiSnipsJumpBackwardTrigger -The g:UltiSnipsExpandTrigger and g:UltiSnipsJumpForwardTrigger can be set to -the same value. To simulate TextMate behavior, add the following lines to your -vimrc file. > - let g:UltiSnipsExpandTrigger="" - let g:UltiSnipsJumpForwardTrigger="" - let g:UltiSnipsJumpBackwardTrigger="" - UltiSnips will only map the jump triggers while a snippet is active to -interfer as little as possible with other mappings. +interfere as little as possible with other mappings. The default value for g:UltiSnipsJumpBackwardTrigger interferes with the built-in complete function: |i_CTRL-X_CTRL-K|. A workaround is to add the @@ -248,9 +277,9 @@ to the same value then the function you are actually going to use is UltiSnips#ExpandSnippetOrJump. Each time any of the functions UltiSnips#ExpandSnippet, -UltiSnips#ExpandSnippet, UltiSnips#JumpBackwards or UltiSnips#JumpBackwards is -called a global variable is set that contains the return value of the -corresponding function. +UltiSnips#ExpandSnippetOrJump, UltiSnips#JumpForwards or +UltiSnips#JumpBackwards is called a global variable is set that contains the +return value of the corresponding function. The corresponding variables and functions are: UltiSnips#ExpandSnippet --> g:ulti_expand_res (0: fail, 1: success) @@ -279,7 +308,39 @@ then you define your mapping as > and if the you can't expand or jump from the current location then the alternative function IMAP_Jumpfunc('', 0) is called. -3.2.2 Path to Python module *UltiSnips-python-module-path* +3.2.2 Custom autocommands *UltiSnips-custom-autocommands* +------------------------- + +Note Autocommands must *not* change the buffer in any way. If lines are added, +deleted, or modified it will confuse UltiSnips which might scramble your +snippets contents. + + *UltiSnipsEnterFirstSnippet* *UltiSnipsExitLastSnippet* +For maximum compatibility with other plug-ins, UltiSnips sets up some special +state, include mappings and autocommands, when a snippet starts being +expanded, and tears them down once the last snippet has been exited. In order +to make it possible to override these "inner" settings, it fires the following +"User" autocommands: + +UltiSnipsEnterFirstSnippet +UltiSnipsExitLastSnippet + +For example, to call a pair of custom functions in response to these events, +you might do: > + + autocmd! User UltiSnipsEnterFirstSnippet + autocmd User UltiSnipsEnterFirstSnippet call CustomInnerKeyMapper() + autocmd! User UltiSnipsExitLastSnippet + autocmd User UltiSnipsExitLastSnippet call CustomInnerKeyUnmapper() + +Note that snippet expansion may be nested, in which case +|UltiSnipsEnterFirstSnippet| will fire only as the first (outermost) snippet +is entered, and |UltiSnipsExitLastSnippet| will only fire once the last +(outermost) snippet have been exited. + + + +3.2.3 Path to Python module *UltiSnips-python-module-path* --------------------------- For even more advanced usage, you can directly write python functions using @@ -306,9 +367,10 @@ how UltiSnips loads snippets. Snippet definition files are stored in snippet directories. A snippet directory must be a subdirectory of a directory defined in the 'runtimepath' option. The variable g:UltiSnipsSnippetDirectories defines a list of names -used for snippet directories. The default is shown below. > +used for snippet directories. Note that "snippets" is reserved for snipMate +snippets and cannot be used. The default is shown below. > - g:UltiSnipsSnippetDirectories ["UltiSnips"] + let g:UltiSnipsSnippetDirectories=["UltiSnips"] UltiSnips will search each 'runtimepath' directory for the subdirectory names defined in g:UltiSnipsSnippetDirectories in the order they are defined. For @@ -316,8 +378,8 @@ example, if you keep your snippets in a .vim subdirectory called "mycoolsnippets" and you want to make use of the default snippets that come with UltiSnips, add the following to your vimrc file. > let g:UltiSnipsSnippetDirectories=["UltiSnips", "mycoolsnippets"] -If you do not want to use the snippets that come with UltiSnips, define the -variable accordingly. > +If you do not want to use the third party snippets that come with plugins, +define the variable accordingly: > let g:UltiSnipsSnippetDirectories=["mycoolsnippets"] You can also redefine the search path on a buffer by buffer basis by setting @@ -326,6 +388,15 @@ over the global variable. |UltiSnips-adding-snippets| explains which files are parsed for a given filetype. +If only one directory is specified in this variable and this directory is +specified by absolute path, UltiSnips will not look for snippets in +&runtimepath, which can lead to significant speedup. So, the common case is: + + let g:UltiSnipsSnippetDirectories=[$HOME.'/.vim/UltiSnips'] + +However, you will not able to use snippets that are shipped with third party +plugins out of the box. You'll need to copy them into your chosen directory. + 3.4 Warning About Select Mode Mappings *UltiSnips-warning-smappings* -------------------------------------- @@ -381,8 +452,9 @@ snippets, so they cannot be expanded a second time unless the function is called again. The function takes three optional arguments, in order: trigger, description, options. Arguments coincide with the arguments of the |UltiSnips#AddSnippetWithPriority| function of the same name. The trigger and -options arguments can change the way the snippet expands. The description is -unused at this point. +options arguments can change the way the snippet expands. Same options +can be specified as in the snippet definition. See full list of options at +|UltiSnips-snippet-options|. The description is unused at this point. An example use case might be this line from a reStructuredText plugin file: @@ -398,8 +470,13 @@ typed so it can determine if the trigger matches or not. A third function is UltiSnips#SnippetsInCurrentScope which is the equivalent of snipmate GetSnipsInCurrentScope function. + This function simply returns a vim dictionary with the snippets whose trigger -matches the current word. +matches the current word. If you need all snippets information of current +buffer, you can simply pass 1 (which means all) as first argument of this +function, and use a global variable g:current_ulti_dict_info to get the +result (see example below). + This function does not add any new functionality to ultisnips directly but allows to use third party plugins to integrate the current available snippets. @@ -439,6 +516,27 @@ If the trigger for your snippet is lorem, you type lor, and you have no other snippets whose trigger matches lor then hitting will expand to whatever lorem expands to. +A third example on how to use this function to extract all snippets of +current buffer: > + +function! GetAllSnippets() + call UltiSnips#SnippetsInCurrentScope(1) + let list = [] + for [key, info] in items(g:current_ulti_dict_info) + let parts = split(info.location, ':') + call add(list, { + \"key": key, + \"path": parts[0], + \"linenr": parts[1], + \"description": info.description, + \}) + endfor + return list +endfunction + +The new variable g:current_ulti_dict_info is made to avoid confilct with +exists third party plugins. The definition location contains file path and +line number is also included in this variable. 3.6 Warning about missing python support *UltiSnips-python-warning* ---------------------------------------- @@ -516,7 +614,7 @@ permitted in a snippet file, and they can be included anywhere in the file. A line beginning with the keyword 'priority' sets the priority for all snippets defined in the current file after this line. The default priority for a file is always 0. When a snippet should be expanded, UltiSnips will collect -all snippet definitons from all sources that match the trigger and keep only +all snippet definitions from all sources that match the trigger and keep only the ones with the highest priority. For example, all shipped snippets have a priority < 0, so that user defined snippets always overwrite shipped snippets. @@ -564,6 +662,8 @@ same tab trigger. When a snippet is activated and more than one tab trigger match, UltiSnips displays a list of the matching snippets with their descriptions. The user then selects the snippet they want. + *UltiSnips-snippet-options* + The 'options' control the behavior of the snippet. Options are indicated by single characters. The 'options' characters for a snippet are combined into a word without spaces. @@ -609,6 +709,19 @@ The options currently supported are: > before jumping to the next tabstop. This is useful if there is a tabstop with optional text at the end of a line. + m Trim all whitespaces from right side of snippet lines. Useful when + snippet contains empty lines which should remain empty after expanding. + Without this option empty lines in snippets definition will have + indentation too. + + e Context snippets - With this option expansion of snippet can be + controlled not only by previous characters in line, but by any given + python expression. This option can be specified along with other + options, like 'b'. See |UltiSnips-context-snippets| for more info. + + A Snippet will be triggered automatically, when condition matches. + See |UltiSnips-autotrigger| for more info. + The end line is the 'endsnippet' keyword on a line by itself. > endsnippet @@ -619,9 +732,9 @@ from the 'endsnippet' end line. 4.1.1 Character Escaping: *UltiSnips-character-escaping* -In snippet definitions, the characters '`', '{', '$', '\' and "'" (single -quote) have special meaning. If you want to insert one of these characters -literally, escape them with a backslash, '\'. +In snippet definitions, the characters '`', '{', '$' and '\' have special +meaning. If you want to insert one of these characters literally, escape them +with a backslash, '\'. 4.2 Plaintext Snippets *UltiSnips-plaintext-snippets* @@ -769,11 +882,12 @@ output is ignored. The variables automatically defined in python code are: > - fn - The current filename - path - The complete path to the current file - t - The values of the placeholders, t[1] is the text of ${1}, and so on - snip - UltiSnips.TextObjects.SnippetUtil object instance. Has methods that - simplify indentation handling. + fn - The current filename + path - The complete path to the current file + t - The values of the placeholders, t[1] is the text of ${1}, etc. + snip - UltiSnips.TextObjects.SnippetUtil object instance. Has methods + that simplify indentation handling. + context - Result of context condition. See |UltiSnips-context-snippets|. The 'snip' object provides the following methods: > @@ -825,6 +939,14 @@ The 'snip' object provides some properties as well: > snip.ft: The current filetype. + snip.p: + Last selected placeholder. Will contain placeholder object with + following properties: + + 'current_text' - text in the placeholder on the moment of selection; + 'start' - placeholder start on the moment of selection; + 'end' - placeholder end on the moment of selection; + For your convenience, the 'snip' object also provides the following operators: > @@ -915,10 +1037,10 @@ directly inside your snippets. For example to use global !p from my_snippet_helpers import * - endglobals + endglobal -4.4 Tabstops and Placeholders *UltiSnips-tabstops* *UltiSnips-placeholders* +4.5 Tabstops and Placeholders *UltiSnips-tabstops* *UltiSnips-placeholders* ----------------------------- Snippets are used to quickly insert reused text into a document. Often the @@ -931,7 +1053,8 @@ until all the variable components are complete. The syntax for a tabstop is the dollar sign followed by a number, for example, '$1'. Tabstops start at number 1 and are followed in sequential order. The '$0' tabstop is a special tabstop. It is always the last tabstop in the -snippet no matter how many tabstops are defined. +snippet no matter how many tabstops are defined. If there is no '$0' defined, +'$0' tabstop will be defined at the end of snippet. Here is a simple example. @@ -1120,6 +1243,13 @@ The options can be any combination of > i - case insensitive By default, regular expression matching is case sensitive. With this option, matching is done without regard to case. + m - multiline + By default, the '^' and '$' special characters only apply to the + start and end of the entire string; so if you select multiple lines, + transformations are made on them entirely as a whole single line + string. With this option, '^' and '$' special characters match the + start or end of any line within a string ( separated by newline + character - '\n' ). a - ascii conversion By default, transformation are made on the raw utf-8 string. With this option, matching is done on the corresponding ASCII string @@ -1226,94 +1356,432 @@ directive. clearsnippets ------------------- SNAP ------------------- -Without arguments, 'clearsnippets' removes all snippets defined up to that -point far for the current file type. Just a reminder, by default UltiSnips -traverses 'runtimepath' in reverse order, so 'clearsnippets' removes snippet -definitions appearing in files in 'runtimepath' after the '.snippets' file in -which it is encountered. +'clearsnippets' removes all snippets with a priority lower than the current +one. For example, the following cleares all snippets that have priority <= 1, +even though the example snippet is defined after the 'clearsnippets'. -To clear one or more specific snippet, provide the names of the snippets as -arguments to the 'clearsnippets' command. The following example will clear -the snippets 'trigger1' and 'trigger2'. +------------------- SNIP ------------------- +priority 1 +clearsnippets + +priority -1 +snippet example "Cleared example" + This will never be expanded. +endsnippet +------------------- SNAP ------------------- +To clear one or more specific snippet, provide the triggers of the snippets as +arguments to the 'clearsnippets' command. The following example will clear the +snippets 'trigger1' and 'trigger2'. ------------------- SNIP ------------------- clearsnippets trigger1 trigger2 ------------------- SNAP ------------------- -UltiSnips comes with a set of default snippets for many file types. If you -would rather not have some of them defined, you can use 'clearsnippets' in -your personal snippets files to remove them. Note: you do not need to remove -snippets if you wish to replace them. Simply use the '!' option. (See -|UltiSnips-adding-snippets| for the options). +4.9 Context snippets *UltiSnips-context-snippets* + +Context snippets can be enabled by using 'e' option in snippet definition. + +In that case snippet should be defined using this syntax: > + + snippet tab_trigger "description" "expression" options + +The 'expression' can be any python expression. If 'expression' evaluates to +'True', then this snippet will be chosen for expansion. The 'expression' must +be wrapped with double-quotes. + +The following python modules are automatically imported into the scope before +'expression' is evaluated: 're', 'os', 'vim', 'string', 'random'. + +Global variable `snip` will be available with following properties: + 'snip.window' - alias for 'vim.current.window' + 'snip.buffer' - alias for 'vim.current.window.buffer' + 'snip.cursor' - cursor object, which behaves like + 'vim.current.window.cursor', but zero-indexed and with following + additional methods: + - 'preserve()' - special method for executing pre/post/jump actions; + - 'set(line, column)' - sets cursor to specified line and column; + - 'to_vim_cursor()' - returns 1-indexed cursor, suitable for assigning + to 'vim.current.window.cursor'; + 'snip.line' and 'snip.column' - aliases for cursor position (zero-indexed); + 'snip.visual_mode' - ('v', 'V', '^V', see |visual-mode|); + 'snip.visual_text' - last visually-selected text; + 'snip.last_placeholder' - last active placeholder from previous snippet + with following properties: + + - 'current_text' - text in the placeholder on the moment of selection; + - 'start' - placeholder start on the moment of selection; + - 'end' - placeholder end on the moment of selection; + + + +------------------- SNIP ------------------- +snippet r "return" "re.match('^\s+if err ', snip.buffer[snip.line-1])" be +return err +endsnippet +------------------- SNAP ------------------- + +That snippet will expand to 'return err' only if the previous line is starting +from 'if err' prefix. + +Note: context snippets prioritized over non-context ones. It makes possible to +use non-context snippets as fallback, if no context matched: + +------------------- SNIP ------------------- +snippet i "if ..." b +if $1 { + $2 +} +endsnippet + +snippet i "if err != nil" "re.match('^\s+[^=]*err\s*:?=', snip.buffer[snip.line-1])" be +if err != nil { + $1 +} +endsnippet +------------------- SNAP ------------------- + +That snippet will expand into 'if err != nil' if previous line will +match 'err :=' prefix, otherwise the default 'if' snippet will be expanded. + +It's a good idea to move context conditions to a separate module, so it can be +used by other UltiSnips users. In that case, module should be imported +using 'global' keyword, like this: + +------------------- SNIP ------------------- +global !p +import my_utils +endglobal + +snippet , "return ..., nil/err" "my_utils.is_return_argument(snip)" ie +, `!p if my_utils.is_in_err_condition(): + snip.rv = "err" +else: + snip.rv = "nil"` +endsnippet +------------------- SNAP ------------------- + +That snippet will expand only if the cursor is located in the return statement, +and then it will expand either to 'err' or to 'nil' depending on which 'if' +statement it's located. 'is_return_argument' and 'is_in_err_condition' are +part of custom python module which is called 'my_utils' in this example. + +Context condition can return any value which python can use as condition in +it's 'if' statement, and if it's considered 'True', then snippet will be +expanded. The evaluated value of 'condition' is available in the 'snip.context' +variable inside the snippet: + +------------------- SNIP ------------------- +snippet + "var +=" "re.match('\s*(.*?)\s*:?=', snip.buffer[snip.line-1])" ie +`!p snip.rv = snip.context.group(1)` += $1 +endsnippet +------------------- SNAP ------------------- + +That snippet will expand to 'var1 +=' after line, which begins from 'var1 :='. + + *UltiSnips-capture-placeholder* + +You can capture placeholder text from previous snippet by using following +trick: +------------------- SNIP ------------------- +snippet = "desc" "snip.last_placeholder" Ae +`!p snip.rv = snip.context.current_text` == nil +endsnippet +------------------- SNAP ------------------- + +That snippet will be expanded only if you will replace selected tabstop in +other snippet (like, as in 'if ${1:var}') and will replace that tabstop by +tabstop value following by ' == nil'. + + +4.10 Snippets actions *UltiSnips-snippet-actions* +--------------------- + +Snippet actions is an arbitrary python code which can be executed at specific +points in lifetime of the snippet. + +There are three types of actions: + +* Pre-expand - invoked just after trigger condition was matched, but before + snippet actually expanded; +* Post-expand - invoked after snippet was expanded and interpolations + was applied for the first time, but before jump on the first placeholder. +* Jump - invoked just after jump to the next/prev placeholder. + +Specified code will be evaluated at stages defined above and same global +variables and modules will be available that are stated in +the |UltiSnips-context-snippets| section. + + *UltiSnips-buffer-proxy* + +Note: special variable called 'snip.buffer' should be used for all buffer +modifications. Not 'vim.current.buffer' and not 'vim.command("...")', because +of in that case UltiSnips will not be able to track changes in buffer from +actions. + +'snip.buffer' has the same interface as 'vim.current.window.buffer'. + +4.10.1 Pre-expand actions *UltiSnips-pre-expand-actions* + +Pre-expand actions can be used to match snippet in one location and then +expand it in the different location. Some useful cases are: correcting +indentation for snippet; expanding snippet for function declaration in another +function body with moving expansion point beyond initial function; performing +extract method refactoring via expanding snippet in different place. + +Pre-expand action declared as follows: > + pre_expand "python code here" + snippet ... + endsnippet + +Buffer can be modified in pre-expand action code through variable called +'snip.buffer', snippet expansion position will be automatically adjusted. + +If cursor line (where trigger was matched) need to be modified, then special +variable method 'snip.cursor.set(line, column)' must be called with the +desired cursor position. In that case UltiSnips will not remove any matched +trigger text and it should be done manually in action code. + +To addition to the scope variables defined above 'snip.visual_content' will be +also declared and will contain text that was selected before snippet expansion +(similar to $VISUAL placeholder). + +Following snippet will be expanded at 4 spaces indentation level no matter +where it was triggered. + +------------------- SNIP ------------------- +pre_expand "snip.buffer[snip.line] = ' '*4; snip.cursor.set(line, 4)" +snippet d +def $1(): + $0 +endsnippet +------------------- SNAP ------------------- + +Following snippet will move the selected code to the end of file and create +new method definition for it: + +------------------- SNIP ------------------- +pre_expand "del snip.buffer[snip.line]; snip.buffer.append(''); snip.cursor.set(len(snip.buffer)-1, 0)" +snippet x +def $1(): + ${2:${VISUAL}} +endsnippet +------------------- SNAP ------------------- + +4.10.2 Post-expand actions *UltiSnips-post-expand-actions* + +Post-expand actions can be used to perform some actions based on the expanded +snippet text. Some cases are: code style formatting (e.g. inserting newlines +before and after method declaration), apply actions depending on python +interpolation result. + +Post-expand action declared as follows: > + post_expand "python code here" + snippet ... + endsnippet + +Buffer can be modified in post-expand action code through variable called +'snip.buffer', snippet expansion position will be automatically adjusted. + +Variables 'snip.snippet_start' and 'snip.snippet_end' will be defined at the +action code scope and will point to positions of the start and end of expanded +snippet accordingly in the form '(line, column)'. + +Note: 'snip.snippet_start' and 'snip.snippet_end' will automatically adjust to +the correct positions if post-action will insert or delete lines before +expansion. + +Following snippet will expand to method definition and automatically insert +additional newline after end of the snippet. It's very useful to create a +function that will insert as many newlines as required in specific context. + +------------------- SNIP ------------------- +post_expand "snip.buffer[snip.snippet_end[0]+1:snip.snippet_end[0]+1] = ['']" +snippet d "Description" b +def $1(): + $2 +endsnippet +------------------- SNAP ------------------- + +4.10.3 Post-jump actions *UltiSnips-post-jump-actions* + +Post-jump actions can be used to trigger some code based on user input into +the placeholders. Notable use cases: expand another snippet after jump or +anonymous snippet after last jump (e.g. perform move method refactoring and +then insert new method invokation); insert heading into TOC after last jump. + +Jump-expand action declared as follows: > + post_jump "python code here" + snippet ... + endsnippet + +Buffer can be modified in post-jump action code through variable called +'snip.buffer', snippet expansion position will be automatically adjusted. + +Next variables and methods will be also defined in the action code scope: +* 'snip.tabstop' - number of tabstop jumped onto; +* 'snip.jump_direction' - '1' if jumped forward and '-1' otherwise; +* 'snip.tabstops' - list with tabstop objects, see above; +* 'snip.snippet_start' - (line, column) of start of the expanded snippet; +* 'snip.snippet_end' - (line, column) of end of the expanded snippet; +* 'snip.expand_anon()' - alias for 'UltiSnips_Manager.expand_anon()'; + +Tabstop object has several useful properties: +* 'start' - (line, column) of the starting position of the tabstop (also + accessible as 'tabstop.line' and 'tabstop.col'). +* 'end' - (line, column) of the ending position; +* 'current_text' - text inside the tabstop. + +Following snippet will insert section in the Table of Contents in the vim-help +file: + +------------------- SNIP ------------------- +post_jump "if snip.tabstop == 0: insert_toc_item(snip.tabstops[1], snip.buffer)" +snippet s "section" b +`!p insert_delimiter_0(snip, t)`$1`!p insert_section_title(snip, t)` +`!p insert_delimiter_1(snip, t)` +$0 +endsnippet +------------------- SNAP ------------------- + +'insert_toc_item' will be called after first jump and will add newly entered +section into the TOC for current file. + +Note: It is also possible to trigger snippet expansion from the jump action. +In that case method 'snip.cursor.preserve()' should be called, so UltiSnips +will know that cursor is already at the required position. + +Following example will insert method call at the end of file after user jump +out of method declaration snippet. + +------------------- SNIP ------------------- +global !p +def insert_method_call(name): + vim.command('normal G') + snip.expand_anon(name + '($1)\n') +endglobal + +post_jump "if snip.tabstop == 0: insert_method_call(snip.tabstops[1].current_text)" +snippet d "method declaration" b +def $1(): + $2 +endsnippet +------------------- SNAP ------------------- + +4.11 Autotrigger *UltiSnips-autotrigger* +---------------- + +Note: vim should be newer than 7.4.214 to support this feature. + +Many language constructs can occur only at specific places, so it's +possible to use snippets without manually triggering them. + +Snippet can be marked as autotriggered by specifying 'A' option in the snippet +definition. + +After snippet is defined as being autotriggered, snippet condition will be +checked on every typed character and if condition matches, then snippet will +be triggered. + +*Warning:* using of this feature can lead to significant vim slowdown. If you +discovered that, report an issue to the github.com/SirVer/UltiSnips. + +Consider following snippets, that can be usefull in Go programming: +------------------- SNIP ------------------- +snippet "^p" "package" rbA +package ${1:main} +endsnippet + +snippet "^m" "func main" rbA +func main() { + $1 +} +endsnippet +------------------- SNAP ------------------- + +When "p" character will occur in the beginning of the line, it will be +automatically expanded into "package main". Same with "m" character. There is +no need to press trigger key after "m"" ============================================================================== -5. Support for other plugins *UltiSnips-other-plugins* +5. UltiSnips and Other Plugins *UltiSnips-other-plugins* + +5.1 Existing Integrations *UltiSnips-integrations* +------------------------- UltiSnips has built-in support for some common plugins and there are others that are aware of UltiSnips and use it to improve the user experience. This is -an incomplete list - if you want to have your plugin listed here, just sent me -a pull request. +an incomplete list - if you want to have your plugin listed here, just send a +pull request. + + *UltiSnips-snipMate* + +snipMate - UltiSnips is a drop-in replacement for snipMate. It has many more +features, so porting snippets is still a good idea, but switching has low +friction now. UltiSnips is trying hard to truly emulate snipMate, for example +recursive tabstops are not supported in snipMate snippets (but of course in +UltiSnips snippets). YouCompleteMe - comes with out of the box completion support for UltiSnips. It offers a really nice completion dialogue for snippets. +neocomplete - UltiSnips ships with a source for neocomplete and therefore +offers out of the box completion dialogue support for it too. + +unite - UltiSnips has a source for unite. As an example of how you can use +it add the following function and mappings to your vimrc: > + + function! UltiSnipsCallUnite() + Unite -start-insert -winheight=100 -immediately -no-empty ultisnips + return '' + endfunction + + inoremap =(pumvisible()? "\C-E>":"")=UltiSnipsCallUnite() + nnoremap a=(pumvisible()? "\C-E>":"")=UltiSnipsCallUnite() + +When typing in either insert or normal mode you will get the unite +interface with matching snippets. Pressing enter will expand the corresponding +snippet. If only one snippet matches the text in front of the cursor will be +expanded when you press the key. + Supertab - UltiSnips has built-in support for Supertab. Just use a recent enough version of both plugins and will either expand a snippet or defer to Supertab for expansion. -neocomplcache - Stanislav Golovanov (JazzCore) has made an integration plugin -to use UltiSnips as engine inside of neocomplcache. You can find his work at -https://github.com/JazzCore/neocomplcache-ultisnips. +5.2 Extending UltiSnips *UltiSnips-extending* +------------------------- +UltiSnips allows other plugins to add new snippets on the fly. Since UltiSnips +is written in python, the integration is also on a python basis. A small +example can be found in `test.py`, search for AddNewSnippetSource. Please +contact us on github if you integrate UltiSnips with your plugin so it can be +listed in the docs. ============================================================================= 6. Helping Out *UltiSnips-helping* UltiSnips needs the help of the Vim community to keep improving. Please -consider joining this effort by providing new snippets, new features or bug -reports. - -You can contribute snippets or patches in various ways. The methods are listed -below in order of convenience for me. Please be as convenient as you -can be :) +consider joining this effort by providing new features or bug reports. * Clone the repository on GitHub (git clone git@github.com:SirVer/ultisnips.git), make your changes and send a pull request on GitHub. * Make a patch, report a bug/feature request (see below) and attach the patch to it. -* Send me an Email with a patch (see Contact section below). -* Send me an Email with the changed files only. You can contribute by fixing or reporting bugs in our issue tracker: https://github.com/sirver/ultisnips/issues -If you like this plugin, please vote for it on its Vim script page > - http://www.vim.org/scripts/script.php?script_id=2715 -It is life-changing for me. Maybe it is for you too. - - -============================================================================= -7. Contact *UltiSnips-contact* - -You can reach me at SirVer -AT- gmx -ADOT- de. - -This project aims to be the one-for-all solution for Snippets for Vim. If you -miss a feature or find a bug, please contact me or add an issues to our issues -tracker. - ============================================================================= -8. Contributors *UltiSnips-contributors* +7. Contributors *UltiSnips-contributors* -The primary developer of UltiSnips is SirVer (Holger Rapp). The following -individuals have contributed to UltiSnips. +UltiSnips has been started and maintained from Jun 2009 - Dec 2015 by Holger +Rapp (@SirVer, SirVer@gmx.de). It is now maintained by Stanislav Seletskiy +(@seletskiy). - -8.1 Patches & Coding *UltiSnips-contricoding* --------------------- - -Contributors listed in chronological order: +This is the list of contributors pre-git in chronological order. For a full +list of contributors take the union of this set and the authors according to +git log. JCEB - Jan Christoph Ebersbach Michael Henry @@ -1357,61 +1825,21 @@ Contributors listed in chronological order: Brian Mock - saikobee Gernot Höflechner - LFDM Marcelo D Montu - mMontu - - -8.2 Snippets *UltiSnips-contrisnippets* ------------- - -Contributors listed in chronological order: - - Alec Thomas - Ryan Wooden - Ches Martin - Gordin (g0rdin) - Jan Mollowitz (phux) - Georgi Valkov (gvalkov) - Miek Gieben (miek) - Aldis Berjoza (graudeejs) - Jorge Rodrigues (skeept) - Martin Grenfell (scrooloose) - Laughedelic - Anthony Wilson (anthonywilson) - Nick Anderson (nickanderson) - Timothy Mellor (mellort) - Chris Lasher (gotgenes) - Chen Houwu (chenhouwu) - Harry Zhxu (harryzhxu) - Pavel Puchkin (neoascetic) - Jacek Wysocki (exu) - Alexander Kondratskiy (KholdStare) - Martin Krauskopf (martin-krauskopf) - Theocrite (theocrite) - Ferdinand Majerech (kiith-sa) - Vivien Didelot - Øystein Walle (osse) - Pedro Algarvio (s0undt3ch) - Steven Humphrey (shumphrey) - Björn Winckler (b4winckler) - David Brown (Nali4Freedom) - Harry Xu (harryxu) - Tom Cammann (takac) - Paolo Cretaro (melko) - Sergey Alexandrov (taketwo) - Jaromír Hradílek (jhradilek) - Vangelis Tsoumenis (kioopi) - Rudi Grinberg (rgrinberg) - javipolo - Matthew Strawbridge (pxc) - Josh Strater (jstrater) - jinzhu - Rene Vergara (ravl1084) - Johan Haals (JHaals) - Danilo Bargen (dbrgn) - Bernhard Vallant (lazerscience) - Von Welch (von) - Nikola Petrov (nikolavp) - Maarten Slagter (slagtermaarten) - -Thank you for your support. + Karl Yngve Lervåg - lervag + Pedro Ferrari - petobens + Ches Martin - ches + Christian - Oberon00 + Andrew Ruder - aeruder + Mathias Fußenegger - mfussenegger + Kevin Ballard - kballard + Ahbong Chang - cwahbong + Glenn Griffin - ggriffiniii + Michael - Pyrohh + Stanislav Seletskiy - seletskiy + Pawel Palucki - ppalucki + Dettorer - dettorer + Zhao Jiarong - kawing-chiu + Ye Ding - dyng + Greg Hurrell - wincent vim:tw=78:ts=8:ft=help:norl: diff --git a/doc/demo.gif b/doc/demo.gif new file mode 100644 index 0000000000000000000000000000000000000000..32affe42cffec4a57f0edb2b3036e92adb7e629f GIT binary patch literal 1071709 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

    ;@|1#cQt5M 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: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%0A-XA-*gZUUz& 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 VpA8&F<mR1fF?8Go9m_ta{s(>FDLw!I literal 0 HcmV?d00001 diff --git a/ftdetect/UltiSnips.vim b/ftdetect/UltiSnips.vim index 9ec5b7b..81af3a1 100644 --- a/ftdetect/UltiSnips.vim +++ b/ftdetect/UltiSnips.vim @@ -1,5 +1,17 @@ " This has to be called before ftplugins are loaded. Therefore " it is here in ftdetect though it maybe shouldn't -if has("autocmd") - autocmd FileType * call UltiSnips#FileTypeChanged() + +" This is necessary to prevent errors when using vim as a pager. +if exists("vimpager") + finish +endif + +if has("autocmd") && &loadplugins + augroup UltiSnipsFileType + autocmd! + autocmd FileType * call UltiSnips#FileTypeChanged() + augroup END + + " restore 'filetypedetect' group declaration + augroup filetypedetect endif diff --git a/ftplugin/snippets.vim b/ftplugin/snippets.vim index 134fe01..8479a45 100644 --- a/ftplugin/snippets.vim +++ b/ftplugin/snippets.vim @@ -1,5 +1,13 @@ " Set some sane defaults for snippet files +if exists('b:did_ftplugin') + finish +endif +let b:did_ftplugin = 1 + +let s:save_cpo = &cpo +set cpo&vim + " Fold by syntax, but open all folds by default setlocal foldmethod=syntax setlocal foldlevel=99 @@ -7,10 +15,33 @@ setlocal foldlevel=99 setlocal commentstring=#%s setlocal noexpandtab +setlocal autoindent nosmartindent nocindent " Define match words for use with matchit plugin " http://www.vim.org/scripts/script.php?script_id=39 if exists("loaded_matchit") && !exists("b:match_words") let b:match_ignorecase = 0 let b:match_words = '^snippet\>:^endsnippet\>,^global\>:^endglobal\>,\${:}' + let s:set_match_words = 1 endif + +" Add TagBar support +let g:tagbar_type_snippets = { + \ 'ctagstype': 'UltiSnips', + \ 'kinds': [ + \ 's:snippets', + \ ], + \ 'deffile': expand('<sfile>:p:h:h') . '/ctags/UltiSnips.cnf', + \ } + +" don't unset g:tagbar_type_snippets, it serves no purpose +let b:undo_ftplugin = " + \ setlocal foldmethod< foldlevel< commentstring< + \|setlocal expandtab< autoindent< smartindent< cindent< + \|if get(s:, 'set_match_words') + \|unlet! b:match_ignorecase b:match_words s:set_match_words + \|endif + \" + +let &cpo = s:save_cpo +unlet s:save_cpo diff --git a/plugin/UltiSnips.vim b/plugin/UltiSnips.vim index 0f9617f..f7be308 100644 --- a/plugin/UltiSnips.vim +++ b/plugin/UltiSnips.vim @@ -1,69 +1,57 @@ -" File: UltiSnips.vim -" Author: Holger Rapp <SirVer@gmx.de> -" Description: The Ultimate Snippets solution for Vim -" -" Testing Info: -" See directions at the top of the test.py script located one -" directory above this file. - -if exists('did_UltiSnips_plugin') || &cp || version < 700 +if exists('did_plugin_ultisnips') || &cp finish endif +let did_plugin_ultisnips=1 -" The Commands we define. -command! -nargs=? -complete=customlist,UltiSnips#FileTypeComplete UltiSnipsEdit - \ :call UltiSnips#Edit(<q-args>) - -command! -nargs=1 UltiSnipsAddFiletypes :call UltiSnips#AddFiletypes(<q-args>) - -" Backwards compatible functions. Prefer the ones in autoload/. -function! UltiSnips_FileTypeChanged() - echoerr "Deprecated UltiSnips_FileTypeChanged called. Please use UltiSnips#FileTypeChanged." | sleep 1 - return UltiSnips#FileTypeChanged() -endfunction - -function! UltiSnips_ExpandSnippet() - echoerr "Deprecated UltiSnips_ExpandSnippet called. Please use UltiSnips#ExpandSnippet." | sleep 1 - return UltiSnips#ExpandSnippet() -endfunction - -function! UltiSnips_ExpandSnippetOrJump() - echoerr "Deprecated UltiSnips_ExpandSnippetOrJump called. Please use UltiSnips#ExpandSnippetOrJump." | sleep 1 - return UltiSnips#ExpandSnippetOrJump() -endfunction - -function! UltiSnips_SnippetsInCurrentScope() - echoerr "Deprecated UltiSnips_SnippetsInCurrentScope called. Please use UltiSnips#SnippetsInCurrentScope." | sleep 1 - return UltiSnips#SnippetsInCurrentScope() -endfunction - -function! UltiSnips_JumpBackwards() - echoerr "Deprecated UltiSnips_JumpBackwards called. Please use UltiSnips#JumpBackwards." | sleep 1 - return UltiSnips#JumpBackwards() -endfunction +if version < 704 + echohl WarningMsg + echom "UltiSnips requires Vim >= 7.4" + echohl None + finish +endif -function! UltiSnips_JumpForwards() - echoerr "Deprecated UltiSnips_JumpForwards called. Please use UltiSnips#JumpForwards." | sleep 1 - return UltiSnips#JumpForwards() -endfunction +if !exists("g:UltiSnipsUsePythonVersion") + let g:_uspy=":py3 " + if !has("python3") + if !has("python") + if !exists("g:UltiSnipsNoPythonWarning") + echohl WarningMsg + echom "UltiSnips requires py >= 2.7 or py3" + echohl None + endif + unlet g:_uspy + finish + endif + let g:_uspy=":py " + endif +else + " Use user-provided value, but check if it's available. + " This uses `has()`, because e.g. `exists(":python3")` is always 2. + if g:UltiSnipsUsePythonVersion == 2 && has('python') + let g:_uspy=":python " + elseif g:UltiSnipsUsePythonVersion == 3 && has('python3') + let g:_uspy=":python3 " + endif + if !exists('g:_uspy') + echohl WarningMsg + echom "UltiSnips: the Python version from g:UltiSnipsUsePythonVersion (".g:UltiSnipsUsePythonVersion.") is not available." + echohl None + finish + endif +endif -function! UltiSnips_AddSnippet(...) - echoerr "Deprecated UltiSnips_AddSnippet called. Please use UltiSnips#AddSnippetWithPriority." | sleep 1 - return call(function('UltiSnips#AddSnippet'), a:000) -endfunction +" The Commands we define. +command! -bang -nargs=? -complete=customlist,UltiSnips#FileTypeComplete UltiSnipsEdit + \ :call UltiSnips#Edit(<q-bang>, <q-args>) -function! UltiSnips_Anon(...) - echoerr "Deprecated UltiSnips_Anon called. Please use UltiSnips#Anon." | sleep 1 - return call(function('UltiSnips#Anon'), a:000) -endfunction +command! -nargs=1 UltiSnipsAddFiletypes :call UltiSnips#AddFiletypes(<q-args>) -au CursorMovedI * call UltiSnips#CursorMoved() -au CursorMoved * call UltiSnips#CursorMoved() -au BufLeave * call UltiSnips#LeavingBuffer() -au InsertLeave * call UltiSnips#LeavingInsertMode() +augroup UltiSnips_AutoTrigger + au! + au InsertCharPre * call UltiSnips#TrackChange() + au TextChangedI * call UltiSnips#TrackChange() +augroup END call UltiSnips#map_keys#MapKeys() -let did_UltiSnips_plugin=1 - " vim: ts=8 sts=4 sw=4 diff --git a/plugin/snipMate_compatibility.vim b/plugin/snipMate_compatibility.vim deleted file mode 100644 index f88c25b..0000000 --- a/plugin/snipMate_compatibility.vim +++ /dev/null @@ -1,28 +0,0 @@ -" File: snipMate_compatibility.vim -" Author: Phillip Berndt <phillip.berndt@gmail.com> -" Description: Snipmate compatibility helper functions for UltiSnips -" -" Snipmate defines a function named Filename and a variable called -" g:snips_author for use in snippet subtitutions. See -" https://github.com/msanders/snipmate.vim/blob/master/doc/snipMate.txt -" for details. -" - -if exists('did_UltiSnips_snipmate_compatibility') - finish -endif -let did_UltiSnips_snipmate_compatibility = 1 - -" Define g:snips_author; some snipmate snippets use this -if ! exists('g:snips_author') - let g:snips_author = "John Doe" -endif - -" Filename function, taken from snipMate.vim {{{ -fun! Filename(...) - let filename = expand('%:t:r') - if filename == '' | return a:0 == 2 ? a:2 : '' | endif - return !a:0 || a:1 == '' ? filename : substitute(a:1, '$1', filename, 'g') -endf -" }}} - diff --git a/pylintrc b/pylintrc index 5790281..9d986cf 100644 --- a/pylintrc +++ b/pylintrc @@ -44,6 +44,7 @@ disable= too-many-public-methods, too-many-return-statements, too-many-statements, + bad-continuation, [REPORTS] diff --git a/pythonx/UltiSnips/__init__.py b/pythonx/UltiSnips/__init__.py index 9566f08..dfd3f48 100644 --- a/pythonx/UltiSnips/__init__.py +++ b/pythonx/UltiSnips/__init__.py @@ -3,11 +3,4 @@ """Entry point for all thinks UltiSnips.""" -import vim # pylint:disable=import-error - -from UltiSnips.snippet_manager import SnippetManager - -UltiSnips_Manager = SnippetManager( # pylint:disable=invalid-name - vim.eval('g:UltiSnipsExpandTrigger'), - vim.eval('g:UltiSnipsJumpForwardTrigger'), - vim.eval('g:UltiSnipsJumpBackwardTrigger')) +from UltiSnips.snippet_manager import UltiSnips_Manager diff --git a/pythonx/UltiSnips/_diff.py b/pythonx/UltiSnips/_diff.py index f2a030b..42a5383 100644 --- a/pythonx/UltiSnips/_diff.py +++ b/pythonx/UltiSnips/_diff.py @@ -10,39 +10,45 @@ import sys from UltiSnips import _vim from UltiSnips.position import Position + def is_complete_edit(initial_line, original, wanted, cmds): """Returns true if 'original' is changed to 'wanted' with the edit commands - in 'cmds'. Initial line is to change the line numbers in 'cmds'.""" + in 'cmds'. + + Initial line is to change the line numbers in 'cmds'. + + """ buf = original[:] for cmd in cmds: ctype, line, col, char = cmd line -= initial_line - if ctype == "D": + if ctype == 'D': if char != '\n': - buf[line] = buf[line][:col] + buf[line][col+len(char):] + buf[line] = buf[line][:col] + buf[line][col + len(char):] else: if line + 1 < len(buf): - buf[line] = buf[line] + buf[line+1] - del buf[line+1] + buf[line] = buf[line] + buf[line + 1] + del buf[line + 1] else: del buf[line] - elif ctype == "I": + elif ctype == 'I': buf[line] = buf[line][:col] + char + buf[line][col:] buf = '\n'.join(buf).split('\n') return (len(buf) == len(wanted) and all(j == k for j, k in zip(buf, wanted))) + def guess_edit(initial_line, last_text, current_text, vim_state): - """ - Try to guess what the user might have done by heuristically looking at + """Try to guess what the user might have done by heuristically looking at cursor movement, number of changed lines and if they got longer or shorter. This will detect most simple movements like insertion, deletion of a line or carriage return. 'initial_text' is the index of where the comparison starts, 'last_text' is the last text of the snippet, 'current_text' is the current text of the snippet and 'vim_state' is the cached vim state. - Returns (True, edit_cmds) when the edit could be guessed, (False, None) - otherwise. + Returns (True, edit_cmds) when the edit could be guessed, (False, + None) otherwise. + """ if not len(last_text) and not len(current_text): return True, () @@ -53,83 +59,84 @@ def guess_edit(initial_line, last_text, current_text, vim_state): if (len(last_text) and (not current_text or (len(current_text) == 1 and not current_text[0])) - ): + ): es = [] if not current_text: current_text = [''] for i in last_text: - es.append(("D", initial_line, 0, i)) - es.append(("D", initial_line, 0, "\n")) - es.pop() # Remove final \n because it is not really removed + es.append(('D', initial_line, 0, i)) + es.append(('D', initial_line, 0, '\n')) + es.pop() # Remove final \n because it is not really removed if is_complete_edit(initial_line, last_text, current_text, es): return True, es - if ppos.mode == 'v': # Maybe selectmode? + if ppos.mode == 'v': # Maybe selectmode? sv = list(map(int, _vim.eval("""getpos("'<")"""))) - sv = Position(sv[1]-1, sv[2]-1) + sv = Position(sv[1] - 1, sv[2] - 1) ev = list(map(int, _vim.eval("""getpos("'>")"""))) - ev = Position(ev[1]-1, ev[2]-1) - if "exclusive" in _vim.eval("&selection"): - ppos.col -= 1 # We want to be inclusive, sorry. + ev = Position(ev[1] - 1, ev[2] - 1) + if 'exclusive' in _vim.eval('&selection'): + ppos.col -= 1 # We want to be inclusive, sorry. ev.col -= 1 es = [] if sv.line == ev.line: - es.append(("D", sv.line, sv.col, - last_text[sv.line - initial_line][sv.col:ev.col+1])) + es.append(('D', sv.line, sv.col, + last_text[sv.line - initial_line][sv.col:ev.col + 1])) if sv != pos and sv.line == pos.line: - es.append(("I", sv.line, sv.col, - current_text[sv.line - initial_line][sv.col:pos.col+1])) + es.append(('I', sv.line, sv.col, + current_text[sv.line - initial_line][sv.col:pos.col + 1])) if is_complete_edit(initial_line, last_text, current_text, es): return True, es if pos.line == ppos.line: - if len(last_text) == len(current_text): # Movement only in one line + if len(last_text) == len(current_text): # Movement only in one line llen = len(last_text[ppos.line - initial_line]) clen = len(current_text[pos.line - initial_line]) - if ppos < pos and clen > llen: # maybe only chars have been added + if ppos < pos and clen > llen: # maybe only chars have been added es = ( - ("I", ppos.line, ppos.col, + ('I', ppos.line, ppos.col, current_text[ppos.line - initial_line] - [ppos.col:pos.col]), + [ppos.col:pos.col]), ) if is_complete_edit(initial_line, last_text, current_text, es): return True, es if clen < llen: - if ppos == pos: # 'x' or DEL or dt or something + if ppos == pos: # 'x' or DEL or dt or something es = ( - ("D", pos.line, pos.col, + ('D', pos.line, pos.col, last_text[ppos.line - initial_line] - [ppos.col:ppos.col + (llen - clen)]), + [ppos.col:ppos.col + (llen - clen)]), ) if is_complete_edit(initial_line, last_text, - current_text, es): + current_text, es): return True, es - if pos < ppos: # Backspacing or dT dF? + if pos < ppos: # Backspacing or dT dF? es = ( - ("D", pos.line, pos.col, + ('D', pos.line, pos.col, last_text[pos.line - initial_line] - [pos.col:pos.col + llen - clen]), + [pos.col:pos.col + llen - clen]), ) if is_complete_edit(initial_line, last_text, - current_text, es): + current_text, es): return True, es elif len(current_text) < len(last_text): # where some lines deleted? (dd or so) es = [] - for i in range(len(last_text)-len(current_text)): - es.append(("D", pos.line, 0, - last_text[pos.line - initial_line + i])) - es.append(("D", pos.line, 0, '\n')) + for i in range(len(last_text) - len(current_text)): + es.append(('D', pos.line, 0, + last_text[pos.line - initial_line + i])) + es.append(('D', pos.line, 0, '\n')) if is_complete_edit(initial_line, last_text, - current_text, es): + current_text, es): return True, es else: # Movement in more than one line - if ppos.line + 1 == pos.line and pos.col == 0: # Carriage return? - es = (("I", ppos.line, ppos.col, "\n"),) + if ppos.line + 1 == pos.line and pos.col == 0: # Carriage return? + es = (('I', ppos.line, ppos.col, '\n'),) if is_complete_edit(initial_line, last_text, - current_text, es): + current_text, es): return True, es return False, None + def diff(a, b, sline=0): """ Return a list of deletions and insertions that will turn 'a' into 'b'. This @@ -154,8 +161,8 @@ def diff(a, b, sline=0): d[0] = [(0, 0, sline, 0, ())] cost = 0 - deletion_cost = len(a)+len(b) - insertion_cost = len(a)+len(b) + deletion_cost = len(a) + len(b) + insertion_cost = len(a) + len(b) while True: while len(d[cost]): x, y, line, col, what = d[cost].pop() @@ -170,50 +177,50 @@ def diff(a, b, sline=0): ncol = 0 nline += 1 lcost = cost + 1 - if (what and what[-1][0] == "D" and what[-1][1] == line and + if (what and what[-1][0] == 'D' and what[-1][1] == line and what[-1][2] == col and a[x] != '\n'): # Matching directly after a deletion should be as costly as # DELETE + INSERT + a bit - lcost = (deletion_cost + insertion_cost)*1.5 - if seen[x+1, y+1] > lcost: - d[lcost].append((x+1, y+1, nline, ncol, what)) - seen[x+1, y+1] = lcost - if y < len(b): # INSERT + lcost = (deletion_cost + insertion_cost) * 1.5 + if seen[x + 1, y + 1] > lcost: + d[lcost].append((x + 1, y + 1, nline, ncol, what)) + seen[x + 1, y + 1] = lcost + if y < len(b): # INSERT ncol = col + 1 nline = line if b[y] == '\n': ncol = 0 nline += 1 - if (what and what[-1][0] == "I" and what[-1][1] == nline and - what[-1][2]+len(what[-1][-1]) == col and b[y] != '\n' and - seen[x, y+1] > cost + (insertion_cost + ncol) // 2 - ): - seen[x, y+1] = cost + (insertion_cost + ncol) // 2 + if (what and what[-1][0] == 'I' and what[-1][1] == nline and + what[-1][2] + len(what[-1][-1]) == col and b[y] != '\n' and + seen[x, y + 1] > cost + (insertion_cost + ncol) // 2 + ): + seen[x, y + 1] = cost + (insertion_cost + ncol) // 2 d[cost + (insertion_cost + ncol) // 2].append( - (x, y+1, line, ncol, what[:-1] + ( - ("I", what[-1][1], what[-1][2], + (x, y + 1, line, ncol, what[:-1] + ( + ('I', what[-1][1], what[-1][2], what[-1][-1] + b[y]),) - ) + ) ) - elif seen[x, y+1] > cost + insertion_cost + ncol: - seen[x, y+1] = cost + insertion_cost + ncol - d[cost + ncol + insertion_cost].append((x, y+1, nline, ncol, - what + (("I", line, col, b[y]),)) - ) - if x < len(a): # DELETE - if (what and what[-1][0] == "D" and what[-1][1] == line and - what[-1][2] == col and a[x] != '\n' and - what[-1][-1] != '\n' and - seen[x+1, y] > cost + deletion_cost // 2 - ): - seen[x+1, y] = cost + deletion_cost // 2 + elif seen[x, y + 1] > cost + insertion_cost + ncol: + seen[x, y + 1] = cost + insertion_cost + ncol + d[cost + ncol + insertion_cost].append((x, y + 1, nline, ncol, + what + (('I', line, col, b[y]),)) + ) + if x < len(a): # DELETE + if (what and what[-1][0] == 'D' and what[-1][1] == line and + what[-1][2] == col and a[x] != '\n' and + what[-1][-1] != '\n' and + seen[x + 1, y] > cost + deletion_cost // 2 + ): + seen[x + 1, y] = cost + deletion_cost // 2 d[cost + deletion_cost // 2].append( - (x+1, y, line, col, what[:-1] + ( - ("D", line, col, what[-1][-1] + a[x]),)) - ) - elif seen[x+1, y] > cost + deletion_cost: - seen[x+1, y] = cost + deletion_cost - d[cost + deletion_cost].append((x+1, y, line, col, what + - (("D", line, col, a[x]),)) + (x + 1, y, line, col, what[:-1] + ( + ('D', line, col, what[-1][-1] + a[x]),)) ) + elif seen[x + 1, y] > cost + deletion_cost: + seen[x + 1, y] = cost + deletion_cost + d[cost + deletion_cost].append((x + 1, y, line, col, what + + (('D', line, col, a[x]),)) + ) cost += 1 diff --git a/pythonx/UltiSnips/_vim.py b/pythonx/UltiSnips/_vim.py index 579de1d..568da3a 100644 --- a/pythonx/UltiSnips/_vim.py +++ b/pythonx/UltiSnips/_vim.py @@ -9,64 +9,87 @@ import vim # pylint:disable=import-error from vim import error # pylint:disable=import-error,unused-import from UltiSnips.compatibility import col2byte, byte2col, \ - as_unicode, as_vimencoding + as_unicode, as_vimencoding from UltiSnips.position import Position +from contextlib import contextmanager + + class VimBuffer(object): + """Wrapper around the current Vim buffer.""" def __getitem__(self, idx): - if isinstance(idx, slice): # Py3 + if isinstance(idx, slice): # Py3 return self.__getslice__(idx.start, idx.stop) rv = vim.current.buffer[idx] return as_unicode(rv) - def __getslice__(self, i, j): # pylint:disable=no-self-use + def __getslice__(self, i, j): # pylint:disable=no-self-use rv = vim.current.buffer[i:j] return [as_unicode(l) for l in rv] def __setitem__(self, idx, text): - if isinstance(idx, slice): # Py3 + if isinstance(idx, slice): # Py3 return self.__setslice__(idx.start, idx.stop, text) vim.current.buffer[idx] = as_vimencoding(text) - def __setslice__(self, i, j, text): # pylint:disable=no-self-use + def __setslice__(self, i, j, text): # pylint:disable=no-self-use vim.current.buffer[i:j] = [as_vimencoding(l) for l in text] def __len__(self): return len(vim.current.buffer) @property - def line_till_cursor(self): # pylint:disable=no-self-use + def line_till_cursor(self): # pylint:disable=no-self-use """Returns the text before the cursor.""" - # Note: we want byte position here - _, col = vim.current.window.cursor - line = vim.current.line - before = as_unicode(line[:col]) - return before + _, col = self.cursor + return as_unicode(vim.current.line)[:col] @property - def number(self): # pylint:disable=no-self-use - """The bufnr() of this buffer.""" - return int(eval("bufnr('%')")) + def number(self): # pylint:disable=no-self-use + """The bufnr() of the current buffer.""" + return vim.current.buffer.number @property - def cursor(self): # pylint:disable=no-self-use - """ - The current windows cursor. Note that this is 0 based in col and 0 - based in line which is different from Vim's cursor. + def cursor(self): # pylint:disable=no-self-use + """The current windows cursor. + + Note that this is 0 based in col and 0 based in line which is + different from Vim's cursor. + """ line, nbyte = vim.current.window.cursor col = byte2col(line, nbyte) return Position(line - 1, col) @cursor.setter - def cursor(self, pos): # pylint:disable=no-self-use + def cursor(self, pos): # pylint:disable=no-self-use """See getter.""" nbyte = col2byte(pos.line + 1, pos.col) vim.current.window.cursor = pos.line + 1, nbyte buf = VimBuffer() # pylint:disable=invalid-name +@contextmanager +def toggle_opt(name, new_value): + old_value = eval('&' + name) + command('set {0}={1}'.format(name, new_value)) + try: + yield + finally: + command('set {0}={1}'.format(name, old_value)) + +@contextmanager +def save_mark(name): + old_pos = get_mark_pos(name) + try: + yield + finally: + if _is_pos_zero(old_pos): + delete_mark(name) + else: + set_mark_from_pos(name, old_pos) + def escape(inp): """Creates a vim-friendly string from a group of dicts, lists and strings.""" @@ -76,17 +99,19 @@ def escape(inp): rv = as_unicode('[' + ','.join(conv(o) for o in obj) + ']') elif isinstance(obj, dict): rv = as_unicode('{' + ','.join([ - "%s:%s" % (conv(key), conv(value)) + '%s:%s' % (conv(key), conv(value)) for key, value in obj.iteritems()]) + '}') else: rv = as_unicode('"%s"') % as_unicode(obj).replace('"', '\\"') return rv return conv(inp) + def command(cmd): """Wraps vim.command.""" return as_unicode(vim.command(as_vimencoding(cmd))) + def eval(text): """Wraps vim.eval.""" rv = vim.eval(as_vimencoding(text)) @@ -94,105 +119,127 @@ def eval(text): return as_unicode(rv) return rv + def feedkeys(keys, mode='n'): - """Wrapper around vim's feedkeys function. Mainly for convenience.""" - command(as_unicode(r'call feedkeys("%s", "%s")') % (keys, mode)) + """Wrapper around vim's feedkeys function. + + Mainly for convenience. + + """ + if eval('mode()') == 'n': + if keys == 'a': + cursor_pos = get_cursor_pos() + cursor_pos[2] = int(cursor_pos[2]) + 1 + set_cursor_from_pos(cursor_pos) + if keys in 'ai': + keys = 'startinsert' + + if keys == 'startinsert': + command('startinsert') + else: + command(as_unicode(r'call feedkeys("%s", "%s")') % (keys, mode)) + def new_scratch_buffer(text): - """Create a new scratch buffer with the text given""" - vim.command("botright new") - vim.command("set ft=") - vim.command("set buftype=nofile") + """Create a new scratch buffer with the text given.""" + vim.command('botright new') + vim.command('set ft=') + vim.command('set buftype=nofile') vim.current.buffer[:] = text.splitlines() feedkeys(r"\<Esc>") -def select(start, end): - """Select the span in Select mode""" +def virtual_position(line, col): + """Runs the position through virtcol() and returns the result.""" + nbytes = col2byte(line, col) + return line, int(eval('virtcol([%d, %d])' % (line, nbytes))) + + +def select(start, end): + """Select the span in Select mode.""" _unmap_select_mode_mapping() - delta = end - start - lineno, col = start.line, start.col + selection = eval('&selection') + + col = col2byte(start.line + 1, start.col) + vim.current.window.cursor = start.line + 1, col - col = col2byte(lineno + 1, col) - vim.current.window.cursor = lineno + 1, col + mode = eval('mode()') - move_cmd = "" - if eval("mode()") != 'n': + move_cmd = '' + if mode != 'n': move_cmd += r"\<Esc>" - # Case 1: Zero Length Tabstops - if delta.line == delta.col == 0: - if col == 0 or eval("mode()") not in 'i' and \ - col < len(buf[lineno]): - move_cmd += "i" + if start == end: + # Zero Length Tabstops, use 'i' or 'a'. + if col == 0 or mode not in 'i' and \ + col < len(buf[start.line]): + move_cmd += 'i' else: - move_cmd += "a" + move_cmd += 'a' else: - # Case 2a: Non zero length - # If a tabstop immediately starts with a newline, the selection must - # start after the last character in the current line. But if we are in - # insert mode and <Esc> out of it, we cannot go past the last character - # with move_one_right and therefore cannot visual-select this newline. - # We have to hack around this by adding an extra space which we can - # select. Note that this problem could be circumvent by selecting the - # tab backwards (that is starting at the end); one would not need to - # modify the line for this. This creates other trouble though - if col >= len(buf[lineno]): - buf[lineno] += " " - - if delta.line: - move_lines = "%ij" % delta.line - else: - move_lines = "" - # Depending on the current mode and position, we - # might need to move escape out of the mode and this - # will move our cursor one left - if col != 0 and eval("mode()") == 'i': - move_one_right = "l" - else: - move_one_right = "" - - # After moving to the correct line, we go back to column 0 - # and select right from there. Note that the we have to select - # one column less since Vim's visual selection is including the - # ending while Python slicing is excluding the ending. - inclusive = "inclusive" in eval("&selection") - if end.col == 0: - # Selecting should end at beginning of line -> Select the - # previous line till its end - do_select = "k$" - if not inclusive: - do_select += "j0" - elif end.col > 1: - do_select = "0%il" % (end.col-1 if inclusive else end.col) + # Non zero length, use Visual selection. + move_cmd += 'v' + if 'inclusive' in selection: + if end.col == 0: + move_cmd += '%iG$' % end.line + else: + move_cmd += '%iG%i|' % virtual_position(end.line + 1, end.col) + elif 'old' in selection: + move_cmd += '%iG%i|' % virtual_position(end.line + 1, end.col) else: - do_select = "0" if inclusive else "0l" + move_cmd += '%iG%i|' % virtual_position(end.line + 1, end.col + 1) + move_cmd += 'o%iG%i|o\\<c-g>' % virtual_position( + start.line + 1, start.col + 1) + feedkeys(move_cmd) - move_cmd += _LangMapTranslator().translate( - r"%sv%s%s\<c-g>" % (move_one_right, move_lines, do_select) - ) +def set_mark_from_pos(name, pos): + return _set_pos("'" + name, pos) - feedkeys(move_cmd) +def get_mark_pos(name): + return _get_pos("'" + name) + +def set_cursor_from_pos(pos): + return _set_pos('.', pos) + +def get_cursor_pos(): + return _get_pos('.') + +def delete_mark(name): + try: + return command('delma ' + name) + except: + return False + +def _set_pos(name, pos): + return eval("setpos(\"{0}\", {1})".format(name, pos)) + +def _get_pos(name): + return eval("getpos(\"{0}\")".format(name)) + +def _is_pos_zero(pos): + return ['0'] * 4 == pos or [0] == pos def _unmap_select_mode_mapping(): """This function unmaps select mode mappings if so wished by the user. + Removes select mode mappings that can actually be typed by the user (ie, ignores things like <Plug>). + """ - if int(eval("g:UltiSnipsRemoveSelectModeMappings")): - ignores = eval("g:UltiSnipsMappingsToIgnore") + ['UltiSnips'] + if int(eval('g:UltiSnipsRemoveSelectModeMappings')): + ignores = eval('g:UltiSnipsMappingsToIgnore') + ['UltiSnips'] - for option in ("<buffer>", ""): + for option in ('<buffer>', ''): # Put all smaps into a var, and then read the var command(r"redir => _tmp_smaps | silent smap %s " % option + - "| redir END") + '| redir END') # Check if any mappings where found all_maps = list(filter(len, eval(r"_tmp_smaps").splitlines())) - if len(all_maps) == 1 and all_maps[0][0] not in " sv": + if len(all_maps) == 1 and all_maps[0][0] not in ' sv': # "No maps found". String could be localized. Hopefully # it doesn't start with any of these letters in any # language @@ -200,37 +247,38 @@ def _unmap_select_mode_mapping(): # Only keep mappings that should not be ignored maps = [m for m in all_maps if - not any(i in m for i in ignores) and len(m.strip())] + not any(i in m for i in ignores) and len(m.strip())] for map in maps: # The first three chars are the modes, that might be listed. # We are not interested in them here. - trig = map[3:].split()[0] if len(map[3:].split()) != 0 else None + trig = map[3:].split()[0] if len( + map[3:].split()) != 0 else None if trig is None: continue # The bar separates commands - if trig[-1] == "|": - trig = trig[:-1] + "<Bar>" + if trig[-1] == '|': + trig = trig[:-1] + '<Bar>' # Special ones - if trig[0] == "<": + if trig[0] == '<': add = False # Only allow these - for valid in ["Tab", "NL", "CR", "C-Tab", "BS"]: - if trig == "<%s>" % valid: + for valid in ['Tab', 'NL', 'CR', 'C-Tab', 'BS']: + if trig == '<%s>' % valid: add = True if not add: continue # UltiSnips remaps <BS>. Keep this around. - if trig == "<BS>": + if trig == '<BS>': continue # Actually unmap it try: - command("silent! sunmap %s %s" % (option, trig)) + command('silent! sunmap %s %s' % (option, trig)) except: # pylint:disable=bare-except # Bug 908139: ignore unmaps that fail because of # unprintable characters. This is not ideal because we @@ -241,54 +289,3 @@ def _unmap_select_mode_mapping(): # This case should be rare enough to not bother us # though. pass - -class _RealLangMapTranslator(object): - """This cares for the Vim langmap option and basically reverses the - mappings. This was the only solution to get UltiSnips to work nicely with - langmap; other stuff I tried was using inoremap movement commands and - caching and restoring the langmap option. - - Note that this will not work if the langmap overwrites a character - completely, for example if 'j' is remapped, but nothing is mapped back to - 'j', then moving one line down is no longer possible and UltiSnips will - fail. - """ - _maps = {} - _SEMICOLONS = re.compile(r"(?<!\\);") - _COMMA = re.compile(r"(?<!\\),") - - def _create_translation(self, langmap): - """Create the reverse mapping from 'langmap'.""" - from_chars, to_chars = "", "" - for char in self._COMMA.split(langmap): - char = char.replace("\\,", ",") - res = self._SEMICOLONS.split(char) - if len(res) > 1: - from_char, to_char = [a.replace("\\;", ";") for a in res] - from_chars += from_char - to_chars += to_char - else: - from_chars += char[::2] - to_chars += char[1::2] - self._maps[langmap] = (from_chars, to_chars) - - def translate(self, text): - """Inverse map 'text' through langmap.""" - langmap = eval("&langmap").strip() - if langmap == "": - return text - text = as_unicode(text) - if langmap not in self._maps: - self._create_translation(langmap) - for before, after in zip(*self._maps[langmap]): - text = text.replace(before, after) - return text - -class _DummyLangMapTranslator(object): - """If vim hasn't got the langmap compiled in, we never have to do anything. - Then this class is used. """ - translate = lambda self, s: s - -_LangMapTranslator = _RealLangMapTranslator -if not int(eval('has("langmap")')): - _LangMapTranslator = _DummyLangMapTranslator diff --git a/pythonx/UltiSnips/buffer_proxy.py b/pythonx/UltiSnips/buffer_proxy.py new file mode 100644 index 0000000..6c5bb4a --- /dev/null +++ b/pythonx/UltiSnips/buffer_proxy.py @@ -0,0 +1,224 @@ +# coding=utf8 + +import vim +import UltiSnips._vim +from UltiSnips.compatibility import as_unicode, as_vimencoding +from UltiSnips.position import Position +from UltiSnips._diff import diff +from UltiSnips import _vim + +from contextlib import contextmanager + + +@contextmanager +def use_proxy_buffer(snippets_stack, vstate): + """ + Forward all changes made in the buffer to the current snippet stack while + function call. + """ + buffer_proxy = VimBufferProxy(snippets_stack, vstate) + old_buffer = _vim.buf + try: + _vim.buf = buffer_proxy + yield + finally: + _vim.buf = old_buffer + buffer_proxy.validate_buffer() + + +@contextmanager +def suspend_proxy_edits(): + """ + Prevents changes being applied to the snippet stack while function call. + """ + if not isinstance(_vim.buf, VimBufferProxy): + yield + else: + try: + _vim.buf._disable_edits() + yield + finally: + _vim.buf._enable_edits() + + +class VimBufferProxy(_vim.VimBuffer): + """ + Proxy object used for tracking changes that made from snippet actions. + + Unfortunately, vim by itself lacks of the API for changing text in + trackable maner. + + Vim marks offers limited functionality for tracking line additions and + deletions, but nothing offered for tracking changes withing single line. + + Instance of this class is passed to all snippet actions and behaves as + internal vim.current.window.buffer. + + All changes that are made by user passed to diff algorithm, and resulting + diff applied to internal snippet structures to ensure they are in sync with + actual buffer contents. + """ + + def __init__(self, snippets_stack, vstate): + """ + Instantiate new object. + + snippets_stack is a slice of currently active snippets. + """ + self._snippets_stack = snippets_stack + self._buffer = vim.current.buffer + self._change_tick = int(vim.eval("b:changedtick")) + self._forward_edits = True + self._vstate = vstate + + def is_buffer_changed_outside(self): + """ + Returns true, if buffer was changed without using proxy object, like + with vim.command() or through internal vim.current.window.buffer. + """ + return self._change_tick < int(vim.eval("b:changedtick")) + + def validate_buffer(self): + """ + Raises exception if buffer is changes beyound proxy object. + """ + if self.is_buffer_changed_outside(): + raise RuntimeError('buffer was modified using vim.command or ' + + 'vim.current.buffer; that changes are untrackable and leads to ' + + 'errors in snippet expansion; use special variable `snip.buffer` ' + 'for buffer modifications.\n\n' + + 'See :help UltiSnips-buffer-proxy for more info.') + + def __setitem__(self, key, value): + """ + Behaves as vim.current.window.buffer.__setitem__ except it tracks + changes and applies them to the current snippet stack. + """ + if isinstance(key, slice): + value = [as_vimencoding(line) for line in value] + changes = list(self._get_diff(key.start, key.stop, value)) + self._buffer[key.start:key.stop] = [ + line.strip('\n') for line in value + ] + else: + value = as_vimencoding(value) + changes = list(self._get_line_diff(key, self._buffer[key], value)) + self._buffer[key] = value + + self._change_tick += 1 + + if self._forward_edits: + for change in changes: + self._apply_change(change) + if self._snippets_stack: + self._vstate.remember_buffer(self._snippets_stack[0]) + + def __setslice__(self, i, j, text): + """ + Same as __setitem__. + """ + self.__setitem__(slice(i, j), text) + + def __getitem__(self, key): + """ + Just passing call to the vim.current.window.buffer.__getitem__. + """ + if isinstance(key, slice): + return [as_unicode(l) for l in self._buffer[key.start:key.stop]] + else: + return as_unicode(self._buffer[key]) + + def __getslice__(self, i, j): + """ + Same as __getitem__. + """ + return self.__getitem__(slice(i, j)) + + def __len__(self): + """ + Same as len(vim.current.window.buffer). + """ + return len(self._buffer) + + def append(self, line, line_number=-1): + """ + Same as vim.current.window.buffer.append(), but with tracking changes. + """ + if line_number < 0: + line_number = len(self) + if not isinstance(line, list): + line = [line] + self[line_number:line_number] = [as_vimencoding(l) for l in line] + + def __delitem__(self, key): + if isinstance(key, slice): + self.__setitem__(key, []) + else: + self.__setitem__(slice(key, key+1), []) + + def _get_diff(self, start, end, new_value): + """ + Very fast diffing algorithm when changes are across many lines. + """ + for line_number in range(start, end): + if line_number < 0: + line_number = len(self._buffer) + line_number + yield ('D', line_number, 0, self._buffer[line_number]) + + if start < 0: + start = len(self._buffer) + start + for line_number in range(0, len(new_value)): + yield ('I', start+line_number, 0, new_value[line_number]) + + def _get_line_diff(self, line_number, before, after): + """ + Use precise diffing for tracking changes in single line. + """ + if before == '': + for change in self._get_diff(line_number, line_number+1, [after]): + yield change + else: + for change in diff(before, after): + yield (change[0], line_number, change[2], change[3]) + + def _apply_change(self, change): + """ + Apply changeset to current snippets stack, correctly moving around + snippet itself or its child. + """ + if not self._snippets_stack: + return + + line_number = change[1] + column_number = change[2] + line_before = line_number <= self._snippets_stack[0]._start.line + column_before = column_number <= self._snippets_stack[0]._start.col + if line_before and column_before: + direction = 1 + if change[0] == 'D': + direction = -1 + + self._snippets_stack[0]._move( + Position(line_number, 0), + Position(direction, 0) + ) + else: + if line_number > self._snippets_stack[0]._end.line: + return + if column_number >= self._snippets_stack[0]._end.col: + return + self._snippets_stack[0]._do_edit(change) + + def _disable_edits(self): + """ + Temporary disable applying changes to snippets stack. Should be done + while expanding anonymous snippet in the middle of jump to prevent + double tracking. + """ + self._forward_edits = False + + def _enable_edits(self): + """ + Enables changes forwarding back. + """ + self._forward_edits = True diff --git a/pythonx/UltiSnips/compatibility.py b/pythonx/UltiSnips/compatibility.py index 7e14123..b8781bb 100644 --- a/pythonx/UltiSnips/compatibility.py +++ b/pythonx/UltiSnips/compatibility.py @@ -1,45 +1,43 @@ #!/usr/bin/env python # encoding: utf-8 -""" -This file contains compatibility code to stay compatible with -as many python versions as possible. -""" +"""This file contains compatibility code to stay compatible with as many python +versions as possible.""" import sys import vim # pylint:disable=import-error -def _vim_dec(string): - """Decode 'string' using &encoding.""" - try: - return string.decode(vim.eval("&encoding")) - except UnicodeDecodeError: - # At least we tried. There might be some problems down the road now - return string +if sys.version_info >= (3, 0): + def _vim_dec(string): + """Decode 'string' using &encoding.""" + # We don't have the luxury here of failing, everything + # falls apart if we don't return a bytearray from the + # passed in string + return string.decode(vim.eval('&encoding'), 'replace') -def _vim_enc(string): - """Encode 'string' using &encoding.""" - try: - return string.encode(vim.eval("&encoding")) - except UnicodeEncodeError: - return string + def _vim_enc(bytearray): + """Encode 'string' using &encoding.""" + # We don't have the luxury here of failing, everything + # falls apart if we don't return a string from the passed + # in bytearray + return bytearray.encode(vim.eval('&encoding'), 'replace') + + def open_ascii_file(filename, mode): + """Opens a file in "r" mode.""" + return open(filename, mode, encoding='utf-8') -if sys.version_info >= (3, 0): def col2byte(line, col): - """ - Convert a valid column index into a byte index inside - of vims buffer. - """ - pre_chars = vim.current.buffer[line-1][:col] + """Convert a valid column index into a byte index inside of vims + buffer.""" + # We pad the line so that selecting the +1 st column still works. + pre_chars = (vim.current.buffer[line - 1] + ' ')[:col] return len(_vim_enc(pre_chars)) def byte2col(line, nbyte): - """ - Convert a column into a byteidx suitable for a mark or cursor - position inside of vim - """ - line = vim.current.buffer[line-1] + """Convert a column into a byteidx suitable for a mark or cursor + position inside of vim.""" + line = vim.current.buffer[line - 1] raw_bytes = _vim_enc(line)[:nbyte] return len(_vim_dec(raw_bytes)) @@ -54,23 +52,41 @@ if sys.version_info >= (3, 0): return string else: import warnings - warnings.filterwarnings("ignore", category=DeprecationWarning) + warnings.filterwarnings('ignore', category=DeprecationWarning) + + def _vim_dec(string): + """Decode 'string' using &encoding.""" + try: + return string.decode(vim.eval('&encoding')) + except UnicodeDecodeError: + # At least we tried. There might be some problems down the road now + return string + + def _vim_enc(string): + """Encode 'string' using &encoding.""" + try: + return string.encode(vim.eval('&encoding')) + except UnicodeDecodeError: + return string + except UnicodeEncodeError: + return string + + def open_ascii_file(filename, mode): + """Opens a file in "r" mode.""" + return open(filename, mode) def col2byte(line, col): - """ - Convert a valid column index into a byte index inside - of vims buffer. - """ - pre_chars = _vim_dec(vim.current.buffer[line-1])[:col] + """Convert a valid column index into a byte index inside of vims + buffer.""" + # We pad the line so that selecting the +1 st column still works. + pre_chars = _vim_dec(vim.current.buffer[line - 1] + ' ')[:col] return len(_vim_enc(pre_chars)) def byte2col(line, nbyte): - """ - Convert a column into a byteidx suitable for a mark or cursor - position inside of vim - """ - line = vim.current.buffer[line-1] - if nbyte >= len(line): # This is beyond end of line + """Convert a column into a byteidx suitable for a mark or cursor + position inside of vim.""" + line = vim.current.buffer[line - 1] + if nbyte >= len(line): # This is beyond end of line return nbyte return len(_vim_dec(line[:nbyte])) diff --git a/pythonx/UltiSnips/debug.py b/pythonx/UltiSnips/debug.py index 10c34ec..e37f54e 100644 --- a/pythonx/UltiSnips/debug.py +++ b/pythonx/UltiSnips/debug.py @@ -1,17 +1,21 @@ #!/usr/bin/env python # encoding: utf-8 -"""Convenience methods that help with debugging. They should never be used in -production code.""" +"""Convenience methods that help with debugging. + +They should never be used in production code. + +""" import sys from UltiSnips.compatibility import as_unicode -DUMP_FILENAME = "/tmp/file.txt" if not sys.platform.lower().startswith("win") \ - else "C:/windows/temp/ultisnips.txt" -with open(DUMP_FILENAME, "w"): - pass # clears the file +DUMP_FILENAME = '/tmp/file.txt' if not sys.platform.lower().startswith('win') \ + else 'C:/windows/temp/ultisnips.txt' +with open(DUMP_FILENAME, 'w'): + pass # clears the file + def echo_to_hierarchy(text_object): """Outputs the given 'text_object' and its children hierarchically.""" @@ -20,24 +24,26 @@ def echo_to_hierarchy(text_object): while parent._parent: parent = parent._parent - def _do_print(text_object, indent=""): + def _do_print(text_object, indent=''): """prints recursively.""" debug(indent + as_unicode(text_object)) try: for child in text_object._children: - _do_print(child, indent=indent + " ") + _do_print(child, indent=indent + ' ') except AttributeError: pass _do_print(parent) + def debug(msg): """Dumb 'msg' into the debug file.""" msg = as_unicode(msg) - with open(DUMP_FILENAME, "ab") as dump_file: - dump_file.write((msg + '\n').encode("utf-8")) + with open(DUMP_FILENAME, 'ab') as dump_file: + dump_file.write((msg + '\n').encode('utf-8')) + def print_stack(): """Dump a stack trace into the debug file.""" import traceback - with open(DUMP_FILENAME, "ab") as dump_file: + with open(DUMP_FILENAME, 'ab') as dump_file: traceback.print_stack(file=dump_file) diff --git a/pythonx/UltiSnips/escaping.py b/pythonx/UltiSnips/escaping.py deleted file mode 100644 index 7cfbdc8..0000000 --- a/pythonx/UltiSnips/escaping.py +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env python -# encoding: utf-8 - -"""Utilities to deal with text escaping.""" - -def unescape(text): - """Removes '\\' escaping from 'text'.""" - rv = "" - i = 0 - while i < len(text): - if i+1 < len(text) and text[i] == '\\': - rv += text[i+1] - i += 1 - else: - rv += text[i] - i += 1 - return rv - -def fill_in_whitespace(text): - """Returns 'text' with escaped whitespace replaced through whitespaces.""" - text = text.replace(r"\n", "\n") - text = text.replace(r"\t", "\t") - text = text.replace(r"\r", "\r") - text = text.replace(r"\a", "\a") - text = text.replace(r"\b", "\b") - return text diff --git a/pythonx/UltiSnips/indent_util.py b/pythonx/UltiSnips/indent_util.py index 769af7e..55525d6 100644 --- a/pythonx/UltiSnips/indent_util.py +++ b/pythonx/UltiSnips/indent_util.py @@ -3,37 +3,40 @@ """See module doc.""" -import UltiSnips._vim as _vim +from UltiSnips import _vim + class IndentUtil(object): - """Utility class for dealing properly with indentation. """ + + """Utility class for dealing properly with indentation.""" def __init__(self): self.reset() def reset(self): - """ Gets the spacing properties from Vim. """ - self.shiftwidth = int(_vim.eval("&shiftwidth")) - self._expandtab = (_vim.eval("&expandtab") == "1") - self._tabstop = int(_vim.eval("&tabstop")) + """Gets the spacing properties from Vim.""" + self.shiftwidth = int( + _vim.eval("exists('*shiftwidth') ? shiftwidth() : &shiftwidth")) + self._expandtab = (_vim.eval('&expandtab') == '1') + self._tabstop = int(_vim.eval('&tabstop')) def ntabs_to_proper_indent(self, ntabs): """Convert 'ntabs' number of tabs to the proper indent prefix.""" - line_ind = ntabs * self.shiftwidth * " " + line_ind = ntabs * self.shiftwidth * ' ' line_ind = self.indent_to_spaces(line_ind) line_ind = self.spaces_to_indent(line_ind) return line_ind def indent_to_spaces(self, indent): - """ Converts indentation to spaces respecting Vim settings. """ + """Converts indentation to spaces respecting Vim settings.""" indent = indent.expandtabs(self._tabstop) - right = (len(indent) - len(indent.rstrip(" "))) * " " - indent = indent.replace(" ", "") - indent = indent.replace('\t', " " * self._tabstop) + right = (len(indent) - len(indent.rstrip(' '))) * ' ' + indent = indent.replace(' ', '') + indent = indent.replace('\t', ' ' * self._tabstop) return indent + right def spaces_to_indent(self, indent): - """ Converts spaces to proper indentation respecting Vim settings """ + """Converts spaces to proper indentation respecting Vim settings.""" if not self._expandtab: - indent = indent.replace(" " * self._tabstop, '\t') + indent = indent.replace(' ' * self._tabstop, '\t') return indent diff --git a/pythonx/UltiSnips/position.py b/pythonx/UltiSnips/position.py index d22d04f..3c9d2a5 100644 --- a/pythonx/UltiSnips/position.py +++ b/pythonx/UltiSnips/position.py @@ -4,7 +4,9 @@ """Represents a Position in a text file: (0 based line index, 0 based column index) and provides methods for moving them around.""" + class Position(object): + """See module docstring.""" def __init__(self, line, col): @@ -13,7 +15,7 @@ class Position(object): def move(self, pivot, delta): """'pivot' is the position of the first changed character, 'delta' is - how text after it moved""" + how text after it moved.""" if self < pivot: return if delta.line == 0: @@ -62,4 +64,14 @@ class Position(object): return (self.line, self.col) <= (other.line, other.col) def __repr__(self): - return "(%i,%i)" % (self.line, self.col) + return '(%i,%i)' % (self.line, self.col) + + def __getitem__(self, index): + if index > 1: + raise IndexError( + 'position can be indexed only 0 (line) and 1 (column)' + ) + if index == 0: + return self.line + else: + return self.col diff --git a/pythonx/UltiSnips/providers/__init__.py b/pythonx/UltiSnips/providers/__init__.py deleted file mode 100644 index b6f2ce5..0000000 --- a/pythonx/UltiSnips/providers/__init__.py +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env python -# encoding: utf-8 - -"""Sources of snippet definitions.""" - -# TODO(sirver): these should register themselves with the Manager, so that -# other plugins can extend them more easily. -from UltiSnips.providers.snippet_file import UltiSnipsFileProvider, \ - base_snippet_files_for -from UltiSnips.providers.added_snippets_provider import AddedSnippetsProvider diff --git a/pythonx/UltiSnips/providers/_base.py b/pythonx/UltiSnips/providers/_base.py deleted file mode 100644 index d94efff..0000000 --- a/pythonx/UltiSnips/providers/_base.py +++ /dev/null @@ -1,43 +0,0 @@ -#!/usr/bin/env python -# encoding: utf-8 - -"""Base class for snippet providers.""" - -from collections import defaultdict - -from UltiSnips.providers._snippet_dictionary import SnippetDictionary - -class SnippetProvider(object): - """See module docstring.""" - - def __init__(self): - self._snippets = defaultdict(SnippetDictionary) - - def get_snippets(self, filetypes, before, possible): - """Returns the snippets for all 'filetypes' (in order) and their - parents matching the text 'before'. If 'possible' is true, a partial - match is enough.""" - found_snippets = [] - for ft in filetypes: - found_snippets += self._find_snippets(ft, before, possible) - return found_snippets - - def _find_snippets(self, ft, trigger, potentially=False, seen=None): - """Find snippets matching 'trigger' for 'ft'. If 'potentially' is True, - partial matches are enough.""" - snips = self._snippets.get(ft, None) - if not snips: - return [] - if not seen: - seen = set() - seen.add(ft) - parent_results = [] - # TODO(sirver): extends information is not bound to one - # provider. It should be tracked further up. - for parent_ft in snips.extends: - if parent_ft not in seen: - seen.add(parent_ft) - parent_results += self._find_snippets(parent_ft, trigger, - potentially, seen) - return parent_results + snips.get_matching_snippets( - trigger, potentially) diff --git a/pythonx/UltiSnips/providers/_snippet_dictionary.py b/pythonx/UltiSnips/providers/_snippet_dictionary.py deleted file mode 100644 index a74be8b..0000000 --- a/pythonx/UltiSnips/providers/_snippet_dictionary.py +++ /dev/null @@ -1,80 +0,0 @@ -#!/usr/bin/env python -# encoding: utf-8 - -"""Implements a container for parsed snippets.""" - -import hashlib -import os - -def _hash_file(path): - """Returns a hashdigest of 'path'""" - if not os.path.isfile(path): - return False - return hashlib.sha1(open(path, "rb").read()).hexdigest() - -# TODO(sirver): This class should not hash any files nor keep track of extends. -class SnippetDictionary(object): - """See module docstring.""" - - def __init__(self): - self._added = [] - self._extends = [] - self._files = {} - self._snippets = [] - - def add_snippet(self, snippet, filename): - """Add 'snippet' to this dictionary. If 'filename' is given, also watch - the original file for changes.""" - if filename: - self._snippets.append(snippet) - if filename not in self.files: - self.addfile(filename) - else: - self._added.append(snippet) - - def get_matching_snippets(self, trigger, potentially): - """Returns all snippets matching the given trigger. If 'potentially' is - true, returns all that could_match().""" - all_snippets = self._added + self._snippets - if not potentially: - return [s for s in all_snippets if s.matches(trigger)] - else: - return [s for s in all_snippets if s.could_match(trigger)] - - def clear_snippets(self, triggers=None): - """Remove all snippets that match each trigger in 'triggers'. When - 'triggers' is None, empties this dictionary completely.""" - if triggers is None: - triggers = [] - if triggers: - for trigger in triggers: - for snippet in self.get_matching_snippets(trigger, False): - if snippet in self._snippets: - self._snippets.remove(snippet) - if snippet in self._added: - self._added.remove(snippet) - else: - self._snippets = [] - self._added = [] - - def addfile(self, path): - """Add this file to the files we read triggers from.""" - self.files[path] = _hash_file(path) - - def has_any_file_changed(self): - """Returns True if any of our watched files has changed since we read - it last.""" - for path, hash in self.files.items(): - if not hash or hash != _hash_file(path): - return True - return False - - @property - def files(self): - """All files we have read snippets from.""" - return self._files - - @property - def extends(self): - """The list of filetypes this filetype extends.""" - return self._extends diff --git a/pythonx/UltiSnips/providers/snippet_file.py b/pythonx/UltiSnips/providers/snippet_file.py deleted file mode 100644 index e65c313..0000000 --- a/pythonx/UltiSnips/providers/snippet_file.py +++ /dev/null @@ -1,152 +0,0 @@ -#!/usr/bin/env python -# encoding: utf-8 - -"""Code to provide access to UltiSnips files from disk.""" - -import glob -import os - -from UltiSnips.providers._base import SnippetProvider -from UltiSnips.providers.ultisnips_file import parse_snippets_file -from UltiSnips.snippet_definition import SnippetDefinition -import UltiSnips._vim as _vim - -def _plugin_dir(): - """Calculates the plugin directory for UltiSnips.""" - directory = __file__ - for _ in range(10): - directory = os.path.dirname(directory) - if (os.path.isdir(os.path.join(directory, "plugin")) and - os.path.isdir(os.path.join(directory, "doc"))): - return directory - raise Exception("Unable to find the plugin directory.") - -def base_snippet_files_for(ft, default=True): - """Returns a list of snippet files matching the given filetype (ft). - If default is set to false, it doesn't include shipped files. - - Searches through each path in 'runtimepath' in reverse order, - in each of these, it searches each directory name listed in - 'g:UltiSnipsSnippetDirectories' in order, then looks for files in these - directories called 'ft.snippets' or '*_ft.snippets' replacing ft with - the filetype. - """ - if _vim.eval("exists('b:UltiSnipsSnippetDirectories')") == "1": - snippet_dirs = _vim.eval("b:UltiSnipsSnippetDirectories") - else: - snippet_dirs = _vim.eval("g:UltiSnipsSnippetDirectories") - - paths = _vim.eval("&runtimepath").split(',') - base_snippets = os.path.realpath(os.path.join(_plugin_dir(), "UltiSnips")) - ret = [] - for rtp in paths: - for snippet_dir in snippet_dirs: - pth = os.path.realpath(os.path.expanduser( - os.path.join(rtp, snippet_dir))) - patterns = ["%s.snippets", "%s_*.snippets", os.path.join("%s", "*")] - if not default and pth == base_snippets: - patterns.remove("%s.snippets") - - for pattern in patterns: - for fn in glob.glob(os.path.join(pth, pattern % ft)): - if fn not in ret: - ret.append(fn) - return ret - -class SnippetSyntaxError(RuntimeError): - """Thrown when a syntax error is found in a file.""" - def __init__(self, filename, line_index, msg): - RuntimeError.__init__(self, "%s in %s:%d" % ( - msg, filename, line_index)) - -class UltiSnipsFileProvider(SnippetProvider): - """Manages all snippets definitions found in rtp.""" - - def get_snippets(self, filetypes, before, possible): - for ft in filetypes: - self._ensure_loaded(ft) - - return SnippetProvider.get_snippets(self, filetypes, before, possible) - - def _ensure_loaded(self, ft, already_loaded=None): - """Make sure that the snippets for 'ft' and everything it extends are - loaded.""" - if not already_loaded: - already_loaded = set() - - if ft in already_loaded: - return - already_loaded.add(ft) - - if self._needs_update(ft): - self._load_snippets_for(ft) - - for parent in self._snippets[ft].extends: - self._ensure_loaded(parent, already_loaded) - - def _needs_update(self, ft): - """Returns true if any files for 'ft' have changed and must be - reloaded.""" - if ft not in self._snippets: - return True - elif self._snippets[ft].has_any_file_changed(): - return True - else: - cur_snips = set(base_snippet_files_for(ft)) - old_snips = set(self._snippets[ft].files) - if cur_snips - old_snips: - return True - return False - - def _load_snippets_for(self, ft): - """Load all snippets for the given 'ft'.""" - if ft in self._snippets: - del self._snippets[ft] - for fn in base_snippet_files_for(ft): - self._parse_snippets(ft, fn) - # Now load for the parents - for parent_ft in self._snippets[ft].extends: - if parent_ft not in self._snippets: - self._load_snippets_for(parent_ft) - - def _parse_snippets(self, ft, filename): - """Parse the file 'filename' for the given 'ft' and watch it for - changes in the future. 'file_data' can be injected in tests.""" - current_snippet_priority = 0 - self._snippets[ft].addfile(filename) - file_data = open(filename, "r").read() - for event, data in parse_snippets_file(file_data): - if event == "error": - msg, line_index = data - filename = _vim.eval("""fnamemodify(%s, ":~:.")""" % - _vim.escape(filename)) - raise SnippetSyntaxError(filename, line_index, msg) - elif event == "clearsnippets": - # TODO(sirver): clear snippets should clear for - # more providers, not only ultisnips files. - triggers, = data - self._snippets[ft].clear_snippets(triggers) - elif event == "extends": - # TODO(sirver): extends information is more global - # than one snippet provider. - filetypes, = data - self._add_extending_info(ft, filetypes) - elif event == "snippet": - trigger, value, description, options, global_pythons = data - self._snippets[ft].add_snippet( - SnippetDefinition(current_snippet_priority, trigger, value, - description, options, global_pythons), filename - ) - elif event == "priority": - priority, = data - current_snippet_priority = priority - else: - assert False, "Unhandled %s: %r" % (event, data) - - def _add_extending_info(self, ft, parents): - """Add the list of 'parents' as being extended by the 'ft'.""" - sd = self._snippets[ft] - for parent in parents: - if parent in sd.extends: - continue - sd.extends.append(parent) diff --git a/pythonx/UltiSnips/providers/ultisnips_file.py b/pythonx/UltiSnips/providers/ultisnips_file.py deleted file mode 100644 index c8a4b48..0000000 --- a/pythonx/UltiSnips/providers/ultisnips_file.py +++ /dev/null @@ -1,125 +0,0 @@ -#!/usr/bin/env python -# encoding: utf-8 - -"""Parsing of snippet files.""" - -from collections import defaultdict - -class _LineIterator(object): - """Convenience class that keeps track of line numbers.""" - - def __init__(self, text): - self._line_index = None - self._lines = enumerate(text.splitlines(True), 1) - - def __iter__(self): - return self - - def __next__(self): - """Returns the next line.""" - self._line_index, line = next(self._lines) - return line - next = __next__ # for python2 - - @property - def line_index(self): - """The 1 based line index in the current file.""" - return self._line_index - -def _handle_snippet_or_global(line, lines, globals): - """Parses the snippet that begins at the current line.""" - - descr = "" - opts = "" - - # Ensure this is a snippet - snip = line.split()[0] - - # Get and strip options if they exist - remain = line[len(snip):].strip() - words = remain.split() - if len(words) > 2: - # second to last word ends with a quote - if '"' not in words[-1] and words[-2][-1] == '"': - opts = words[-1] - remain = remain[:-len(opts) - 1].rstrip() - - # Get and strip description if it exists - remain = remain.strip() - if len(remain.split()) > 1 and remain[-1] == '"': - left = remain[:-1].rfind('"') - if left != -1 and left != 0: - descr, remain = remain[left:], remain[:left] - - # The rest is the trigger - trig = remain.strip() - if len(trig.split()) > 1 or "r" in opts: - if trig[0] != trig[-1]: - return "error", ("Invalid multiword trigger: '%s'" % trig, - lines.line_index) - trig = trig[1:-1] - end = "end" + snip - content = "" - - found_end = False - for line in lines: - if line.rstrip() == end: - content = content[:-1] # Chomp the last newline - found_end = True - break - content += line - - if not found_end: - return "error", ("Missing 'endsnippet' for %r" % trig, lines.line_index) - - if snip == "global": - globals[trig].append(content) - elif snip == "snippet": - return "snippet", (trig, content, descr, opts, globals) - else: - return "error", ("Invalid snippet type: '%s'" % snip, lines.line_index) - -def _head_tail(line): - """Returns the first word in 'line' and the rest of 'line' or None if the - line is too short.""" - generator = (t.strip() for t in line.split(None, 1)) - head = next(generator).strip() - tail = '' - try: - tail = next(generator).strip() - except StopIteration: - pass - return head, tail - - -def parse_snippets_file(data): - """Parse 'data' assuming it is a snippet file. Yields events in the - file.""" - - globals = defaultdict(list) - lines = _LineIterator(data) - for line in lines: - if not line.strip(): - continue - - head, tail = _head_tail(line) - if head == "extends": - if tail: - yield "extends", ([p.strip() for p in tail.split(',')],) - else: - yield "error", ("'extends' without file types", - lines.line_index) - elif head in ("snippet", "global"): - snippet = _handle_snippet_or_global(line, lines, globals) - if snippet is not None: - yield snippet - elif head == "clearsnippets": - yield "clearsnippets", (tail.split(),) - elif head == "priority": - try: - priority = int(tail.split()[0]) - yield "priority", (priority,) - except (ValueError, IndexError): - yield "error", ("Invalid priority %r" % tail, lines.line_index) - elif head and not head.startswith('#'): - yield "error", ("Invalid line %r" % line.rstrip(), lines.line_index) diff --git a/pythonx/UltiSnips/snippet/__init__.py b/pythonx/UltiSnips/snippet/__init__.py new file mode 100644 index 0000000..0128940 --- /dev/null +++ b/pythonx/UltiSnips/snippet/__init__.py @@ -0,0 +1 @@ +"""Code related to snippets.""" diff --git a/pythonx/UltiSnips/snippet/definition/__init__.py b/pythonx/UltiSnips/snippet/definition/__init__.py new file mode 100644 index 0000000..fb08801 --- /dev/null +++ b/pythonx/UltiSnips/snippet/definition/__init__.py @@ -0,0 +1,4 @@ +"""In memory representation of snippet definitions.""" + +from UltiSnips.snippet.definition.ultisnips import UltiSnipsSnippetDefinition +from UltiSnips.snippet.definition.snipmate import SnipMateSnippetDefinition diff --git a/pythonx/UltiSnips/snippet/definition/_base.py b/pythonx/UltiSnips/snippet/definition/_base.py new file mode 100644 index 0000000..6d7b13f --- /dev/null +++ b/pythonx/UltiSnips/snippet/definition/_base.py @@ -0,0 +1,433 @@ +#!/usr/bin/env python +# encoding: utf-8 + +"""Snippet representation after parsing.""" + +import re + +import vim +import textwrap + +from UltiSnips import _vim +from UltiSnips.compatibility import as_unicode +from UltiSnips.indent_util import IndentUtil +from UltiSnips.position import Position +from UltiSnips.text import escape +from UltiSnips.text_objects import SnippetInstance +from UltiSnips.text_objects._python_code import SnippetUtilCursor, SnippetUtilForAction + +__WHITESPACE_SPLIT = re.compile(r"\s") +def split_at_whitespace(string): + """Like string.split(), but keeps empty words as empty words.""" + return re.split(__WHITESPACE_SPLIT, string) + +def _words_for_line(trigger, before, num_words=None): + """Gets the final 'num_words' words from 'before'. + + If num_words is None, then use the number of words in 'trigger'. + + """ + if num_words is None: + num_words = len(split_at_whitespace(trigger)) + + word_list = split_at_whitespace(before) + if len(word_list) <= num_words: + return before.strip() + else: + before_words = before + for i in range(-1, -(num_words + 1), -1): + left = before_words.rfind(word_list[i]) + before_words = before_words[:left] + return before[len(before_words):].strip() + + +class SnippetDefinition(object): + + """Represents a snippet as parsed from a file.""" + + _INDENT = re.compile(r"^[ \t]*") + _TABS = re.compile(r"^\t*") + + def __init__(self, priority, trigger, value, description, + options, globals, location, context, actions): + self._priority = int(priority) + self._trigger = as_unicode(trigger) + self._value = as_unicode(value) + self._description = as_unicode(description) + self._opts = options + self._matched = '' + self._last_re = None + self._globals = globals + self._location = location + self._context_code = context + self._context = None + self._actions = actions + + # Make sure that we actually match our trigger in case we are + # immediately expanded. + self.matches(self._trigger) + + def __repr__(self): + return '_SnippetDefinition(%r,%s,%s,%s)' % ( + self._priority, self._trigger, self._description, self._opts) + + def _re_match(self, trigger): + """Test if a the current regex trigger matches `trigger`. + + If so, set _last_re and _matched. + + """ + for match in re.finditer(self._trigger, trigger): + if match.end() != len(trigger): + continue + else: + self._matched = trigger[match.start():match.end()] + + self._last_re = match + return match + return False + + def _context_match(self, visual_content): + # skip on empty buffer + if len(vim.current.buffer) == 1 and vim.current.buffer[0] == "": + return + + locals = { + 'context': None, + 'visual_mode': '', + 'visual_text': '', + 'last_placeholder': None + } + + if visual_content: + locals['visual_mode'] = visual_content.mode + locals['visual_text'] = visual_content.text + locals['last_placeholder'] = visual_content.placeholder + + return self._eval_code('snip.context = ' + self._context_code, + locals).context + + def _eval_code(self, code, additional_locals={}): + code = "\n".join([ + 'import re, os, vim, string, random', + '\n'.join(self._globals.get('!p', [])).replace('\r\n', '\n'), + code + ]) + + current = vim.current + + locals = { + 'window': current.window, + 'buffer': current.buffer, + 'line': current.window.cursor[0]-1, + 'column': current.window.cursor[1]-1, + 'cursor': SnippetUtilCursor(current.window.cursor), + } + + locals.update(additional_locals) + + snip = SnippetUtilForAction(locals) + + try: + exec(code, {'snip': snip}) + except Exception as e: + e.snippet_info = textwrap.dedent(""" + Defined in: {} + Trigger: {} + Description: {} + Context: {} + Pre-expand: {} + Post-expand: {} + """).format( + self._location, + self._trigger, + self._description, + self._context_code if self._context_code else '<none>', + self._actions['pre_expand'] if 'pre_expand' in self._actions + else '<none>', + self._actions['post_expand'] if 'post_expand' in self._actions + else '<none>', + code, + ) + + e.snippet_code = code + + raise + + return snip + + def _execute_action( + self, + action, + context, + additional_locals={} + ): + mark_to_use = '`' + with _vim.save_mark(mark_to_use): + _vim.set_mark_from_pos(mark_to_use, _vim.get_cursor_pos()) + + cursor_line_before = _vim.buf.line_till_cursor + + locals = { + 'context': context, + } + + locals.update(additional_locals) + + snip = self._eval_code(action, locals) + + if snip.cursor.is_set(): + vim.current.window.cursor = snip.cursor.to_vim_cursor() + else: + new_mark_pos = _vim.get_mark_pos(mark_to_use) + + cursor_invalid = False + + if _vim._is_pos_zero(new_mark_pos): + cursor_invalid = True + else: + _vim.set_cursor_from_pos(new_mark_pos) + if cursor_line_before != _vim.buf.line_till_cursor: + cursor_invalid = True + + if cursor_invalid: + raise RuntimeError( + 'line under the cursor was modified, but ' + + '"snip.cursor" variable is not set; either set set ' + + '"snip.cursor" to new cursor position, or do not ' + + 'modify cursor line' + ) + + return snip + + def has_option(self, opt): + """Check if the named option is set.""" + return opt in self._opts + + @property + def description(self): + """Descriptive text for this snippet.""" + return ('(%s) %s' % (self._trigger, self._description)).strip() + + @property + def priority(self): + """The snippets priority, which defines which snippet will be preferred + over others with the same trigger.""" + return self._priority + + @property + def trigger(self): + """The trigger text for the snippet.""" + return self._trigger + + @property + def matched(self): + """The last text that matched this snippet in match() or + could_match().""" + return self._matched + + @property + def location(self): + """Where this snippet was defined.""" + return self._location + + @property + def context(self): + """The matched context.""" + return self._context + + def matches(self, before, visual_content=None): + """Returns True if this snippet matches 'before'.""" + # If user supplies both "w" and "i", it should perhaps be an + # error, but if permitted it seems that "w" should take precedence + # (since matching at word boundary and within a word == matching at word + # boundary). + self._matched = '' + + words = _words_for_line(self._trigger, before) + + if 'r' in self._opts: + match = self._re_match(before) + elif 'w' in self._opts: + words_len = len(self._trigger) + words_prefix = words[:-words_len] + words_suffix = words[-words_len:] + match = (words_suffix == self._trigger) + if match and words_prefix: + # Require a word boundary between prefix and suffix. + boundary_chars = escape(words_prefix[-1:] + + words_suffix[:1], r'\"') + match = _vim.eval( + '"%s" =~# "\\\\v.<."' % + boundary_chars) != '0' + elif 'i' in self._opts: + match = words.endswith(self._trigger) + else: + match = (words == self._trigger) + + # By default, we match the whole trigger + if match and not self._matched: + self._matched = self._trigger + + # Ensure the match was on a word boundry if needed + if 'b' in self._opts and match: + text_before = before.rstrip()[:-len(self._matched)] + if text_before.strip(' \t') != '': + self._matched = '' + return False + + self._context = None + if match and self._context_code: + self._context = self._context_match(visual_content) + if not self.context: + match = False + + return match + + def could_match(self, before): + """Return True if this snippet could match the (partial) 'before'.""" + self._matched = '' + + # List all on whitespace. + if before and before[-1] in (' ', '\t'): + before = '' + if before and before.rstrip() is not before: + return False + + words = _words_for_line(self._trigger, before) + + if 'r' in self._opts: + # Test for full match only + match = self._re_match(before) + elif 'w' in self._opts: + # Trim non-empty prefix up to word boundary, if present. + qwords = escape(words, r'\"') + words_suffix = _vim.eval( + 'substitute("%s", "\\\\v^.+<(.+)", "\\\\1", "")' % qwords) + match = self._trigger.startswith(words_suffix) + self._matched = words_suffix + + # TODO: list_snippets() function cannot handle partial-trigger + # matches yet, so for now fail if we trimmed the prefix. + if words_suffix != words: + match = False + elif 'i' in self._opts: + # TODO: It is hard to define when a inword snippet could match, + # therefore we check only for full-word trigger. + match = self._trigger.startswith(words) + else: + match = self._trigger.startswith(words) + + # By default, we match the words from the trigger + if match and not self._matched: + self._matched = words + + # Ensure the match was on a word boundry if needed + if 'b' in self._opts and match: + text_before = before.rstrip()[:-len(self._matched)] + if text_before.strip(' \t') != '': + self._matched = '' + return False + + return match + + def instantiate(self, snippet_instance, initial_text, indent): + """Parses the content of this snippet and brings the corresponding text + objects alive inside of Vim.""" + raise NotImplementedError() + + def do_pre_expand(self, visual_content, snippets_stack): + if 'pre_expand' in self._actions: + locals = {'buffer': _vim.buf, 'visual_content': visual_content} + + snip = self._execute_action( + self._actions['pre_expand'], self._context, locals + ) + + self._context = snip.context + + return snip.cursor.is_set() + else: + return False + + def do_post_expand(self, start, end, snippets_stack): + if 'post_expand' in self._actions: + locals = { + 'snippet_start': start, + 'snippet_end': end, + 'buffer': _vim.buf + } + + snip = self._execute_action( + self._actions['post_expand'], snippets_stack[-1].context, locals + ) + + snippets_stack[-1].context = snip.context + + return snip.cursor.is_set() + else: + return False + + def do_post_jump( + self, tabstop_number, jump_direction, snippets_stack, current_snippet + ): + if 'post_jump' in self._actions: + start = current_snippet.start + end = current_snippet.end + + locals = { + 'tabstop': tabstop_number, + 'jump_direction': jump_direction, + 'tabstops': current_snippet.get_tabstops(), + 'snippet_start': start, + 'snippet_end': end, + 'buffer': _vim.buf + } + + snip = self._execute_action( + self._actions['post_jump'], current_snippet.context, locals + ) + + current_snippet.context = snip.context + + return snip.cursor.is_set() + else: + return False + + + def launch(self, text_before, visual_content, parent, start, end): + """Launch this snippet, overwriting the text 'start' to 'end' and + keeping the 'text_before' on the launch line. + + 'Parent' is the parent snippet instance if any. + + """ + indent = self._INDENT.match(text_before).group(0) + lines = (self._value + '\n').splitlines() + ind_util = IndentUtil() + + # Replace leading tabs in the snippet definition via proper indenting + initial_text = [] + for line_num, line in enumerate(lines): + if 't' in self._opts: + tabs = 0 + else: + tabs = len(self._TABS.match(line).group(0)) + line_ind = ind_util.ntabs_to_proper_indent(tabs) + if line_num != 0: + line_ind = indent + line_ind + + result_line = line_ind + line[tabs:] + if 'm' in self._opts: + result_line = result_line.rstrip() + initial_text.append(result_line) + initial_text = '\n'.join(initial_text) + + snippet_instance = SnippetInstance( + self, parent, initial_text, start, end, visual_content, + last_re=self._last_re, globals=self._globals, + context=self._context) + self.instantiate(snippet_instance, initial_text, indent) + + snippet_instance.update_textobjects() + return snippet_instance diff --git a/pythonx/UltiSnips/snippet/definition/snipmate.py b/pythonx/UltiSnips/snippet/definition/snipmate.py new file mode 100644 index 0000000..8ab1e2a --- /dev/null +++ b/pythonx/UltiSnips/snippet/definition/snipmate.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +# encoding: utf-8 + +"""A snipMate snippet after parsing.""" + +from UltiSnips.snippet.definition._base import SnippetDefinition +from UltiSnips.snippet.parsing.snipmate import parse_and_instantiate + + +class SnipMateSnippetDefinition(SnippetDefinition): + + """See module doc.""" + + SNIPMATE_SNIPPET_PRIORITY = -1000 + + def __init__(self, trigger, value, description, location): + SnippetDefinition.__init__(self, self.SNIPMATE_SNIPPET_PRIORITY, + trigger, value, description, '', {}, location, + None, {}) + + def instantiate(self, snippet_instance, initial_text, indent): + parse_and_instantiate(snippet_instance, initial_text, indent) diff --git a/pythonx/UltiSnips/snippet/definition/ultisnips.py b/pythonx/UltiSnips/snippet/definition/ultisnips.py new file mode 100644 index 0000000..5338a6a --- /dev/null +++ b/pythonx/UltiSnips/snippet/definition/ultisnips.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python +# encoding: utf-8 + +"""A UltiSnips snippet after parsing.""" + +from UltiSnips.snippet.definition._base import SnippetDefinition +from UltiSnips.snippet.parsing.ultisnips import parse_and_instantiate + + +class UltiSnipsSnippetDefinition(SnippetDefinition): + + """See module doc.""" + + def instantiate(self, snippet_instance, initial_text, indent): + return parse_and_instantiate(snippet_instance, initial_text, indent) diff --git a/pythonx/UltiSnips/snippet/parsing/__init__.py b/pythonx/UltiSnips/snippet/parsing/__init__.py new file mode 100644 index 0000000..ea46beb --- /dev/null +++ b/pythonx/UltiSnips/snippet/parsing/__init__.py @@ -0,0 +1 @@ +"""Code related to turning text into snippets.""" diff --git a/pythonx/UltiSnips/snippet/parsing/_base.py b/pythonx/UltiSnips/snippet/parsing/_base.py new file mode 100644 index 0000000..8c7f342 --- /dev/null +++ b/pythonx/UltiSnips/snippet/parsing/_base.py @@ -0,0 +1,68 @@ +#!/usr/bin/env python +# encoding: utf-8 + +"""Common functionality of the snippet parsing codes.""" + +from UltiSnips.position import Position +from UltiSnips.snippet.parsing._lexer import tokenize, TabStopToken +from UltiSnips.text_objects import TabStop + +from UltiSnips.text_objects import Mirror +from UltiSnips.snippet.parsing._lexer import MirrorToken + + +def resolve_ambiguity(all_tokens, seen_ts): + """$1 could be a Mirror or a TabStop. + + This figures this out. + + """ + for parent, token in all_tokens: + if isinstance(token, MirrorToken): + if token.number not in seen_ts: + seen_ts[token.number] = TabStop(parent, token) + else: + Mirror(parent, seen_ts[token.number], token) + + +def tokenize_snippet_text(snippet_instance, text, indent, + allowed_tokens_in_text, allowed_tokens_in_tabstops, + token_to_textobject): + """Turns 'text' into a stream of tokens and creates the text objects from + those tokens that are mentioned in 'token_to_textobject' assuming the + current 'indent'. + + The 'allowed_tokens_in_text' define which tokens will be recognized + in 'text' while 'allowed_tokens_in_tabstops' are the tokens that + will be recognized in TabStop placeholder text. + + """ + seen_ts = {} + all_tokens = [] + + def _do_parse(parent, text, allowed_tokens): + """Recursive function that actually creates the objects.""" + tokens = list(tokenize(text, indent, parent.start, allowed_tokens)) + for token in tokens: + all_tokens.append((parent, token)) + if isinstance(token, TabStopToken): + ts = TabStop(parent, token) + seen_ts[token.number] = ts + _do_parse(ts, token.initial_text, + allowed_tokens_in_tabstops) + else: + klass = token_to_textobject.get(token.__class__, None) + if klass is not None: + klass(parent, token) + _do_parse(snippet_instance, text, allowed_tokens_in_text) + return all_tokens, seen_ts + + +def finalize(all_tokens, seen_ts, snippet_instance): + """Adds a tabstop 0 if non is in 'seen_ts' and brings the text of the + snippet instance into Vim.""" + if 0 not in seen_ts: + mark = all_tokens[-1][1].end # Last token is always EndOfText + m1 = Position(mark.line, mark.col) + TabStop(snippet_instance, 0, mark, m1) + snippet_instance.replace_initial_text() diff --git a/pythonx/UltiSnips/text_objects/_lexer.py b/pythonx/UltiSnips/snippet/parsing/_lexer.py similarity index 84% rename from pythonx/UltiSnips/text_objects/_lexer.py rename to pythonx/UltiSnips/snippet/parsing/_lexer.py index 3703726..60859fe 100644 --- a/pythonx/UltiSnips/text_objects/_lexer.py +++ b/pythonx/UltiSnips/snippet/parsing/_lexer.py @@ -1,19 +1,19 @@ #!/usr/bin/env python # encoding: utf-8 -""" -Not really a lexer in the classical sense, but code to convert snippet -definitions into logical units called Tokens. -""" +"""Not really a lexer in the classical sense, but code to convert snippet +definitions into logical units called Tokens.""" import string import re from UltiSnips.compatibility import as_unicode from UltiSnips.position import Position -from UltiSnips.escaping import unescape +from UltiSnips.text import unescape + class _TextIterator(object): + """Helper class to make iterating over text easier.""" def __init__(self, text, offset): @@ -44,7 +44,7 @@ class _TextIterator(object): def peek(self, count=1): """Returns the next 'count' characters without advancing the stream.""" - if count > 1: # This might return '' if nothing is found + if count > 1: # This might return '' if nothing is found return self._text[self._idx:self._idx + count] try: return self._text[self._idx] @@ -56,17 +56,17 @@ class _TextIterator(object): """Current position in the text.""" return Position(self._line, self._col) + def _parse_number(stream): - """ - Expects the stream to contain a number next, returns the number - without consuming any more bytes - """ - rv = "" + """Expects the stream to contain a number next, returns the number without + consuming any more bytes.""" + rv = '' while stream.peek() and stream.peek() in string.digits: rv += next(stream) return int(rv) + def _parse_till_closing_brace(stream): """ Returns all chars till a non-escaped } is found. Other @@ -74,7 +74,7 @@ def _parse_till_closing_brace(stream): Will also consume the closing }, but not return it """ - rv = "" + rv = '' in_braces = 1 while True: if EscapeCharToken.starts_here(stream, '{}'): @@ -90,6 +90,7 @@ def _parse_till_closing_brace(stream): rv += char return rv + def _parse_till_unescaped_char(stream, chars): """ Returns all chars till a non-escaped char is found. @@ -97,7 +98,7 @@ def _parse_till_unescaped_char(stream, chars): Will also consume the closing char, but and return it as second return value """ - rv = "" + rv = '' while True: escaped = False for char in chars: @@ -111,20 +112,24 @@ def _parse_till_unescaped_char(stream, chars): rv += char return rv, char + class Token(object): + """Represents a Token as parsed from a snippet definition.""" def __init__(self, gen, indent): - self.initial_text = as_unicode("") + self.initial_text = as_unicode('') self.start = gen.pos self._parse(gen, indent) self.end = gen.pos def _parse(self, stream, indent): """Parses the token from 'stream' with the current 'indent'.""" - pass # Does nothing + pass # Does nothing + class TabStopToken(Token): + """${1:blub}""" CHECK = re.compile(r'^\${\d+[:}]') @@ -135,21 +140,23 @@ class TabStopToken(Token): return cls.CHECK.match(stream.peek(10)) is not None def _parse(self, stream, indent): - next(stream) # $ - next(stream) # { + next(stream) # $ + next(stream) # { self.number = _parse_number(stream) - if stream.peek() == ":": + if stream.peek() == ':': next(stream) self.initial_text = _parse_till_closing_brace(stream) def __repr__(self): - return "TabStopToken(%r,%r,%r,%r)" % ( + return 'TabStopToken(%r,%r,%r,%r)' % ( self.start, self.end, self.number, self.initial_text ) + class VisualToken(Token): + """${VISUAL}""" CHECK = re.compile(r"^\${VISUAL[:}/]") @@ -160,15 +167,15 @@ class VisualToken(Token): return cls.CHECK.match(stream.peek(10)) is not None def _parse(self, stream, indent): - for _ in range(8): # ${VISUAL + for _ in range(8): # ${VISUAL next(stream) - if stream.peek() == ":": + if stream.peek() == ':': next(stream) self.alternative_text, char = _parse_till_unescaped_char(stream, '/}') self.alternative_text = unescape(self.alternative_text) - if char == '/': # Transformation going on + if char == '/': # Transformation going on try: self.search = _parse_till_unescaped_char(stream, '/')[0] self.replace = _parse_till_unescaped_char(stream, '/')[0] @@ -182,11 +189,13 @@ class VisualToken(Token): self.options = None def __repr__(self): - return "VisualToken(%r,%r)" % ( + return 'VisualToken(%r,%r)' % ( self.start, self.end ) + class TransformationToken(Token): + """${1/match/replace/options}""" CHECK = re.compile(r'^\${\d+\/') @@ -198,24 +207,26 @@ class TransformationToken(Token): return cls.CHECK.match(stream.peek(10)) is not None def _parse(self, stream, indent): - next(stream) # $ - next(stream) # { + next(stream) # $ + next(stream) # { self.number = _parse_number(stream) - next(stream) # / + next(stream) # / self.search = _parse_till_unescaped_char(stream, '/')[0] self.replace = _parse_till_unescaped_char(stream, '/')[0] self.options = _parse_till_closing_brace(stream) def __repr__(self): - return "TransformationToken(%r,%r,%r,%r,%r)" % ( + return 'TransformationToken(%r,%r,%r,%r,%r)' % ( self.start, self.end, self.number, self.search, self.replace ) + class MirrorToken(Token): - """$1""" + + """$1.""" CHECK = re.compile(r'^\$\d+') @classmethod @@ -225,16 +236,18 @@ class MirrorToken(Token): return cls.CHECK.match(stream.peek(10)) is not None def _parse(self, stream, indent): - next(stream) # $ + next(stream) # $ self.number = _parse_number(stream) def __repr__(self): - return "MirrorToken(%r,%r,%r)" % ( + return 'MirrorToken(%r,%r,%r)' % ( self.start, self.end, self.number ) + class EscapeCharToken(Token): - """\\n""" + + """\\n.""" @classmethod def starts_here(cls, stream, chars=r'{}\$`'): """Returns true if this token starts at the current position in @@ -244,16 +257,18 @@ class EscapeCharToken(Token): return True def _parse(self, stream, indent): - next(stream) # \ + next(stream) # \ self.initial_text = next(stream) def __repr__(self): - return "EscapeCharToken(%r,%r,%r)" % ( + return 'EscapeCharToken(%r,%r,%r)' % ( self.start, self.end, self.initial_text ) + class ShellCodeToken(Token): - """`! echo "hi"`""" + + """`echo "hi"`""" @classmethod def starts_here(cls, stream): """Returns true if this token starts at the current position in @@ -261,15 +276,17 @@ class ShellCodeToken(Token): return stream.peek(1) == '`' def _parse(self, stream, indent): - next(stream) # ` + next(stream) # ` self.code = _parse_till_unescaped_char(stream, '`')[0] def __repr__(self): - return "ShellCodeToken(%r,%r,%r)" % ( + return 'ShellCodeToken(%r,%r,%r)' % ( self.start, self.end, self.code ) + class PythonCodeToken(Token): + """`!p snip.rv = "Hi"`""" CHECK = re.compile(r'^`!p\s') @@ -281,7 +298,7 @@ class PythonCodeToken(Token): def _parse(self, stream, indent): for _ in range(3): - next(stream) # `!p + next(stream) # `!p if stream.peek() in '\t ': next(stream) @@ -292,17 +309,19 @@ class PythonCodeToken(Token): lines = code.splitlines() self.code = lines[0] + '\n' self.code += '\n'.join([l[len(indent):] - for l in lines[1:]]) + for l in lines[1:]]) else: self.code = code self.indent = indent def __repr__(self): - return "PythonCodeToken(%r,%r,%r)" % ( + return 'PythonCodeToken(%r,%r,%r)' % ( self.start, self.end, self.code ) + class VimLCodeToken(Token): + """`!v g:hi`""" CHECK = re.compile(r'^`!v\s') @@ -314,31 +333,32 @@ class VimLCodeToken(Token): def _parse(self, stream, indent): for _ in range(4): - next(stream) # `!v + next(stream) # `!v self.code = _parse_till_unescaped_char(stream, '`')[0] def __repr__(self): - return "VimLCodeToken(%r,%r,%r)" % ( + return 'VimLCodeToken(%r,%r,%r)' % ( self.start, self.end, self.code ) + class EndOfTextToken(Token): + """Appears at the end of the text.""" + def __repr__(self): - return "EndOfText(%r)" % self.end + return 'EndOfText(%r)' % self.end + -__ALLOWED_TOKENS = [ - EscapeCharToken, VisualToken, TransformationToken, TabStopToken, - MirrorToken, PythonCodeToken, VimLCodeToken, ShellCodeToken -] -def tokenize(text, indent, offset): +def tokenize(text, indent, offset, allowed_tokens): """Returns an iterator of tokens of 'text'['offset':] which is assumed to - have 'indent' as the whitespace of the begging of the lines.""" + have 'indent' as the whitespace of the begging of the lines. Only + 'allowed_tokens' are considered to be valid tokens.""" stream = _TextIterator(text, offset) try: while True: done_something = False - for token in __ALLOWED_TOKENS: + for token in allowed_tokens: if token.starts_here(stream): yield token(stream, indent) done_something = True diff --git a/pythonx/UltiSnips/snippet/parsing/snipmate.py b/pythonx/UltiSnips/snippet/parsing/snipmate.py new file mode 100644 index 0000000..8aaed53 --- /dev/null +++ b/pythonx/UltiSnips/snippet/parsing/snipmate.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python +# encoding: utf-8 + +"""Parses a snipMate snippet definition and launches it into Vim.""" + +from UltiSnips.snippet.parsing._base import tokenize_snippet_text, finalize, resolve_ambiguity +from UltiSnips.snippet.parsing._lexer import EscapeCharToken, \ + VisualToken, TabStopToken, MirrorToken, ShellCodeToken +from UltiSnips.text_objects import EscapedChar, Mirror, VimLCode, Visual + +_TOKEN_TO_TEXTOBJECT = { + EscapeCharToken: EscapedChar, + VisualToken: Visual, + ShellCodeToken: VimLCode, # `` is VimL in snipMate +} + +__ALLOWED_TOKENS = [ + EscapeCharToken, VisualToken, TabStopToken, MirrorToken, ShellCodeToken +] + +__ALLOWED_TOKENS_IN_TABSTOPS = [ + EscapeCharToken, VisualToken, MirrorToken, ShellCodeToken +] + + +def parse_and_instantiate(parent_to, text, indent): + """Parses a snippet definition in snipMate format from 'text' assuming the + current 'indent'. + + Will instantiate all the objects and link them as children to + parent_to. Will also put the initial text into Vim. + + """ + all_tokens, seen_ts = tokenize_snippet_text(parent_to, text, indent, + __ALLOWED_TOKENS, __ALLOWED_TOKENS_IN_TABSTOPS, + _TOKEN_TO_TEXTOBJECT) + resolve_ambiguity(all_tokens, seen_ts) + finalize(all_tokens, seen_ts, parent_to) diff --git a/pythonx/UltiSnips/snippet/parsing/ultisnips.py b/pythonx/UltiSnips/snippet/parsing/ultisnips.py new file mode 100644 index 0000000..9bb6068 --- /dev/null +++ b/pythonx/UltiSnips/snippet/parsing/ultisnips.py @@ -0,0 +1,50 @@ +#!/usr/bin/env python +# encoding: utf-8 + +"""Parses a UltiSnips snippet definition and launches it into Vim.""" + +from UltiSnips.snippet.parsing._base import tokenize_snippet_text, finalize, resolve_ambiguity +from UltiSnips.snippet.parsing._lexer import EscapeCharToken, \ + VisualToken, TransformationToken, TabStopToken, MirrorToken, \ + PythonCodeToken, VimLCodeToken, ShellCodeToken +from UltiSnips.text_objects import EscapedChar, Mirror, PythonCode, \ + ShellCode, TabStop, Transformation, VimLCode, Visual + +_TOKEN_TO_TEXTOBJECT = { + EscapeCharToken: EscapedChar, + VisualToken: Visual, + ShellCodeToken: ShellCode, + PythonCodeToken: PythonCode, + VimLCodeToken: VimLCode, +} + +__ALLOWED_TOKENS = [ + EscapeCharToken, VisualToken, TransformationToken, TabStopToken, + MirrorToken, PythonCodeToken, VimLCodeToken, ShellCodeToken +] + + +def _create_transformations(all_tokens, seen_ts): + """Create the objects that need to know about tabstops.""" + for parent, token in all_tokens: + if isinstance(token, TransformationToken): + if token.number not in seen_ts: + raise RuntimeError( + 'Tabstop %i is not known but is used by a Transformation' + % token.number) + Transformation(parent, seen_ts[token.number], token) + + +def parse_and_instantiate(parent_to, text, indent): + """Parses a snippet definition in UltiSnips format from 'text' assuming the + current 'indent'. + + Will instantiate all the objects and link them as children to + parent_to. Will also put the initial text into Vim. + + """ + all_tokens, seen_ts = tokenize_snippet_text(parent_to, text, indent, + __ALLOWED_TOKENS, __ALLOWED_TOKENS, _TOKEN_TO_TEXTOBJECT) + resolve_ambiguity(all_tokens, seen_ts) + _create_transformations(all_tokens, seen_ts) + finalize(all_tokens, seen_ts, parent_to) diff --git a/pythonx/UltiSnips/snippet/source/__init__.py b/pythonx/UltiSnips/snippet/source/__init__.py new file mode 100644 index 0000000..08c20ac --- /dev/null +++ b/pythonx/UltiSnips/snippet/source/__init__.py @@ -0,0 +1,10 @@ +#!/usr/bin/env python +# encoding: utf-8 + +"""Sources of snippet definitions.""" + +from UltiSnips.snippet.source._base import SnippetSource +from UltiSnips.snippet.source.added import AddedSnippetsSource +from UltiSnips.snippet.source.file.snipmate import SnipMateFileSource +from UltiSnips.snippet.source.file.ultisnips import UltiSnipsFileSource, \ + find_all_snippet_files, find_snippet_files diff --git a/pythonx/UltiSnips/snippet/source/_base.py b/pythonx/UltiSnips/snippet/source/_base.py new file mode 100644 index 0000000..93ba5b0 --- /dev/null +++ b/pythonx/UltiSnips/snippet/source/_base.py @@ -0,0 +1,97 @@ +#!/usr/bin/env python +# encoding: utf-8 + +"""Base class for snippet sources.""" + +from collections import defaultdict + +from UltiSnips.snippet.source._snippet_dictionary import SnippetDictionary + + +class SnippetSource(object): + + """See module docstring.""" + + def __init__(self): + self._snippets = defaultdict(SnippetDictionary) + self._extends = defaultdict(set) + + def ensure(self, filetypes, cached): + """Update/reload the snippets in the source when needed. + + It makes sure that the snippets are not outdated. + + """ + + def loaded(self, filetypes): + return len(self._snippets) > 0 + + def _get_existing_deep_extends(self, base_filetypes): + """Helper for get all existing filetypes extended by base filetypes.""" + deep_extends = self.get_deep_extends(base_filetypes) + return [ft for ft in deep_extends if ft in self._snippets] + + def get_snippets(self, filetypes, before, possible, autotrigger_only, + visual_content): + """Returns the snippets for all 'filetypes' (in order) and their + parents matching the text 'before'. If 'possible' is true, a partial + match is enough. Base classes can override this method to provide means + of creating snippets on the fly. + + Returns a list of SnippetDefinition s. + + """ + result = [] + for ft in self._get_existing_deep_extends(filetypes): + snips = self._snippets[ft] + result.extend(snips.get_matching_snippets(before, possible, + autotrigger_only, + visual_content)) + return result + + def get_clear_priority(self, filetypes): + """Get maximum clearsnippets priority without arguments for specified + filetypes, if any. + + It returns None if there are no clearsnippets. + + """ + pri = None + for ft in self._get_existing_deep_extends(filetypes): + snippets = self._snippets[ft] + if pri is None or snippets._clear_priority > pri: + pri = snippets._clear_priority + return pri + + def get_cleared(self, filetypes): + """Get a set of cleared snippets marked by clearsnippets with arguments + for specified filetypes.""" + cleared = {} + for ft in self._get_existing_deep_extends(filetypes): + snippets = self._snippets[ft] + for key, value in snippets._cleared.items(): + if key not in cleared or value > cleared[key]: + cleared[key] = value + return cleared + + def update_extends(self, child_ft, parent_fts): + """Update the extending relation by given child filetype and its parent + filetypes.""" + self._extends[child_ft].update(parent_fts) + + def get_deep_extends(self, base_filetypes): + """Get a list of filetypes that is either directed or indirected + extended by given base filetypes. + + Note that the returned list include the root filetype itself. + + """ + seen = set(base_filetypes) + todo_fts = list(set(base_filetypes)) + while todo_fts: + todo_ft = todo_fts.pop() + unseen_extends = set( + ft for ft in self._extends[todo_ft] if ft not in seen) + seen.update(unseen_extends) + todo_fts.extend(unseen_extends) + return seen diff --git a/pythonx/UltiSnips/snippet/source/_snippet_dictionary.py b/pythonx/UltiSnips/snippet/source/_snippet_dictionary.py new file mode 100644 index 0000000..d695902 --- /dev/null +++ b/pythonx/UltiSnips/snippet/source/_snippet_dictionary.py @@ -0,0 +1,60 @@ +#!/usr/bin/env python +# encoding: utf-8 + +"""Implements a container for parsed snippets.""" + +class SnippetDictionary(object): + + """See module docstring.""" + + def __init__(self): + self._snippets = [] + self._cleared = {} + self._clear_priority = float("-inf") + + def add_snippet(self, snippet): + """Add 'snippet' to this dictionary.""" + self._snippets.append(snippet) + + def get_matching_snippets(self, trigger, potentially, autotrigger_only, + visual_content): + """Returns all snippets matching the given trigger. + + If 'potentially' is true, returns all that could_match(). + + If 'autotrigger_only' is true, function will return only snippets which + are marked with flag 'A' (should be automatically expanded without + trigger key press). + It's handled specially to avoid walking down the list of all snippets, + which can be very slow, because function will be called on each change + made in insert mode. + + """ + all_snippets = self._snippets + if autotrigger_only: + all_snippets = [s for s in all_snippets if s.has_option('A')] + + if not potentially: + return [s for s in all_snippets if s.matches(trigger, + visual_content)] + else: + return [s for s in all_snippets if s.could_match(trigger)] + + def clear_snippets(self, priority, triggers): + """Clear the snippets by mark them as cleared. + + If trigger is None, it updates the value of clear priority + instead. + + """ + if not triggers: + if self._clear_priority is None or priority > self._clear_priority: + self._clear_priority = priority + else: + for trigger in triggers: + if (trigger not in self._cleared or + priority > self._cleared[trigger]): + self._cleared[trigger] = priority + + def __len__(self): + return len(self._snippets) diff --git a/pythonx/UltiSnips/providers/added_snippets_provider.py b/pythonx/UltiSnips/snippet/source/added.py similarity index 60% rename from pythonx/UltiSnips/providers/added_snippets_provider.py rename to pythonx/UltiSnips/snippet/source/added.py index 068bd38..c410946 100644 --- a/pythonx/UltiSnips/providers/added_snippets_provider.py +++ b/pythonx/UltiSnips/snippet/source/added.py @@ -3,11 +3,13 @@ """Handles manually added snippets UltiSnips_Manager.add_snippet().""" -from UltiSnips.providers._base import SnippetProvider +from UltiSnips.snippet.source._base import SnippetSource + + +class AddedSnippetsSource(SnippetSource): -class AddedSnippetsProvider(SnippetProvider): """See module docstring.""" def add_snippet(self, ft, snippet): """Adds the given 'snippet' for 'ft'.""" - self._snippets[ft].add_snippet(snippet, None) + self._snippets[ft].add_snippet(snippet) diff --git a/pythonx/UltiSnips/snippet/source/file/__init__.py b/pythonx/UltiSnips/snippet/source/file/__init__.py new file mode 100644 index 0000000..6abf472 --- /dev/null +++ b/pythonx/UltiSnips/snippet/source/file/__init__.py @@ -0,0 +1 @@ +"""Snippet sources that are file based.""" diff --git a/pythonx/UltiSnips/snippet/source/file/_base.py b/pythonx/UltiSnips/snippet/source/file/_base.py new file mode 100644 index 0000000..daa3f1d --- /dev/null +++ b/pythonx/UltiSnips/snippet/source/file/_base.py @@ -0,0 +1,112 @@ +#!/usr/bin/env python +# encoding: utf-8 + +"""Code to provide access to UltiSnips files from disk.""" + +from collections import defaultdict +import hashlib +import os + +from UltiSnips import _vim +from UltiSnips import compatibility +from UltiSnips.snippet.source._base import SnippetSource + + +def _hash_file(path): + """Returns a hashdigest of 'path'.""" + if not os.path.isfile(path): + return False + return hashlib.sha1(open(path, 'rb').read()).hexdigest() + + +class SnippetSyntaxError(RuntimeError): + + """Thrown when a syntax error is found in a file.""" + + def __init__(self, filename, line_index, msg): + RuntimeError.__init__(self, '%s in %s:%d' % ( + msg, filename, line_index)) + + +class SnippetFileSource(SnippetSource): + + """Base class that abstracts away 'extends' info and file hashes.""" + + def __init__(self): + SnippetSource.__init__(self) + self._files_for_ft = defaultdict(set) + self._file_hashes = defaultdict(lambda: None) + self._ensure_cached = False + + def ensure(self, filetypes, cached): + if cached and self._ensure_cached: + return + + for ft in self.get_deep_extends(filetypes): + if self._needs_update(ft): + self._load_snippets_for(ft) + + self._ensure_cached = True + + def _get_all_snippet_files_for(self, ft): + """Returns a set of all files that define snippets for 'ft'.""" + raise NotImplementedError() + + def _parse_snippet_file(self, filedata, filename): + """Parses 'filedata' as a snippet file and yields events.""" + raise NotImplementedError() + + def _needs_update(self, ft): + """Returns true if any files for 'ft' have changed and must be + reloaded.""" + existing_files = self._get_all_snippet_files_for(ft) + if existing_files != self._files_for_ft[ft]: + self._files_for_ft[ft] = existing_files + return True + + for filename in self._files_for_ft[ft]: + if _hash_file(filename) != self._file_hashes[filename]: + return True + + return False + + def _load_snippets_for(self, ft): + """Load all snippets for the given 'ft'.""" + if ft in self._snippets: + del self._snippets[ft] + del self._extends[ft] + try: + for fn in self._files_for_ft[ft]: + self._parse_snippets(ft, fn) + except: + del self._files_for_ft[ft] + raise + # Now load for the parents + for parent_ft in self.get_deep_extends([ft]): + if parent_ft != ft and self._needs_update(parent_ft): + self._load_snippets_for(parent_ft) + + def _parse_snippets(self, ft, filename): + """Parse the 'filename' for the given 'ft' and watch it for changes in + the future.""" + self._file_hashes[filename] = _hash_file(filename) + file_data = compatibility.open_ascii_file(filename, 'r').read() + for event, data in self._parse_snippet_file(file_data, filename): + if event == 'error': + msg, line_index = data + filename = _vim.eval("""fnamemodify(%s, ":~:.")""" % + _vim.escape(filename)) + raise SnippetSyntaxError(filename, line_index, msg) + elif event == 'clearsnippets': + priority, triggers = data + self._snippets[ft].clear_snippets(priority, triggers) + elif event == 'extends': + # TODO(sirver): extends information is more global + # than one snippet source. + filetypes, = data + self.update_extends(ft, filetypes) + elif event == 'snippet': + snippet, = data + self._snippets[ft].add_snippet(snippet) + else: + assert False, 'Unhandled %s: %r' % (event, data) diff --git a/pythonx/UltiSnips/snippet/source/file/_common.py b/pythonx/UltiSnips/snippet/source/file/_common.py new file mode 100644 index 0000000..ec4be60 --- /dev/null +++ b/pythonx/UltiSnips/snippet/source/file/_common.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python +# encoding: utf-8 + +"""Common code for snipMate and UltiSnips snippet files.""" + + +def handle_extends(tail, line_index): + """Handles an extends line in a snippet.""" + if tail: + return 'extends', ([p.strip() for p in tail.split(',')],) + else: + return 'error', ("'extends' without file types", line_index) + + +def handle_action(head, tail, line_index): + if tail: + action = tail.strip('"').replace(r'\"', '"').replace(r'\\\\', r'\\') + return head, (action,) + else: + return 'error', ("'{}' without specified action".format(head), + line_index) diff --git a/pythonx/UltiSnips/snippet/source/file/snipmate.py b/pythonx/UltiSnips/snippet/source/file/snipmate.py new file mode 100644 index 0000000..1791243 --- /dev/null +++ b/pythonx/UltiSnips/snippet/source/file/snipmate.py @@ -0,0 +1,127 @@ +#!/usr/bin/env python +# encoding: utf-8 + +"""Parses snipMate files.""" + +import os +import glob + +from UltiSnips import _vim +from UltiSnips.snippet.definition import SnipMateSnippetDefinition +from UltiSnips.snippet.source.file._base import SnippetFileSource +from UltiSnips.snippet.source.file._common import handle_extends +from UltiSnips.text import LineIterator, head_tail + + +def _splitall(path): + """Split 'path' into all its components.""" + # From http://my.safaribooksonline.com/book/programming/ + # python/0596001673/files/pythoncook-chp-4-sect-16 + allparts = [] + while True: + parts = os.path.split(path) + if parts[0] == path: # sentinel for absolute paths + allparts.insert(0, parts[0]) + break + elif parts[1] == path: # sentinel for relative paths + allparts.insert(0, parts[1]) + break + else: + path = parts[0] + allparts.insert(0, parts[1]) + return allparts + + +def snipmate_files_for(ft): + """Returns all snipMate files we need to look at for 'ft'.""" + if ft == 'all': + ft = '_' + patterns = [ + '%s.snippets' % ft, + os.path.join(ft, '*.snippets'), + os.path.join(ft, '*.snippet'), + os.path.join(ft, '*/*.snippet'), + ] + ret = set() + for rtp in _vim.eval('&runtimepath').split(','): + path = os.path.realpath(os.path.expanduser( + os.path.join(rtp, 'snippets'))) + for pattern in patterns: + for fn in glob.glob(os.path.join(path, pattern)): + ret.add(fn) + return ret + + +def _parse_snippet_file(content, full_filename): + """Parses 'content' assuming it is a .snippet file and yields events.""" + filename = full_filename[:-len('.snippet')] # strip extension + segments = _splitall(filename) + segments = segments[segments.index('snippets') + 1:] + assert len(segments) in (2, 3) + + trigger = segments[1] + description = segments[2] if 2 < len(segments) else '' + + # Chomp \n if any. + if content and content.endswith(os.linesep): + content = content[:-len(os.linesep)] + yield 'snippet', (SnipMateSnippetDefinition(trigger, content, + description, full_filename),) + + +def _parse_snippet(line, lines, filename): + """Parse a snippet defintions.""" + start_line_index = lines.line_index + trigger, description = head_tail(line[len('snippet'):].lstrip()) + content = '' + while True: + next_line = lines.peek() + if next_line is None: + break + if next_line.strip() and not next_line.startswith('\t'): + break + line = next(lines) + if line[0] == '\t': + line = line[1:] + content += line + content = content[:-1] # Chomp the last newline + return 'snippet', (SnipMateSnippetDefinition( + trigger, content, description, '%s:%i' % (filename, start_line_index)),) + + +def _parse_snippets_file(data, filename): + """Parse 'data' assuming it is a .snippets file. + + Yields events in the file. + + """ + lines = LineIterator(data) + for line in lines: + if not line.strip(): + continue + + head, tail = head_tail(line) + if head == 'extends': + yield handle_extends(tail, lines.line_index) + elif head in 'snippet': + snippet = _parse_snippet(line, lines, filename) + if snippet is not None: + yield snippet + elif head and not head.startswith('#'): + yield 'error', ('Invalid line %r' % line.rstrip(), lines.line_index) + + +class SnipMateFileSource(SnippetFileSource): + + """Manages all snipMate snippet definitions found in rtp.""" + + def _get_all_snippet_files_for(self, ft): + return snipmate_files_for(ft) + + def _parse_snippet_file(self, filedata, filename): + if filename.lower().endswith('snippet'): + for event, data in _parse_snippet_file(filedata, filename): + yield event, data + else: + for event, data in _parse_snippets_file(filedata, filename): + yield event, data diff --git a/pythonx/UltiSnips/snippet/source/file/ultisnips.py b/pythonx/UltiSnips/snippet/source/file/ultisnips.py new file mode 100644 index 0000000..2005ebd --- /dev/null +++ b/pythonx/UltiSnips/snippet/source/file/ultisnips.py @@ -0,0 +1,181 @@ +#!/usr/bin/env python +# encoding: utf-8 + +"""Parsing of snippet files.""" + +from collections import defaultdict +import glob +import os + +from UltiSnips import _vim +from UltiSnips.snippet.definition import UltiSnipsSnippetDefinition +from UltiSnips.snippet.source.file._base import SnippetFileSource +from UltiSnips.snippet.source.file._common import handle_extends, \ + handle_action +from UltiSnips.text import LineIterator, head_tail + + +def find_snippet_files(ft, directory): + """Returns all matching snippet files for 'ft' in 'directory'.""" + patterns = ['%s.snippets', '%s_*.snippets', os.path.join('%s', '*')] + ret = set() + directory = os.path.expanduser(directory) + for pattern in patterns: + for fn in glob.glob(os.path.join(directory, pattern % ft)): + ret.add(os.path.realpath(fn)) + return ret + + +def find_all_snippet_files(ft): + """Returns all snippet files matching 'ft' in the given runtime path + directory.""" + if _vim.eval("exists('b:UltiSnipsSnippetDirectories')") == '1': + snippet_dirs = _vim.eval('b:UltiSnipsSnippetDirectories') + else: + snippet_dirs = _vim.eval('g:UltiSnipsSnippetDirectories') + if len(snippet_dirs) == 1 and os.path.isabs(snippet_dirs[0]): + check_dirs = [''] + else: + check_dirs = _vim.eval('&runtimepath').split(',') + patterns = ['%s.snippets', '%s_*.snippets', os.path.join('%s', '*')] + ret = set() + for rtp in check_dirs: + for snippet_dir in snippet_dirs: + if snippet_dir == 'snippets': + raise RuntimeError( + "You have 'snippets' in UltiSnipsSnippetDirectories. This " + 'directory is reserved for snipMate snippets. Use another ' + 'directory for UltiSnips snippets.') + pth = os.path.realpath(os.path.expanduser( + os.path.join(rtp, snippet_dir))) + for pattern in patterns: + for fn in glob.glob(os.path.join(pth, pattern % ft)): + ret.add(fn) + return ret + + +def _handle_snippet_or_global( + filename, line, lines, python_globals, priority, pre_expand +): + """Parses the snippet that begins at the current line.""" + start_line_index = lines.line_index + descr = '' + opts = '' + + # Ensure this is a snippet + snip = line.split()[0] + + # Get and strip options if they exist + remain = line[len(snip):].strip() + words = remain.split() + + if len(words) > 2: + # second to last word ends with a quote + if '"' not in words[-1] and words[-2][-1] == '"': + opts = words[-1] + remain = remain[:-len(opts) - 1].rstrip() + + context = None + if 'e' in opts: + left = remain[:-1].rfind('"') + if left != -1 and left != 0: + context, remain = remain[left:].strip('"'), remain[:left] + + # Get and strip description if it exists + remain = remain.strip() + if len(remain.split()) > 1 and remain[-1] == '"': + left = remain[:-1].rfind('"') + if left != -1 and left != 0: + descr, remain = remain[left:], remain[:left] + + # The rest is the trigger + trig = remain.strip() + if len(trig.split()) > 1 or 'r' in opts: + if trig[0] != trig[-1]: + return 'error', ("Invalid multiword trigger: '%s'" % trig, + lines.line_index) + trig = trig[1:-1] + end = 'end' + snip + content = '' + + found_end = False + for line in lines: + if line.rstrip() == end: + content = content[:-1] # Chomp the last newline + found_end = True + break + content += line + + if not found_end: + return 'error', ("Missing 'endsnippet' for %r" % + trig, lines.line_index) + + if snip == 'global': + python_globals[trig].append(content) + elif snip == 'snippet': + definition = UltiSnipsSnippetDefinition( + priority, trig, content, + descr, opts, python_globals, + '%s:%i' % (filename, start_line_index), + context, pre_expand) + return 'snippet', (definition,) + else: + return 'error', ("Invalid snippet type: '%s'" % snip, lines.line_index) + + +def _parse_snippets_file(data, filename): + """Parse 'data' assuming it is a snippet file. + + Yields events in the file. + + """ + + python_globals = defaultdict(list) + lines = LineIterator(data) + current_priority = 0 + actions = {} + for line in lines: + if not line.strip(): + continue + + head, tail = head_tail(line) + if head in ('snippet', 'global'): + snippet = _handle_snippet_or_global( + filename, line, lines, + python_globals, + current_priority, + actions + ) + + actions = {} + if snippet is not None: + yield snippet + elif head == 'extends': + yield handle_extends(tail, lines.line_index) + elif head == 'clearsnippets': + yield 'clearsnippets', (current_priority, tail.split()) + elif head == 'priority': + try: + current_priority = int(tail.split()[0]) + except (ValueError, IndexError): + yield 'error', ('Invalid priority %r' % tail, lines.line_index) + elif head in ['pre_expand', 'post_expand', 'post_jump']: + head, tail = handle_action(head, tail, lines.line_index) + if head == 'error': + yield (head, tail) + else: + actions[head], = tail + elif head and not head.startswith('#'): + yield 'error', ('Invalid line %r' % line.rstrip(), lines.line_index) + + +class UltiSnipsFileSource(SnippetFileSource): + + """Manages all snippets definitions found in rtp for ultisnips.""" + + def _get_all_snippet_files_for(self, ft): + return find_all_snippet_files(ft) + + def _parse_snippet_file(self, filedata, filename): + for event, data in _parse_snippets_file(filedata, filename): + yield event, data diff --git a/pythonx/UltiSnips/snippet_definition.py b/pythonx/UltiSnips/snippet_definition.py deleted file mode 100644 index a46a759..0000000 --- a/pythonx/UltiSnips/snippet_definition.py +++ /dev/null @@ -1,214 +0,0 @@ -#!/usr/bin/env python -# encoding: utf-8 - -"""Snippet representation after parsing.""" - -import re - -from UltiSnips.compatibility import as_unicode -from UltiSnips.text_objects import SnippetInstance -from UltiSnips.indent_util import IndentUtil -import UltiSnips._vim as _vim - - -def _words_for_line(trigger, before, num_words=None): - """ Gets the final 'num_words' words from 'before'. - If num_words is None, then use the number of words in - 'trigger'. - """ - if not len(before): - return '' - - if num_words is None: - num_words = len(trigger.split()) - - word_list = before.split() - if len(word_list) <= num_words: - return before.strip() - else: - before_words = before - for i in range(-1, -(num_words + 1), -1): - left = before_words.rfind(word_list[i]) - before_words = before_words[:left] - return before[len(before_words):].strip() - - -class SnippetDefinition(object): - """Represents a snippet as parsed from a file.""" - - _INDENT = re.compile(r"^[ \t]*") - _TABS = re.compile(r"^\t*") - - def __init__(self, priority, trigger, value, description, options, globals): - self._priority = priority - self._trigger = as_unicode(trigger) - self._value = as_unicode(value) - self._description = as_unicode(description) - self._opts = options - self._matched = "" - self._last_re = None - self._globals = globals - - def __repr__(self): - return "SnippetDefinition(%r,%s,%s,%s)" % ( - self._priority, self._trigger, self._description, self._opts) - - def _re_match(self, trigger): - """ Test if a the current regex trigger matches - `trigger`. If so, set _last_re and _matched. - """ - for match in re.finditer(self._trigger, trigger): - if match.end() != len(trigger): - continue - else: - self._matched = trigger[match.start():match.end()] - - self._last_re = match - return match - return False - - def has_option(self, opt): - """ Check if the named option is set """ - return opt in self._opts - - def matches(self, trigger): - """Returns True if this snippet matches 'trigger'.""" - # If user supplies both "w" and "i", it should perhaps be an - # error, but if permitted it seems that "w" should take precedence - # (since matching at word boundary and within a word == matching at word - # boundary). - self._matched = "" - - # Don't expand on whitespace - if trigger and trigger.rstrip() != trigger: - return False - - words = _words_for_line(self._trigger, trigger) - - if "r" in self._opts: - match = self._re_match(trigger) - elif "w" in self._opts: - words_len = len(self._trigger) - words_prefix = words[:-words_len] - words_suffix = words[-words_len:] - match = (words_suffix == self._trigger) - if match and words_prefix: - # Require a word boundary between prefix and suffix. - boundary_chars = words_prefix[-1:] + words_suffix[:1] - boundary_chars = boundary_chars.replace('"', '\\"') - match = _vim.eval('"%s" =~# "\\\\v.<."' % boundary_chars) != '0' - elif "i" in self._opts: - match = words.endswith(self._trigger) - else: - match = (words == self._trigger) - - # By default, we match the whole trigger - if match and not self._matched: - self._matched = self._trigger - - # Ensure the match was on a word boundry if needed - if "b" in self._opts and match: - text_before = trigger.rstrip()[:-len(self._matched)] - if text_before.strip(" \t") != '': - self._matched = "" - return False - return match - - def could_match(self, trigger): - """Return True if this snippet could match the (partial) 'trigger'.""" - self._matched = "" - - # List all on whitespace. - if trigger and trigger[-1] in (" ", "\t"): - trigger = "" - if trigger and trigger.rstrip() is not trigger: - return False - - words = _words_for_line(self._trigger, trigger) - - if "r" in self._opts: - # Test for full match only - match = self._re_match(trigger) - elif "w" in self._opts: - # Trim non-empty prefix up to word boundary, if present. - qwords = words.replace('"', '\\"') - words_suffix = _vim.eval( - 'substitute("%s", "\\\\v^.+<(.+)", "\\\\1", "")' % qwords) - match = self._trigger.startswith(words_suffix) - self._matched = words_suffix - - # TODO: list_snippets() function cannot handle partial-trigger - # matches yet, so for now fail if we trimmed the prefix. - if words_suffix != words: - match = False - elif "i" in self._opts: - # TODO: It is hard to define when a inword snippet could match, - # therefore we check only for full-word trigger. - match = self._trigger.startswith(words) - else: - match = self._trigger.startswith(words) - - # By default, we match the words from the trigger - if match and not self._matched: - self._matched = words - - # Ensure the match was on a word boundry if needed - if "b" in self._opts and match: - text_before = trigger.rstrip()[:-len(self._matched)] - if text_before.strip(" \t") != '': - self._matched = "" - return False - - return match - - @property - def description(self): - """Descriptive text for this snippet.""" - return ("(%s) %s" % (self._trigger, self._description)).strip() - - @property - def priority(self): - """The snippets priority, which defines which snippet will be preferred - over others with the same trigger.""" - return self._priority - - @property - def trigger(self): - """The trigger text for the snippet.""" - return self._trigger - - @property - def matched(self): - """The last text that matched this snippet in match() or - could_match().""" - return self._matched - - def launch(self, text_before, visual_content, parent, start, end): - """Launch this snippet, overwriting the text 'start' to 'end' and - keeping the 'text_before' on the launch line. 'Parent' is the parent - snippet instance if any.""" - indent = self._INDENT.match(text_before).group(0) - lines = (self._value + "\n").splitlines() - ind_util = IndentUtil() - - # Replace leading tabs in the snippet definition via proper indenting - snippet_definition = [] - for line_num, line in enumerate(lines): - if "t" in self._opts: - tabs = 0 - else: - tabs = len(self._TABS.match(line).group(0)) - - line_ind = ind_util.ntabs_to_proper_indent(tabs) - - if line_num != 0: - line_ind = indent + line_ind - - snippet_definition.append(line_ind + line[tabs:]) - snippet_definition = '\n'.join(snippet_definition) - - si = SnippetInstance(self, parent, indent, snippet_definition, start, - end, visual_content, last_re=self._last_re, - globals=self._globals) - - return si diff --git a/pythonx/UltiSnips/snippet_manager.py b/pythonx/UltiSnips/snippet_manager.py index c803094..9cc82e9 100644 --- a/pythonx/UltiSnips/snippet_manager.py +++ b/pythonx/UltiSnips/snippet_manager.py @@ -6,31 +6,36 @@ from collections import defaultdict from functools import wraps import os +import platform import traceback +import sys +import vim +import re +from contextlib import contextmanager +from UltiSnips import _vim from UltiSnips._diff import diff, guess_edit from UltiSnips.compatibility import as_unicode from UltiSnips.position import Position -from UltiSnips.providers import UltiSnipsFileProvider, \ - base_snippet_files_for, AddedSnippetsProvider -from UltiSnips.snippet_definition import SnippetDefinition +from UltiSnips.snippet.definition import UltiSnipsSnippetDefinition +from UltiSnips.snippet.source import UltiSnipsFileSource, SnipMateFileSource, \ + find_all_snippet_files, find_snippet_files, AddedSnippetsSource +from UltiSnips.text import escape from UltiSnips.vim_state import VimState, VisualContentPreserver -import UltiSnips._vim as _vim +from UltiSnips.buffer_proxy import use_proxy_buffer, suspend_proxy_edits -def _ask_snippets(snippets): - """ Given a list of snippets, ask the user which one they - want to use, and return it. - """ - display = [as_unicode("%i: %s") % (i+1, s.description) for - i, s in enumerate(snippets)] + +def _ask_user(a, formatted): + """Asks the user using inputlist() and returns the selected element or + None.""" try: - rv = _vim.eval("inputlist(%s)" % _vim.escape(display)) + rv = _vim.eval('inputlist(%s)' % _vim.escape(formatted)) if rv is None or rv == '0': return None rv = int(rv) - if rv > len(snippets): - rv = len(snippets) - return snippets[rv-1] + if rv > len(a): + rv = len(a) + return a[rv - 1] except _vim.error: # Likely "invalid expression", but might be translated. We have no way # of knowing the exact error, therefore, we ignore all errors silently. @@ -39,6 +44,14 @@ def _ask_snippets(snippets): return None +def _ask_snippets(snippets): + """Given a list of snippets, ask the user which one they want to use, and + return it.""" + display = [as_unicode('%i: %s (%s)') % (i + 1, escape(s.description, '\\'), + escape(s.location, '\\')) for i, s in enumerate(snippets)] + return _ask_user(snippets, display) + + def err_to_scratch_buffer(func): """Decorator that will catch any Exception that 'func' throws and displays it in a new Vim scratch buffer.""" @@ -46,15 +59,36 @@ def err_to_scratch_buffer(func): def wrapper(self, *args, **kwds): try: return func(self, *args, **kwds) - except: # pylint: disable=bare-except + except Exception as e: # pylint: disable=bare-except msg = \ -"""An error occured. This is either a bug in UltiSnips or a bug in a + """An error occured. This is either a bug in UltiSnips or a bug in a snippet definition. If you think this is a bug, please report it to https://github.com/SirVer/ultisnips/issues/new. Following is the full stack trace: """ + msg += traceback.format_exc() + if hasattr(e, 'snippet_info'): + msg += "\nSnippet, caused error:\n" + msg += re.sub( + '^(?=\S)', ' ', e.snippet_info, flags=re.MULTILINE + ) + # snippet_code comes from _python_code.py, it's set manually for + # providing error message with stacktrace of failed python code + # inside of the snippet. + if hasattr(e, 'snippet_code'): + _, _, tb = sys.exc_info() + tb_top = traceback.extract_tb(tb)[-1] + msg += "\nExecuted snippet code:\n" + lines = e.snippet_code.split("\n") + for number, line in enumerate(lines, 1): + msg += str(number).rjust(3) + prefix = " " if line else "" + if tb_top[1] == number: + prefix = " > " + msg += prefix + line + "\n" + # Vim sends no WinLeave msg here. self._leaving_buffer() # pylint:disable=protected-access _vim.new_scratch_buffer(msg) @@ -64,47 +98,83 @@ Following is the full stack trace: # TODO(sirver): This class is still too long. It should only contain public # facing methods, most of the private methods should be moved outside of it. class SnippetManager(object): - """The main entry point for all UltiSnips functionality. All Vim functions - call methods in this class.""" + + """The main entry point for all UltiSnips functionality. + + All Vim functions call methods in this class. + + """ def __init__(self, expand_trigger, forward_trigger, backward_trigger): self.expand_trigger = expand_trigger self.forward_trigger = forward_trigger self.backward_trigger = backward_trigger + self._inner_state_up = False self._supertab_keys = None + self._csnippets = [] - self._reset() + self._buffer_filetypes = defaultdict(lambda: ['all']) + + self._vstate = VimState() + self._visual_content = VisualContentPreserver() + + self._snippet_sources = [] + + self._snip_expanded_in_action = False + self._inside_action = False + + self._last_inserted_char = '' + + self._added_snippets_source = AddedSnippetsSource() + self.register_snippet_source('ultisnips_files', UltiSnipsFileSource()) + self.register_snippet_source('added', self._added_snippets_source) + + enable_snipmate = '1' + if _vim.eval("exists('g:UltiSnipsEnableSnipMate')") == '1': + enable_snipmate = _vim.eval('g:UltiSnipsEnableSnipMate') + if enable_snipmate == '1': + self.register_snippet_source('snipmate_files', + SnipMateFileSource()) + + self._should_update_textobjects = False + self._should_reset_visual = False + + self._reinit() @err_to_scratch_buffer def jump_forwards(self): """Jumps to the next tabstop.""" - _vim.command("let g:ulti_jump_forwards_res = 1") + _vim.command('let g:ulti_jump_forwards_res = 1') + _vim.command('let &undolevels = &undolevels') if not self._jump(): - _vim.command("let g:ulti_jump_forwards_res = 0") + _vim.command('let g:ulti_jump_forwards_res = 0') return self._handle_failure(self.forward_trigger) @err_to_scratch_buffer def jump_backwards(self): """Jumps to the previous tabstop.""" - _vim.command("let g:ulti_jump_backwards_res = 1") + _vim.command('let g:ulti_jump_backwards_res = 1') + _vim.command('let &undolevels = &undolevels') if not self._jump(True): - _vim.command("let g:ulti_jump_backwards_res = 0") + _vim.command('let g:ulti_jump_backwards_res = 0') return self._handle_failure(self.backward_trigger) @err_to_scratch_buffer def expand(self): """Try to expand a snippet at the current position.""" - _vim.command("let g:ulti_expand_res = 1") + _vim.command('let g:ulti_expand_res = 1') if not self._try_expand(): - _vim.command("let g:ulti_expand_res = 0") + _vim.command('let g:ulti_expand_res = 0') self._handle_failure(self.expand_trigger) @err_to_scratch_buffer def expand_or_jump(self): - """ - This function is used for people who wants to have the same trigger for - expansion and forward jumping. It first tries to expand a snippet, if - this fails, it tries to jump forward. + """This function is used for people who wants to have the same trigger + for expansion and forward jumping. + + It first tries to expand a snippet, if this fails, it tries to + jump forward. + """ _vim.command('let g:ulti_expand_or_jump_res = 1') rv = self._try_expand() @@ -116,17 +186,19 @@ class SnippetManager(object): self._handle_failure(self.expand_trigger) @err_to_scratch_buffer - def snippets_in_current_scope(self): + def snippets_in_current_scope(self, searchAll): """Returns the snippets that could be expanded to Vim as a global variable.""" - before = _vim.buf.line_till_cursor + before = '' if searchAll else _vim.buf.line_till_cursor snippets = self._snips(before, True) # Sort snippets alphabetically snippets.sort(key=lambda x: x.trigger) for snip in snippets: description = snip.description[snip.description.find(snip.trigger) + - len(snip.trigger) + 2:] + len(snip.trigger) + 2:] + + location = snip.location if snip.location else '' key = as_unicode(snip.trigger) description = as_unicode(description) @@ -142,6 +214,18 @@ class SnippetManager(object): key=key.replace("'", "''"), val=description.replace("'", "''"))) + if searchAll: + _vim.command(as_unicode( + ("let g:current_ulti_dict_info['{key}'] = {{" + "'description': '{description}'," + "'location': '{location}'," + "}}")).format( + key=key.replace("'", "''"), + location=location.replace("'", "''"), + description=description.replace("'", "''"))) + + + @err_to_scratch_buffer def list_snippets(self): """Shows the snippets that could be expanded to the User and let her @@ -169,51 +253,82 @@ class SnippetManager(object): @err_to_scratch_buffer def add_snippet(self, trigger, value, description, - options, ft="all", priority=0): + options, ft='all', priority=0, context=None, actions={}): """Add a snippet to the list of known snippets of the given 'ft'.""" - self._added_snippets_provider.add_snippet(ft, SnippetDefinition( - priority, trigger, value, description, options, {}) - ) + self._added_snippets_source.add_snippet(ft, + UltiSnipsSnippetDefinition(priority, trigger, value, + description, options, {}, 'added', + context, actions)) @err_to_scratch_buffer - def expand_anon(self, value, trigger="", description="", options=""): + def expand_anon( + self, value, trigger='', description='', options='', + context=None, actions={} + ): """Expand an anonymous snippet right here.""" before = _vim.buf.line_till_cursor - snip = SnippetDefinition(0, trigger, value, description, options, {}) + snip = UltiSnipsSnippetDefinition(0, trigger, value, description, + options, {}, '', context, actions) - if not trigger or snip.matches(before): + if not trigger or snip.matches(before, self._visual_content): self._do_snippet(snip, before) return True else: return False + def register_snippet_source(self, name, snippet_source): + """Registers a new 'snippet_source' with the given 'name'. + + The given class must be an instance of SnippetSource. This + source will be queried for snippets. + + """ + self._snippet_sources.append((name, snippet_source)) + + def unregister_snippet_source(self, name): + """Unregister the source with the given 'name'. + + Does nothing if it is not registered. + + """ + for index, (source_name, _) in enumerate(self._snippet_sources): + if name == source_name: + self._snippet_sources = self._snippet_sources[:index] + \ + self._snippet_sources[index + 1:] + break + def reset_buffer_filetypes(self): """Reset the filetypes for the current buffer.""" - if _vim.buf.number in self._filetypes: - del self._filetypes[_vim.buf.number] + if _vim.buf.number in self._buffer_filetypes: + del self._buffer_filetypes[_vim.buf.number] def add_buffer_filetypes(self, ft): """Checks for changes in the list of snippet files or the contents of - the snippet files and reloads them if necessary. """ - buf_fts = self._filetypes[_vim.buf.number] + the snippet files and reloads them if necessary.""" + buf_fts = self._buffer_filetypes[_vim.buf.number] idx = -1 - for ft in ft.split("."): + for ft in ft.split('.'): ft = ft.strip() if not ft: continue try: idx = buf_fts.index(ft) except ValueError: - self._filetypes[_vim.buf.number].insert(idx + 1, ft) + self._buffer_filetypes[_vim.buf.number].insert(idx + 1, ft) idx += 1 @err_to_scratch_buffer def _cursor_moved(self): """Called whenever the cursor moved.""" + self._should_update_textobjects = False + + if not self._csnippets and self._inner_state_up: + self._teardown_inner_state() self._vstate.remember_position() - if _vim.eval("mode()") not in 'in': + if _vim.eval('mode()') not in 'in': return + if self._ignore_movements: self._ignore_movements = False return @@ -221,7 +336,7 @@ class SnippetManager(object): if self._csnippets: cstart = self._csnippets[0].start.line cend = self._csnippets[0].end.line + \ - self._vstate.diff_in_buffer_length + self._vstate.diff_in_buffer_length ct = _vim.buf[cstart:cend + 1] lt = self._vstate.remembered_buffer pos = _vim.buf.cursor @@ -233,9 +348,9 @@ class SnippetManager(object): # Cut down on lines searched for changes. Start from behind and # remove all equal lines. Then do the same from the front. if lt and ct: - while (lt[lt_span[1]-1] == ct[ct_span[1]-1] and - self._vstate.ppos.line < initial_line + lt_span[1]-1 and - pos.line < initial_line + ct_span[1]-1 and + while (lt[lt_span[1] - 1] == ct[ct_span[1] - 1] and + self._vstate.ppos.line < initial_line + lt_span[1] - 1 and + pos.line < initial_line + ct_span[1] - 1 and (lt_span[0] < lt_span[1]) and (ct_span[0] < ct_span[1])): ct_span[1] -= 1 @@ -261,7 +376,7 @@ class SnippetManager(object): lt = '\n'.join(lt) ct = '\n'.join(ct) es = diff(lt, ct, initial_line) - self._csnippets[0].replay_user_edits(es) + self._csnippets[0].replay_user_edits(es, self._ctab) except IndexError: # Rather do nothing than throwing an error. It will be correct # most of the time @@ -272,36 +387,82 @@ class SnippetManager(object): self._csnippets[0].update_textobjects() self._vstate.remember_buffer(self._csnippets[0]) - @err_to_scratch_buffer - def _reset(self): - """Reset the class to the state it had directly after creation.""" - self._vstate = VimState() - self._filetypes = defaultdict(lambda: ['all']) - self._visual_content = VisualContentPreserver() - self._snippet_providers = [ - AddedSnippetsProvider(), - UltiSnipsFileProvider() - ] - self._added_snippets_provider = self._snippet_providers[0] - - while len(self._csnippets): - self._current_snippet_is_done() - - self._reinit() + def _setup_inner_state(self): + """Map keys and create autocommands that should only be defined when a + snippet is active.""" + if self._inner_state_up: + return + if self.expand_trigger != self.forward_trigger: + _vim.command('inoremap <buffer> <silent> ' + self.forward_trigger + + ' <C-R>=UltiSnips#JumpForwards()<cr>') + _vim.command('snoremap <buffer> <silent> ' + self.forward_trigger + + ' <Esc>:call UltiSnips#JumpForwards()<cr>') + _vim.command('inoremap <buffer> <silent> ' + self.backward_trigger + + ' <C-R>=UltiSnips#JumpBackwards()<cr>') + _vim.command('snoremap <buffer> <silent> ' + self.backward_trigger + + ' <Esc>:call UltiSnips#JumpBackwards()<cr>') + + # Setup the autogroups. + _vim.command('augroup UltiSnips') + _vim.command('autocmd!') + _vim.command('autocmd CursorMovedI * call UltiSnips#CursorMoved()') + _vim.command('autocmd CursorMoved * call UltiSnips#CursorMoved()') + + _vim.command( + 'autocmd InsertLeave * call UltiSnips#LeavingInsertMode()') + + _vim.command('autocmd BufLeave * call UltiSnips#LeavingBuffer()') + _vim.command( + 'autocmd CmdwinEnter * call UltiSnips#LeavingBuffer()') + _vim.command( + 'autocmd CmdwinLeave * call UltiSnips#LeavingBuffer()') + + # Also exit the snippet when we enter a unite complete buffer. + _vim.command('autocmd Filetype unite call UltiSnips#LeavingBuffer()') + + _vim.command('augroup END') + + _vim.command('silent doautocmd <nomodeline> User UltiSnipsEnterFirstSnippet') + self._inner_state_up = True + + def _teardown_inner_state(self): + """Reverse _setup_inner_state.""" + if not self._inner_state_up: + return + try: + _vim.command('silent doautocmd <nomodeline> User UltiSnipsExitLastSnippet') + if self.expand_trigger != self.forward_trigger: + _vim.command('iunmap <buffer> %s' % self.forward_trigger) + _vim.command('sunmap <buffer> %s' % self.forward_trigger) + _vim.command('iunmap <buffer> %s' % self.backward_trigger) + _vim.command('sunmap <buffer> %s' % self.backward_trigger) + _vim.command('augroup UltiSnips') + _vim.command('autocmd!') + _vim.command('augroup END') + self._inner_state_up = False + except _vim.error: + # This happens when a preview window was opened. This issues + # CursorMoved, but not BufLeave. We have no way to unmap, until we + # are back in our buffer + pass @err_to_scratch_buffer def _save_last_visual_selection(self): - """ - This is called when the expand trigger is pressed in visual mode. - Our job is to remember everything between '< and '> and pass it on to + """This is called when the expand trigger is pressed in visual mode. + Our job is to remember everything between '< and '> and pass it on to. + ${VISUAL} in case it will be needed. + """ self._visual_content.conserve() - def _leaving_buffer(self): - """Called when the user switches tabs/windows/buffers. It basically - means that all snippets must be properly terminated.""" + """Called when the user switches tabs/windows/buffers. + + It basically means that all snippets must be properly + terminated. + + """ while len(self._csnippets): self._current_snippet_is_done() self._reinit() @@ -324,31 +485,86 @@ class SnippetManager(object): """The current snippet should be terminated.""" self._csnippets.pop() if not self._csnippets: - _vim.command("call UltiSnips#map_keys#RestoreInnerKeys()") + self._teardown_inner_state() def _jump(self, backwards=False): """Helper method that does the actual jump.""" - jumped = False - if self._cs: - self._ctab = self._cs.select_next_tab(backwards) - if self._ctab: - if self._cs.snippet.has_option("s"): - lineno = _vim.buf.cursor.line - _vim.buf[lineno] = _vim.buf[lineno].rstrip() - _vim.select(self._ctab.start, self._ctab.end) - jumped = True - if self._ctab.number == 0: - self._current_snippet_is_done() + if self._should_update_textobjects: + self._should_reset_visual = False + self._cursor_moved() + + # we need to set 'onemore' there, because of limitations of the vim + # API regarding cursor movements; without that test + # 'CanExpandAnonSnippetInJumpActionWhileSelected' will fail + with _vim.toggle_opt('ve', 'onemore'): + jumped = False + + # We need to remember current snippets stack here because of + # post-jump action on the last tabstop should be able to access + # snippet instance which is ended just now. + stack_for_post_jump = self._csnippets[:] + + # If next tab has length 1 and the distance between itself and + # self._ctab is 1 then there is 1 less CursorMove events. We + # cannot ignore next movement in such case. + ntab_short_and_near = False + + if self._cs: + snippet_for_action = self._cs + elif stack_for_post_jump: + snippet_for_action = stack_for_post_jump[-1] else: - # This really shouldn't happen, because a snippet should - # have been popped when its final tabstop was used. - # Cleanup by removing current snippet and recursing. - self._current_snippet_is_done() - jumped = self._jump(backwards) - if jumped: - self._vstate.remember_position() - self._vstate.remember_unnamed_register(self._ctab.current_text) - self._ignore_movements = True + snippet_for_action = None + + if self._cs: + ntab = self._cs.select_next_tab(backwards) + if ntab: + if self._cs.snippet.has_option('s'): + lineno = _vim.buf.cursor.line + _vim.buf[lineno] = _vim.buf[lineno].rstrip() + _vim.select(ntab.start, ntab.end) + jumped = True + if (self._ctab is not None + and ntab.start - self._ctab.end == Position(0, 1) + and ntab.end - ntab.start == Position(0, 1)): + ntab_short_and_near = True + + self._ctab = ntab + + # Run interpolations again to update new placeholder + # values, binded to currently newly jumped placeholder. + self._visual_content.conserve_placeholder(self._ctab) + self._cs.current_placeholder = \ + self._visual_content.placeholder + self._should_reset_visual = False + self._csnippets[0].update_textobjects() + self._vstate.remember_buffer(self._csnippets[0]) + + if ntab.number == 0 and self._csnippets: + self._current_snippet_is_done() + else: + # This really shouldn't happen, because a snippet should + # have been popped when its final tabstop was used. + # Cleanup by removing current snippet and recursing. + self._current_snippet_is_done() + jumped = self._jump(backwards) + + if jumped: + if self._ctab: + self._vstate.remember_position() + self._vstate.remember_unnamed_register(self._ctab.current_text) + if not ntab_short_and_near: + self._ignore_movements = True + + if len(stack_for_post_jump) > 0 and ntab is not None: + with use_proxy_buffer(stack_for_post_jump, self._vstate): + snippet_for_action.snippet.do_post_jump( + ntab.number, + -1 if backwards else 1, + stack_for_post_jump, + snippet_for_action + ) + return jumped def _leaving_insert_mode(self): @@ -357,18 +573,18 @@ class SnippetManager(object): def _handle_failure(self, trigger): """Mainly make sure that we play well with SuperTab.""" - if trigger.lower() == "<tab>": - feedkey = "\\" + trigger - elif trigger.lower() == "<s-tab>": - feedkey = "\\" + trigger + if trigger.lower() == '<tab>': + feedkey = '\\' + trigger + elif trigger.lower() == '<s-tab>': + feedkey = '\\' + trigger else: feedkey = None - mode = "n" + mode = 'n' if not self._supertab_keys: - if _vim.eval("exists('g:SuperTabMappingForward')") != "0": + if _vim.eval("exists('g:SuperTabMappingForward')") != '0': self._supertab_keys = ( - _vim.eval("g:SuperTabMappingForward"), - _vim.eval("g:SuperTabMappingBackward"), + _vim.eval('g:SuperTabMappingForward'), + _vim.eval('g:SuperTabMappingBackward'), ) else: self._supertab_keys = ['', ''] @@ -377,98 +593,175 @@ class SnippetManager(object): if trigger.lower() == sttrig.lower(): if idx == 0: feedkey = r"\<Plug>SuperTabForward" - mode = "n" + mode = 'n' elif idx == 1: feedkey = r"\<Plug>SuperTabBackward" - mode = "p" + mode = 'p' # Use remap mode so SuperTab mappings will be invoked. break if (feedkey == r"\<Plug>SuperTabForward" or feedkey == r"\<Plug>SuperTabBackward"): - _vim.command("return SuperTab(%s)" % _vim.escape(mode)) + _vim.command('return SuperTab(%s)' % _vim.escape(mode)) elif feedkey: - _vim.command("return %s" % _vim.escape(feedkey)) + _vim.command('return %s' % _vim.escape(feedkey)) + + def _snips(self, before, partial, autotrigger_only=False): + """Returns all the snippets for the given text before the cursor. + + If partial is True, then get also return partial matches. - def _snips(self, before, possible): - """ Returns all the snippets for the given text - before the cursor. If possible is True, then get all - possible matches. """ - filetypes = self._filetypes[_vim.buf.number][::-1] + filetypes = self._buffer_filetypes[_vim.buf.number][::-1] matching_snippets = defaultdict(list) - for provider in self._snippet_providers: - for snippet in provider.get_snippets(filetypes, before, possible): - matching_snippets[snippet.trigger].append(snippet) + clear_priority = None + cleared = {} + for _, source in self._snippet_sources: + source.ensure(filetypes, cached=autotrigger_only) + + # Collect cleared information from sources. + for _, source in self._snippet_sources: + sclear_priority = source.get_clear_priority(filetypes) + if sclear_priority is not None and (clear_priority is None + or sclear_priority > clear_priority): + clear_priority = sclear_priority + for key, value in source.get_cleared(filetypes).items(): + if key not in cleared or value > cleared[key]: + cleared[key] = value + + for _, source in self._snippet_sources: + possible_snippets = source.get_snippets( + filetypes, + before, + partial, + autotrigger_only, + self._visual_content + ) + + for snippet in possible_snippets: + if ((clear_priority is None or snippet.priority > clear_priority) + and (snippet.trigger not in cleared or + snippet.priority > cleared[snippet.trigger])): + matching_snippets[snippet.trigger].append(snippet) if not matching_snippets: return [] # Now filter duplicates and only keep the one with the highest - # priority. Only keep the snippets with the highest priority. + # priority. snippets = [] for snippets_with_trigger in matching_snippets.values(): highest_priority = max(s.priority for s in snippets_with_trigger) snippets.extend(s for s in snippets_with_trigger - if s.priority == highest_priority) - return snippets + if s.priority == highest_priority) + + # For partial matches we are done, but if we want to expand a snippet, + # we have to go over them again and only keep those with the maximum + # priority. + if partial: + return snippets + + highest_priority = max(s.priority for s in snippets) + return [s for s in snippets if s.priority == highest_priority] def _do_snippet(self, snippet, before): - """Expands the given snippet, and handles everything - that needs to be done with it.""" - _vim.command("call UltiSnips#map_keys#MapInnerKeys()") + """Expands the given snippet, and handles everything that needs to be + done with it.""" + self._setup_inner_state() + + self._snip_expanded_in_action = False + self._should_update_textobjects = False # Adjust before, maybe the trigger is not the complete word text_before = before if snippet.matched: text_before = before[:-len(snippet.matched)] - if self._cs: - start = Position(_vim.buf.cursor.line, len(text_before)) - end = Position(_vim.buf.cursor.line, len(before)) - - # It could be that our trigger contains the content of TextObjects - # in our containing snippet. If this is indeed the case, we have to - # make sure that those are properly killed. We do this by - # pretending that the user deleted and retyped the text that our - # trigger matched. - edit_actions = [ - ("D", start.line, start.col, snippet.matched), - ("I", start.line, start.col, snippet.matched), - ] - self._csnippets[0].replay_user_edits(edit_actions) - - si = snippet.launch(text_before, self._visual_content, - self._cs.find_parent_for_new_to(start), start, end) - else: - start = Position(_vim.buf.cursor.line, len(text_before)) - end = Position(_vim.buf.cursor.line, len(before)) - si = snippet.launch(text_before, self._visual_content, - None, start, end) + with use_proxy_buffer(self._csnippets, self._vstate): + with self._action_context(): + cursor_set_in_action = snippet.do_pre_expand( + self._visual_content.text, + self._csnippets + ) + + if cursor_set_in_action: + text_before = _vim.buf.line_till_cursor + before = _vim.buf.line_till_cursor + + with suspend_proxy_edits(): + if self._cs: + start = Position(_vim.buf.cursor.line, len(text_before)) + end = Position(_vim.buf.cursor.line, len(before)) + + # If cursor is set in pre-action, then action was modified + # cursor line, in that case we do not need to do any edits, it + # can break snippet + if not cursor_set_in_action: + # It could be that our trigger contains the content of + # TextObjects in our containing snippet. If this is indeed + # the case, we have to make sure that those are properly + # killed. We do this by pretending that the user deleted + # and retyped the text that our trigger matched. + edit_actions = [ + ('D', start.line, start.col, snippet.matched), + ('I', start.line, start.col, snippet.matched), + ] + self._csnippets[0].replay_user_edits(edit_actions) + + si = snippet.launch(text_before, self._visual_content, + self._cs.find_parent_for_new_to(start), + start, end + ) + else: + start = Position(_vim.buf.cursor.line, len(text_before)) + end = Position(_vim.buf.cursor.line, len(before)) + si = snippet.launch(text_before, self._visual_content, + None, start, end) + + self._visual_content.reset() + self._csnippets.append(si) - self._visual_content.reset() - self._csnippets.append(si) + si.update_textobjects() - self._ignore_movements = True - self._vstate.remember_buffer(self._csnippets[0]) + with use_proxy_buffer(self._csnippets, self._vstate): + with self._action_context(): + snippet.do_post_expand( + si._start, si._end, self._csnippets + ) - self._jump() + self._vstate.remember_buffer(self._csnippets[0]) - def _try_expand(self): + if not self._snip_expanded_in_action: + self._jump() + elif self._cs.current_text != '': + self._jump() + else: + self._current_snippet_is_done() + + if self._inside_action: + self._snip_expanded_in_action = True + + + def _try_expand(self, autotrigger_only=False): """Try to expand a snippet in the current place.""" before = _vim.buf.line_till_cursor - if not before: - return False - snippets = self._snips(before, False) + snippets = self._snips(before, False, autotrigger_only) + if snippets: + # prefer snippets with context if any + snippets_with_context = [s for s in snippets if s.context] + if snippets_with_context: + snippets = snippets_with_context if not snippets: # No snippet found return False - elif len(snippets) == 1: + _vim.command('let &undolevels = &undolevels') + if len(snippets) == 1: snippet = snippets[0] else: snippet = _ask_snippets(snippets) if not snippet: return True self._do_snippet(snippet, before) + _vim.command('let &undolevels = &undolevels') return True @property @@ -478,49 +771,93 @@ class SnippetManager(object): return None return self._csnippets[-1] + def _file_to_edit(self, requested_ft, bang): # pylint: disable=no-self-use + """Returns a file to be edited for the given requested_ft. + + If 'bang' is + empty only private files in g:UltiSnipsSnippetsDir are considered, + otherwise all files are considered and the user gets to choose. - @property - def _primary_filetype(self): - """This filetype will be edited when UltiSnipsEdit is called without - any arguments.""" - return self._filetypes[_vim.buf.number][0] - - # TODO(sirver): this should talk directly to the UltiSnipsFileProvider. - def _file_to_edit(self, ft): # pylint: disable=no-self-use - """ Gets a file to edit based on the given filetype. - If no filetype is given, uses the current filetype from Vim. - - Checks 'g:UltiSnipsSnippetsDir' and uses it if it exists - If a non-shipped file already exists, it uses it. - Otherwise uses a file in ~/.vim/ or ~/vimfiles """ # This method is not using self, but is called by UltiSnips.vim and is # therefore in this class because it is the facade to Vim. - edit = None - existing = base_snippet_files_for(ft, False) - filename = ft + ".snippets" - - if _vim.eval("exists('g:UltiSnipsSnippetsDir')") == "1": - snipdir = _vim.eval("g:UltiSnipsSnippetsDir") - edit = os.path.join(snipdir, filename) - elif existing: - edit = existing[-1] # last sourced/highest priority + potentials = set() + + if _vim.eval("exists('g:UltiSnipsSnippetsDir')") == '1': + snippet_dir = _vim.eval('g:UltiSnipsSnippetsDir') + else: + home = _vim.eval('$HOME') + if platform.system() == 'Windows': + snippet_dir = os.path.join(home, 'vimfiles', 'UltiSnips') + elif _vim.eval("has('nvim')") == '1': + xdg_home_config = _vim.eval('$XDG_CONFIG_HOME') or os.path.join(home, ".config") + snippet_dir = os.path.join(xdg_home_config, 'nvim', 'UltiSnips') + else: + snippet_dir = os.path.join(home, '.vim', 'UltiSnips') + + filetypes = [] + if requested_ft: + filetypes.append(requested_ft) else: - home = _vim.eval("$HOME") - rtp = [os.path.realpath(os.path.expanduser(p)) - for p in _vim.eval("&rtp").split(",")] - snippet_dirs = ["UltiSnips"] + \ - _vim.eval("g:UltiSnipsSnippetDirectories") - us = snippet_dirs[-1] - - path = os.path.join(home, ".vim", us) - for dirname in [".vim", "vimfiles"]: - pth = os.path.join(home, dirname) - if pth in rtp: - path = os.path.join(pth, us) - - if not os.path.isdir(path): - os.mkdir(path) - - edit = os.path.join(path, filename) - return edit + if bang: + filetypes.extend(self._buffer_filetypes[_vim.buf.number]) + else: + filetypes.append(self._buffer_filetypes[_vim.buf.number][0]) + + for ft in filetypes: + potentials.update(find_snippet_files(ft, snippet_dir)) + potentials.add(os.path.join(snippet_dir, + ft + '.snippets')) + if bang: + potentials.update(find_all_snippet_files(ft)) + + potentials = set(os.path.realpath(os.path.expanduser(p)) + for p in potentials) + + if len(potentials) > 1: + files = sorted(potentials) + formatted = [as_unicode('%i: %s') % (i, escape(fn, '\\')) for + i, fn in enumerate(files, 1)] + file_to_edit = _ask_user(files, formatted) + if file_to_edit is None: + return '' + else: + file_to_edit = potentials.pop() + + dirname = os.path.dirname(file_to_edit) + if not os.path.exists(dirname): + os.makedirs(dirname) + return file_to_edit + + @contextmanager + def _action_context(self): + try: + old_flag = self._inside_action + self._inside_action = True + yield + finally: + self._inside_action = old_flag + + @err_to_scratch_buffer + def _track_change(self): + self._should_update_textobjects = True + + inserted_char = _vim.eval('v:char') + try: + if inserted_char == '': + before = _vim.buf.line_till_cursor + if before and before[-1] == self._last_inserted_char: + self._try_expand(autotrigger_only=True) + finally: + self._last_inserted_char = inserted_char + + if self._should_reset_visual and self._visual_content.mode == '': + self._visual_content.reset() + + self._should_reset_visual = True + + +UltiSnips_Manager = SnippetManager( # pylint:disable=invalid-name + vim.eval('g:UltiSnipsExpandTrigger'), + vim.eval('g:UltiSnipsJumpForwardTrigger'), + vim.eval('g:UltiSnipsJumpBackwardTrigger')) diff --git a/pythonx/UltiSnips/test_diff.py b/pythonx/UltiSnips/test_diff.py index 6e13e73..6d1d4f4 100644 --- a/pythonx/UltiSnips/test_diff.py +++ b/pythonx/UltiSnips/test_diff.py @@ -10,17 +10,17 @@ from position import Position def transform(a, cmds): - buf = a.split("\n") + buf = a.split('\n') for cmd in cmds: ctype, line, col, char = cmd - if ctype == "D": + if ctype == 'D': if char != '\n': - buf[line] = buf[line][:col] + buf[line][col+len(char):] + buf[line] = buf[line][:col] + buf[line][col + len(char):] else: - buf[line] = buf[line] + buf[line+1] - del buf[line+1] - elif ctype == "I": + buf[line] = buf[line] + buf[line + 1] + del buf[line + 1] + elif ctype == 'I': buf[line] = buf[line][:col] + char + buf[line][col:] buf = '\n'.join(buf).split('\n') return '\n'.join(buf) @@ -29,106 +29,127 @@ def transform(a, cmds): import unittest # Test Guessing {{{ + + class _BaseGuessing(object): + def runTest(self): - rv, es = guess_edit(self.initial_line, self.a, self.b, Position(*self.ppos), Position(*self.pos)) + rv, es = guess_edit( + self.initial_line, self.a, self.b, Position(*self.ppos), Position(*self.pos)) self.assertEqual(rv, True) self.assertEqual(self.wanted, es) + class TestGuessing_Noop0(_BaseGuessing, unittest.TestCase): a, b = [], [] initial_line = 0 ppos, pos = (0, 6), (0, 7) wanted = () + class TestGuessing_InsertOneChar(_BaseGuessing, unittest.TestCase): - a, b = ["Hello World"], ["Hello World"] + a, b = ['Hello World'], ['Hello World'] initial_line = 0 ppos, pos = (0, 6), (0, 7) wanted = ( - ("I", 0, 6, " "), + ('I', 0, 6, ' '), ) + + class TestGuessing_InsertOneChar1(_BaseGuessing, unittest.TestCase): - a, b = ["Hello World"], ["Hello World"] + a, b = ['Hello World'], ['Hello World'] initial_line = 0 ppos, pos = (0, 7), (0, 8) wanted = ( - ("I", 0, 7, " "), + ('I', 0, 7, ' '), ) + + class TestGuessing_BackspaceOneChar(_BaseGuessing, unittest.TestCase): - a, b = ["Hello World"], ["Hello World"] + a, b = ['Hello World'], ['Hello World'] initial_line = 0 ppos, pos = (0, 7), (0, 6) wanted = ( - ("D", 0, 6, " "), + ('D', 0, 6, ' '), ) + + class TestGuessing_DeleteOneChar(_BaseGuessing, unittest.TestCase): - a, b = ["Hello World"], ["Hello World"] + a, b = ['Hello World'], ['Hello World'] initial_line = 0 ppos, pos = (0, 5), (0, 5) wanted = ( - ("D", 0, 5, " "), + ('D', 0, 5, ' '), ) # End: Test Guessing }}} + class _Base(object): + def runTest(self): es = diff(self.a, self.b) tr = transform(self.a, es) self.assertEqual(self.b, tr) self.assertEqual(self.wanted, es) + class TestEmptyString(_Base, unittest.TestCase): - a, b = "", "" + a, b = '', '' wanted = () + class TestAllMatch(_Base, unittest.TestCase): - a, b = "abcdef", "abcdef" + a, b = 'abcdef', 'abcdef' wanted = () + class TestLotsaNewlines(_Base, unittest.TestCase): - a, b = "Hello", "Hello\nWorld\nWorld\nWorld" + a, b = 'Hello', 'Hello\nWorld\nWorld\nWorld' wanted = ( - ("I", 0, 5, "\n"), - ("I", 1, 0, "World"), - ("I", 1, 5, "\n"), - ("I", 2, 0, "World"), - ("I", 2, 5, "\n"), - ("I", 3, 0, "World"), + ('I', 0, 5, '\n'), + ('I', 1, 0, 'World'), + ('I', 1, 5, '\n'), + ('I', 2, 0, 'World'), + ('I', 2, 5, '\n'), + ('I', 3, 0, 'World'), ) + class TestCrash(_Base, unittest.TestCase): a = 'hallo Blah mitte=sdfdsfsd\nhallo kjsdhfjksdhfkjhsdfkh mittekjshdkfhkhsdfdsf' b = 'hallo Blah mitte=sdfdsfsd\nhallo b mittekjshdkfhkhsdfdsf' wanted = ( - ("D", 1, 6, "kjsdhfjksdhfkjhsdfkh"), - ("I", 1, 6, "b"), + ('D', 1, 6, 'kjsdhfjksdhfkjhsdfkh'), + ('I', 1, 6, 'b'), ) + class TestRealLife(_Base, unittest.TestCase): a = 'hallo End Beginning' b = 'hallo End t' wanted = ( - ("D", 0, 10, "Beginning"), - ("I", 0, 10, "t"), + ('D', 0, 10, 'Beginning'), + ('I', 0, 10, 't'), ) + class TestRealLife1(_Base, unittest.TestCase): a = 'Vorne hallo Hinten' b = 'Vorne hallo Hinten' wanted = ( - ("I", 0, 11, " "), + ('I', 0, 11, ' '), ) + class TestWithNewline(_Base, unittest.TestCase): a = 'First Line\nSecond Line' b = 'n' wanted = ( - ("D", 0, 0, "First Line"), - ("D", 0, 0, "\n"), - ("D", 0, 0, "Second Line"), - ("I", 0, 0, "n"), + ('D', 0, 0, 'First Line'), + ('D', 0, 0, '\n'), + ('D', 0, 0, 'Second Line'), + ('I', 0, 0, 'n'), ) @@ -136,51 +157,56 @@ class TestCheapDelete(_Base, unittest.TestCase): a = 'Vorne hallo Hinten' b = 'Vorne Hinten' wanted = ( - ("D", 0, 5, " hallo"), + ('D', 0, 5, ' hallo'), ) + class TestNoSubstring(_Base, unittest.TestCase): - a,b = "abc", "def" + a, b = 'abc', 'def' wanted = ( - ("D", 0, 0, "abc"), - ("I", 0, 0, "def"), + ('D', 0, 0, 'abc'), + ('I', 0, 0, 'def'), ) + class TestCommonCharacters(_Base, unittest.TestCase): - a,b = "hasomelongertextbl", "hol" + a, b = 'hasomelongertextbl', 'hol' wanted = ( - ("D", 0, 1, "asomelongertextb"), - ("I", 0, 1, "o"), + ('D', 0, 1, 'asomelongertextb'), + ('I', 0, 1, 'o'), ) + class TestUltiSnipsProblem(_Base, unittest.TestCase): - a = "this is it this is it this is it" - b = "this is it a this is it" + a = 'this is it this is it this is it' + b = 'this is it a this is it' wanted = ( - ("D", 0, 11, "this is it"), - ("I", 0, 11, "a"), + ('D', 0, 11, 'this is it'), + ('I', 0, 11, 'a'), ) + class MatchIsTooCheap(_Base, unittest.TestCase): - a = "stdin.h" - b = "s" + a = 'stdin.h' + b = 's' wanted = ( - ("D", 0, 1, "tdin.h"), + ('D', 0, 1, 'tdin.h'), ) + class MultiLine(_Base, unittest.TestCase): - a = "hi first line\nsecond line first line\nsecond line world" - b = "hi first line\nsecond line k world" + a = 'hi first line\nsecond line first line\nsecond line world' + b = 'hi first line\nsecond line k world' wanted = ( - ("D", 1, 12, "first line"), - ("D", 1, 12, "\n"), - ("D", 1, 12, "second line"), - ("I", 1, 12, "k"), + ('D', 1, 12, 'first line'), + ('D', 1, 12, '\n'), + ('D', 1, 12, 'second line'), + ('I', 1, 12, 'k'), ) if __name__ == '__main__': - unittest.main() - # k = TestEditScript() - # unittest.TextTestRunner().run(k) + unittest.main() + # k = TestEditScript() + # unittest.TextTestRunner().run(k) diff --git a/pythonx/UltiSnips/test_position.py b/pythonx/UltiSnips/test_position.py index 7c209a3..f980f4b 100644 --- a/pythonx/UltiSnips/test_position.py +++ b/pythonx/UltiSnips/test_position.py @@ -7,13 +7,16 @@ import unittest from position import Position + class _MPBase(object): + def runTest(self): obj = Position(*self.obj) for pivot, delta, wanted in self.steps: obj.move(Position(*pivot), Position(*delta)) self.assertEqual(Position(*wanted), obj) + class MovePosition_DelSameLine(_MPBase, unittest.TestCase): # hello wor*ld -> h*ld -> hl*ld obj = (0, 9) @@ -21,13 +24,17 @@ class MovePosition_DelSameLine(_MPBase, unittest.TestCase): ((0, 1), (0, -8), (0, 1)), ((0, 1), (0, 1), (0, 2)), ) + + class MovePosition_DelSameLine1(_MPBase, unittest.TestCase): # hel*lo world -> hel*world -> hel*worl - obj = (0,3) + obj = (0, 3) steps = ( - ((0, 4), (0, -3), (0,3)), - ((0, 8), (0, -1), (0,3)), + ((0, 4), (0, -3), (0, 3)), + ((0, 8), (0, -1), (0, 3)), ) + + class MovePosition_InsSameLine1(_MPBase, unittest.TestCase): # hel*lo world -> hel*woresld obj = (0, 3) @@ -36,6 +43,8 @@ class MovePosition_InsSameLine1(_MPBase, unittest.TestCase): ((0, 6), (0, 2), (0, 3)), ((0, 8), (0, -1), (0, 3)) ) + + class MovePosition_InsSameLine2(_MPBase, unittest.TestCase): # hello wor*ld -> helesdlo wor*ld obj = (0, 9) @@ -43,6 +52,7 @@ class MovePosition_InsSameLine2(_MPBase, unittest.TestCase): ((0, 3), (0, 3), (0, 12)), ) + class MovePosition_DelSecondLine(_MPBase, unittest.TestCase): # hello world. sup hello world.*a, was # *a, was ach nix @@ -52,6 +62,8 @@ class MovePosition_DelSecondLine(_MPBase, unittest.TestCase): ((0, 12), (0, -4), (1, 0)), ((0, 12), (-1, 0), (0, 12)), ) + + class MovePosition_DelSecondLine1(_MPBase, unittest.TestCase): # hello world. sup # a, *was @@ -63,7 +75,7 @@ class MovePosition_DelSecondLine1(_MPBase, unittest.TestCase): ((0, 12), (0, -4), (1, 3)), ((0, 12), (-1, 0), (0, 15)), ((0, 12), (0, -3), (0, 12)), - ((0, 12), (0, 1), (0, 13)), + ((0, 12), (0, 1), (0, 13)), ) if __name__ == '__main__': diff --git a/pythonx/UltiSnips/text.py b/pythonx/UltiSnips/text.py new file mode 100644 index 0000000..165cddd --- /dev/null +++ b/pythonx/UltiSnips/text.py @@ -0,0 +1,84 @@ +#!/usr/bin/env python +# encoding: utf-8 + +"""Utilities to deal with text.""" + + +def unescape(text): + """Removes '\\' escaping from 'text'.""" + rv = '' + i = 0 + while i < len(text): + if i + 1 < len(text) and text[i] == '\\': + rv += text[i + 1] + i += 1 + else: + rv += text[i] + i += 1 + return rv + + +def escape(text, chars): + """Escapes all characters in 'chars' in text using backspaces.""" + rv = '' + for char in text: + if char in chars: + rv += '\\' + rv += char + return rv + + +def fill_in_whitespace(text): + """Returns 'text' with escaped whitespace replaced through whitespaces.""" + text = text.replace(r"\n", '\n') + text = text.replace(r"\t", '\t') + text = text.replace(r"\r", '\r') + text = text.replace(r"\a", '\a') + text = text.replace(r"\b", '\b') + return text + + +def head_tail(line): + """Returns the first word in 'line' and the rest of 'line' or None if the + line is too short.""" + generator = (t.strip() for t in line.split(None, 1)) + head = next(generator).strip() + tail = '' + try: + tail = next(generator).strip() + except StopIteration: + pass + return head, tail + + +class LineIterator(object): + + """Convenience class that keeps track of line numbers in files.""" + + def __init__(self, text): + self._line_index = -1 + self._lines = list(text.splitlines(True)) + + def __iter__(self): + return self + + def __next__(self): + """Returns the next line.""" + if self._line_index + 1 < len(self._lines): + self._line_index += 1 + return self._lines[self._line_index] + raise StopIteration() + next = __next__ # for python2 + + @property + def line_index(self): + """The 1 based line index in the current file.""" + return self._line_index + 1 + + def peek(self): + """Returns the next line (if there is any, otherwise None) without + advancing the iterator.""" + try: + return self._lines[self._line_index + 1] + except IndexError: + return None diff --git a/pythonx/UltiSnips/text_objects/__init__.py b/pythonx/UltiSnips/text_objects/__init__.py index d9f89ba..97e2252 100644 --- a/pythonx/UltiSnips/text_objects/__init__.py +++ b/pythonx/UltiSnips/text_objects/__init__.py @@ -3,4 +3,12 @@ """Public facing classes for TextObjects.""" -from ._snippet_instance import SnippetInstance +from UltiSnips.text_objects._escaped_char import EscapedChar +from UltiSnips.text_objects._mirror import Mirror +from UltiSnips.text_objects._python_code import PythonCode +from UltiSnips.text_objects._shell_code import ShellCode +from UltiSnips.text_objects._snippet_instance import SnippetInstance +from UltiSnips.text_objects._tabstop import TabStop +from UltiSnips.text_objects._transformation import Transformation +from UltiSnips.text_objects._viml_code import VimLCode +from UltiSnips.text_objects._visual import Visual diff --git a/pythonx/UltiSnips/text_objects/_base.py b/pythonx/UltiSnips/text_objects/_base.py index 8ddc103..6ee1745 100644 --- a/pythonx/UltiSnips/text_objects/_base.py +++ b/pythonx/UltiSnips/text_objects/_base.py @@ -3,17 +3,19 @@ """Base classes for all text objects.""" -import UltiSnips._vim as _vim +from UltiSnips import _vim from UltiSnips.position import Position + def _calc_end(text, start): """Calculate the end position of the 'text' starting at 'start.""" if len(text) == 1: new_end = start + Position(0, len(text[0])) else: - new_end = Position(start.line + len(text)-1, len(text[-1])) + new_end = Position(start.line + len(text) - 1, len(text[-1])) return new_end + def _text_to_vim(start, end, text): """Copy the given text to the current buffer, overwriting the span 'start' to 'end'.""" @@ -33,30 +35,33 @@ def _text_to_vim(start, end, text): # Open any folds this might have created _vim.buf.cursor = start - _vim.command("normal! zv") + _vim.command('normal! zv') return new_end # These classes use their subclasses a lot and we really do not want to expose # their functions more globally. # pylint: disable=protected-access + + class TextObject(object): + """Represents any object in the text that has a span in any ways.""" - def __init__(self, parent, token, end=None, - initial_text="", tiebreaker=None): + def __init__(self, parent, token_or_start, end=None, + initial_text='', tiebreaker=None): self._parent = parent - if end is not None: # Took 4 arguments - self._start = token + if end is not None: # Took 4 arguments + self._start = token_or_start self._end = end self._initial_text = initial_text - else: # Initialize from token - self._start = token.start - self._end = token.end - self._initial_text = token.initial_text + else: # Initialize from token + self._start = token_or_start.start + self._end = token_or_start.end + self._initial_text = token_or_start.initial_text self._tiebreaker = tiebreaker or Position( - self._start.line, self._end.line) + self._start.line, self._end.line) if parent is not None: parent._add_child(self) @@ -67,27 +72,27 @@ class TextObject(object): def __lt__(self, other): me_tuple = (self.start.line, self.start.col, - self._tiebreaker.line, self._tiebreaker.col) + self._tiebreaker.line, self._tiebreaker.col) other_tuple = (other._start.line, other._start.col, - other._tiebreaker.line, other._tiebreaker.col) + other._tiebreaker.line, other._tiebreaker.col) return me_tuple < other_tuple def __le__(self, other): me_tuple = (self._start.line, self._start.col, - self._tiebreaker.line, self._tiebreaker.col) + self._tiebreaker.line, self._tiebreaker.col) other_tuple = (other._start.line, other._start.col, - other._tiebreaker.line, other._tiebreaker.col) + other._tiebreaker.line, other._tiebreaker.col) return me_tuple <= other_tuple def __repr__(self): - ct = "" + ct = '' try: ct = self.current_text except IndexError: - ct = "<err>" + ct = '<err>' - return "%s(%r->%r,%r)" % (self.__class__.__name__, - self._start, self._end, ct) + return '%s(%r->%r,%r)' % (self.__class__.__name__, + self._start, self._end, ct) @property def current_text(self): @@ -96,7 +101,7 @@ class TextObject(object): return _vim.buf[self._start.line][self._start.col:self._end.col] else: lines = [_vim.buf[self._start.line][self._start.col:]] - lines.extend(_vim.buf[self._start.line+1:self._end.line]) + lines.extend(_vim.buf[self._start.line + 1:self._end.line]) lines.append(_vim.buf[self._end.line][:self._end.col]) return '\n'.join(lines) @@ -112,8 +117,10 @@ class TextObject(object): def overwrite(self, gtext=None): """Overwrite the text of this object in the Vim Buffer and update its - length information. If 'gtext' is None use the initial text of this - object. + length information. + + If 'gtext' is None use the initial text of this object. + """ # We explicitly do not want to move our children around here as we # either have non or we are replacing text initially which means we do @@ -122,7 +129,7 @@ class TextObject(object): return old_end = self._end self._end = _text_to_vim( - self._start, self._end, gtext or self._initial_text) + self._start, self._end, gtext or self._initial_text) if self._parent: self._parent._child_has_moved( self._parent._children.index(self), min(old_end, self._end), @@ -134,14 +141,16 @@ class TextObject(object): Return False if you need to be called again for this edit cycle. Otherwise return True. + """ - raise NotImplementedError("Must be implemented by subclasses.") + raise NotImplementedError('Must be implemented by subclasses.') + class EditableTextObject(TextObject): - """ - This base class represents any object in the text - that can be changed by the user - """ + + """This base class represents any object in the text that can be changed by + the user.""" + def __init__(self, *args, **kwargs): TextObject.__init__(self, *args, **kwargs) self._children = [] @@ -157,7 +166,7 @@ class EditableTextObject(TextObject): @property def _editable_children(self): - """List of all children that are EditableTextObjects""" + """List of all children that are EditableTextObjects.""" return [child for child in self._children if isinstance(child, EditableTextObject)] @@ -169,21 +178,23 @@ class EditableTextObject(TextObject): for children in self._editable_children: if children._start <= pos < children._end: return children.find_parent_for_new_to(pos) + if children._start == pos and pos == children._end: + return children.find_parent_for_new_to(pos) return self ############################### # Private/Protected functions # ############################### - def _do_edit(self, cmd): + def _do_edit(self, cmd, ctab=None): """Apply the edit 'cmd' to this object.""" ctype, line, col, text = cmd - assert ('\n' not in text) or (text == "\n") + assert ('\n' not in text) or (text == '\n') pos = Position(line, col) to_kill = set() new_cmds = [] for child in self._children: - if ctype == "I": # Insertion + if ctype == 'I': # Insertion if (child._start < pos < Position(child._end.line, child._end.col) and isinstance(child, NoneditableTextObject)): @@ -192,11 +203,17 @@ class EditableTextObject(TextObject): break elif ((child._start <= pos <= child._end) and isinstance(child, EditableTextObject)): - child._do_edit(cmd) + if pos == child.end and not child.children: + try: + if ctab.number != child.number: + continue + except AttributeError: + pass + child._do_edit(cmd, ctab) return - else: # Deletion - delend = pos + Position(0, len(text)) if text != "\n" \ - else Position(line + 1, 0) + else: # Deletion + delend = pos + Position(0, len(text)) if text != '\n' \ + else Position(line + 1, 0) if ((child._start <= pos < child._end) and (child._start < delend <= child._end)): # this edit command is completely for the child @@ -205,9 +222,10 @@ class EditableTextObject(TextObject): new_cmds.append(cmd) break else: - child._do_edit(cmd) + child._do_edit(cmd, ctab) return - elif ((pos < child._start and child._end <= delend) or + elif ((pos < child._start and child._end <= delend and + child.start < delend) or (pos <= child._start and child._end < delend)): # Case: this deletion removes the child to_kill.add(child) @@ -216,16 +234,16 @@ class EditableTextObject(TextObject): elif (pos < child._start and (child._start < delend <= child._end)): # Case: partially for us, partially for the child - my_text = text[:(child._start-pos).col] - c_text = text[(child._start-pos).col:] + my_text = text[:(child._start - pos).col] + c_text = text[(child._start - pos).col:] new_cmds.append((ctype, line, col, my_text)) new_cmds.append((ctype, line, col, c_text)) break elif (delend >= child._end and ( child._start <= pos < child._end)): # Case: partially for us, partially for the child - c_text = text[(child._end-pos).col:] - my_text = text[:(child._end-pos).col] + c_text = text[(child._end - pos).col:] + my_text = text[:(child._end - pos).col] new_cmds.append((ctype, line, col, c_text)) new_cmds.append((ctype, line, col, my_text)) break @@ -238,8 +256,8 @@ class EditableTextObject(TextObject): return # We have to handle this ourselves - delta = Position(1, 0) if text == "\n" else Position(0, len(text)) - if ctype == "D": + delta = Position(1, 0) if text == '\n' else Position(0, len(text)) + if ctype == 'D': # Makes no sense to delete in empty textobject if self._start == self._end: return @@ -263,7 +281,7 @@ class EditableTextObject(TextObject): 'diff'.""" self._end.move(pivot, diff) - for child in self._children[idx+1:]: + for child in self._children[idx + 1:]: child._move(pivot, diff) if self._parent: @@ -295,7 +313,6 @@ class EditableTextObject(TextObject): return min(possible_sol) - def _get_prev_tab(self, number): """Returns the previous tabstop before 'number'.""" if not len(self._tabstops.keys()): @@ -321,8 +338,11 @@ class EditableTextObject(TextObject): return max(possible_sol) def _get_tabstop(self, requester, number): - """Returns the tabstop 'number'. 'requester' is the class that is - interested in this.""" + """Returns the tabstop 'number'. + + 'requester' is the class that is interested in this. + + """ if number in self._tabstops: return self._tabstops[number] for child in self._editable_children: @@ -350,13 +370,17 @@ class EditableTextObject(TextObject): child._parent = None self._children.remove(child) - # If this is a tabstop, delete it + # If this is a tabstop, delete it. Might have been deleted already if + # it was nested. try: del self._tabstops[child.number] - except AttributeError: + except (AttributeError, KeyError): pass + class NoneditableTextObject(TextObject): + """All passive text objects that the user can't edit by hand.""" + def _update(self, done): return True diff --git a/pythonx/UltiSnips/text_objects/_escaped_char.py b/pythonx/UltiSnips/text_objects/_escaped_char.py index c197abd..3301a26 100644 --- a/pythonx/UltiSnips/text_objects/_escaped_char.py +++ b/pythonx/UltiSnips/text_objects/_escaped_char.py @@ -5,11 +5,12 @@ from UltiSnips.text_objects._base import NoneditableTextObject + class EscapedChar(NoneditableTextObject): + r""" This class is a escape char like \$. It is handled in a text object to make sure that siblings are correctly moved after replacing the text. This is a base class without functionality just to mark it in the code. """ - pass diff --git a/pythonx/UltiSnips/text_objects/_mirror.py b/pythonx/UltiSnips/text_objects/_mirror.py index b4e512c..7f8c961 100644 --- a/pythonx/UltiSnips/text_objects/_mirror.py +++ b/pythonx/UltiSnips/text_objects/_mirror.py @@ -5,17 +5,18 @@ from UltiSnips.text_objects._base import NoneditableTextObject + class Mirror(NoneditableTextObject): + """See module docstring.""" def __init__(self, parent, tabstop, token): NoneditableTextObject.__init__(self, parent, token) - self._ts = tabstop def _update(self, done): if self._ts.is_killed: - self.overwrite("") + self.overwrite('') self._parent._del_child(self) # pylint:disable=protected-access return True @@ -26,5 +27,9 @@ class Mirror(NoneditableTextObject): return True def _get_text(self): - """Returns the text used for mirroring. Overwritten by base classes.""" + """Returns the text used for mirroring. + + Overwritten by base classes. + + """ return self._ts.current_text diff --git a/pythonx/UltiSnips/text_objects/_parser.py b/pythonx/UltiSnips/text_objects/_parser.py deleted file mode 100644 index bc76e8b..0000000 --- a/pythonx/UltiSnips/text_objects/_parser.py +++ /dev/null @@ -1,76 +0,0 @@ -#!/usr/bin/env python -# encoding: utf-8 - -"""Parses tokens into text objects.""" - -from UltiSnips.text_objects._lexer import tokenize, EscapeCharToken, \ - VisualToken, TransformationToken, TabStopToken, MirrorToken, \ - PythonCodeToken, VimLCodeToken, ShellCodeToken -from UltiSnips.position import Position -from UltiSnips.text_objects._escaped_char import EscapedChar -from UltiSnips.text_objects._mirror import Mirror -from UltiSnips.text_objects._python_code import PythonCode -from UltiSnips.text_objects._shell_code import ShellCode -from UltiSnips.text_objects._tabstop import TabStop -from UltiSnips.text_objects._transformation import Transformation -from UltiSnips.text_objects._viml_code import VimLCode -from UltiSnips.text_objects._visual import Visual - -_TOKEN_TO_TEXTOBJECT = { - EscapeCharToken: EscapedChar, - VisualToken: Visual, - ShellCodeToken: ShellCode, - PythonCodeToken: PythonCode, - VimLCodeToken: VimLCode, -} - -def _resolve_ambiguity(all_tokens, seen_ts): - """$1 could be a Mirror or a TabStop. This figures this out.""" - for parent, token in all_tokens: - if isinstance(token, MirrorToken): - if token.number not in seen_ts: - seen_ts[token.number] = TabStop(parent, token) - else: - Mirror(parent, seen_ts[token.number], token) - -def _create_transformations(all_tokens, seen_ts): - """Create the objects that need to know about tabstops.""" - for parent, token in all_tokens: - if isinstance(token, TransformationToken): - if token.number not in seen_ts: - raise RuntimeError( - "Tabstop %i is not known but is used by a Transformation" - % token.number) - Transformation(parent, seen_ts[token.number], token) - -def _do_parse(all_tokens, seen_ts, parent_to, text, indent): - """Recursive function that actually creates the objects.""" - tokens = list(tokenize(text, indent, parent_to.start)) - for token in tokens: - all_tokens.append((parent_to, token)) - if isinstance(token, TabStopToken): - ts = TabStop(parent_to, token) - seen_ts[token.number] = ts - - _do_parse(all_tokens, seen_ts, ts, token.initial_text, indent) - else: - klass = _TOKEN_TO_TEXTOBJECT.get(token.__class__, None) - if klass is not None: - klass(parent_to, token) - -def parse_text_object(parent_to, text, indent): - """Parses a text object from 'text' assuming the current 'indent'. Will - instantiate all the objects and link them as children to parent_to. Will - also put the initial text into Vim.""" - seen_ts = {} - all_tokens = [] - - _do_parse(all_tokens, seen_ts, parent_to, text, indent) - _resolve_ambiguity(all_tokens, seen_ts) - _create_transformations(all_tokens, seen_ts) - - if 0 not in seen_ts: - mark = all_tokens[-1][1].end # Last token is always EndOfText - m1 = Position(mark.line, mark.col) - TabStop(parent_to, 0, mark, m1) - parent_to.replace_initial_text() diff --git a/pythonx/UltiSnips/text_objects/_python_code.py b/pythonx/UltiSnips/text_objects/_python_code.py index c9c3e66..5404dca 100644 --- a/pythonx/UltiSnips/text_objects/_python_code.py +++ b/pythonx/UltiSnips/text_objects/_python_code.py @@ -6,73 +6,147 @@ import os from collections import namedtuple +from UltiSnips import _vim from UltiSnips.compatibility import as_unicode from UltiSnips.indent_util import IndentUtil from UltiSnips.text_objects._base import NoneditableTextObject -import UltiSnips._vim as _vim +from UltiSnips.vim_state import _Placeholder +import UltiSnips.snippet_manager class _Tabs(object): + """Allows access to tabstop content via t[] inside of python code.""" + def __init__(self, to): self._to = to def __getitem__(self, no): - ts = self._to._get_tabstop(self._to, int(no)) # pylint:disable=protected-access + ts = self._to._get_tabstop( + self._to, + int(no)) # pylint:disable=protected-access if ts is None: - return "" + return '' return ts.current_text + def __setitem__(self, no, value): + ts = self._to._get_tabstop( + self._to, + int(no)) # pylint:disable=protected-access + if ts is None: + return + ts.overwrite(value) + _VisualContent = namedtuple('_VisualContent', ['mode', 'text']) + +class SnippetUtilForAction(dict): + def __init__(self, *args, **kwargs): + super(SnippetUtilForAction, self).__init__(*args, **kwargs) + self.__dict__ = self + + def expand_anon(self, *args, **kwargs): + UltiSnips.snippet_manager.UltiSnips_Manager.expand_anon( + *args, **kwargs + ) + self.cursor.preserve() + + +class SnippetUtilCursor(object): + def __init__(self, cursor): + self._cursor = [cursor[0] - 1, cursor[1]] + self._set = False + + def preserve(self): + self._set = True + self._cursor = [ + _vim.buf.cursor[0], + _vim.buf.cursor[1], + ] + + def is_set(self): + return self._set + + def set(self, line, column): + self.__setitem__(0, line) + self.__setitem__(1, column) + + def to_vim_cursor(self): + return (self._cursor[0] + 1, self._cursor[1]) + + def __getitem__(self, index): + return self._cursor[index] + + def __setitem__(self, index, value): + self._set = True + self._cursor[index] = value + + def __len__(self): + return 2 + + def __str__(self): + return str((self._cursor[0], self._cursor[1])) + + class SnippetUtil(object): - """Provides easy access to indentation, etc. This is the 'snip' object in - python code.""" - def __init__(self, initial_indent, vmode, vtext): + """Provides easy access to indentation, etc. + + This is the 'snip' object in python code. + + """ + + def __init__(self, initial_indent, vmode, vtext, context, parent): self._ind = IndentUtil() self._visual = _VisualContent(vmode, vtext) self._initial_indent = self._ind.indent_to_spaces(initial_indent) - self._reset("") + self._reset('') + self._context = context + self._start = parent.start + self._end = parent.end + self._parent = parent def _reset(self, cur): """Gets the snippet ready for another update. + :cur: the new value for c. + """ self._ind.reset() self._cur = cur - self._rv = "" + self._rv = '' self._changed = False self.reset_indent() def shift(self, amount=1): - """Shifts the indentation level. - Note that this uses the shiftwidth because thats what code - formatters use. + """Shifts the indentation level. Note that this uses the shiftwidth + because thats what code formatters use. :amount: the amount by which to shift. + """ - self.indent += " " * self._ind.shiftwidth * amount + self.indent += ' ' * self._ind.shiftwidth * amount def unshift(self, amount=1): - """Unshift the indentation level. - Note that this uses the shiftwidth because thats what code - formatters use. + """Unshift the indentation level. Note that this uses the shiftwidth + because thats what code formatters use. :amount: the amount by which to unshift. + """ by = -self._ind.shiftwidth * amount try: self.indent = self.indent[:by] except IndexError: - self.indent = "" + self.indent = '' - def mkline(self, line="", indent=None): + def mkline(self, line='', indent=None): """Creates a properly set up line. :line: the text to add :indent: the indentation to have at the beginning if None, it uses the default amount + """ if indent is None: indent = self.indent @@ -82,7 +156,7 @@ class SnippetUtil(object): try: indent = indent[len(self._initial_indent):] except IndexError: - indent = "" + indent = '' indent = self._ind.spaces_to_indent(indent) return indent + line @@ -95,22 +169,25 @@ class SnippetUtil(object): @property def fn(self): # pylint:disable=no-self-use,invalid-name """The filename.""" - return _vim.eval('expand("%:t")') or "" + return _vim.eval('expand("%:t")') or '' @property def basename(self): # pylint:disable=no-self-use """The filename without extension.""" - return _vim.eval('expand("%:t:r")') or "" + return _vim.eval('expand("%:t:r")') or '' @property def ft(self): # pylint:disable=invalid-name """The filetype.""" - return self.opt("&filetype", "") + return self.opt('&filetype', '') @property def rv(self): # pylint:disable=invalid-name - """The return value. The text to insert at the location of the - placeholder.""" + """The return value. + + The text to insert at the location of the placeholder. + + """ return self._rv @rv.setter @@ -131,12 +208,23 @@ class SnippetUtil(object): @property def v(self): # pylint:disable=invalid-name - """Content of visual expansions""" + """Content of visual expansions.""" return self._visual + @property + def p(self): + if self._parent.current_placeholder: + return self._parent.current_placeholder + else: + return _Placeholder('', 0, 0) + + @property + def context(self): + return self._context + def opt(self, option, default=None): # pylint:disable=no-self-use """Gets a Vim variable.""" - if _vim.eval("exists('%s')" % option) == "1": + if _vim.eval("exists('%s')" % option) == '1': try: return _vim.eval(option) except _vim.error: @@ -157,8 +245,27 @@ class SnippetUtil(object): """Same as shift.""" self.shift(other) + @property + def snippet_start(self): + """ + Returns start of the snippet in format (line, column). + """ + return self._start + + @property + def snippet_end(self): + """ + Returns end of the snippet in format (line, column). + """ + return self._end + + @property + def buffer(self): + return _vim.buf + class PythonCode(NoneditableTextObject): + """See module docstring.""" def __init__(self, parent, token): @@ -170,20 +277,21 @@ class PythonCode(NoneditableTextObject): self._locals = snippet.locals text = snippet.visual_content.text mode = snippet.visual_content.mode + context = snippet.context break - except AttributeError: + except AttributeError as e: snippet = snippet._parent # pylint:disable=protected-access - self._snip = SnippetUtil(token.indent, mode, text) + self._snip = SnippetUtil(token.indent, mode, text, context, snippet) self._codes = (( - "import re, os, vim, string, random", - "\n".join(snippet.globals.get("!p", [])).replace("\r\n", "\n"), - token.code.replace("\\`", "`") + 'import re, os, vim, string, random', + '\n'.join(snippet.globals.get('!p', [])).replace('\r\n', '\n'), + token.code.replace('\\`', '`') )) NoneditableTextObject.__init__(self, parent, token) def _update(self, done): - path = _vim.eval('expand("%")') or "" + path = _vim.eval('expand("%")') or '' ct = self.current_text self._locals.update({ 't': _Tabs(self._parent), @@ -196,7 +304,11 @@ class PythonCode(NoneditableTextObject): self._snip._reset(ct) # pylint:disable=protected-access for code in self._codes: - exec(code, self._locals) # pylint:disable=exec-used + try: + exec(code, self._locals) # pylint:disable=exec-used + except Exception as e: + e.snippet_code = code + raise rv = as_unicode( self._snip.rv if self._snip._rv_changed # pylint:disable=protected-access diff --git a/pythonx/UltiSnips/text_objects/_shell_code.py b/pythonx/UltiSnips/text_objects/_shell_code.py index 3e9099a..a7ad964 100644 --- a/pythonx/UltiSnips/text_objects/_shell_code.py +++ b/pythonx/UltiSnips/text_objects/_shell_code.py @@ -12,6 +12,7 @@ import tempfile from UltiSnips.compatibility import as_unicode from UltiSnips.text_objects._base import NoneditableTextObject + def _chomp(string): """Rather than rstrip(), remove only the last newline and preserve purposeful whitespace.""" @@ -21,8 +22,9 @@ def _chomp(string): string = string[:-1] return string + def _run_shell_command(cmd, tmpdir): - """Write the code to a temporary file""" + """Write the code to a temporary file.""" cmdsuf = '' if platform.system() == 'Windows': # suffix required to run command on windows @@ -30,7 +32,7 @@ def _run_shell_command(cmd, tmpdir): # turn echo off cmd = '@echo off\r\n' + cmd handle, path = tempfile.mkstemp(text=True, dir=tmpdir, suffix=cmdsuf) - os.write(handle, cmd.encode("utf-8")) + os.write(handle, cmd.encode('utf-8')) os.close(handle) os.chmod(path, stat.S_IRWXU) @@ -41,29 +43,32 @@ def _run_shell_command(cmd, tmpdir): os.unlink(path) return _chomp(as_unicode(stdout)) + def _get_tmp(): """Find an executable tmp directory.""" - userdir = os.path.expanduser("~") + userdir = os.path.expanduser('~') for testdir in [tempfile.gettempdir(), os.path.join(userdir, '.cache'), - os.path.join(userdir, '.tmp'), userdir]: + os.path.join(userdir, '.tmp'), userdir]: if (not os.path.exists(testdir) or not _run_shell_command('echo success', testdir) == 'success'): continue return testdir return '' + class ShellCode(NoneditableTextObject): + """See module docstring.""" def __init__(self, parent, token): NoneditableTextObject.__init__(self, parent, token) - self._code = token.code.replace("\\`", "`") + self._code = token.code.replace('\\`', '`') self._tmpdir = _get_tmp() def _update(self, done): if not self._tmpdir: output = \ - "Unable to find executable tmp directory, check noexec on /tmp" + 'Unable to find executable tmp directory, check noexec on /tmp' else: output = _run_shell_command(self._code, self._tmpdir) self.overwrite(output) diff --git a/pythonx/UltiSnips/text_objects/_snippet_instance.py b/pythonx/UltiSnips/text_objects/_snippet_instance.py index a9c12a6..60c1db1 100644 --- a/pythonx/UltiSnips/text_objects/_snippet_instance.py +++ b/pythonx/UltiSnips/text_objects/_snippet_instance.py @@ -1,22 +1,28 @@ #!/usr/bin/env python # encoding: utf-8 -"""A Snippet instance is an instance of a Snippet Definition. That is, when the -user expands a snippet, a SnippetInstance is created to keep track of the -corresponding TextObjects. The Snippet itself is also a TextObject. """ +"""A Snippet instance is an instance of a Snippet Definition. +That is, when the user expands a snippet, a SnippetInstance is created +to keep track of the corresponding TextObjects. The Snippet itself is +also a TextObject. + +""" + +from UltiSnips import _vim from UltiSnips.position import Position -import UltiSnips._vim as _vim from UltiSnips.text_objects._base import EditableTextObject, \ - NoneditableTextObject -from UltiSnips.text_objects._parser import parse_text_object + NoneditableTextObject +from UltiSnips.text_objects._tabstop import TabStop + class SnippetInstance(EditableTextObject): + """See module docstring.""" # pylint:disable=protected-access - def __init__(self, snippet, parent, indent, initial_text, - start, end, visual_content, last_re, globals): + def __init__(self, snippet, parent, initial_text, + start, end, visual_content, last_re, globals, context): if start is None: start = Position(0, 0) if end is None: @@ -24,16 +30,14 @@ class SnippetInstance(EditableTextObject): self.snippet = snippet self._cts = 0 - self.locals = {"match" : last_re} + self.context = context + self.locals = {'match': last_re, 'context': context} self.globals = globals self.visual_content = visual_content + self.current_placeholder = None EditableTextObject.__init__(self, parent, start, end, initial_text) - parse_text_object(self, initial_text, indent) - - self.update_textobjects() - def replace_initial_text(self): """Puts the initial text of all text elements into Vim.""" def _place_initial_text(obj): @@ -44,19 +48,23 @@ class SnippetInstance(EditableTextObject): _place_initial_text(child) _place_initial_text(self) - def replay_user_edits(self, cmds): - """Replay the edits the user has done to keep endings of our - Text objects in sync with reality""" + def replay_user_edits(self, cmds, ctab=None): + """Replay the edits the user has done to keep endings of our Text + objects in sync with reality.""" for cmd in cmds: - self._do_edit(cmd) + self._do_edit(cmd, ctab) def update_textobjects(self): - """Update the text objects that should change automagically after - the users edits have been replayed. This might also move the Cursor + """Update the text objects that should change automagically after the + users edits have been replayed. + + This might also move the Cursor + """ vc = _VimCursor(self) done = set() not_done = set() + def _find_recursive(obj): """Finds all text objects and puts them into 'not_done'.""" if isinstance(obj, EditableTextObject): @@ -74,10 +82,10 @@ class SnippetInstance(EditableTextObject): counter -= 1 if not counter: raise RuntimeError( - "The snippets content did not converge: Check for Cyclic " - "dependencies or random strings in your snippet. You can use " + 'The snippets content did not converge: Check for Cyclic ' + 'dependencies or random strings in your snippet. You can use ' "'if not snip.c' to make sure to only expand random output " - "once.") + 'once.') vc.to_vim() self._del_child(vc) @@ -99,7 +107,16 @@ class SnippetInstance(EditableTextObject): res = self._get_next_tab(self._cts) if res is None: self._cts = None - return self._tabstops.get(0, None) + + ts = self._get_tabstop(self, 0) + if ts: + return ts + + # TabStop 0 was deleted. It was probably killed through some + # edit action. Recreate it at the end of us. + start = Position(self.end.line, self.end.col) + end = Position(self.end.line, self.end.col) + return TabStop(self, 0, start, end) else: self._cts, ts = res return ts @@ -115,8 +132,12 @@ class SnippetInstance(EditableTextObject): self._parent = cached_parent return rv + def get_tabstops(self): + return self._tabstops + class _VimCursor(NoneditableTextObject): + """Helper class to keep track of the Vim Cursor when text objects expand and move.""" diff --git a/pythonx/UltiSnips/text_objects/_tabstop.py b/pythonx/UltiSnips/text_objects/_tabstop.py index 4eff6af..f113f75 100644 --- a/pythonx/UltiSnips/text_objects/_tabstop.py +++ b/pythonx/UltiSnips/text_objects/_tabstop.py @@ -1,12 +1,18 @@ #!/usr/bin/env python # encoding: utf-8 -"""This is the most important TextObject. A TabStop is were the cursor -comes to rest when the user taps through the Snippet.""" +"""This is the most important TextObject. + +A TabStop is were the cursor comes to rest when the user taps through +the Snippet. + +""" from UltiSnips.text_objects._base import EditableTextObject + class TabStop(EditableTextObject): + """See module docstring.""" def __init__(self, parent, token, start=None, end=None): @@ -16,7 +22,8 @@ class TabStop(EditableTextObject): else: self._number = token.number EditableTextObject.__init__(self, parent, token) - parent._tabstops[self._number] = self # pylint:disable=protected-access + parent._tabstops[ + self._number] = self # pylint:disable=protected-access @property def number(self): @@ -28,3 +35,11 @@ class TabStop(EditableTextObject): """True if this tabstop has been typed over and the user therefore can no longer jump to it.""" return self._parent is None + + def __repr__(self): + try: + text = self.current_text + except IndexError: + text = '<err>' + return 'TabStop(%s,%r->%r,%r)' % (self.number, self._start, + self._end, text) diff --git a/pythonx/UltiSnips/text_objects/_transformation.py b/pythonx/UltiSnips/text_objects/_transformation.py index bf8f495..b9da88f 100644 --- a/pythonx/UltiSnips/text_objects/_transformation.py +++ b/pythonx/UltiSnips/text_objects/_transformation.py @@ -5,50 +5,65 @@ import re import sys + +from UltiSnips.text import unescape, fill_in_whitespace from UltiSnips.text_objects._mirror import Mirror -from UltiSnips.escaping import unescape, fill_in_whitespace + def _find_closing_brace(string, start_pos): """Finds the corresponding closing brace after start_pos.""" bracks_open = 1 + escaped = False for idx, char in enumerate(string[start_pos:]): if char == '(': - if string[idx+start_pos-1] != '\\': + if not escaped: bracks_open += 1 elif char == ')': - if string[idx+start_pos-1] != '\\': + if not escaped: bracks_open -= 1 if not bracks_open: - return start_pos+idx+1 + return start_pos + idx + 1 + if char == '\\': + escaped = not escaped + else: + escaped = False + def _split_conditional(string): """Split the given conditional 'string' into its arguments.""" bracks_open = 0 args = [] - carg = "" + carg = '' + escaped = False for idx, char in enumerate(string): if char == '(': - if string[idx-1] != '\\': + if not escaped: bracks_open += 1 elif char == ')': - if string[idx-1] != '\\': + if not escaped: bracks_open -= 1 - elif char == ':' and not bracks_open and not string[idx-1] == '\\': + elif char == ':' and not bracks_open and not escaped: args.append(carg) - carg = "" + carg = '' + escaped = False continue carg += char + if char == '\\': + escaped = not escaped + else: + escaped = False args.append(carg) return args + def _replace_conditional(match, string): """Replaces a conditional match in a transformation.""" conditional_match = _CONDITIONAL.search(string) while conditional_match: start = conditional_match.start() - end = _find_closing_brace(string, start+4) - args = _split_conditional(string[start+4:end-1]) - rv = "" + end = _find_closing_brace(string, start + 4) + args = _split_conditional(string[start + 4:end - 1]) + rv = '' if match.group(int(conditional_match.group(1))): rv = unescape(_replace_conditional(match, args[0])) elif len(args) > 1: @@ -61,7 +76,10 @@ _ONE_CHAR_CASE_SWITCH = re.compile(r"\\([ul].)", re.DOTALL) _LONG_CASEFOLDINGS = re.compile(r"\\([UL].*?)\\E", re.DOTALL) _DOLLAR = re.compile(r"\$(\d+)", re.DOTALL) _CONDITIONAL = re.compile(r"\(\?(\d+):", re.DOTALL) + + class _CleverReplace(object): + """Mimics TextMates replace syntax.""" def __init__(self, expression): @@ -72,7 +90,7 @@ class _CleverReplace(object): transformed = self._expression # Replace all $? with capture groups transformed = _DOLLAR.subn( - lambda m: match.group(int(m.group(1))), transformed)[0] + lambda m: match.group(int(m.group(1))), transformed)[0] # Replace Case switches def _one_char_case_change(match): @@ -82,7 +100,7 @@ class _CleverReplace(object): else: return match.group(1)[-1].lower() transformed = _ONE_CHAR_CASE_SWITCH.subn( - _one_char_case_change, transformed)[0] + _one_char_case_change, transformed)[0] def _multi_char_case_change(match): """Replaces multi character case changes.""" @@ -91,13 +109,16 @@ class _CleverReplace(object): else: return match.group(1)[1:].lower() transformed = _LONG_CASEFOLDINGS.subn( - _multi_char_case_change, transformed)[0] + _multi_char_case_change, transformed)[0] transformed = _replace_conditional(match, transformed) return unescape(fill_in_whitespace(transformed)) # flag used to display only one time the lack of unidecode UNIDECODE_ALERT_RAISED = False + + class TextObjectTransformation(object): + """Base class for Transformations and ${VISUAL}.""" def __init__(self, token): @@ -110,11 +131,13 @@ class TextObjectTransformation(object): flags = 0 self._match_this_many = 1 if token.options: - if "g" in token.options: + if 'g' in token.options: self._match_this_many = 0 - if "i" in token.options: + if 'i' in token.options: flags |= re.IGNORECASE - if "a" in token.options: + if 'm' in token.options: + flags |= re.MULTILINE + if 'a' in token.options: self._convert_to_ascii = True self._find = re.compile(token.search, flags | re.DOTALL) @@ -131,14 +154,16 @@ class TextObjectTransformation(object): if UNIDECODE_ALERT_RAISED == False: UNIDECODE_ALERT_RAISED = True sys.stderr.write( - "Please install unidecode python package in order to " - "be able to make ascii conversions.\n") + 'Please install unidecode python package in order to ' + 'be able to make ascii conversions.\n') if self._find is None: return text return self._find.subn( - self._replace.replace, text, self._match_this_many)[0] + self._replace.replace, text, self._match_this_many)[0] + class Transformation(Mirror, TextObjectTransformation): + """See module docstring.""" def __init__(self, parent, ts, token): diff --git a/pythonx/UltiSnips/text_objects/_viml_code.py b/pythonx/UltiSnips/text_objects/_viml_code.py index 18ffd85..86329bf 100644 --- a/pythonx/UltiSnips/text_objects/_viml_code.py +++ b/pythonx/UltiSnips/text_objects/_viml_code.py @@ -3,13 +3,16 @@ """Implements `!v ` VimL interpolation.""" -import UltiSnips._vim as _vim +from UltiSnips import _vim from UltiSnips.text_objects._base import NoneditableTextObject + class VimLCode(NoneditableTextObject): + """See module docstring.""" + def __init__(self, parent, token): - self._code = token.code.replace("\\`", "`").strip() + self._code = token.code.replace('\\`', '`').strip() NoneditableTextObject.__init__(self, parent, token) diff --git a/pythonx/UltiSnips/text_objects/_visual.py b/pythonx/UltiSnips/text_objects/_visual.py index af5ca4e..0be64b3 100644 --- a/pythonx/UltiSnips/text_objects/_visual.py +++ b/pythonx/UltiSnips/text_objects/_visual.py @@ -2,19 +2,25 @@ # encoding: utf-8 """A ${VISUAL} placeholder that will use the text that was last visually -selected and insert it here. If there was no text visually selected, this will -be the empty string. """ +selected and insert it here. + +If there was no text visually selected, this will be the empty string. + +""" import re import textwrap -import UltiSnips._vim as _vim +from UltiSnips import _vim from UltiSnips.indent_util import IndentUtil from UltiSnips.text_objects._transformation import TextObjectTransformation from UltiSnips.text_objects._base import NoneditableTextObject _REPLACE_NON_WS = re.compile(r"[^ \t]") + + class Visual(NoneditableTextObject, TextObjectTransformation): + """See module docstring.""" def __init__(self, parent, token): @@ -29,27 +35,27 @@ class Visual(NoneditableTextObject, TextObjectTransformation): snippet = snippet._parent # pylint:disable=protected-access if not self._text: self._text = token.alternative_text - self._mode = "v" + self._mode = 'v' NoneditableTextObject.__init__(self, parent, token) TextObjectTransformation.__init__(self, token) def _update(self, done): - if self._mode == "v": # Normal selection. + if self._mode == 'v': # Normal selection. text = self._text else: # Block selection or line selection. text_before = _vim.buf[self.start.line][:self.start.col] - indent = _REPLACE_NON_WS.sub(" ", text_before) + indent = _REPLACE_NON_WS.sub(' ', text_before) iu = IndentUtil() indent = iu.indent_to_spaces(indent) indent = iu.spaces_to_indent(indent) - text = "" + text = '' for idx, line in enumerate(textwrap.dedent( self._text).splitlines(True)): if idx != 0: text += indent text += line - text = text[:-1] # Strip final '\n' + text = text[:-1] # Strip final '\n' text = self._transform(text) self.overwrite(text) diff --git a/pythonx/UltiSnips/vim_state.py b/pythonx/UltiSnips/vim_state.py index ccaded8..18914ee 100644 --- a/pythonx/UltiSnips/vim_state.py +++ b/pythonx/UltiSnips/vim_state.py @@ -3,19 +3,22 @@ """Some classes to conserve Vim's state for comparing over time.""" -from collections import deque +from collections import deque, namedtuple +from UltiSnips import _vim from UltiSnips.compatibility import as_unicode, byte2col from UltiSnips.position import Position -import UltiSnips._vim as _vim + +_Placeholder = namedtuple('_FrozenPlaceholder', ['current_text', 'start', 'end']) class VimPosition(Position): + """Represents the current position in the buffer, together with some status variables that might change our decisions down the line.""" def __init__(self): pos = _vim.buf.cursor - self._mode = _vim.eval("mode()") + self._mode = _vim.eval('mode()') Position.__init__(self, pos.line, pos.col) @property @@ -23,7 +26,9 @@ class VimPosition(Position): """Returns the mode() this position was created.""" return self._mode + class VimState(object): + """Caches some state information from Vim to better guess what editing tasks the user might have done in the last step.""" @@ -31,27 +36,38 @@ class VimState(object): self._poss = deque(maxlen=5) self._lvb = None - self._text_to_expect = None - self._unnamed_reg_cache = None + self._text_to_expect = '' self._unnamed_reg_cached = False + # We store the cached value of the unnamed register in Vim directly to + # avoid any Unicode issues with saving and restoring the unnamed + # register across the Python bindings. The unnamed register can contain + # data that cannot be coerced to Unicode, and so a simple vim.eval('@"') + # fails badly. Keeping the cached value in Vim directly, sidesteps the + # problem. + _vim.command('let g:_ultisnips_unnamed_reg_cache = ""') + def remember_unnamed_register(self, text_to_expect): - """Save the unnamed register. 'text_to_expect' is text that we expect + """Save the unnamed register. + + 'text_to_expect' is text that we expect to be contained in the register the next time this method is called - this could be text from the tabstop that was selected and might have - been overwritten. We will not cash that then.""" + been overwritten. We will not cache that then. + + """ self._unnamed_reg_cached = True - unnamed_reg = _vim.eval('@"') - if unnamed_reg != self._text_to_expect: - self._unnamed_reg_cache = unnamed_reg + escaped_text = self._text_to_expect.replace("'", "''") + res = int(_vim.eval('@" != ' + "'" + escaped_text + "'")) + if res: + _vim.command('let g:_ultisnips_unnamed_reg_cache = @"') self._text_to_expect = text_to_expect def restore_unnamed_register(self): """Restores the unnamed register and forgets what we cached.""" if not self._unnamed_reg_cached: return - escaped_cache = self._unnamed_reg_cache.replace("'", "''") - _vim.command("let @\"='%s'" % escaped_cache) + _vim.command('let @" = g:_ultisnips_unnamed_reg_cache') self._unnamed_reg_cached = False def remember_position(self): @@ -60,7 +76,7 @@ class VimState(object): def remember_buffer(self, to): """Remember the content of the buffer and the position.""" - self._lvb = _vim.buf[to.start.line:to.end.line+1] + self._lvb = _vim.buf[to.start.line:to.end.line + 1] self._lvb_len = len(_vim.buf) self.remember_position() @@ -85,7 +101,9 @@ class VimState(object): """The content of the remembered buffer.""" return self._lvb[:] + class VisualContentPreserver(object): + """Saves the current visual selection and the selection mode it was done in (e.g. line selection, block selection or regular selection.)""" @@ -94,30 +112,41 @@ class VisualContentPreserver(object): def reset(self): """Forget the preserved state.""" - self._mode = "" - self._text = as_unicode("") + self._mode = '' + self._text = as_unicode('') + self._placeholder = None def conserve(self): """Save the last visual selection ond the mode it was made in.""" sl, sbyte = map(int, - (_vim.eval("""line("'<")"""), _vim.eval("""col("'<")"""))) + (_vim.eval("""line("'<")"""), _vim.eval("""col("'<")"""))) el, ebyte = map(int, - (_vim.eval("""line("'>")"""), _vim.eval("""col("'>")"""))) + (_vim.eval("""line("'>")"""), _vim.eval("""col("'>")"""))) sc = byte2col(sl, sbyte - 1) ec = byte2col(el, ebyte - 1) - self._mode = _vim.eval("visualmode()") + self._mode = _vim.eval('visualmode()') _vim_line_with_eol = lambda ln: _vim.buf[ln] + '\n' if sl == el: - text = _vim_line_with_eol(sl-1)[sc:ec+1] + text = _vim_line_with_eol(sl - 1)[sc:ec + 1] else: - text = _vim_line_with_eol(sl-1)[sc:] - for cl in range(sl, el-1): + text = _vim_line_with_eol(sl - 1)[sc:] + for cl in range(sl, el - 1): text += _vim_line_with_eol(cl) - text += _vim_line_with_eol(el-1)[:ec+1] + text += _vim_line_with_eol(el - 1)[:ec + 1] self._text = text + def conserve_placeholder(self, placeholder): + if placeholder: + self._placeholder = _Placeholder( + placeholder.current_text, + placeholder.start, + placeholder.end + ) + else: + self._placeholder = None + @property def text(self): """The conserved text.""" @@ -127,3 +156,8 @@ class VisualContentPreserver(object): def mode(self): """The conserved visualmode().""" return self._mode + + @property + def placeholder(self): + """Returns latest selected placeholder.""" + return self._placeholder diff --git a/rplugin/python3/deoplete/sources/ultisnips.py b/rplugin/python3/deoplete/sources/ultisnips.py new file mode 100644 index 0000000..ba35dfc --- /dev/null +++ b/rplugin/python3/deoplete/sources/ultisnips.py @@ -0,0 +1,21 @@ +from .base import Base + +class Source(Base): + def __init__(self, vim): + Base.__init__(self, vim) + + self.name = 'ultisnips' + self.mark = '[US]' + self.rank = 8 + + def gather_candidates(self, context): + suggestions = [] + snippets = self.vim.eval( + 'UltiSnips#SnippetsInCurrentScope()') + for trigger in snippets: + suggestions.append({ + 'word': trigger, + 'menu': self.mark + ' ' + snippets.get(trigger, ''), + 'dup': 1 + }) + return suggestions diff --git a/syntax/snippets.vim b/syntax/snippets.vim index 085b408..f7782fb 100644 --- a/syntax/snippets.vim +++ b/syntax/snippets.vim @@ -5,68 +5,220 @@ if exists("b:current_syntax") finish endif -syntax include @Python syntax/python.vim -syntax include @Viml syntax/vim.vim - -" global matches -syn match snipComment "^#.*" contains=snipTODO -syn keyword snipTODO FIXME NOTE NOTES TODO XXX contained - -syn match snipDocString '"[^"]*"$' -syn match snipString '"[^"]*"' -syn match snipTabsOnly "^\t\+$" -syn match snipLeadingSpaces "^\t* \+" - -syn match snipKeyword "\(\<\(end\)\?\(snippet\|global\)\>\)\|extends\|clearsnippets\|priority" contained - -" extends definitions -syn match snipExtends "^extends.*" contains=snipKeyword - -" snippet definitions -syn match snipStart "^snippet.*" contained contains=snipKeyword,snipDocString -syn match snipEnd "^endsnippet" contained contains=snipKeyword -syn region snipCommand contained keepend start="`" end="`" contains=snipPythonCommand,snipVimLCommand -syn region snipPythonCommand contained keepend start="`!p" end="`" contained contains=@Python -syn region snipVimLCommand contained keepend start="`!v" end="`" contained contains=@Viml -syn match snipVar "\$\d*" contained -syn region snipVisual matchgroup=Define start="\${VISUAL" end="}" contained -syn region snipVarExpansion matchgroup=Define start="\${\d*" end="}" contained contains=snipVar,snipVarExpansion,snipCommand -syn region snippet fold keepend start="^snippet" end="^endsnippet" contains=snipStart,snipEnd,snipTabsOnly,snipLeadingSpaces,snipCommand,snipVarExpansion,snipVar,snipVisual - -" global definitions -syn match snipGlobalStart "^global.*" contained contains=snipKeyword,snipString -syn match snipGlobalEnd "^endglobal" contained contains=snipKeyword -syn region snipGlobal fold keepend start="^global" end="^endglobal" contains=snipGlobalStart,snipGlobalEnd,snipLeadingSpaces,snipTabsOnly,snipCommand,snipVarExpansion,snipVar,@Python - -" snippet clearing -syn match snipClear "^clearsnippets" -syn match snipPriority "^priority" - -" highlighting rules - -hi link snipComment Comment -hi link snipLeadingSpaces Error -hi link snipString String -hi link snipDocString String -hi link snipTabsOnly Error - -hi link snipKeyword Keyword - -hi link snipExtends Statement - -hi link snipStart Statement -hi link snipEnd Statement -hi link snipCommand Special -hi link snipVar StorageClass -hi link snipVarExpansion Normal -hi link snipVisual Normal -hi link snippet Normal - -hi link snipGlobalStart Statement -hi link snipGlobalEnd Statement -hi link snipGlobal Normal - -hi link snipClear Statement -hi link snipPriority Statement - -let b:current_syntax = "snippet" +if expand("%:p:h:t") == "snippets" && search("^endsnippet", "nw") == 0 + \ && !exists("b:ultisnips_override_snipmate") + " this appears to be a snipmate file + " It's in a directory called snippets/ and there's no endsnippet keyword + " anywhere in the file. + source <sfile>:h/snippets_snipmate.vim + finish +endif + +" Embedded Syntaxes {{{1 + +try + syntax include @Python syntax/python.vim + unlet b:current_syntax + syntax include @Viml syntax/vim.vim + unlet b:current_syntax + syntax include @Shell syntax/sh.vim + unlet b:current_syntax +catch /E403/ + " Ignore errors about syntax files that can't be loaded more than once +endtry + +" Syntax definitions {{{1 + +" Comments {{{2 + +syn match snipComment "^#.*" contains=snipTODO display +syn keyword snipTODO contained display FIXME NOTE NOTES TODO XXX + +" Errors {{{2 + +syn match snipLeadingSpaces "^\t* \+" contained + +" Extends {{{2 + +syn match snipExtends "^extends\%(\s.*\|$\)" contains=snipExtendsKeyword display +syn match snipExtendsKeyword "^extends" contained display + +" Definitions {{{2 + +" snippet {{{3 + +syn region snipSnippet start="^snippet\_s" end="^endsnippet\s*$" contains=snipSnippetHeader fold keepend +syn match snipSnippetHeader "^.*$" nextgroup=snipSnippetBody,snipSnippetFooter skipnl contained contains=snipSnippetHeaderKeyword +syn match snipSnippetHeaderKeyword "^snippet" contained nextgroup=snipSnippetTrigger skipwhite +syn region snipSnippetBody start="\_." end="^\zeendsnippet\s*$" contained nextgroup=snipSnippetFooter contains=snipLeadingSpaces,@snipTokens +syn match snipSnippetFooter "^endsnippet.*" contained contains=snipSnippetFooterKeyword +syn match snipSnippetFooterKeyword "^endsnippet" contained + +" The current parser is a bit lax about parsing. For example, given this: +" snippet foo"bar" +" it treats `foo"bar"` as the trigger. But with this: +" snippet foo"bar baz" +" it treats `foo` as the trigger and "bar baz" as the description. +" I think this is an accident. Instead, we'll assume the description must +" be surrounded by spaces. That means we'll treat +" snippet foo"bar" +" as a trigger `foo"bar"` and +" snippet foo"bar baz" +" as an attempted multiword snippet `foo"bar baz"` that is invalid. +" NB: UltiSnips parses right-to-left, which Vim doesn't support, so that makes +" the following patterns very complicated. +syn match snipSnippetTrigger "\S\+" contained nextgroup=snipSnippetDocString,snipSnippetTriggerInvalid skipwhite +" We want to match a trailing " as the start of a doc comment, but we also +" want to allow for using " as the delimiter in a multiword/pattern snippet. +" So we have to define this twice, once in the general case that matches a +" trailing " as the doc comment, and once for the case of the multiword +" delimiter using " that has more constraints +syn match snipSnippetTrigger ,".\{-}"\ze\%(\s\+"\%(\s*\S\)\@=[^"]*\%("\s\+[^"[:space:]]\+\|"\)\=\)\=\s*$, contained nextgroup=snipSnippetDocString skipwhite +syn match snipSnippetTrigger ,\%(\(\S\).\{-}\1\|\S\+\)\ze\%(\s\+"[^"]*\%("\s\+\%("[^"]\+"\s\+[^"[:space:]]*e[^"[:space:]]*\)\|"\)\=\)\=\s*$, contained nextgroup=snipSnippetDocContextString skipwhite +syn match snipSnippetTrigger ,\([^"[:space:]]\).\{-}\1\%(\s*$\)\@!\ze\%(\s\+"[^"]*\%("\s\+\%("[^"]\+"\s\+[^"[:space:]]*e[^"[:space:]]*\|[^"[:space:]]\+\)\|"\)\=\)\=\s*$, contained nextgroup=snipSnippetDocString skipwhite +syn match snipSnippetTriggerInvalid ,\S\@=.\{-}\S\ze\%(\s\+"[^"]*\%("\s\+[^"[:space:]]\+\s*\|"\s*\)\=\|\s*\)$, contained nextgroup=snipSnippetDocString skipwhite +syn match snipSnippetDocString ,"[^"]*", contained nextgroup=snipSnippetOptions skipwhite +syn match snipSnippetDocContextString ,"[^"]*", contained nextgroup=snipSnippetContext skipwhite +syn match snipSnippetContext ,"[^"]\+", contained skipwhite contains=snipSnippetContextP +syn region snipSnippetContextP start=,"\@<=., end=,\ze", contained contains=@Python nextgroup=snipSnippetOptions skipwhite keepend +syn match snipSnippetOptions ,\S\+, contained contains=snipSnippetOptionFlag +syn match snipSnippetOptionFlag ,[biwrtsmxAe], contained + +" Command substitution {{{4 + +syn region snipCommand keepend matchgroup=snipCommandDelim start="`" skip="\\[{}\\$`]" end="`" contained contains=snipPythonCommand,snipVimLCommand,snipShellCommand,snipCommandSyntaxOverride +syn region snipShellCommand start="\ze\_." skip="\\[{}\\$`]" end="\ze`" contained contains=@Shell +syn region snipPythonCommand matchgroup=snipPythonCommandP start="`\@<=!p\_s" skip="\\[{}\\$`]" end="\ze`" contained contains=@Python +syn region snipVimLCommand matchgroup=snipVimLCommandV start="`\@<=!v\_s" skip="\\[{}\\$`]" end="\ze`" contained contains=@Viml +syn cluster snipTokens add=snipCommand +syn cluster snipTabStopTokens add=snipCommand + +" unfortunately due to the balanced braces parsing of commands, if a { occurs +" in the command, we need to prevent the embedded syntax highlighting. +" Otherwise, we can't track the balanced braces properly. + +syn region snipCommandSyntaxOverride start="\%(\\[{}\\$`]\|\_[^`"{]\)*\ze{" skip="\\[{}\\$`]" end="\ze`" contained contains=snipBalancedBraces transparent + +" Tab Stops {{{4 + +syn match snipEscape "\\[{}\\$`]" contained +syn cluster snipTokens add=snipEscape +syn cluster snipTabStopTokens add=snipEscape + +syn match snipMirror "\$\d\+" contained +syn cluster snipTokens add=snipMirror +syn cluster snipTabStopTokens add=snipMirror + +syn region snipTabStop matchgroup=snipTabStop start="\${\d\+[:}]\@=" end="}" contained contains=snipTabStopDefault extend +syn region snipTabStopDefault matchgroup=snipTabStop start=":" skip="\\[{}]" end="\ze}" contained contains=snipTabStopEscape,snipBalancedBraces,@snipTabStopTokens keepend +syn match snipTabStopEscape "\\[{}]" contained +syn region snipBalancedBraces start="{" end="}" contained transparent extend +syn cluster snipTokens add=snipTabStop +syn cluster snipTabStopTokens add=snipTabStop + +syn region snipVisual matchgroup=snipVisual start="\${VISUAL[:}/]\@=" end="}" contained contains=snipVisualDefault,snipTransformationPattern extend +syn region snipVisualDefault matchgroup=snipVisual start=":" end="\ze[}/]" contained contains=snipTabStopEscape nextgroup=snipTransformationPattern +syn cluster snipTokens add=snipVisual +syn cluster snipTabStopTokens add=snipVisual + +syn region snipTransformation matchgroup=snipTransformation start="\${\d\/\@=" end="}" contained contains=snipTransformationPattern +syn region snipTransformationPattern matchgroup=snipTransformationPatternDelim start="/" end="\ze/" contained contains=snipTransformationEscape nextgroup=snipTransformationReplace skipnl +syn region snipTransformationReplace matchgroup=snipTransformationPatternDelim start="/" end="/" contained contains=snipTransformationEscape nextgroup=snipTransformationOptions skipnl +syn region snipTransformationOptions start="\ze[^}]" end="\ze}" contained contains=snipTabStopEscape +syn match snipTransformationEscape "\\/" contained +syn cluster snipTokens add=snipTransformation +syn cluster snipTabStopTokens add=snipTransformation + +" global {{{3 + +" Generic (non-Python) {{{4 + +syn region snipGlobal start="^global\_s" end="^\zeendglobal\s*$" contains=snipGlobalHeader nextgroup=snipGlobalFooter fold keepend +syn match snipGlobalHeader "^.*$" nextgroup=snipGlobalBody,snipGlobalFooter skipnl contained contains=snipGlobalHeaderKeyword +syn region snipGlobalBody start="\_." end="^\zeendglobal\s*$" contained contains=snipLeadingSpaces + +" Python (!p) {{{4 + +syn region snipGlobal start=,^global\s\+!p\%(\s\+"[^"]*\%("\s\+[^"[:space:]]\+\|"\)\=\)\=\s*$, end=,^\zeendglobal\s*$, contains=snipGlobalPHeader nextgroup=snipGlobalFooter fold keepend +syn match snipGlobalPHeader "^.*$" nextgroup=snipGlobalPBody,snipGlobalFooter skipnl contained contains=snipGlobalHeaderKeyword +syn match snipGlobalHeaderKeyword "^global" contained nextgroup=snipSnippetTrigger skipwhite +syn region snipGlobalPBody start="\_." end="^\zeendglobal\s*$" contained contains=@Python + +" Common {{{4 + +syn match snipGlobalFooter "^endglobal.*" contained contains=snipGlobalFooterKeyword +syn match snipGlobalFooterKeyword "^endglobal" contained + +" priority {{{3 + +syn match snipPriority "^priority\%(\s.*\|$\)" contains=snipPriorityKeyword display +syn match snipPriorityKeyword "^priority" contained nextgroup=snipPriorityValue skipwhite display +syn match snipPriorityValue "-\?\d\+" contained display + +" Actions {{{3 + +syn match snipAction "^\%(pre_expand\|post_expand\|post_jump\).*$" contains=snipActionKeyword display skipwhite +syn match snipActionKeyword "\%(pre_expand\|post_expand\|post_jump\)" contained nextgroup=snipActionValue skipwhite display +syn match snipActionValue '"[^"]*"' contained contains=snipActionValueP +syn region snipActionValueP start=,"\@<=., end=,\ze", contained contains=@Python skipwhite keepend + +" Snippt Clearing {{{2 + +syn match snipClear "^clearsnippets\%(\s.*\|$\)" contains=snipClearKeyword display +syn match snipClearKeyword "^clearsnippets" contained display + +" Highlight groups {{{1 + +hi def link snipComment Comment +hi def link snipTODO Todo +hi def snipLeadingSpaces term=reverse ctermfg=15 ctermbg=4 gui=reverse guifg=#dc322f + +hi def link snipKeyword Keyword + +hi def link snipExtendsKeyword snipKeyword + +hi def link snipSnippetHeaderKeyword snipKeyword +hi def link snipSnippetFooterKeyword snipKeyword + +hi def link snipSnippetTrigger Identifier +hi def link snipSnippetTriggerInvalid Error +hi def link snipSnippetDocString String +hi def link snipSnippetDocContextString String +hi def link snipSnippetOptionFlag Special + +hi def link snipGlobalHeaderKeyword snipKeyword +hi def link snipGlobalFooterKeyword snipKeyword + +hi def link snipCommand Special +hi def link snipCommandDelim snipCommand +hi def link snipShellCommand snipCommand +hi def link snipVimLCommand snipCommand +hi def link snipPythonCommandP PreProc +hi def link snipVimLCommandV PreProc +hi def link snipSnippetContext String +hi def link snipAction String + +hi def link snipEscape Special +hi def link snipMirror StorageClass +hi def link snipTabStop Define +hi def link snipTabStopDefault String +hi def link snipTabStopEscape Special +hi def link snipVisual snipTabStop +hi def link snipVisualDefault snipTabStopDefault +hi def link snipTransformation snipTabStop +hi def link snipTransformationPattern String +hi def link snipTransformationPatternDelim Operator +hi def link snipTransformationReplace String +hi def link snipTransformationEscape snipEscape +hi def link snipTransformationOptions Operator + +hi def link snipPriorityKeyword Keyword +hi def link snipPriorityValue Number + +hi def link snipActionKeyword Keyword + +hi def link snipClearKeyword Keyword + +" }}}1 + +let b:current_syntax = "snippets" diff --git a/syntax/snippets_snipmate.vim b/syntax/snippets_snipmate.vim new file mode 100644 index 0000000..aa55c1f --- /dev/null +++ b/syntax/snippets_snipmate.vim @@ -0,0 +1,47 @@ +" Syntax highlighting variant used for snipmate snippets files +" The snippets.vim file sources this if it wants snipmate mode + +if exists("b:current_syntax") + finish +endif + +" Embedded syntaxes {{{1 + +" Re-include the original file so we can share some of its definitions +let b:ultisnips_override_snipmate = 1 +syn include <sfile>:h/snippets.vim +unlet b:current_syntax +unlet b:ultisnips_override_snipmate + +syn cluster snipTokens contains=snipEscape,snipVisual,snipTabStop,snipMirror,snipmateCommand +syn cluster snipTabStopTokens contains=snipVisual,snipMirror,snipEscape,snipmateCommand + +" Syntax definitions {{{1 + +syn match snipmateComment "^#.*" + +syn match snipmateExtends "^extends\%(\s.*\|$\)" contains=snipExtendsKeyword display + +syn region snipmateSnippet start="^snippet\ze\%(\s\|$\)" end="^\ze[^[:tab:]]" contains=snipmateSnippetHeader keepend +syn match snipmateSnippetHeader "^.*" contained contains=snipmateKeyword nextgroup=snipmateSnippetBody skipnl skipempty +syn match snipmateKeyword "^snippet\ze\%(\s\|$\)" contained nextgroup=snipmateTrigger skipwhite +syn match snipmateTrigger "\S\+" contained nextgroup=snipmateDescription skipwhite +syn match snipmateDescription "\S.*" contained +syn region snipmateSnippetBody start="^\t" end="^\ze[^[:tab:]]" contained contains=@snipTokens + +syn region snipmateCommand keepend matchgroup=snipCommandDelim start="`" skip="\\[{}\\$`]" end="`" contained contains=snipCommandSyntaxOverride,@Viml + +" Highlight groups {{{1 + +hi def link snipmateComment snipComment + +hi def link snipmateSnippet snipSnippet +hi def link snipmateKeyword snipKeyword +hi def link snipmateTrigger snipSnippetTrigger +hi def link snipmateDescription snipSnippetDocString + +hi def link snipmateCommand snipCommand + +" }}}1 + +let b:current_syntax = "snippets" diff --git a/test.py b/test.py deleted file mode 100755 index 26e8628..0000000 --- a/test.py +++ /dev/null @@ -1,3300 +0,0 @@ -#!/usr/bin/env python -# encoding: utf-8 -# -# To execute this test requires two terminals, one for running Vim and one -# for executing the test script. Both terminals should have their current -# working directories set to this directory (the one containing this test.py -# script). -# -# In one terminal, launch a GNU ``screen`` session named ``vim``: -# $ screen -S vim -# -# Within this new session, launch Vim with the absolute bare minimum settings -# to ensure a consistent test environment: -# $ vim -u NONE -# -# The '-u NONE' disables normal .vimrc and .gvimrc processing (note -# that '-u NONE' implies '-U NONE'). -# -# All other settings are configured by the test script. -# -# Now, from another terminal, launch the testsuite: -# $ ./test.py -# -# The testsuite will use ``screen`` to inject commands into the Vim under test, -# and will compare the resulting output to expected results. -# -# Under windows, COM's SendKeys is used to send keystrokes to the gvim window. -# Note that Gvim must use english keyboard input (choose in windows registry) -# for this to work properly as SendKeys is a piece of chunk. (i.e. it sends -# <F13> when you send a | symbol while using german key mappings) - -# pylint: skip-file - -from textwrap import dedent -import os -import platform -import random -import re -import shutil -import string -import subprocess -import sys -import tempfile -import time -import unittest - -try: - import unidecode - UNIDECODE_IMPORTED = True -except ImportError: - UNIDECODE_IMPORTED = False - -# Some constants for better reading -BS = '\x7f' -ESC = '\x1b' -ARR_L = '\x1bOD' -ARR_R = '\x1bOC' -ARR_U = '\x1bOA' -ARR_D = '\x1bOB' - -# multi-key sequences generating a single key press -SEQUENCES = [ARR_L, ARR_R, ARR_U, ARR_D] - -# Defined Constants -JF = "?" # Jump forwards -JB = "+" # Jump backwards -LS = "@" # List snippets -EX = "\t" # EXPAND -EA = "#" # Expand anonymous - -COMPL_KW = chr(24)+chr(14) -COMPL_ACCEPT = chr(25) - -def running_on_windows(): - if platform.system() == "Windows": - return "Does not work on Windows." - -def no_unidecode_available(): - if not UNIDECODE_IMPORTED: - return "unidecode is not available." - -def random_string(n): - return ''.join(random.choice(string.ascii_lowercase) for x in range(n)) - -def silent_call(cmd): - """Calls 'cmd' and returns the exit value.""" - return subprocess.call(cmd, stderr=subprocess.PIPE, stdout=subprocess.PIPE) - -class VimInterface: - def focus(title=None): - pass - - def get_buffer_data(self): - handle, fn = tempfile.mkstemp(prefix="UltiSnips_Test",suffix=".txt") - os.close(handle) - os.unlink(fn) - - self.send(ESC + ":w! %s\n" % fn) - - # Read the output, chop the trailing newline - tries = 50 - while tries: - if os.path.exists(fn): - if sys.version_info >= (3,0): - return open(fn,"r", encoding="utf-8").read()[:-1] - else: - return open(fn,"r").read()[:-1] - time.sleep(.05) - tries -= 1 - -class VimInterfaceScreen(VimInterface): - def __init__(self, session): - self.session = session - self.need_screen_escapes = 0 - self.detect_parsing() - - def send(self, s): - if self.need_screen_escapes: - # escape characters that are special to some versions of screen - repl = lambda m: '\\' + m.group(0) - s = re.sub( r"[$^#\\']", repl, s ) - - if sys.version_info >= (3,0): - s = s.encode("utf-8") - - while True: - rv = 0 - if len(s) > 30: - rv |= silent_call(["screen", "-x", self.session, "-X", "register", "S", s]) - rv |= silent_call(["screen", "-x", self.session, "-X", "paste", "S"]) - else: - rv |= silent_call(["screen", "-x", self.session, "-X", "stuff", s]) - if not rv: break - time.sleep(.2) - - def detect_parsing(self): - # Clear the buffer - self.send("bggVGd") - - # Send a string where the interpretation will depend on version of screen - string = "$TERM" - self.send("i" + string + ESC) - output = self.get_buffer_data() - - # If the output doesn't match the input, need to do additional escaping - if output != string: - self.need_screen_escapes = 1 - -class VimInterfaceTmux(VimInterface): - def __init__(self, session): - self.session = session - self._check_version() - - def send(self, s): - # I did not find any documentation on what needs escaping when sending - # to tmux, but it seems like this is all that is needed for now. - s = s.replace(';', r'\;') - - if sys.version_info >= (3,0): - s = s.encode("utf-8") - silent_call(["tmux", "send-keys", "-t", self.session, "-l", s]) - - def _check_version(self): - stdout, _ = subprocess.Popen(["tmux", "-V"], - stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate() - if sys.version_info >= (3,0): - stdout = stdout.decode("utf-8") - m = re.match(r"tmux (\d+).(\d+)", stdout) - if not m or not (int(m.group(1)), int(m.group(2))) >= (1, 9): - raise RuntimeError("Need at least tmux 1.9, you have %s." % stdout.strip()) - -class VimInterfaceWindows(VimInterface): - BRACES = re.compile("([}{])") - WIN_ESCAPES = ["+", "^", "%", "~", "[", "]", "<", ">", "(", ")"] - WIN_REPLACES = [ - (BS, "{BS}"), - (ARR_L, "{LEFT}"), - (ARR_R, "{RIGHT}"), - (ARR_U, "{UP}"), - (ARR_D, "{DOWN}"), - ("\t", "{TAB}"), - ("\n", "~"), - (ESC, "{ESC}"), - - # On my system ` waits for a second keystroke, so `+SPACE = "`". On - # most systems, `+Space = "` ". I work around this, by sending the host - # ` as `+_+BS. Awkward, but the only way I found to get this working. - ("`", "`_{BS}"), - ("´", "´_{BS}"), - ("{^}", "{^}_{BS}"), - ] - - def __init__(self): - self.seq_buf = [] - # import windows specific modules - import win32com.client, win32gui - self.win32gui = win32gui - self.shell = win32com.client.Dispatch("WScript.Shell") - - def is_focused(self, title=None): - cur_title = self.win32gui.GetWindowText(self.win32gui.GetForegroundWindow()) - if (title or "- GVIM") in cur_title: - return True - return False - - def focus(self, title=None): - if not self.shell.AppActivate(title or "- GVIM"): - raise Exception("Failed to switch to GVim window") - time.sleep(1) - - def convert_keys(self, keys): - keys = self.BRACES.sub(r"{\1}", keys) - for k in self.WIN_ESCAPES: - keys = keys.replace(k, "{%s}" % k) - for f, r in self.WIN_REPLACES: - keys = keys.replace(f, r) - return keys - - def send(self, keys): - self.seq_buf.append(keys) - seq = "".join(self.seq_buf) - - for f in SEQUENCES: - if f.startswith(seq) and f != seq: - return - self.seq_buf = [] - - seq = self.convert_keys(seq) - - if not self.is_focused(): - time.sleep(2) - self.focus() - if not self.is_focused(): - # This is the only way I can find to stop test execution - raise KeyboardInterrupt("Failed to focus GVIM") - - self.shell.SendKeys(seq) - -class _VimTest(unittest.TestCase): - snippets = ("dummy", "donotdefine") - snippets_test_file = ("", "") # filetype, file content - text_before = " --- some text before --- \n\n" - text_after = "\n\n --- some text after --- " - expected_error = "" - wanted = "" - keys = "" - sleeptime = 0.00 - output = None - # Skip this test for the given reason or None for not skipping it. - skip_if = lambda self: None - - def send(self,s): - self.vim.send(s) - - def send_py(self,s): - # Do not delete the file so that Vim can safely read it. - with tempfile.NamedTemporaryFile( - prefix="UltiSnips_Python", suffix=".py", delete=False - ) as temporary_file: - if sys.version_info >= (3,0): - s = s.encode("utf-8") - - temporary_file.write(s) - temporary_file.close() - - if sys.version_info < (3,0): - self.send(":pyfile %s\n" % temporary_file.name) - else: - self.send(":py3file %s\n" % temporary_file.name) - - def check_output(self): - wanted = self.text_before + self.wanted + self.text_after - if self.expected_error: - self.assertRegexpMatches(self.output, self.expected_error) - return - for i in range(self.retries): - if self.output != wanted: - # Redo this, but slower - self.sleeptime += 0.02 - self.send(ESC) - self.setUp() - self.assertEqual(self.output, wanted) - - def runTest(self): self.check_output() - - def _options_on(self): - pass - - def _options_off(self): - pass - - def _create_snippet_file(self, ft, content): - """Create a snippet file and makes sure that it is found on the - runtimepath to be parsed.""" - self._temporary_directory = tempfile.mkdtemp(prefix="UltiSnips_Test") - snippet_dir = random_string(20) - abs_snippet_dir = os.path.join(self._temporary_directory, snippet_dir) - os.mkdir(abs_snippet_dir) - with open(os.path.join(abs_snippet_dir, "%s.snippets" % ft), "w") as snippet_file: - snippet_file.write(dedent(content + "\n")) - self.vim.send(":let g:UltiSnipsSnippetDirectories=['%s']\n" % snippet_dir) - self.vim.send(""":set runtimepath=$VIMRUNTIME,%s,.\n""" % self._temporary_directory) - - def setUp(self): - reason_for_skipping = self.skip_if() - if reason_for_skipping is not None: - return self.skipTest(reason_for_skipping) - - # Escape for good measure - self.send(ESC + ESC + ESC) - - # Close all scratch buffers - self.send(":silent! close\n") - - # Reset UltiSnips - self.send_py("UltiSnips_Manager._reset()") - - # Make it unlikely that we do parse any shipped snippets. - self.send(":let g:UltiSnipsSnippetDirectories=['<un_def_ined>']\n") - - # Clear the buffer - self.send("bggVGd") - - if len(self.snippets) and not isinstance(self.snippets[0],tuple): - self.snippets = ( self.snippets, ) - - for s in self.snippets: - sv, content = s[:2] - description = "" - options = "" - priority = 0 - if len(s) > 2: - description = s[2] - if len(s) > 3: - options = s[3] - if len(s) > 4: - priority = s[4] - - self.send_py("UltiSnips_Manager.add_snippet(%r, %r, %r, %r, priority=%i)" % - (sv, content, description, options, priority)) - - ft, file_data = self.snippets_test_file - self._temporary_directory = "" - if ft: - self._create_snippet_file(ft, file_data) - - if not self.interrupt: - # Enter insert mode - self.send("i") - - self.send(self.text_before) - self.send(self.text_after) - - # Go to the middle of the buffer - self.send(ESC + "ggjj") - - self._options_on() - - self.send("i") - - # Execute the command, but leave Vim some time to react. - for c in self.keys: - self.vim.send(c) - time.sleep(self.sleeptime) - - self.send(ESC) - - self._options_off() - - self.output = self.vim.get_buffer_data() - - def tearDown(self): - if self._temporary_directory: - self.vim.send(""":set runtimepath=$VIMRUNTIME,.\n""") - shutil.rmtree(self._temporary_directory) - -########################################################################### -# BEGINNING OF TEST # -########################################################################### -# Snippet Definition Parsing {{{# -class ParseSnippets_SimpleSnippet(_VimTest): - snippets_test_file = ("all", r""" - snippet testsnip "Test Snippet" b! - This is a test snippet! - endsnippet - """) - keys = "testsnip" + EX - wanted = "This is a test snippet!" - -class ParseSnippets_MissingEndSnippet(_VimTest): - snippets_test_file = ("all", r""" - snippet testsnip "Test Snippet" b! - This is a test snippet! - """) - keys = "testsnip" + EX - wanted = "testsnip" + EX - expected_error = r"Missing 'endsnippet' for 'testsnip' in \S+:4" - -class ParseSnippets_UnknownDirective(_VimTest): - snippets_test_file = ("all", r""" - unknown directive - """) - keys = "testsnip" + EX - wanted = "testsnip" + EX - expected_error = r"Invalid line 'unknown directive' in \S+:2" - -class ParseSnippets_InvalidPriorityLine(_VimTest): - snippets_test_file = ("all", r""" - priority - 50 - """) - keys = "testsnip" + EX - wanted = "testsnip" + EX - expected_error = r"Invalid priority '- 50' in \S+:2" - -class ParseSnippets_InvalidPriorityLine1(_VimTest): - snippets_test_file = ("all", r""" - priority - """) - keys = "testsnip" + EX - wanted = "testsnip" + EX - expected_error = r"Invalid priority '' in \S+:2" - -class ParseSnippets_ExtendsWithoutFiletype(_VimTest): - snippets_test_file = ("all", r""" - extends - """) - keys = "testsnip" + EX - wanted = "testsnip" + EX - expected_error = r"'extends' without file types in \S+:2" - -class ParseSnippets_ClearAll(_VimTest): - snippets_test_file = ("all", r""" - snippet testsnip "Test snippet" - This is a test. - endsnippet - - clearsnippets - """) - keys = "testsnip" + EX - wanted = "testsnip" + EX - -class ParseSnippets_ClearOne(_VimTest): - snippets_test_file = ("all", r""" - snippet testsnip "Test snippet" - This is a test. - endsnippet - - snippet toclear "Snippet to clear" - Do not expand. - endsnippet - - clearsnippets toclear - """) - keys = "toclear" + EX + "\n" + "testsnip" + EX - wanted = "toclear" + EX + "\n" + "This is a test." - -class ParseSnippets_ClearTwo(_VimTest): - snippets_test_file = ("all", r""" - snippet testsnip "Test snippet" - This is a test. - endsnippet - - snippet toclear "Snippet to clear" - Do not expand. - endsnippet - - clearsnippets testsnip toclear - """) - keys = "toclear" + EX + "\n" + "testsnip" + EX - wanted = "toclear" + EX + "\n" + "testsnip" + EX - - -class _ParseSnippets_MultiWord(_VimTest): - snippets_test_file = ("all", r""" - snippet /test snip/ - This is a test. - endsnippet - - snippet !snip test! "Another snippet" - This is another test. - endsnippet - - snippet "snippet test" "Another snippet" b - This is yet another test. - endsnippet - """) -class ParseSnippets_MultiWord_Simple(_ParseSnippets_MultiWord): - keys = "test snip" + EX - wanted = "This is a test." -class ParseSnippets_MultiWord_Description(_ParseSnippets_MultiWord): - keys = "snip test" + EX - wanted = "This is another test." -class ParseSnippets_MultiWord_Description_Option(_ParseSnippets_MultiWord): - keys = "snippet test" + EX - wanted = "This is yet another test." - -class _ParseSnippets_MultiWord_RE(_VimTest): - snippets_test_file = ("all", r""" - snippet /[d-f]+/ "" r - az test - endsnippet - - snippet !^(foo|bar)$! "" r - foo-bar test - endsnippet - - snippet "(test ?)+" "" r - re-test - endsnippet - """) -class ParseSnippets_MultiWord_RE1(_ParseSnippets_MultiWord_RE): - keys = "abc def" + EX - wanted = "abc az test" -class ParseSnippets_MultiWord_RE2(_ParseSnippets_MultiWord_RE): - keys = "foo" + EX + " bar" + EX + "\nbar" + EX - wanted = "foo-bar test bar\t\nfoo-bar test" -class ParseSnippets_MultiWord_RE3(_ParseSnippets_MultiWord_RE): - keys = "test test test" + EX - wanted = "re-test" - -class ParseSnippets_MultiWord_Quotes(_VimTest): - snippets_test_file = ("all", r""" - snippet "test snip" - This is a test. - endsnippet - """) - keys = "test snip" + EX - wanted = "This is a test." -class ParseSnippets_MultiWord_WithQuotes(_VimTest): - snippets_test_file = ("all", r""" - snippet !"test snip"! - This is a test. - endsnippet - """) - keys = '"test snip"' + EX - wanted = "This is a test." - -class ParseSnippets_MultiWord_NoContainer(_VimTest): - snippets_test_file = ("all", r""" - snippet test snip - This is a test. - endsnippet - """) - keys = "test snip" + EX - wanted = keys - expected_error = "Invalid multiword trigger: 'test snip' in \S+:2" - -class ParseSnippets_MultiWord_UnmatchedContainer(_VimTest): - snippets_test_file = ("all", r""" - snippet !inv snip/ - This is a test. - endsnippet - """) - keys = "inv snip" + EX - wanted = keys - expected_error = "Invalid multiword trigger: '!inv snip/' in \S+:2" - -class ParseSnippets_Global_Python(_VimTest): - snippets_test_file = ("all", r""" - global !p - def tex(ins): - return "a " + ins + " b" - endglobal - - snippet ab - x `!p snip.rv = tex("bob")` y - endsnippet - - snippet ac - x `!p snip.rv = tex("jon")` y - endsnippet - """) - keys = "ab" + EX + "\nac" + EX - wanted = "x a bob b y\nx a jon b y" - -class ParseSnippets_Global_Local_Python(_VimTest): - snippets_test_file = ("all", r""" -global !p -def tex(ins): - return "a " + ins + " b" -endglobal - -snippet ab -x `!p first = tex("bob") -snip.rv = "first"` `!p snip.rv = first` y -endsnippet - """) - keys = "ab" + EX - wanted = "x first a bob b y" -# End: Snippet Definition Parsing #}}} - -# Simple Expands {{{# -class _SimpleExpands(_VimTest): - snippets = ("hallo", "Hallo Welt!") - -class SimpleExpand_ExceptCorrectResult(_SimpleExpands): - keys = "hallo" + EX - wanted = "Hallo Welt!" -class SimpleExpandTwice_ExceptCorrectResult(_SimpleExpands): - keys = "hallo" + EX + '\nhallo' + EX - wanted = "Hallo Welt!\nHallo Welt!" - -class SimpleExpandNewLineAndBackspae_ExceptCorrectResult(_SimpleExpands): - keys = "hallo" + EX + "\nHallo Welt!\n\n\b\b\b\b\b" - wanted = "Hallo Welt!\nHallo We" - def _options_on(self): - self.send(":set backspace=eol,start\n") - def _options_off(self): - self.send(":set backspace=\n") - -class SimpleExpandTypeAfterExpand_ExceptCorrectResult(_SimpleExpands): - keys = "hallo" + EX + "and again" - wanted = "Hallo Welt!and again" - -class SimpleExpandTypeAndDelete_ExceptCorrectResult(_SimpleExpands): - keys = "na du hallo" + EX + "and again\b\b\b\b\bblub" - wanted = "na du Hallo Welt!and blub" - -class DoNotExpandAfterSpace_ExceptCorrectResult(_SimpleExpands): - keys = "hallo " + EX - wanted = "hallo " + EX - -class ExitSnippetModeAfterTabstopZero(_VimTest): - snippets = ("test", "SimpleText") - keys = "test" + EX + EX - wanted = "SimpleText" + EX - -class ExpandInTheMiddleOfLine_ExceptCorrectResult(_SimpleExpands): - keys = "Wie hallo gehts" + ESC + "bhi" + EX - wanted = "Wie Hallo Welt! gehts" -class MultilineExpand_ExceptCorrectResult(_VimTest): - snippets = ("hallo", "Hallo Welt!\nUnd Wie gehts") - keys = "Wie hallo gehts" + ESC + "bhi" + EX - wanted = "Wie Hallo Welt!\nUnd Wie gehts gehts" -class MultilineExpandTestTyping_ExceptCorrectResult(_VimTest): - snippets = ("hallo", "Hallo Welt!\nUnd Wie gehts") - wanted = "Wie Hallo Welt!\nUnd Wie gehtsHuiui! gehts" - keys = "Wie hallo gehts" + ESC + "bhi" + EX + "Huiui!" -class SimpleExpandEndingWithNewline_ExceptCorrectResult(_VimTest): - snippets = ("hallo", "Hallo Welt\n") - keys = "hallo" + EX + "\nAnd more" - wanted = "Hallo Welt\n\nAnd more" - - -# End: Simple Expands #}}} -# TabStop Tests {{{# -class TabStopSimpleReplace_ExceptCorrectResult(_VimTest): - snippets = ("hallo", "hallo ${0:End} ${1:Beginning}") - keys = "hallo" + EX + "na" + JF + "Du Nase" - wanted = "hallo Du Nase na" -class TabStopSimpleReplaceReversed_ExceptCorrectResult(_VimTest): - snippets = ("hallo", "hallo ${1:End} ${0:Beginning}") - keys = "hallo" + EX + "na" + JF + "Du Nase" - wanted = "hallo na Du Nase" -class TabStopSimpleReplaceSurrounded_ExceptCorrectResult(_VimTest): - snippets = ("hallo", "hallo ${0:End} a small feed") - keys = "hallo" + EX + "Nase" - wanted = "hallo Nase a small feed" -class TabStopSimpleReplaceSurrounded1_ExceptCorrectResult(_VimTest): - snippets = ("hallo", "hallo $0 a small feed") - keys = "hallo" + EX + "Nase" - wanted = "hallo Nase a small feed" -class TabStop_Exit_ExceptCorrectResult(_VimTest): - snippets = ("echo", "$0 run") - keys = "echo" + EX + "test" - wanted = "test run" - -class TabStopNoReplace_ExceptCorrectResult(_VimTest): - snippets = ("echo", "echo ${1:Hallo}") - keys = "echo" + EX - wanted = "echo Hallo" - -class TabStop_EscapingCharsBackticks(_VimTest): - snippets = ("test", r"snip \` literal") - keys = "test" + EX - wanted = "snip ` literal" -class TabStop_EscapingCharsDollars(_VimTest): - snippets = ("test", r"snip \$0 $$0 end") - keys = "test" + EX + "hi" - wanted = "snip $0 $hi end" -class TabStop_EscapingCharsDollars1(_VimTest): - snippets = ("test", r"a\${1:literal}") - keys = "test" + EX - wanted = "a${1:literal}" -class TabStop_EscapingCharsDollars_BeginningOfLine(_VimTest): - snippets = ("test", "\n\\${1:literal}") - keys = "test" + EX - wanted = "\n${1:literal}" -class TabStop_EscapingCharsDollars_BeginningOfDefinitionText(_VimTest): - snippets = ("test", "\\${1:literal}") - keys = "test" + EX - wanted = "${1:literal}" -class TabStop_EscapingChars_Backslash(_VimTest): - snippets = ("test", r"This \ is a backslash!") - keys = "test" + EX - wanted = "This \\ is a backslash!" -class TabStop_EscapingChars_Backslash2(_VimTest): - snippets = ("test", r"This is a backslash \\ done") - keys = "test" + EX - wanted = r"This is a backslash \ done" -class TabStop_EscapingChars_Backslash3(_VimTest): - snippets = ("test", r"These are two backslashes \\\\ done") - keys = "test" + EX - wanted = r"These are two backslashes \\ done" -class TabStop_EscapingChars_Backslash4(_VimTest): - # Test for bug 746446 - snippets = ("test", r"\\$1{$2}") - keys = "test" + EX + "hello" + JF + "world" - wanted = r"\hello{world}" -class TabStop_EscapingChars_RealLife(_VimTest): - snippets = ("test", r"usage: \`basename \$0\` ${1:args}") - keys = "test" + EX + "[ -u -v -d ]" - wanted = "usage: `basename $0` [ -u -v -d ]" - -class TabStopEscapingWhenSelected_ECR(_VimTest): - snippets = ("test", "snip ${1:default}") - keys = "test" + EX + ESC + "0ihi" - wanted = "hisnip default" -class TabStopEscapingWhenSelectedSingleCharTS_ECR(_VimTest): - snippets = ("test", "snip ${1:i}") - keys = "test" + EX + ESC + "0ihi" - wanted = "hisnip i" -class TabStopEscapingWhenSelectedNoCharTS_ECR(_VimTest): - snippets = ("test", "snip $1") - keys = "test" + EX + ESC + "0ihi" - wanted = "hisnip " - -class TabStopWithOneChar_ExceptCorrectResult(_VimTest): - snippets = ("hallo", "nothing ${1:i} hups") - keys = "hallo" + EX + "ship" - wanted = "nothing ship hups" - -class TabStopTestJumping_ExceptCorrectResult(_VimTest): - snippets = ("hallo", "hallo ${2:End} mitte ${1:Beginning}") - keys = "hallo" + EX + JF + "Test" + JF + "Hi" - wanted = "hallo Test mitte BeginningHi" -class TabStopTestJumping2_ExceptCorrectResult(_VimTest): - snippets = ("hallo", "hallo $2 $1") - keys = "hallo" + EX + JF + "Test" + JF + "Hi" - wanted = "hallo Test Hi" -class TabStopTestJumpingRLExampleWithZeroTab_ExceptCorrectResult(_VimTest): - snippets = ("test", "each_byte { |${1:byte}| $0 }") - keys = "test" + EX + JF + "Blah" - wanted = "each_byte { |byte| Blah }" - -class TabStopTestJumpingDontJumpToEndIfThereIsTabZero_ExceptCorrectResult(_VimTest): - snippets = ("hallo", "hallo $0 $1") - keys = "hallo" + EX + "Test" + JF + "Hi" + JF + JF + "du" - wanted = "hallo Hi" + 2*JF + "du Test" - -class TabStopTestBackwardJumping_ExceptCorrectResult(_VimTest): - snippets = ("hallo", "hallo ${2:End} mitte${1:Beginning}") - keys = "hallo" + EX + "Somelengthy Text" + JF + "Hi" + JB + \ - "Lets replace it again" + JF + "Blah" + JF + JB*2 + JF - wanted = "hallo Blah mitteLets replace it again" + JB*2 + JF -class TabStopTestBackwardJumping2_ExceptCorrectResult(_VimTest): - snippets = ("hallo", "hallo $2 $1") - keys = "hallo" + EX + "Somelengthy Text" + JF + "Hi" + JB + \ - "Lets replace it again" + JF + "Blah" + JF + JB*2 + JF - wanted = "hallo Blah Lets replace it again" + JB*2 + JF - -class TabStopTestMultilineExpand_ExceptCorrectResult(_VimTest): - snippets = ("hallo", "hallo $0\nnice $1 work\n$3 $2\nSeem to work") - keys ="test hallo World" + ESC + "02f i" + EX + "world" + JF + "try" + \ - JF + "test" + JF + "one more" + JF - wanted = "test hallo one more" + JF + "\nnice world work\n" \ - "test try\nSeem to work World" - -class TabStop_TSInDefaultTextRLExample_OverwriteNone_ECR(_VimTest): - snippets = ("test", """<div${1: id="${2:some_id}"}>\n $0\n</div>""") - keys = "test" + EX - wanted = """<div id="some_id">\n \n</div>""" -class TabStop_TSInDefaultTextRLExample_OverwriteFirst_NoJumpBack(_VimTest): - snippets = ("test", """<div${1: id="${2:some_id}"}>\n $0\n</div>""") - keys = "test" + EX + " blah" + JF + "Hallo" - wanted = """<div blah>\n Hallo\n</div>""" -class TabStop_TSInDefaultTextRLExample_DeleteFirst(_VimTest): - snippets = ("test", """<div${1: id="${2:some_id}"}>\n $0\n</div>""") - keys = "test" + EX + BS + JF + "Hallo" - wanted = """<div>\n Hallo\n</div>""" -class TabStop_TSInDefaultTextRLExample_OverwriteFirstJumpBack(_VimTest): - snippets = ("test", """<div${1: id="${2:some_id}"}>\n $3 $0\n</div>""") - keys = "test" + EX + "Hi" + JF + "Hallo" + JB + "SomethingElse" + JF + \ - "Nupl" + JF + "Nox" - wanted = """<divSomethingElse>\n Nupl Nox\n</div>""" -class TabStop_TSInDefaultTextRLExample_OverwriteSecond(_VimTest): - snippets = ("test", """<div${1: id="${2:some_id}"}>\n $0\n</div>""") - keys = "test" + EX + JF + "no" + JF + "End" - wanted = """<div id="no">\n End\n</div>""" -class TabStop_TSInDefaultTextRLExample_OverwriteSecondTabBack(_VimTest): - snippets = ("test", """<div${1: id="${2:some_id}"}>\n $3 $0\n</div>""") - keys = "test" + EX + JF + "no" + JF + "End" + JB + "yes" + JF + "Begin" \ - + JF + "Hi" - wanted = """<div id="yes">\n Begin Hi\n</div>""" -class TabStop_TSInDefaultTextRLExample_OverwriteSecondTabBackTwice(_VimTest): - snippets = ("test", """<div${1: id="${2:some_id}"}>\n $3 $0\n</div>""") - keys = "test" + EX + JF + "no" + JF + "End" + JB + "yes" + JB + \ - " allaway" + JF + "Third" + JF + "Last" - wanted = """<div allaway>\n Third Last\n</div>""" - -class TabStop_TSInDefaultText_ZeroLengthNested_OverwriteSecond(_VimTest): - snippets = ("test", """h${1:a$2b}l""") - keys = "test" + EX + JF + "ups" + JF + "End" - wanted = """haupsblEnd""" -class TabStop_TSInDefaultText_ZeroLengthNested_OverwriteFirst(_VimTest): - snippets = ("test", """h${1:a$2b}l""") - keys = "test" + EX + "ups" + JF + "End" - wanted = """hupslEnd""" -class TabStop_TSInDefaultText_ZeroLengthNested_OverwriteSecondJumpBackOverwrite(_VimTest): - snippets = ("test", """h${1:a$2b}l""") - keys = "test" + EX + JF + "longertext" + JB + "overwrite" + JF + "End" - wanted = """hoverwritelEnd""" -class TabStop_TSInDefaultText_ZeroLengthNested_OverwriteSecondJumpBackAndForward0(_VimTest): - snippets = ("test", """h${1:a$2b}l""") - keys = "test" + EX + JF + "longertext" + JB + JF + "overwrite" + JF + "End" - wanted = """haoverwriteblEnd""" -class TabStop_TSInDefaultText_ZeroLengthNested_OverwriteSecondJumpBackAndForward1(_VimTest): - snippets = ("test", """h${1:a$2b}l""") - keys = "test" + EX + JF + "longertext" + JB + JF + JF + "End" - wanted = """halongertextblEnd""" - -class TabStop_TSInDefaultNested_OverwriteOneJumpBackToOther(_VimTest): - snippets = ("test", "hi ${1:this ${2:second ${3:third}}} $4") - keys = "test" + EX + JF + "Hallo" + JF + "Ende" - wanted = "hi this Hallo Ende" -class TabStop_TSInDefaultNested_OverwriteOneJumpToThird(_VimTest): - snippets = ("test", "hi ${1:this ${2:second ${3:third}}} $4") - keys = "test" + EX + JF + JF + "Hallo" + JF + "Ende" - wanted = "hi this second Hallo Ende" -class TabStop_TSInDefaultNested_OverwriteOneJumpAround(_VimTest): - snippets = ("test", "hi ${1:this ${2:second ${3:third}}} $4") - keys = "test" + EX + JF + JF + "Hallo" + JB+JB + "Blah" + JF + "Ende" - wanted = "hi Blah Ende" - -class TabStop_TSInDefault_MirrorsOutside_DoNothing(_VimTest): - snippets = ("test", "hi ${1:this ${2:second}} $2") - keys = "test" + EX - wanted = "hi this second second" -class TabStop_TSInDefault_MirrorsOutside_OverwriteSecond(_VimTest): - snippets = ("test", "hi ${1:this ${2:second}} $2") - keys = "test" + EX + JF + "Hallo" - wanted = "hi this Hallo Hallo" -class TabStop_TSInDefault_MirrorsOutside_Overwrite0(_VimTest): - snippets = ("test", "hi ${1:this ${2:second}} $2") - keys = "test" + EX + "Hallo" - wanted = "hi Hallo " -class TabStop_TSInDefault_MirrorsOutside_Overwrite1(_VimTest): - snippets = ("test", "$1: ${1:'${2:second}'} $2") - keys = "test" + EX + "Hallo" - wanted = "Hallo: Hallo " -class TabStop_TSInDefault_MirrorsOutside_OverwriteSecond1(_VimTest): - snippets = ("test", "$1: ${1:'${2:second}'} $2") - keys = "test" + EX + JF + "Hallo" - wanted = "'Hallo': 'Hallo' Hallo" -class TabStop_TSInDefault_MirrorsOutside_OverwriteFirstSwitchNumbers(_VimTest): - snippets = ("test", "$2: ${2:'${1:second}'} $1") - keys = "test" + EX + "Hallo" - wanted = "'Hallo': 'Hallo' Hallo" -class TabStop_TSInDefault_MirrorsOutside_OverwriteFirst_RLExample(_VimTest): - snippets = ("test", """`!p snip.rv = t[1].split('/')[-1].lower().strip("'")` = require(${1:'${2:sys}'})""") - keys = "test" + EX + "WORLD" + JF + "End" - wanted = "world = require(WORLD)End" -class TabStop_TSInDefault_MirrorsOutside_OverwriteSecond_RLExample(_VimTest): - snippets = ("test", """`!p snip.rv = t[1].split('/')[-1].lower().strip("'")` = require(${1:'${2:sys}'})""") - keys = "test" + EX + JF + "WORLD" + JF + "End" - wanted = "world = require('WORLD')End" - -class TabStop_Multiline_Leave(_VimTest): - snippets = ("test", "hi ${1:first line\nsecond line} world" ) - keys = "test" + EX - wanted = "hi first line\nsecond line world" -class TabStop_Multiline_Overwrite(_VimTest): - snippets = ("test", "hi ${1:first line\nsecond line} world" ) - keys = "test" + EX + "Nothing" - wanted = "hi Nothing world" -class TabStop_Multiline_MirrorInFront_Leave(_VimTest): - snippets = ("test", "hi $1 ${1:first line\nsecond line} world" ) - keys = "test" + EX - wanted = "hi first line\nsecond line first line\nsecond line world" -class TabStop_Multiline_MirrorInFront_Overwrite(_VimTest): - snippets = ("test", "hi $1 ${1:first line\nsecond line} world" ) - keys = "test" + EX + "Nothing" - wanted = "hi Nothing Nothing world" -class TabStop_Multiline_DelFirstOverwriteSecond_Overwrite(_VimTest): - snippets = ("test", "hi $1 $2 ${1:first line\nsecond line} ${2:Hi} world" ) - keys = "test" + EX + BS + JF + "Nothing" - wanted = "hi Nothing Nothing world" - -class TabStopNavigatingInInsertModeSimple_ExceptCorrectResult(_VimTest): - snippets = ("hallo", "Hallo ${1:WELT} ups") - keys = "hallo" + EX + "haselnut" + 2*ARR_L + "hips" + JF + "end" - wanted = "Hallo haselnhipsut upsend" -# End: TabStop Tests #}}} -# ShellCode Interpolation {{{# -class TabStop_Shell_SimpleExample(_VimTest): - skip_if = lambda self: running_on_windows() - snippets = ("test", "hi `echo hallo` you!") - keys = "test" + EX + "and more" - wanted = "hi hallo you!and more" -class TabStop_Shell_WithUmlauts(_VimTest): - skip_if = lambda self: running_on_windows() - snippets = ("test", "hi `echo höüäh` you!") - keys = "test" + EX + "and more" - wanted = "hi höüäh you!and more" -class TabStop_Shell_TextInNextLine(_VimTest): - skip_if = lambda self: running_on_windows() - snippets = ("test", "hi `echo hallo`\nWeiter") - keys = "test" + EX + "and more" - wanted = "hi hallo\nWeiterand more" -class TabStop_Shell_InDefValue_Leave(_VimTest): - skip_if = lambda self: running_on_windows() - snippets = ("test", "Hallo ${1:now `echo fromecho`} end") - keys = "test" + EX + JF + "and more" - wanted = "Hallo now fromecho endand more" -class TabStop_Shell_InDefValue_Overwrite(_VimTest): - skip_if = lambda self: running_on_windows() - snippets = ("test", "Hallo ${1:now `echo fromecho`} end") - keys = "test" + EX + "overwrite" + JF + "and more" - wanted = "Hallo overwrite endand more" -class TabStop_Shell_TestEscapedChars_Overwrite(_VimTest): - skip_if = lambda self: running_on_windows() - snippets = ("test", r"""`echo \`echo "\\$hi"\``""") - keys = "test" + EX - wanted = "$hi" -class TabStop_Shell_TestEscapedCharsAndShellVars_Overwrite(_VimTest): - skip_if = lambda self: running_on_windows() - snippets = ("test", r"""`hi="blah"; echo \`echo "$hi"\``""") - keys = "test" + EX - wanted = "blah" - -class TabStop_Shell_ShebangPython(_VimTest): - skip_if = lambda self: running_on_windows() - snippets = ("test", """Hallo ${1:now `#!/usr/bin/env python -print "Hallo Welt" -`} end""") - keys = "test" + EX + JF + "and more" - wanted = "Hallo now Hallo Welt endand more" -# End: ShellCode Interpolation #}}} -# VimScript Interpolation {{{# -class TabStop_VimScriptInterpolation_SimpleExample(_VimTest): - snippets = ("test", """hi `!v indent(".")` End""") - keys = " test" + EX - wanted = " hi 4 End" -# End: VimScript Interpolation #}}} -# PythonCode Interpolation {{{# -# Deprecated Implementation {{{# -class PythonCodeOld_SimpleExample(_VimTest): - snippets = ("test", """hi `!p res = "Hallo"` End""") - keys = "test" + EX - wanted = "hi Hallo End" -class PythonCodeOld_ReferencePlaceholderAfter(_VimTest): - snippets = ("test", """${1:hi} `!p res = t[1]+".blah"` End""") - keys = "test" + EX + "ho" - wanted = "ho ho.blah End" -class PythonCodeOld_ReferencePlaceholderBefore(_VimTest): - snippets = ("test", """`!p res = len(t[1])*"#"`\n${1:some text}""") - keys = "test" + EX + "Hallo Welt" - wanted = "##########\nHallo Welt" -class PythonCodeOld_TransformedBeforeMultiLine(_VimTest): - snippets = ("test", """${1/.+/egal/m} ${1:`!p -res = "Hallo"`} End""") - keys = "test" + EX - wanted = "egal Hallo End" -class PythonCodeOld_IndentedMultiline(_VimTest): - snippets = ("test", """start `!p a = 1 -b = 2 -if b > a: - res = "b isbigger a" -else: - res = "a isbigger b"` end""") - keys = " test" + EX - wanted = " start b isbigger a end" -# End: Deprecated Implementation #}}} -# New Implementation {{{# -class PythonCode_UseNewOverOld(_VimTest): - snippets = ("test", """hi `!p res = "Old" -snip.rv = "New"` End""") - keys = "test" + EX - wanted = "hi New End" - -class PythonCode_SimpleExample(_VimTest): - snippets = ("test", """hi `!p snip.rv = "Hallo"` End""") - keys = "test" + EX - wanted = "hi Hallo End" - -class PythonCode_SimpleExample_ReturnValueIsEmptyString(_VimTest): - snippets = ("test", """hi`!p snip.rv = ""`End""") - keys = "test" + EX - wanted = "hiEnd" - -class PythonCode_ReferencePlaceholder(_VimTest): - snippets = ("test", """${1:hi} `!p snip.rv = t[1]+".blah"` End""") - keys = "test" + EX + "ho" - wanted = "ho ho.blah End" - -class PythonCode_ReferencePlaceholderBefore(_VimTest): - snippets = ("test", """`!p snip.rv = len(t[1])*"#"`\n${1:some text}""") - keys = "test" + EX + "Hallo Welt" - wanted = "##########\nHallo Welt" -class PythonCode_TransformedBeforeMultiLine(_VimTest): - snippets = ("test", """${1/.+/egal/m} ${1:`!p -snip.rv = "Hallo"`} End""") - keys = "test" + EX - wanted = "egal Hallo End" -class PythonCode_MultilineIndented(_VimTest): - snippets = ("test", """start `!p a = 1 -b = 2 -if b > a: - snip.rv = "b isbigger a" -else: - snip.rv = "a isbigger b"` end""") - keys = " test" + EX - wanted = " start b isbigger a end" - -class PythonCode_SimpleAppend(_VimTest): - snippets = ("test", """hi `!p snip.rv = "Hallo1" -snip += "Hallo2"` End""") - keys = "test" + EX - wanted = "hi Hallo1\nHallo2 End" - -class PythonCode_MultiAppend(_VimTest): - snippets = ("test", """hi `!p snip.rv = "Hallo1" -snip += "Hallo2" -snip += "Hallo3"` End""") - keys = "test" + EX - wanted = "hi Hallo1\nHallo2\nHallo3 End" - -class PythonCode_MultiAppendSimpleIndent(_VimTest): - snippets = ("test", """hi -`!p snip.rv="Hallo1" -snip += "Hallo2" -snip += "Hallo3"` -End""") - keys = """ - test""" + EX - wanted = """ - hi - Hallo1 - Hallo2 - Hallo3 - End""" - -class PythonCode_SimpleMkline(_VimTest): - snippets = ("test", r"""hi -`!p snip.rv="Hallo1\n" -snip.rv += snip.mkline("Hallo2") + "\n" -snip.rv += snip.mkline("Hallo3")` -End""") - keys = """ - test""" + EX - wanted = """ - hi - Hallo1 - Hallo2 - Hallo3 - End""" - -class PythonCode_MultiAppendShift(_VimTest): - snippets = ("test", r"""hi -`!p snip.rv="i1" -snip += "i1" -snip >> 1 -snip += "i2" -snip << 2 -snip += "i0" -snip >> 3 -snip += "i3"` -End""") - keys = """ - test""" + EX - wanted = """ - hi - i1 - i1 - i2 -i0 - i3 - End""" - -class PythonCode_MultiAppendShiftMethods(_VimTest): - snippets = ("test", r"""hi -`!p snip.rv="i1\n" -snip.rv += snip.mkline("i1\n") -snip.shift(1) -snip.rv += snip.mkline("i2\n") -snip.unshift(2) -snip.rv += snip.mkline("i0\n") -snip.shift(3) -snip.rv += snip.mkline("i3")` -End""") - keys = """ - test""" + EX - wanted = """ - hi - i1 - i1 - i2 -i0 - i3 - End""" - - -class PythonCode_ResetIndent(_VimTest): - snippets = ("test", r"""hi -`!p snip.rv="i1" -snip >> 1 -snip += "i2" -snip.reset_indent() -snip += "i1" -snip << 1 -snip += "i0" -snip.reset_indent() -snip += "i1"` -End""") - keys = """ - test""" + EX - wanted = """ - hi - i1 - i2 - i1 -i0 - i1 - End""" - -class PythonCode_IndentEtSw(_VimTest): - def _options_on(self): - self.send(":set sw=3\n") - self.send(":set expandtab\n") - def _options_off(self): - self.send(":set sw=8\n") - self.send(":set noexpandtab\n") - snippets = ("test", r"""hi -`!p snip.rv = "i1" -snip >> 1 -snip += "i2" -snip << 2 -snip += "i0" -snip >> 1 -snip += "i1" -` -End""") - keys = """ test""" + EX - wanted = """ hi - i1 - i2 -i0 - i1 - End""" - -class PythonCode_IndentEtSwOffset(_VimTest): - def _options_on(self): - self.send(":set sw=3\n") - self.send(":set expandtab\n") - def _options_off(self): - self.send(":set sw=8\n") - self.send(":set noexpandtab\n") - snippets = ("test", r"""hi -`!p snip.rv = "i1" -snip >> 1 -snip += "i2" -snip << 2 -snip += "i0" -snip >> 1 -snip += "i1" -` -End""") - keys = """ test""" + EX - wanted = """ hi - i1 - i2 - i0 - i1 - End""" - -class PythonCode_IndentNoetSwTs(_VimTest): - def _options_on(self): - self.send(":set sw=3\n") - self.send(":set ts=4\n") - def _options_off(self): - self.send(":set sw=8\n") - self.send(":set ts=8\n") - snippets = ("test", r"""hi -`!p snip.rv = "i1" -snip >> 1 -snip += "i2" -snip << 2 -snip += "i0" -snip >> 1 -snip += "i1" -` -End""") - keys = """ test""" + EX - wanted = """ hi - i1 -\t i2 -i0 - i1 - End""" - -# Test using 'opt' -class PythonCode_OptExists(_VimTest): - def _options_on(self): - self.send(':let g:UStest="yes"\n') - def _options_off(self): - self.send(":unlet g:UStest\n") - snippets = ("test", r"""hi `!p snip.rv = snip.opt("g:UStest") or "no"` End""") - keys = """test""" + EX - wanted = """hi yes End""" - -class PythonCode_OptNoExists(_VimTest): - snippets = ("test", r"""hi `!p snip.rv = snip.opt("g:UStest") or "no"` End""") - keys = """test""" + EX - wanted = """hi no End""" - -class PythonCode_IndentProblem(_VimTest): - # A test case which is likely related to bug 719649 - snippets = ("test", r"""hi `!p -snip.rv = "World" -` End""") - keys = " " * 8 + "test" + EX # < 8 works. - wanted = """ hi World End""" - -class PythonCode_TrickyReferences(_VimTest): - snippets = ("test", r"""${2:${1/.+/egal/}} ${1:$3} ${3:`!p snip.rv = "hi"`}""") - keys = "ups test" + EX - wanted = "ups egal hi hi" -# locals -class PythonCode_Locals(_VimTest): - snippets = ("test", r"""hi `!p a = "test" -snip.rv = "nothing"` `!p snip.rv = a -` End""") - keys = """test""" + EX - wanted = """hi nothing test End""" - -class PythonCode_LongerTextThanSource_Chars(_VimTest): - snippets = ("test", r"""hi`!p snip.rv = "a" * 100`end""") - keys = """test""" + EX + "ups" - wanted = "hi" + 100*"a" + "endups" - -class PythonCode_LongerTextThanSource_MultiLine(_VimTest): - snippets = ("test", r"""hi`!p snip.rv = "a" * 100 + '\n'*100 + "a"*100`end""") - keys = """test""" + EX + "ups" - wanted = "hi" + 100*"a" + 100*"\n" + 100*"a" + "endups" - -class PythonCode_AccessKilledTabstop_OverwriteSecond(_VimTest): - snippets = ("test", r"`!p snip.rv = t[2].upper()`${1:h${2:welt}o}`!p snip.rv = t[2].upper()`") - keys = "test" + EX + JF + "okay" - wanted = "OKAYhokayoOKAY" -class PythonCode_AccessKilledTabstop_OverwriteFirst(_VimTest): - snippets = ("test", r"`!p snip.rv = t[2].upper()`${1:h${2:welt}o}`!p snip.rv = t[2].upper()`") - keys = "test" + EX + "aaa" - wanted = "aaa" - -class PythonVisual_NoVisualSelection_Ignore(_VimTest): - snippets = ("test", "h`!p snip.rv = snip.v.mode + snip.v.text`b") - keys = "test" + EX + "abc" - wanted = "hbabc" -class PythonVisual_SelectOneWord(_VimTest): - snippets = ("test", "h`!p snip.rv = snip.v.mode + snip.v.text`b") - keys = "blablub" + ESC + "0v6l" + EX + "test" + EX - wanted = "hvblablubb" -class PythonVisual_LineSelect_Simple(_VimTest): - snippets = ("test", "h`!p snip.rv = snip.v.mode + snip.v.text`b") - keys = "hello\nnice\nworld" + ESC + "Vkk" + EX + "test" + EX - wanted = "hVhello\nnice\nworld\nb" - -# Tests for https://bugs.launchpad.net/bugs/1259349 -class Python_WeirdScoping_Error(_VimTest): - snippets = ("test", "h`!p import re; snip.rv = '%i' % len([re.search for i in 'aiiia'])`b") - keys = "test" + EX - wanted = "h5b" -# End: New Implementation #}}} -# End: PythonCode Interpolation #}}} -# Mirrors {{{# -class TextTabStopTextAfterTab_ExceptCorrectResult(_VimTest): - snippets = ("test", "$1 Hinten\n$1") - keys = "test" + EX + "hallo" - wanted = "hallo Hinten\nhallo" -class TextTabStopTextBeforeTab_ExceptCorrectResult(_VimTest): - snippets = ("test", "Vorne $1\n$1") - keys = "test" + EX + "hallo" - wanted = "Vorne hallo\nhallo" -class TextTabStopTextSurroundedTab_ExceptCorrectResult(_VimTest): - snippets = ("test", "Vorne $1 Hinten\n$1") - keys = "test" + EX + "hallo test" - wanted = "Vorne hallo test Hinten\nhallo test" - -class TextTabStopTextBeforeMirror_ExceptCorrectResult(_VimTest): - snippets = ("test", "$1\nVorne $1") - keys = "test" + EX + "hallo" - wanted = "hallo\nVorne hallo" -class TextTabStopAfterMirror_ExceptCorrectResult(_VimTest): - snippets = ("test", "$1\n$1 Hinten") - keys = "test" + EX + "hallo" - wanted = "hallo\nhallo Hinten" -class TextTabStopSurroundMirror_ExceptCorrectResult(_VimTest): - snippets = ("test", "$1\nVorne $1 Hinten") - keys = "test" + EX + "hallo welt" - wanted = "hallo welt\nVorne hallo welt Hinten" -class TextTabStopAllSurrounded_ExceptCorrectResult(_VimTest): - snippets = ("test", "ObenVorne $1 ObenHinten\nVorne $1 Hinten") - keys = "test" + EX + "hallo welt" - wanted = "ObenVorne hallo welt ObenHinten\nVorne hallo welt Hinten" - -class MirrorBeforeTabstopLeave_ExceptCorrectResult(_VimTest): - snippets = ("test", "$1 ${1:this is it} $1") - keys = "test" + EX - wanted = "this is it this is it this is it" -class MirrorBeforeTabstopOverwrite_ExceptCorrectResult(_VimTest): - snippets = ("test", "$1 ${1:this is it} $1") - keys = "test" + EX + "a" - wanted = "a a a" - -class TextTabStopSimpleMirrorMultiline_ExceptCorrectResult(_VimTest): - snippets = ("test", "$1\n$1") - keys = "test" + EX + "hallo" - wanted = "hallo\nhallo" -class SimpleMirrorMultilineMany_ExceptCorrectResult(_VimTest): - snippets = ("test", " $1\n$1\na$1b\n$1\ntest $1 mich") - keys = "test" + EX + "hallo" - wanted = " hallo\nhallo\nahallob\nhallo\ntest hallo mich" -class MultilineTabStopSimpleMirrorMultiline_ExceptCorrectResult(_VimTest): - snippets = ("test", "$1\n\n$1\n\n$1") - keys = "test" + EX + "hallo Du\nHi" - wanted = "hallo Du\nHi\n\nhallo Du\nHi\n\nhallo Du\nHi" -class MultilineTabStopSimpleMirrorMultiline1_ExceptCorrectResult(_VimTest): - snippets = ("test", "$1\n$1\n$1") - keys = "test" + EX + "hallo Du\nHi" - wanted = "hallo Du\nHi\nhallo Du\nHi\nhallo Du\nHi" -class MultilineTabStopSimpleMirrorDeleteInLine_ExceptCorrectResult(_VimTest): - snippets = ("test", "$1\n$1\n$1") - keys = "test" + EX + "hallo Du\nHi\b\bAch Blah" - wanted = "hallo Du\nAch Blah\nhallo Du\nAch Blah\nhallo Du\nAch Blah" -class TextTabStopSimpleMirrorMultilineMirrorInFront_ECR(_VimTest): - snippets = ("test", "$1\n${1:sometext}") - keys = "test" + EX + "hallo\nagain" - wanted = "hallo\nagain\nhallo\nagain" - -class SimpleMirrorDelete_ExceptCorrectResult(_VimTest): - snippets = ("test", "$1\n$1") - keys = "test" + EX + "hallo\b\b" - wanted = "hal\nhal" - -class SimpleMirrorSameLine_ExceptCorrectResult(_VimTest): - snippets = ("test", "$1 $1") - keys = "test" + EX + "hallo" - wanted = "hallo hallo" -class SimpleMirrorSameLine_InText_ExceptCorrectResult(_VimTest): - snippets = ("test", "$1 $1") - keys = "ups test blah" + ESC + "02f i" + EX + "hallo" - wanted = "ups hallo hallo blah" -class SimpleMirrorSameLineBeforeTabDefVal_ECR(_VimTest): - snippets = ("test", "$1 ${1:replace me}") - keys = "test" + EX + "hallo foo" - wanted = "hallo foo hallo foo" -class SimpleMirrorSameLineBeforeTabDefVal_DelB4Typing_ECR(_VimTest): - snippets = ("test", "$1 ${1:replace me}") - keys = "test" + EX + BS + "hallo foo" - wanted = "hallo foo hallo foo" -class SimpleMirrorSameLineMany_ExceptCorrectResult(_VimTest): - snippets = ("test", "$1 $1 $1 $1") - keys = "test" + EX + "hallo du" - wanted = "hallo du hallo du hallo du hallo du" -class SimpleMirrorSameLineManyMultiline_ExceptCorrectResult(_VimTest): - snippets = ("test", "$1 $1 $1 $1") - keys = "test" + EX + "hallo du\nwie gehts" - wanted = "hallo du\nwie gehts hallo du\nwie gehts hallo du\nwie gehts" \ - " hallo du\nwie gehts" -class SimpleMirrorDeleteSomeEnterSome_ExceptCorrectResult(_VimTest): - snippets = ("test", "$1\n$1") - keys = "test" + EX + "hallo\b\bhups" - wanted = "halhups\nhalhups" - -class SimpleTabstopWithDefaultSimpelType_ExceptCorrectResult(_VimTest): - snippets = ("test", "ha ${1:defa}\n$1") - keys = "test" + EX + "world" - wanted = "ha world\nworld" -class SimpleTabstopWithDefaultComplexType_ExceptCorrectResult(_VimTest): - snippets = ("test", "ha ${1:default value} $1\nanother: $1 mirror") - keys = "test" + EX + "world" - wanted = "ha world world\nanother: world mirror" -class SimpleTabstopWithDefaultSimpelKeep_ExceptCorrectResult(_VimTest): - snippets = ("test", "ha ${1:defa}\n$1") - keys = "test" + EX - wanted = "ha defa\ndefa" -class SimpleTabstopWithDefaultComplexKeep_ExceptCorrectResult(_VimTest): - snippets = ("test", "ha ${1:default value} $1\nanother: $1 mirror") - keys = "test" + EX - wanted = "ha default value default value\nanother: default value mirror" - -class TabstopWithMirrorManyFromAll_ExceptCorrectResult(_VimTest): - snippets = ("test", "ha $5 ${1:blub} $4 $0 ${2:$1.h} $1 $3 ${4:More}") - keys = "test" + EX + "hi" + JF + "hu" + JF + "hub" + JF + "hulla" + \ - JF + "blah" + JF + "end" - wanted = "ha blah hi hulla end hu hi hub hulla" -class TabstopWithMirrorInDefaultNoType_ExceptCorrectResult(_VimTest): - snippets = ("test", "ha ${1:blub} ${2:$1.h}") - keys = "test" + EX - wanted = "ha blub blub.h" -class TabstopWithMirrorInDefaultNoType1_ExceptCorrectResult(_VimTest): - snippets = ("test", "ha ${1:blub} ${2:$1}") - keys = "test" + EX - wanted = "ha blub blub" -class TabstopWithMirrorInDefaultTwiceAndExtra_ExceptCorrectResult(_VimTest): - snippets = ("test", "ha $1 ${2:$1.h $1.c}\ntest $1") - keys = "test" + EX + "stdin" - wanted = "ha stdin stdin.h stdin.c\ntest stdin" -class TabstopWithMirrorInDefaultMultipleLeave_ExceptCorrectResult(_VimTest): - snippets = ("test", "ha $1 ${2:snip} ${3:$1.h $2}") - keys = "test" + EX + "stdin" - wanted = "ha stdin snip stdin.h snip" -class TabstopWithMirrorInDefaultMultipleOverwrite_ExceptCorrectResult(_VimTest): - snippets = ("test", "ha $1 ${2:snip} ${3:$1.h $2}") - keys = "test" + EX + "stdin" + JF + "do snap" - wanted = "ha stdin do snap stdin.h do snap" -class TabstopWithMirrorInDefaultOverwrite_ExceptCorrectResult(_VimTest): - snippets = ("test", "ha $1 ${2:$1.h}") - keys = "test" + EX + "stdin" + JF + "overwritten" - wanted = "ha stdin overwritten" -class TabstopWithMirrorInDefaultOverwrite1_ExceptCorrectResult(_VimTest): - snippets = ("test", "ha $1 ${2:$1}") - keys = "test" + EX + "stdin" + JF + "overwritten" - wanted = "ha stdin overwritten" -class TabstopWithMirrorInDefaultNoOverwrite1_ExceptCorrectResult(_VimTest): - snippets = ("test", "ha $1 ${2:$1}") - keys = "test" + EX + "stdin" + JF + JF + "end" - wanted = "ha stdin stdinend" - -class MirrorRealLifeExample_ExceptCorrectResult(_VimTest): - snippets = ( - ("for", "for(size_t ${2:i} = 0; $2 < ${1:count}; ${3:++$2})" \ - "\n{\n\t${0:/* code */}\n}"), - ) - keys ="for" + EX + "100" + JF + "avar\b\b\b\ba_variable" + JF + \ - "a_variable *= 2" + JF + "// do nothing" - wanted = """for(size_t a_variable = 0; a_variable < 100; a_variable *= 2) -{ -\t// do nothing -}""" - -class Mirror_TestKill_InsertBefore_NoKill(_VimTest): - snippets = "test", "$1 $1_" - keys = "hallo test" + EX + "auch" + ESC + "wihi" + ESC + "bb" + "ino" + JF + "end" - wanted = "hallo noauch hinoauch_end" -class Mirror_TestKill_InsertAfter_NoKill(_VimTest): - snippets = "test", "$1 $1_" - keys = "hallo test" + EX + "auch" + ESC + "eiab" + ESC + "bb" + "ino" + JF + "end" - wanted = "hallo noauch noauchab_end" -class Mirror_TestKill_InsertBeginning_Kill(_VimTest): - snippets = "test", "$1 $1_" - keys = "hallo test" + EX + "auch" + ESC + "wahi" + ESC + "bb" + "ino" + JF + "end" - wanted = "hallo noauch ahiuch_end" -class Mirror_TestKill_InsertEnd_Kill(_VimTest): - snippets = "test", "$1 $1_" - keys = "hallo test" + EX + "auch" + ESC + "ehihi" + ESC + "bb" + "ino" + JF + "end" - wanted = "hallo noauch auchih_end" -class Mirror_TestKillTabstop_Kill(_VimTest): - snippets = "test", "welt${1:welt${2:welt}welt} $2" - keys = "hallo test" + EX + "elt" - wanted = "hallo weltelt " - -# End: Mirrors #}}} -# Transformations {{{# -class Transformation_SimpleCase_ExceptCorrectResult(_VimTest): - snippets = ("test", "$1 ${1/foo/batzl/}") - keys = "test" + EX + "hallo foo boy" - wanted = "hallo foo boy hallo batzl boy" -class Transformation_SimpleCaseNoTransform_ExceptCorrectResult(_VimTest): - snippets = ("test", "$1 ${1/foo/batzl/}") - keys = "test" + EX + "hallo" - wanted = "hallo hallo" -class Transformation_SimpleCaseTransformInFront_ExceptCorrectResult(_VimTest): - snippets = ("test", "${1/foo/batzl/} $1") - keys = "test" + EX + "hallo foo" - wanted = "hallo batzl hallo foo" -class Transformation_SimpleCaseTransformInFrontDefVal_ECR(_VimTest): - snippets = ("test", "${1/foo/batzl/} ${1:replace me}") - keys = "test" + EX + "hallo foo" - wanted = "hallo batzl hallo foo" -class Transformation_MultipleTransformations_ECR(_VimTest): - snippets = ("test", "${1:Some Text}${1/.+/\\U$0\E/}\n${1/.+/\L$0\E/}") - keys = "test" + EX + "SomE tExt " - wanted = "SomE tExt SOME TEXT \nsome text " -class Transformation_TabIsAtEndAndDeleted_ECR(_VimTest): - snippets = ("test", "${1/.+/is something/}${1:some}") - keys = "hallo test" + EX + "some\b\b\b\b\b" - wanted = "hallo " -class Transformation_TabIsAtEndAndDeleted1_ECR(_VimTest): - snippets = ("test", "${1/.+/is something/}${1:some}") - keys = "hallo test" + EX + "some\b\b\b\bmore" - wanted = "hallo is somethingmore" -class Transformation_TabIsAtEndNoTextLeave_ECR(_VimTest): - snippets = ("test", "${1/.+/is something/}${1}") - keys = "hallo test" + EX - wanted = "hallo " -class Transformation_TabIsAtEndNoTextType_ECR(_VimTest): - snippets = ("test", "${1/.+/is something/}${1}") - keys = "hallo test" + EX + "b" - wanted = "hallo is somethingb" -class Transformation_InsideTabLeaveAtDefault_ECR(_VimTest): - snippets = ("test", r"$1 ${2:${1/.+/(?0:defined $0)/}}") - keys = "test" + EX + "sometext" + JF - wanted = "sometext defined sometext" -class Transformation_InsideTabOvertype_ECR(_VimTest): - snippets = ("test", r"$1 ${2:${1/.+/(?0:defined $0)/}}") - keys = "test" + EX + "sometext" + JF + "overwrite" - wanted = "sometext overwrite" - - -class Transformation_Backreference_ExceptCorrectResult(_VimTest): - snippets = ("test", "$1 ${1/([ab])oo/$1ull/}") - keys = "test" + EX + "foo boo aoo" - wanted = "foo boo aoo foo bull aoo" -class Transformation_BackreferenceTwice_ExceptCorrectResult(_VimTest): - snippets = ("test", r"$1 ${1/(dead) (par[^ ]*)/this $2 is a bit $1/}") - keys = "test" + EX + "dead parrot" - wanted = "dead parrot this parrot is a bit dead" - -class Transformation_CleverTransformUpercaseChar_ExceptCorrectResult(_VimTest): - snippets = ("test", "$1 ${1/(.)/\\u$1/}") - keys = "test" + EX + "hallo" - wanted = "hallo Hallo" -class Transformation_CleverTransformLowercaseChar_ExceptCorrectResult(_VimTest): - snippets = ("test", "$1 ${1/(.*)/\l$1/}") - keys = "test" + EX + "Hallo" - wanted = "Hallo hallo" -class Transformation_CleverTransformLongUpper_ExceptCorrectResult(_VimTest): - snippets = ("test", "$1 ${1/(.*)/\\U$1\E/}") - keys = "test" + EX + "hallo" - wanted = "hallo HALLO" -class Transformation_CleverTransformLongLower_ExceptCorrectResult(_VimTest): - snippets = ("test", "$1 ${1/(.*)/\L$1\E/}") - keys = "test" + EX + "HALLO" - wanted = "HALLO hallo" - -class Transformation_SimpleCaseAsciiResult(_VimTest): - skip_if = lambda self: no_unidecode_available() - snippets = ("ascii", "$1 ${1/(.*)/$1/a}") - keys = "ascii" + EX + "éèàçôïÉÈÀÇÔÏ€" - wanted = "éèàçôïÉÈÀÇÔÏ€ eeacoiEEACOIEU" -class Transformation_LowerCaseAsciiResult(_VimTest): - skip_if = lambda self: no_unidecode_available() - snippets = ("ascii", "$1 ${1/(.*)/\L$1\E/a}") - keys = "ascii" + EX + "éèàçôïÉÈÀÇÔÏ€" - wanted = "éèàçôïÉÈÀÇÔÏ€ eeacoieeacoieu" - -class Transformation_ConditionalInsertionSimple_ExceptCorrectResult(_VimTest): - snippets = ("test", "$1 ${1/(^a).*/(?0:began with an a)/}") - keys = "test" + EX + "a some more text" - wanted = "a some more text began with an a" -class Transformation_CIBothDefinedNegative_ExceptCorrectResult(_VimTest): - snippets = ("test", "$1 ${1/(?:(^a)|(^b)).*/(?1:yes:no)/}") - keys = "test" + EX + "b some" - wanted = "b some no" -class Transformation_CIBothDefinedPositive_ExceptCorrectResult(_VimTest): - snippets = ("test", "$1 ${1/(?:(^a)|(^b)).*/(?1:yes:no)/}") - keys = "test" + EX + "a some" - wanted = "a some yes" -class Transformation_ConditionalInsertRWEllipsis_ECR(_VimTest): - snippets = ("test", r"$1 ${1/(\w+(?:\W+\w+){,7})\W*(.+)?/$1(?2:...)/}") - keys = "test" + EX + "a b c d e f ghhh h oha" - wanted = "a b c d e f ghhh h oha a b c d e f ghhh h..." -class Transformation_ConditionalInConditional_ECR(_VimTest): - snippets = ("test", r"$1 ${1/^.*?(-)?(>)?$/(?2::(?1:>:.))/}") - keys = "test" + EX + "hallo" + ESC + "$a\n" + \ - "test" + EX + "hallo-" + ESC + "$a\n" + \ - "test" + EX + "hallo->" - wanted = "hallo .\nhallo- >\nhallo-> " - -class Transformation_CINewlines_ECR(_VimTest): - snippets = ("test", r"$1 ${1/, */\n/}") - keys = "test" + EX + "test, hallo" - wanted = "test, hallo test\nhallo" -class Transformation_CITabstop_ECR(_VimTest): - snippets = ("test", r"$1 ${1/, */\t/}") - keys = "test" + EX + "test, hallo" - wanted = "test, hallo test\thallo" -class Transformation_CIEscapedParensinReplace_ECR(_VimTest): - snippets = ("test", r"$1 ${1/hal((?:lo)|(?:ul))/(?1:ha\($1\))/}") - keys = "test" + EX + "test, halul" - wanted = "test, halul test, ha(ul)" - -class Transformation_OptionIgnoreCase_ECR(_VimTest): - snippets = ("test", r"$1 ${1/test/blah/i}") - keys = "test" + EX + "TEST" - wanted = "TEST blah" -class Transformation_OptionReplaceGlobal_ECR(_VimTest): - snippets = ("test", r"$1 ${1/, */-/g}") - keys = "test" + EX + "a, nice, building" - wanted = "a, nice, building a-nice-building" -class Transformation_OptionReplaceGlobalMatchInReplace_ECR(_VimTest): - snippets = ("test", r"$1 ${1/, */, /g}") - keys = "test" + EX + "a, nice, building" - wanted = "a, nice, building a, nice, building" -class TransformationUsingBackspaceToDeleteDefaultValueInFirstTab_ECR(_VimTest): - snippets = ("test", "snip ${1/.+/(?0:m1)/} ${2/.+/(?0:m2)/} " - "${1:default} ${2:def}") - keys = "test" + EX + BS + JF + "hi" - wanted = "snip m2 hi" -class TransformationUsingBackspaceToDeleteDefaultValueInSecondTab_ECR(_VimTest): - snippets = ("test", "snip ${1/.+/(?0:m1)/} ${2/.+/(?0:m2)/} " - "${1:default} ${2:def}") - keys = "test" + EX + "hi" + JF + BS - wanted = "snip m1 hi " -class TransformationUsingBackspaceToDeleteDefaultValueTypeSomethingThen_ECR(_VimTest): - snippets = ("test", "snip ${1/.+/(?0:matched)/} ${1:default}") - keys = "test" + EX + BS + "hallo" - wanted = "snip matched hallo" -class TransformationUsingBackspaceToDeleteDefaultValue_ECR(_VimTest): - snippets = ("test", "snip ${1/.+/(?0:matched)/} ${1:default}") - keys = "test" + EX + BS - wanted = "snip " -class Transformation_TestKill_InsertBefore_NoKill(_VimTest): - snippets = "test", r"$1 ${1/.*/\L$0$0\E/}_" - keys = "hallo test" + EX + "AUCH" + ESC + "wihi" + ESC + "bb" + "ino" + JF + "end" - wanted = "hallo noAUCH hinoauchnoauch_end" -class Transformation_TestKill_InsertAfter_NoKill(_VimTest): - snippets = "test", r"$1 ${1/.*/\L$0$0\E/}_" - keys = "hallo test" + EX + "AUCH" + ESC + "eiab" + ESC + "bb" + "ino" + JF + "end" - wanted = "hallo noAUCH noauchnoauchab_end" -class Transformation_TestKill_InsertBeginning_Kill(_VimTest): - snippets = "test", r"$1 ${1/.*/\L$0$0\E/}_" - keys = "hallo test" + EX + "AUCH" + ESC + "wahi" + ESC + "bb" + "ino" + JF + "end" - wanted = "hallo noAUCH ahiuchauch_end" -class Transformation_TestKill_InsertEnd_Kill(_VimTest): - snippets = "test", r"$1 ${1/.*/\L$0$0\E/}_" - keys = "hallo test" + EX + "AUCH" + ESC + "ehihi" + ESC + "bb" + "ino" + JF + "end" - wanted = "hallo noAUCH auchauchih_end" -# End: Transformations #}}} -# ${VISUAL} {{{# -class Visual_NoVisualSelection_Ignore(_VimTest): - snippets = ("test", "h${VISUAL}b") - keys = "test" + EX + "abc" - wanted = "hbabc" -class Visual_SelectOneWord(_VimTest): - snippets = ("test", "h${VISUAL}b") - keys = "blablub" + ESC + "0v6l" + EX + "test" + EX - wanted = "hblablubb" -class Visual_SelectOneWord_ProblemAfterTab(_VimTest): - snippets = ("test", "h${VISUAL}b", "", "i") - keys = "\tblablub" + ESC + "5hv3l" + EX + "test" + EX - wanted = "\tbhlablbub" -class VisualWithDefault_ExpandWithoutVisual(_VimTest): - snippets = ("test", "h${VISUAL:world}b") - keys = "test" + EX + "hi" - wanted = "hworldbhi" -class VisualWithDefaultWithSlashes_ExpandWithoutVisual(_VimTest): - snippets = ("test", r"h${VISUAL:\/\/ body}b") - keys = "test" + EX + "hi" - wanted = "h// bodybhi" -class VisualWithDefault_ExpandWithVisual(_VimTest): - snippets = ("test", "h${VISUAL:world}b") - keys = "blablub" + ESC + "0v6l" + EX + "test" + EX - wanted = "hblablubb" - -class Visual_ExpandTwice(_VimTest): - snippets = ("test", "h${VISUAL}b") - keys = "blablub" + ESC + "0v6l" + EX + "test" + EX + "\ntest" + EX - wanted = "hblablubb\nhb" - -class Visual_SelectOneWord_TwiceVisual(_VimTest): - snippets = ("test", "h${VISUAL}b${VISUAL}a") - keys = "blablub" + ESC + "0v6l" + EX + "test" + EX - wanted = "hblablubbblabluba" -class Visual_SelectOneWord_Inword(_VimTest): - snippets = ("test", "h${VISUAL}b", "Description", "i") - keys = "blablub" + ESC + "0lv4l" + EX + "test" + EX - wanted = "bhlablubb" -class Visual_SelectOneWord_TillEndOfLine(_VimTest): - snippets = ("test", "h${VISUAL}b", "Description", "i") - keys = "blablub" + ESC + "0v$" + EX + "test" + EX + ESC + "o" - wanted = "hblablub\nb" -class Visual_SelectOneWordWithTabstop_TillEndOfLine(_VimTest): - snippets = ("test", "h${2:ahh}${VISUAL}${1:ups}b", "Description", "i") - keys = "blablub" + ESC + "0v$" + EX + "test" + EX + "mmm" + JF + "n" + JF + "done" + ESC + "o" - wanted = "hnblablub\nmmmbdone" -class Visual_InDefaultText_SelectOneWord_NoOverwrite(_VimTest): - snippets = ("test", "h${1:${VISUAL}}b") - keys = "blablub" + ESC + "0v6l" + EX + "test" + EX + JF + "hello" - wanted = "hblablubbhello" -class Visual_InDefaultText_SelectOneWord(_VimTest): - snippets = ("test", "h${1:${VISUAL}}b") - keys = "blablub" + ESC + "0v6l" + EX + "test" + EX + "hello" - wanted = "hhellob" - -class Visual_CrossOneLine(_VimTest): - snippets = ("test", "h${VISUAL}b") - keys = "bla blub\n helloi" + ESC + "0k4lvjll" + EX + "test" + EX - wanted = "bla hblub\n hellobi" - -class Visual_LineSelect_Simple(_VimTest): - snippets = ("test", "h${VISUAL}b") - keys = "hello\nnice\nworld" + ESC + "Vkk" + EX + "test" + EX - wanted = "hhello\n nice\n worldb" -class Visual_InDefaultText_LineSelect_NoOverwrite(_VimTest): - snippets = ("test", "h${1:bef${VISUAL}aft}b") - keys = "hello\nnice\nworld" + ESC + "Vkk" + EX + "test" + EX + JF + "hi" - wanted = "hbefhello\n nice\n worldaftbhi" -class Visual_InDefaultText_LineSelect_Overwrite(_VimTest): - snippets = ("test", "h${1:bef${VISUAL}aft}b") - keys = "hello\nnice\nworld" + ESC + "Vkk" + EX + "test" + EX + "jup" + JF + "hi" - wanted = "hjupbhi" -class Visual_LineSelect_CheckIndentSimple(_VimTest): - snippets = ("test", "beg\n\t${VISUAL}\nend") - keys = "hello\nnice\nworld" + ESC + "Vkk" + EX + "test" + EX - wanted = "beg\n\thello\n\tnice\n\tworld\nend" -class Visual_LineSelect_CheckIndentTwice(_VimTest): - snippets = ("test", "beg\n\t${VISUAL}\nend") - keys = " hello\n nice\n\tworld" + ESC + "Vkk" + EX + "test" + EX - wanted = "beg\n\t hello\n\t nice\n\t\tworld\nend" -class Visual_InDefaultText_IndentSpacesToTabstop_NoOverwrite(_VimTest): - snippets = ("test", "h${1:beforea${VISUAL}aft}b") - keys = "hello\nnice\nworld" + ESC + "Vkk" + EX + "test" + EX + JF + "hi" - wanted = "hbeforeahello\n\tnice\n\tworldaftbhi" -class Visual_InDefaultText_IndentSpacesToTabstop_Overwrite(_VimTest): - snippets = ("test", "h${1:beforea${VISUAL}aft}b") - keys = "hello\nnice\nworld" + ESC + "Vkk" + EX + "test" + EX + "ups" + JF + "hi" - wanted = "hupsbhi" -class Visual_InDefaultText_IndentSpacesToTabstop_NoOverwrite1(_VimTest): - snippets = ("test", "h${1:beforeaaa${VISUAL}aft}b") - keys = "hello\nnice\nworld" + ESC + "Vkk" + EX + "test" + EX + JF + "hi" - wanted = "hbeforeaaahello\n\t nice\n\t worldaftbhi" -class Visual_InDefaultText_IndentBeforeTabstop_NoOverwrite(_VimTest): - snippets = ("test", "hello\n\t ${1:${VISUAL}}\nend") - keys = "hello\nnice\nworld" + ESC + "Vkk" + EX + "test" + EX + JF + "hi" - wanted = "hello\n\t hello\n\t nice\n\t world\nendhi" - -class Visual_LineSelect_WithTabStop(_VimTest): - snippets = ("test", "beg\n\t${VISUAL}\n\t${1:here_we_go}\nend") - keys = "hello\nnice\nworld" + ESC + "Vkk" + EX + "test" + EX + "super" + JF + "done" - wanted = "beg\n\thello\n\tnice\n\tworld\n\tsuper\nenddone" -class Visual_LineSelect_CheckIndentWithTS_NoOverwrite(_VimTest): - snippets = ("test", "beg\n\t${0:${VISUAL}}\nend") - keys = "hello\nnice\nworld" + ESC + "Vkk" + EX + "test" + EX - wanted = "beg\n\thello\n\tnice\n\tworld\nend" -class Visual_LineSelect_DedentLine(_VimTest): - snippets = ("if", "if {\n\t${VISUAL}$0\n}") - keys = "if" + EX + "one\n\ttwo\n\tthree" + ESC + ARR_U*2 + "V" + ARR_D + EX + "\tif" + EX - wanted = "if {\n\tif {\n\t\tone\n\t\ttwo\n\t}\n\tthree\n}" - -class VisualTransformation_SelectOneWord(_VimTest): - snippets = ("test", r"h${VISUAL/./\U$0\E/g}b") - keys = "blablub" + ESC + "0v6l" + EX + "test" + EX - wanted = "hBLABLUBb" -class VisualTransformationWithDefault_ExpandWithoutVisual(_VimTest): - snippets = ("test", r"h${VISUAL:world/./\U$0\E/g}b") - keys = "test" + EX + "hi" - wanted = "hWORLDbhi" -class VisualTransformationWithDefault_ExpandWithVisual(_VimTest): - snippets = ("test", r"h${VISUAL:world/./\U$0\E/g}b") - keys = "blablub" + ESC + "0v6l" + EX + "test" + EX - wanted = "hBLABLUBb" -class VisualTransformation_LineSelect_Simple(_VimTest): - snippets = ("test", r"h${VISUAL/./\U$0\E/g}b") - keys = "hello\nnice\nworld" + ESC + "Vkk" + EX + "test" + EX - wanted = "hHELLO\n NICE\n WORLDb" -class VisualTransformation_InDefaultText_LineSelect_NoOverwrite(_VimTest): - snippets = ("test", r"h${1:bef${VISUAL/./\U$0\E/g}aft}b") - keys = "hello\nnice\nworld" + ESC + "Vkk" + EX + "test" + EX + JF + "hi" - wanted = "hbefHELLO\n NICE\n WORLDaftbhi" -class VisualTransformation_InDefaultText_LineSelect_Overwrite(_VimTest): - snippets = ("test", r"h${1:bef${VISUAL/./\U$0\E/g}aft}b") - keys = "hello\nnice\nworld" + ESC + "Vkk" + EX + "test" + EX + "jup" + JF + "hi" - wanted = "hjupbhi" - -# End: ${VISUAL} #}}} - -# Recursive (Nested) Snippets {{{# -class RecTabStops_SimpleCase_ExceptCorrectResult(_VimTest): - snippets = ("m", "[ ${1:first} ${2:sec} ]") - keys = "m" + EX + "m" + EX + "hello" + JF + "world" + JF + "ups" + JF + "end" - wanted = "[ [ hello world ]ups end ]" -class RecTabStops_SimpleCaseLeaveSecondSecond_ExceptCorrectResult(_VimTest): - snippets = ("m", "[ ${1:first} ${2:sec} ]") - keys = "m" + EX + "m" + EX + "hello" + JF + "world" + JF + JF + JF + "end" - wanted = "[ [ hello world ] sec ]end" -class RecTabStops_SimpleCaseLeaveFirstSecond_ExceptCorrectResult(_VimTest): - snippets = ("m", "[ ${1:first} ${2:sec} ]") - keys = "m" + EX + "m" + EX + "hello" + JF + JF + JF + "world" + JF + "end" - wanted = "[ [ hello sec ] world ]end" - -class RecTabStops_InnerWOTabStop_ECR(_VimTest): - snippets = ( - ("m1", "Just some Text"), - ("m", "[ ${1:first} ${2:sec} ]"), - ) - keys = "m" + EX + "m1" + EX + "hi" + JF + "two" + JF + "end" - wanted = "[ Just some Texthi two ]end" -class RecTabStops_InnerWOTabStopTwiceDirectly_ECR(_VimTest): - snippets = ( - ("m1", "JST"), - ("m", "[ ${1:first} ${2:sec} ]"), - ) - keys = "m" + EX + "m1" + EX + " m1" + EX + "hi" + JF + "two" + JF + "end" - wanted = "[ JST JSThi two ]end" -class RecTabStops_InnerWOTabStopTwice_ECR(_VimTest): - snippets = ( - ("m1", "JST"), - ("m", "[ ${1:first} ${2:sec} ]"), - ) - keys = "m" + EX + "m1" + EX + JF + "m1" + EX + "hi" + JF + "end" - wanted = "[ JST JSThi ]end" -class RecTabStops_OuterOnlyWithZeroTS_ECR(_VimTest): - snippets = ( - ("m", "A $0 B"), - ("m1", "C $1 D $0 E"), - ) - keys = "m" + EX + "m1" + EX + "CD" + JF + "DE" - wanted = "A C CD D DE E B" -class RecTabStops_OuterOnlyWithZero_ECR(_VimTest): - snippets = ( - ("m", "A $0 B"), - ("m1", "C $1 D $0 E"), - ) - keys = "m" + EX + "m1" + EX + "CD" + JF + "DE" - wanted = "A C CD D DE E B" -class RecTabStops_ExpandedInZeroTS_ECR(_VimTest): - snippets = ( - ("m", "A $0 B $1"), - ("m1", "C $1 D $0 E"), - ) - keys = "m" + EX + "hi" + JF + "m1" + EX + "CD" + JF + "DE" - wanted = "A C CD D DE E B hi" -class RecTabStops_ExpandedInZeroTSTwice_ECR(_VimTest): - snippets = ( - ("m", "A $0 B $1"), - ("m1", "C $1 D $0 E"), - ) - keys = "m" + EX + "hi" + JF + "m" + EX + "again" + JF + "m1" + \ - EX + "CD" + JF + "DE" - wanted = "A A C CD D DE E B again B hi" -class RecTabStops_ExpandedInZeroTSSecondTime_ECR(_VimTest): - snippets = ( - ("m", "A $0 B $1"), - ("m1", "C $1 D $0 E"), - ) - keys = "m" + EX + "hi" + JF + "m" + EX + "m1" + EX + "CD" + JF + "DE" + JF + "AB" - wanted = "A A AB B C CD D DE E B hi" -class RecTabsStops_TypeInZero_ECR(_VimTest): - snippets = ( - ("v", r"\vec{$1}", "Vector", "w"), - ("frac", r"\frac{${1:one}}${0:zero}{${2:two}}", "Fractio", "w"), - ) - keys = "v" + EX + "frac" + EX + "a" + JF + "b" + JF + "frac" + EX + "aa" + JF + JF + "cc" + JF + \ - "hello frac" + EX + JF + JF + "world" - wanted = r"\vec{\frac{a}\frac{aa}cc{two}{b}}hello \frac{one}world{two}" -class RecTabsStops_TypeInZero2_ECR(_VimTest): - snippets = ( - ("m", r"_${0:explicit zero}", "snip", "i"), - ) - keys = "m" + EX + "hello m" + EX + "world m" + EX + "end" - wanted = r"_hello _world _end" -class RecTabsStops_BackspaceZero_ECR(_VimTest): - snippets = ( - ("m", r"${1:one}${0:explicit zero}${2:two}", "snip", "i"), - ) - keys = "m" + EX + JF + JF + BS + "m" + EX - wanted = r"oneoneexplicit zerotwotwo" - - -class RecTabStops_MirrorInnerSnippet_ECR(_VimTest): - snippets = ( - ("m", "[ $1 $2 ] $1"), - ("m1", "ASnip $1 ASnip $2 ASnip"), - ) - keys = "m" + EX + "m1" + EX + "Hallo" + JF + "Hi" + JF + "endone" + JF + "two" + JF + "totalend" - wanted = "[ ASnip Hallo ASnip Hi ASnipendone two ] ASnip Hallo ASnip Hi ASnipendonetotalend" - -class RecTabStops_NotAtBeginningOfTS_ExceptCorrectResult(_VimTest): - snippets = ("m", "[ ${1:first} ${2:sec} ]") - keys = "m" + EX + "hello m" + EX + "hi" + JF + "two" + JF + "ups" + JF + "three" + \ - JF + "end" - wanted = "[ hello [ hi two ]ups three ]end" -class RecTabStops_InNewlineInTabstop_ExceptCorrectResult(_VimTest): - snippets = ("m", "[ ${1:first} ${2:sec} ]") - keys = "m" + EX + "hello\nm" + EX + "hi" + JF + "two" + JF + "ups" + JF + "three" + \ - JF + "end" - wanted = "[ hello\n[ hi two ]ups three ]end" -class RecTabStops_InNewlineInTabstopNotAtBeginOfLine_ECR(_VimTest): - snippets = ("m", "[ ${1:first} ${2:sec} ]") - keys = "m" + EX + "hello\nhello again m" + EX + "hi" + JF + "two" + \ - JF + "ups" + JF + "three" + JF + "end" - wanted = "[ hello\nhello again [ hi two ]ups three ]end" - -class RecTabStops_InNewlineMultiline_ECR(_VimTest): - snippets = ("m", "M START\n$0\nM END") - keys = "m" + EX + "m" + EX - wanted = "M START\nM START\n\nM END\nM END" -class RecTabStops_InNewlineManualIndent_ECR(_VimTest): - snippets = ("m", "M START\n$0\nM END") - keys = "m" + EX + " m" + EX + "hi" - wanted = "M START\n M START\n hi\n M END\nM END" -class RecTabStops_InNewlineManualIndentTextInFront_ECR(_VimTest): - snippets = ("m", "M START\n$0\nM END") - keys = "m" + EX + " hallo m" + EX + "hi" - wanted = "M START\n hallo M START\n hi\n M END\nM END" -class RecTabStops_InNewlineMultilineWithIndent_ECR(_VimTest): - snippets = ("m", "M START\n $0\nM END") - keys = "m" + EX + "m" + EX + "hi" - wanted = "M START\n M START\n hi\n M END\nM END" -class RecTabStops_InNewlineMultilineWithNonZeroTS_ECR(_VimTest): - snippets = ("m", "M START\n $1\nM END -> $0") - keys = "m" + EX + "m" + EX + "hi" + JF + "hallo" + JF + "end" - wanted = "M START\n M START\n hi\n M END -> hallo\n" \ - "M END -> end" - -class RecTabStops_BarelyNotLeavingInner_ECR(_VimTest): - snippets = ( - ("m", "[ ${1:first} ${2:sec} ]"), - ) - keys = "m" + EX + "m" + EX + "a" + 3*ARR_L + JF + "hallo" + \ - JF + "ups" + JF + "world" + JF + "end" - wanted = "[ [ a hallo ]ups world ]end" -class RecTabStops_LeavingInner_ECR(_VimTest): - snippets = ( - ("m", "[ ${1:first} ${2:sec} ]"), - ) - keys = "m" + EX + "m" + EX + "a" + 4*ARR_L + JF + "hallo" + \ - JF + "world" - wanted = "[ [ a sec ] hallo ]world" -class RecTabStops_LeavingInnerInner_ECR(_VimTest): - snippets = ( - ("m", "[ ${1:first} ${2:sec} ]"), - ) - keys = "m" + EX + "m" + EX + "m" + EX + "a" + 4*ARR_L + JF + "hallo" + \ - JF + "ups" + JF + "world" + JF + "end" - wanted = "[ [ [ a sec ] hallo ]ups world ]end" -class RecTabStops_LeavingInnerInnerTwo_ECR(_VimTest): - snippets = ( - ("m", "[ ${1:first} ${2:sec} ]"), - ) - keys = "m" + EX + "m" + EX + "m" + EX + "a" + 6*ARR_L + JF + "hallo" + \ - JF + "end" - wanted = "[ [ [ a sec ] sec ] hallo ]end" - - -class RecTabStops_ZeroTSisNothingSpecial_ECR(_VimTest): - snippets = ( - ("m1", "[ ${1:first} $0 ${2:sec} ]"), - ("m", "[ ${1:first} ${2:sec} ]"), - ) - keys = "m" + EX + "m1" + EX + "one" + JF + "two" + \ - JF + "three" + JF + "four" + JF + "end" - wanted = "[ [ one three two ] four ]end" -class RecTabStops_MirroredZeroTS_ECR(_VimTest): - snippets = ( - ("m1", "[ ${1:first} ${0:Year, some default text} $0 ${2:sec} ]"), - ("m", "[ ${1:first} ${2:sec} ]"), - ) - keys = "m" + EX + "m1" + EX + "one" + JF + "two" + \ - JF + "three" + JF + "four" + JF + "end" - wanted = "[ [ one three three two ] four ]end" -class RecTabStops_ChildTriggerContainsParentTextObjects(_VimTest): - # https://bugs.launchpad.net/bugs/1191617 - snippets_test_file = ("all", r""" -global !p -def complete(t, opts): - if t: - opts = [ q[len(t):] for q in opts if q.startswith(t) ] - if len(opts) == 0: - return '' - return opts[0] if len(opts) == 1 else "(" + '|'.join(opts) + ')' -def autocomplete_options(t, string, attr=None): - return complete(t[1], [opt for opt in attr if opt not in string]) -endglobal -snippet /form_for(.*){([^|]*)/ "form_for html options" rw! -`!p -auto = autocomplete_options(t, match.group(2), attr=["id: ", "class: ", "title: "]) -snip.rv = "form_for" + match.group(1) + "{"`$1`!p if (snip.c != auto) : snip.rv=auto` -endsnippet -""") - keys = "form_for user, namespace: some_namespace, html: {i" + EX + "i" + EX - wanted = "form_for user, namespace: some_namespace, html: {(id: |class: |title: )d: " -# End: Recursive (Nested) Snippets #}}} -# List Snippets {{{# -class _ListAllSnippets(_VimTest): - snippets = ( ("testblah", "BLAAH", "Say BLAH"), - ("test", "TEST ONE", "Say tst one"), - ("aloha", "OHEEEE", "Say OHEE"), - ) - -class ListAllAvailable_NothingTyped_ExceptCorrectResult(_ListAllSnippets): - keys = "" + LS + "3\n" - wanted = "BLAAH" -class ListAllAvailable_SpaceInFront_ExceptCorrectResult(_ListAllSnippets): - keys = " " + LS + "3\n" - wanted = " BLAAH" -class ListAllAvailable_BraceInFront_ExceptCorrectResult(_ListAllSnippets): - keys = "} " + LS + "3\n" - wanted = "} BLAAH" -class ListAllAvailable_testtyped_ExceptCorrectResult(_ListAllSnippets): - keys = "hallo test" + LS + "2\n" - wanted = "hallo BLAAH" -class ListAllAvailable_testtypedSecondOpt_ExceptCorrectResult(_ListAllSnippets): - keys = "hallo test" + LS + "1\n" - wanted = "hallo TEST ONE" - -class ListAllAvailable_NonDefined_NoExceptionShouldBeRaised(_ListAllSnippets): - keys = "hallo qualle" + LS + "Hi" - wanted = "hallo qualleHi" -# End: List Snippets #}}} -# Selecting Between Same Triggers {{{# -class _MultipleMatches(_VimTest): - snippets = ( ("test", "Case1", "This is Case 1"), - ("test", "Case2", "This is Case 2") ) -class Multiple_SimpleCaseSelectFirst_ECR(_MultipleMatches): - keys = "test" + EX + "1\n" - wanted = "Case1" -class Multiple_SimpleCaseSelectSecond_ECR(_MultipleMatches): - keys = "test" + EX + "2\n" - wanted = "Case2" -class Multiple_SimpleCaseSelectTooHigh_ESelectLast(_MultipleMatches): - keys = "test" + EX + "5\n" - wanted = "Case2" -class Multiple_SimpleCaseSelectZero_EEscape(_MultipleMatches): - keys = "test" + EX + "0\n" + "hi" - wanted = "testhi" -class Multiple_SimpleCaseEscapeOut_ECR(_MultipleMatches): - keys = "test" + EX + ESC + "hi" - wanted = "testhi" -class Multiple_ManySnippetsOneTrigger_ECR(_VimTest): - # Snippet definition {{{# - snippets = ( - ("test", "Case1", "This is Case 1"), - ("test", "Case2", "This is Case 2"), - ("test", "Case3", "This is Case 3"), - ("test", "Case4", "This is Case 4"), - ("test", "Case5", "This is Case 5"), - ("test", "Case6", "This is Case 6"), - ("test", "Case7", "This is Case 7"), - ("test", "Case8", "This is Case 8"), - ("test", "Case9", "This is Case 9"), - ("test", "Case10", "This is Case 10"), - ("test", "Case11", "This is Case 11"), - ("test", "Case12", "This is Case 12"), - ("test", "Case13", "This is Case 13"), - ("test", "Case14", "This is Case 14"), - ("test", "Case15", "This is Case 15"), - ("test", "Case16", "This is Case 16"), - ("test", "Case17", "This is Case 17"), - ("test", "Case18", "This is Case 18"), - ("test", "Case19", "This is Case 19"), - ("test", "Case20", "This is Case 20"), - ("test", "Case21", "This is Case 21"), - ("test", "Case22", "This is Case 22"), - ("test", "Case23", "This is Case 23"), - ("test", "Case24", "This is Case 24"), - ("test", "Case25", "This is Case 25"), - ("test", "Case26", "This is Case 26"), - ("test", "Case27", "This is Case 27"), - ("test", "Case28", "This is Case 28"), - ("test", "Case29", "This is Case 29"), - ) #}}} - keys = "test" + EX + " " + ESC + ESC + "ahi" - wanted = "testhi" -# End: Selecting Between Same Triggers #}}} -# Snippet Priority {{{# -class SnippetPriorities_MultiWordTriggerOverwriteExisting(_VimTest): - snippets = ( - ("test me", "${1:Hallo}", "Types Hallo"), - ("test me", "${1:World}", "Types World"), - ("test me", "We overwrite", "Overwrite the two", "", 1), - ) - keys = "test me" + EX - wanted = "We overwrite" -class SnippetPriorities_DoNotCareAboutNonMatchings(_VimTest): - snippets = ( - ("test1", "Hallo", "Types Hallo"), - ("test2", "We overwrite", "Overwrite the two", "", 1), - ) - keys = "test1" + EX - wanted = "Hallo" -class SnippetPriorities_OverwriteExisting(_VimTest): - snippets = ( - ("test", "${1:Hallo}", "Types Hallo"), - ("test", "${1:World}", "Types World"), - ("test", "We overwrite", "Overwrite the two", "", 1), - ) - keys = "test" + EX - wanted = "We overwrite" -class SnippetPriorities_OverwriteTwice_ECR(_VimTest): - snippets = ( - ("test", "${1:Hallo}", "Types Hallo"), - ("test", "${1:World}", "Types World"), - ("test", "We overwrite", "Overwrite the two", "", 1), - ("test", "again", "Overwrite again", "", 2), - ) - keys = "test" + EX - wanted = "again" -class SnippetPriorities_OverwriteThenChoose_ECR(_VimTest): - snippets = ( - ("test", "${1:Hallo}", "Types Hallo"), - ("test", "${1:World}", "Types World"), - ("test", "We overwrite", "Overwrite the two", "", 1), - ("test", "No overwrite", "Not overwritten", "", 1), - ) - keys = "test" + EX + "1\n\n" + "test" + EX + "2\n" - wanted = "We overwrite\nNo overwrite" -class SnippetPriorities_AddedHasHigherThanFile(_VimTest): - snippets_test_file = ("all", r""" - snippet test "Test Snippet" b - This is a test snippet - endsnippet - """) - snippets = ( - ("test", "We overwrite", "Overwrite the two", "", 1), - ) - keys = "test" + EX - wanted = "We overwrite" -class SnippetPriorities_FileHasHigherThanAdded(_VimTest): - snippets_test_file = ("all", r""" - snippet test "Test Snippet" b - This is a test snippet - endsnippet - """) - snippets = ( - ("test", "We do not overwrite", "Overwrite the two", "", -1), - ) - keys = "test" + EX - wanted = "This is a test snippet" -class SnippetPriorities_FileHasHigherThanAdded(_VimTest): - snippets_test_file = ("all", r""" - priority -3 - snippet test "Test Snippet" b - This is a test snippet - endsnippet - """) - snippets = ( - ("test", "We overwrite", "Overwrite the two", "", -5), - ) - keys = "test" + EX - wanted = "This is a test snippet" -# End: Snippet Priority #}}} - - -# Snippet Options {{{# -class SnippetOptions_OnlyExpandWhenWSInFront_Expand(_VimTest): - snippets = ("test", "Expand me!", "", "b") - keys = "test" + EX - wanted = "Expand me!" -class SnippetOptions_OnlyExpandWhenWSInFront_Expand2(_VimTest): - snippets = ("test", "Expand me!", "", "b") - keys = " test" + EX - wanted = " Expand me!" -class SnippetOptions_OnlyExpandWhenWSInFront_DontExpand(_VimTest): - snippets = ("test", "Expand me!", "", "b") - keys = "a test" + EX - wanted = "a test" + EX -class SnippetOptions_OnlyExpandWhenWSInFront_OneWithOneWO(_VimTest): - snippets = ( - ("test", "Expand me!", "", "b"), - ("test", "not at beginning", "", ""), - ) - keys = "a test" + EX - wanted = "a not at beginning" -class SnippetOptions_OnlyExpandWhenWSInFront_OneWithOneWOChoose(_VimTest): - snippets = ( - ("test", "Expand me!", "", "b"), - ("test", "not at beginning", "", ""), - ) - keys = " test" + EX + "1\n" - wanted = " Expand me!" - - -class SnippetOptions_ExpandInwordSnippets_SimpleExpand(_VimTest): - snippets = (("test", "Expand me!", "", "i"), ) - keys = "atest" + EX - wanted = "aExpand me!" -class SnippetOptions_ExpandInwordSnippets_ExpandSingle(_VimTest): - snippets = (("test", "Expand me!", "", "i"), ) - keys = "test" + EX - wanted = "Expand me!" -class SnippetOptions_ExpandInwordSnippetsWithOtherChars_Expand(_VimTest): - snippets = (("test", "Expand me!", "", "i"), ) - keys = "$test" + EX - wanted = "$Expand me!" -class SnippetOptions_ExpandInwordSnippetsWithOtherChars_Expand2(_VimTest): - snippets = (("test", "Expand me!", "", "i"), ) - keys = "-test" + EX - wanted = "-Expand me!" -class SnippetOptions_ExpandInwordSnippetsWithOtherChars_Expand3(_VimTest): - skip_if = lambda self: running_on_windows() - snippets = (("test", "Expand me!", "", "i"), ) - keys = "ßßtest" + EX - wanted = "ßßExpand me!" - -class _SnippetOptions_ExpandWordSnippets(_VimTest): - snippets = (("test", "Expand me!", "", "w"), ) -class SnippetOptions_ExpandWordSnippets_NormalExpand( - _SnippetOptions_ExpandWordSnippets): - keys = "test" + EX - wanted = "Expand me!" -class SnippetOptions_ExpandWordSnippets_NoExpand( - _SnippetOptions_ExpandWordSnippets): - keys = "atest" + EX - wanted = "atest" + EX -class SnippetOptions_ExpandWordSnippets_ExpandSuffix( - _SnippetOptions_ExpandWordSnippets): - keys = "a-test" + EX - wanted = "a-Expand me!" -class SnippetOptions_ExpandWordSnippets_ExpandSuffix2( - _SnippetOptions_ExpandWordSnippets): - keys = "a(test" + EX - wanted = "a(Expand me!" -class SnippetOptions_ExpandWordSnippets_ExpandSuffix3( - _SnippetOptions_ExpandWordSnippets): - keys = "[[test" + EX - wanted = "[[Expand me!" - -class _No_Tab_Expand(_VimTest): - snippets = ("test", "\t\tExpand\tme!\t", "", "t") -class No_Tab_Expand_Simple(_No_Tab_Expand): - keys = "test" + EX - wanted = "\t\tExpand\tme!\t" -class No_Tab_Expand_Leading_Spaces(_No_Tab_Expand): - keys = " test" + EX - wanted = " \t\tExpand\tme!\t" -class No_Tab_Expand_Leading_Tabs(_No_Tab_Expand): - keys = "\ttest" + EX - wanted = "\t\t\tExpand\tme!\t" -class No_Tab_Expand_No_TS(_No_Tab_Expand): - def _options_on(self): - self.send(":set sw=3\n") - self.send(":set sts=3\n") - def _options_off(self): - self.send(":set sw=8\n") - self.send(":set sts=0\n") - keys = "test" + EX - wanted = "\t\tExpand\tme!\t" -class No_Tab_Expand_ET(_No_Tab_Expand): - def _options_on(self): - self.send(":set sw=3\n") - self.send(":set expandtab\n") - def _options_off(self): - self.send(":set sw=8\n") - self.send(":set noexpandtab\n") - keys = "test" + EX - wanted = "\t\tExpand\tme!\t" -class No_Tab_Expand_ET_Leading_Spaces(_No_Tab_Expand): - def _options_on(self): - self.send(":set sw=3\n") - self.send(":set expandtab\n") - def _options_off(self): - self.send(":set sw=8\n") - self.send(":set noexpandtab\n") - keys = " test" + EX - wanted = " \t\tExpand\tme!\t" -class No_Tab_Expand_ET_SW(_No_Tab_Expand): - def _options_on(self): - self.send(":set sw=8\n") - self.send(":set expandtab\n") - def _options_off(self): - self.send(":set sw=8\n") - self.send(":set noexpandtab\n") - keys = "test" + EX - wanted = "\t\tExpand\tme!\t" -class No_Tab_Expand_ET_SW_TS(_No_Tab_Expand): - def _options_on(self): - self.send(":set sw=3\n") - self.send(":set sts=3\n") - self.send(":set ts=3\n") - self.send(":set expandtab\n") - def _options_off(self): - self.send(":set sw=8\n") - self.send(":set ts=8\n") - self.send(":set sts=0\n") - self.send(":set noexpandtab\n") - keys = "test" + EX - wanted = "\t\tExpand\tme!\t" - -class _TabExpand_RealWorld(object): - snippets = ("hi", -r"""hi -`!p snip.rv="i1\n" -snip.rv += snip.mkline("i1\n") -snip.shift(1) -snip.rv += snip.mkline("i2\n") -snip.unshift(2) -snip.rv += snip.mkline("i0\n") -snip.shift(3) -snip.rv += snip.mkline("i3")` -snip.rv = repr(snip.rv) -End""") - -class No_Tab_Expand_RealWorld(_TabExpand_RealWorld,_VimTest): - def _options_on(self): - self.send(":set noexpandtab\n") - def _options_off(self): - self.send(":set noexpandtab\n") - keys = "\t\thi" + EX - wanted = """\t\thi -\t\ti1 -\t\ti1 -\t\t\ti2 -\ti0 -\t\t\t\ti3 -\t\tsnip.rv = repr(snip.rv) -\t\tEnd""" - - -class SnippetOptions_Regex_Expand(_VimTest): - snippets = ("(test)", "Expand me!", "", "r") - keys = "test" + EX - wanted = "Expand me!" -class SnippetOptions_Regex_Multiple(_VimTest): - snippets = ("(test *)+", "Expand me!", "", "r") - keys = "test test test" + EX - wanted = "Expand me!" - -class _Regex_Self(_VimTest): - snippets = ("((?<=\W)|^)(\.)", "self.", "", "r") -class SnippetOptions_Regex_Self_Start(_Regex_Self): - keys = "." + EX - wanted = "self." -class SnippetOptions_Regex_Self_Space(_Regex_Self): - keys = " ." + EX - wanted = " self." -class SnippetOptions_Regex_Self_TextAfter(_Regex_Self): - keys = " .a" + EX - wanted = " .a" + EX -class SnippetOptions_Regex_Self_TextBefore(_Regex_Self): - keys = "a." + EX - wanted = "a." + EX -class SnippetOptions_Regex_PythonBlockMatch(_VimTest): - snippets = (r"([abc]+)([def]+)", r"""`!p m = match -snip.rv += m.group(2) -snip.rv += m.group(1) -`""", "", "r") - keys = "test cabfed" + EX - wanted = "test fedcab" -class SnippetOptions_Regex_PythonBlockNoMatch(_VimTest): - snippets = (r"cabfed", r"""`!p snip.rv = match or "No match"`""") - keys = "test cabfed" + EX - wanted = "test No match" -# Tests for Bug #691575 -class SnippetOptions_Regex_SameLine_Long_End(_VimTest): - snippets = ("(test.*)", "Expand me!", "", "r") - keys = "test test abc" + EX - wanted = "Expand me!" -class SnippetOptions_Regex_SameLine_Long_Start(_VimTest): - snippets = ("(.*test)", "Expand me!", "", "r") - keys = "abc test test" + EX - wanted = "Expand me!" -class SnippetOptions_Regex_SameLine_Simple(_VimTest): - snippets = ("(test)", "Expand me!", "", "r") - keys = "abc test test" + EX - wanted = "abc test Expand me!" - - -class MultiWordSnippet_Simple(_VimTest): - snippets = ("test me", "Expand me!") - keys = "test me" + EX - wanted = "Expand me!" -class MultiWord_SnippetOptions_OnlyExpandWhenWSInFront_Expand(_VimTest): - snippets = ("test it", "Expand me!", "", "b") - keys = "test it" + EX - wanted = "Expand me!" -class MultiWord_SnippetOptions_OnlyExpandWhenWSInFront_Expand2(_VimTest): - snippets = ("test it", "Expand me!", "", "b") - keys = " test it" + EX - wanted = " Expand me!" -class MultiWord_SnippetOptions_OnlyExpandWhenWSInFront_DontExpand(_VimTest): - snippets = ("test it", "Expand me!", "", "b") - keys = "a test it" + EX - wanted = "a test it" + EX -class MultiWord_SnippetOptions_OnlyExpandWhenWSInFront_OneWithOneWO(_VimTest): - snippets = ( - ("test it", "Expand me!", "", "b"), - ("test it", "not at beginning", "", ""), - ) - keys = "a test it" + EX - wanted = "a not at beginning" -class MultiWord_SnippetOptions_OnlyExpandWhenWSInFront_OneWithOneWOChoose(_VimTest): - snippets = ( - ("test it", "Expand me!", "", "b"), - ("test it", "not at beginning", "", ""), - ) - keys = " test it" + EX + "1\n" - wanted = " Expand me!" - -class MultiWord_SnippetOptions_ExpandInwordSnippets_SimpleExpand(_VimTest): - snippets = (("test it", "Expand me!", "", "i"), ) - keys = "atest it" + EX - wanted = "aExpand me!" -class MultiWord_SnippetOptions_ExpandInwordSnippets_ExpandSingle(_VimTest): - snippets = (("test it", "Expand me!", "", "i"), ) - keys = "test it" + EX - wanted = "Expand me!" - -class _MultiWord_SnippetOptions_ExpandWordSnippets(_VimTest): - snippets = (("test it", "Expand me!", "", "w"), ) -class MultiWord_SnippetOptions_ExpandWordSnippets_NormalExpand( - _MultiWord_SnippetOptions_ExpandWordSnippets): - keys = "test it" + EX - wanted = "Expand me!" -class MultiWord_SnippetOptions_ExpandWordSnippets_NoExpand( - _MultiWord_SnippetOptions_ExpandWordSnippets): - keys = "atest it" + EX - wanted = "atest it" + EX -class MultiWord_SnippetOptions_ExpandWordSnippets_ExpandSuffix( - _MultiWord_SnippetOptions_ExpandWordSnippets): - keys = "a-test it" + EX - wanted = "a-Expand me!" -# Snippet Options #}}} - -# Anonymous Expansion {{{# -class _AnonBase(_VimTest): - args = "" - def _options_on(self): - self.send(":inoremap <silent> " + EA + ' <C-R>=UltiSnips#Anon(' - + self.args + ')<cr>\n') - def _options_off(self): - self.send(":iunmap <silent> " + EA + '\n') - -class Anon_NoTrigger_Simple(_AnonBase): - args = '"simple expand"' - keys = "abc" + EA - wanted = "abcsimple expand" - -class Anon_NoTrigger_AfterSpace(_AnonBase): - args = '"simple expand"' - keys = "abc " + EA - wanted = "abc simple expand" - -class Anon_NoTrigger_BeginningOfLine(_AnonBase): - args = r"':latex:\`$1\`$0'" - keys = EA + "Hello" + JF + "World" - wanted = ":latex:`Hello`World" -class Anon_NoTrigger_FirstCharOfLine(_AnonBase): - args = r"':latex:\`$1\`$0'" - keys = " " + EA + "Hello" + JF + "World" - wanted = " :latex:`Hello`World" - -class Anon_NoTrigger_Multi(_AnonBase): - args = '"simple $1 expand $1 $0"' - keys = "abc" + EA + "123" + JF + "456" - wanted = "abcsimple 123 expand 123 456" - -class Anon_Trigger_Multi(_AnonBase): - args = '"simple $1 expand $1 $0", "abc"' - keys = "123 abc" + EA + "123" + JF + "456" - wanted = "123 simple 123 expand 123 456" - -class Anon_Trigger_Simple(_AnonBase): - args = '"simple expand", "abc"' - keys = "abc" + EA - wanted = "simple expand" - -class Anon_Trigger_Twice(_AnonBase): - args = '"simple expand", "abc"' - keys = "abc" + EA + "\nabc" + EX - wanted = "simple expand\nabc" + EX - -class Anon_Trigger_Opts(_AnonBase): - args = '"simple expand", ".*abc", "desc", "r"' - keys = "blah blah abc" + EA - wanted = "simple expand" -# End: Anonymous Expansion #}}} -# AddSnippet Function {{{# -class _AddFuncBase(_VimTest): - args = "" - def _options_on(self): - self.send(":call UltiSnips#AddSnippetWithPriority(" - + self.args + ')\n') - -class AddFunc_Simple(_AddFuncBase): - args = '"test", "simple expand", "desc", "", "all", 0' - keys = "abc test" + EX - wanted = "abc simple expand" - -class AddFunc_Opt(_AddFuncBase): - args = '".*test", "simple expand", "desc", "r", "all", 0' - keys = "abc test" + EX - wanted = "simple expand" -# End: AddSnippet Function #}}} - -# ExpandTab {{{# -class _ExpandTabs(_VimTest): - def _options_on(self): - self.send(":set sw=3\n") - self.send(":set expandtab\n") - def _options_off(self): - self.send(":set sw=8\n") - self.send(":set noexpandtab\n") - -class RecTabStopsWithExpandtab_SimpleExample_ECR(_ExpandTabs): - snippets = ("m", "\tBlaahblah \t\t ") - keys = "m" + EX - wanted = " Blaahblah \t\t " - -class RecTabStopsWithExpandtab_SpecialIndentProblem_ECR(_ExpandTabs): - # Windows indents the Something line after pressing return, though it - # shouldn't because it contains a manual indent. All other vim versions do - # not do this. Windows vim does not interpret the changes made by :py as - # changes made 'manually', while the other vim version seem to do so. Since - # the fault is not with UltiSnips, we simply skip this test on windows - # completely. - skip_if = lambda self: running_on_windows() - snippets = ( - ("m1", "Something"), - ("m", "\t$0"), - ) - keys = "m" + EX + "m1" + EX + '\nHallo' - wanted = " Something\n Hallo" - def _options_on(self): - _ExpandTabs._options_on(self) - self.send(":set indentkeys=o,O,*<Return>,<>>,{,}\n") - self.send(":set indentexpr=8\n") - def _options_off(self): - _ExpandTabs._options_off(self) - self.send(":set indentkeys=\n") - self.send(":set indentexpr=\n") -# End: ExpandTab #}}} -# Proper Indenting {{{# -class ProperIndenting_SimpleCase_ECR(_VimTest): - snippets = ("test", "for\n blah") - keys = " test" + EX + "Hui" - wanted = " for\n blahHui" -class ProperIndenting_SingleLineNoReindenting_ECR(_VimTest): - snippets = ("test", "hui") - keys = " test" + EX + "blah" - wanted = " huiblah" -class ProperIndenting_AutoIndentAndNewline_ECR(_VimTest): - snippets = ("test", "hui") - keys = " test" + EX + "\n"+ "blah" - wanted = " hui\n blah" - def _options_on(self): - self.send(":set autoindent\n") - def _options_off(self): - self.send(":set noautoindent\n") -# Test for bug 1073816 -class ProperIndenting_FirstLineInFile_ECR(_VimTest): - text_before = "" - text_after = "" - snippets_test_file = ("all", r""" -global !p -def complete(t, opts): - if t: - opts = [ m[len(t):] for m in opts if m.startswith(t) ] - if len(opts) == 1: - return opts[0] - elif len(opts) > 1: - return "(" + "|".join(opts) + ")" - else: - return "" -endglobal - -snippet '^#?inc' "#include <>" !r -#include <$1`!p snip.rv = complete(t[1], ['cassert', 'cstdio', 'cstdlib', 'cstring', 'fstream', 'iostream', 'sstream'])`> -endsnippet - """) - keys = "inc" + EX + "foo" - wanted = "#include <foo>" -class ProperIndenting_FirstLineInFileComplete_ECR(ProperIndenting_FirstLineInFile_ECR): - keys = "inc" + EX + "cstdl" - wanted = "#include <cstdlib>" -# End: Proper Indenting #}}} -# Format options tests {{{# -class _FormatoptionsBase(_VimTest): - def _options_on(self): - self.send(":set tw=20\n") - self.send(":set fo=lrqntc\n") - def _options_off(self): - self.send(":set tw=0\n") - self.send(":set fo=tcq\n") - -class FOSimple_Break_ExceptCorrectResult(_FormatoptionsBase): - snippets = ("test", "${1:longer expand}\n$1\n$0", "", "f") - keys = "test" + EX + "This is a longer text that should wrap as formatoptions are enabled" + JF + "end" - wanted = "This is a longer\ntext that should\nwrap as\nformatoptions are\nenabled\n" + \ - "This is a longer\ntext that should\nwrap as\nformatoptions are\nenabled\n" + "end" - - -class FOTextBeforeAndAfter_ExceptCorrectResult(_FormatoptionsBase): - snippets = ("test", "Before${1:longer expand}After\nstart$1end") - keys = "test" + EX + "This is a longer text that should wrap" - wanted = \ -"""BeforeThis is a -longer text that -should wrapAfter -startThis is a -longer text that -should wrapend""" - - -# Tests for https://bugs.launchpad.net/bugs/719998 -class FOTextAfter_ExceptCorrectResult(_FormatoptionsBase): - snippets = ("test", "${1:longer expand}after\nstart$1end") - keys = ("test" + EX + "This is a longer snippet that should wrap properly " - "and the mirror below should work as well") - wanted = \ -"""This is a longer -snippet that should -wrap properly and -the mirror below -should work as wellafter -startThis is a longer -snippet that should -wrap properly and -the mirror below -should work as wellend""" - -class FOWrapOnLongWord_ExceptCorrectResult(_FormatoptionsBase): - snippets = ("test", "${1:longer expand}after\nstart$1end") - keys = ("test" + EX + "This is a longersnippet that should wrap properly") - wanted = \ -"""This is a -longersnippet that -should wrap properlyafter -startThis is a -longersnippet that -should wrap properlyend""" -# End: Format options tests #}}} -# Langmap Handling {{{# -# Test for bug 501727 # -class TestNonEmptyLangmap_ExceptCorrectResult(_VimTest): - snippets = ("testme", -"""my snipped ${1:some_default} -and a mirror: $1 -$2...$3 -$0""") - keys = "testme" + EX + "hi1" + JF + "hi2" + JF + "hi3" + JF + "hi4" - wanted ="""my snipped hi1 -and a mirror: hi1 -hi2...hi3 -hi4""" - - def _options_on(self): - self.send(":set langmap=dj,rk,nl,ln,jd,kr,DJ,RK,NL,LN,JD,KR\n") - def _options_off(self): - self.send(":set langmap=\n") - -# Test for https://bugs.launchpad.net/bugs/501727 # -class TestNonEmptyLangmapWithSemi_ExceptCorrectResult(_VimTest): - snippets = ("testme", -"""my snipped ${1:some_default} -and a mirror: $1 -$2...$3 -$0""") - keys = "testme" + EX + "hi;" + JF + "hi2" + JF + "hi3" + JF + "hi4" + ESC + ";Hello" - wanted ="""my snipped hi; -and a mirror: hi; -hi2...hi3 -hi4Hello""" - - def _options_on(self): - self.send(":set langmap=\\\\;;A\n") - def _options_off(self): - self.send(":set langmap=\n") - -# Test for bug 871357 # -class TestLangmapWithUtf8_ExceptCorrectResult(_VimTest): - skip_if = lambda self: running_on_windows() # SendKeys can't send UTF characters - snippets = ("testme", -"""my snipped ${1:some_default} -and a mirror: $1 -$2...$3 -$0""") - keys = "testme" + EX + "hi1" + JF + "hi2" + JF + "hi3" + JF + "hi4" - wanted ="""my snipped hi1 -and a mirror: hi1 -hi2...hi3 -hi4""" - - def _options_on(self): - self.send(":set langmap=йq,цw,уe,кr,еt,нy,гu,шi,щo,зp,х[,ъ],фa,ыs,вd,аf,пg,рh,оj,лk,дl,ж\\;,э',яz,чx,сc,мv,иb,тn,ьm,ю.,ё',ЙQ,ЦW,УE,КR,ЕT,НY,ГU,ШI,ЩO,ЗP,Х\{,Ъ\},ФA,ЫS,ВD,АF,ПG,РH,ОJ,ЛK,ДL,Ж\:,Э\",ЯZ,ЧX,СC,МV,ИB,ТN,ЬM,Б\<,Ю\>\n") - - def _options_off(self): - self.send(":set langmap=\n") -# End: Langmap Handling #}}} -# Unmap SelectMode Mappings {{{# -# Test for bug 427298 # -class _SelectModeMappings(_VimTest): - snippets = ("test", "${1:World}") - keys = "test" + EX + "Hello" - wanted = "Hello" - maps = ("", "") - buffer_maps = ("", "") - do_unmapping = True - ignores = [] - - def _options_on(self): - self.send(":let g:UltiSnipsRemoveSelectModeMappings=%i\n" % - int(self.do_unmapping)) - self.send(":let g:UltiSnipsMappingsToIgnore=%s\n" % - repr(self.ignores)) - - if not isinstance(self.maps[0], tuple): - self.maps = (self.maps,) - if not isinstance(self.buffer_maps[0], tuple): - self.buffer_maps = (self.buffer_maps,) - - for key, m in self.maps: - if not len(key): continue - self.send(":smap %s %s\n" % (key,m)) - for key, m in self.buffer_maps: - if not len(key): continue - self.send(":smap <buffer> %s %s\n" % (key,m)) - - def _options_off(self): - for key, m in self.maps: - if not len(key): continue - self.send(":silent! sunmap %s\n" % key) - for key, m in self.buffer_maps: - if not len(key): continue - self.send(":silent! sunmap <buffer> %s\n" % key) - - self.send(":let g:UltiSnipsRemoveSelectModeMappings=1\n") - self.send(":let g:UltiSnipsMappingsToIgnore= []\n") - -class SelectModeMappings_RemoveBeforeSelecting_ECR(_SelectModeMappings): - maps = ("H", "x") - wanted = "Hello" -class SelectModeMappings_DisableRemoveBeforeSelecting_ECR(_SelectModeMappings): - do_unmapping = False - maps = ("H", "x") - wanted = "xello" -class SelectModeMappings_IgnoreMappings_ECR(_SelectModeMappings): - ignores = ["e"] - maps = ("H", "x"), ("e", "l") - wanted = "Hello" -class SelectModeMappings_IgnoreMappings1_ECR(_SelectModeMappings): - ignores = ["H"] - maps = ("H", "x"), ("e", "l") - wanted = "xello" -class SelectModeMappings_IgnoreMappings2_ECR(_SelectModeMappings): - ignores = ["e", "H"] - maps = ("e", "l"), ("H", "x") - wanted = "xello" -class SelectModeMappings_BufferLocalMappings_ECR(_SelectModeMappings): - buffer_maps = ("H", "blah") - wanted = "Hello" - -# End: Unmap SelectMode Mappings #}}} -# Folding Interaction {{{# -class FoldingEnabled_SnippetWithFold_ExpectNoFolding(_VimTest): - def _options_on(self): - self.send(":set foldlevel=0\n") - self.send(":set foldmethod=marker\n") - def _options_off(self): - self.send(":set foldlevel=0\n") - self.send(":set foldmethod=manual\n") - - snippets = ("test", r"""Hello {{{ -${1:Welt} }}}""") - keys = "test" + EX + "Ball" - wanted = """Hello {{{ -Ball }}}""" -class FoldOverwrite_Simple_ECR(_VimTest): - snippets = ("fold", -"""# ${1:Description} `!p snip.rv = vim.eval("&foldmarker").split(",")[0]` - -# End: $1 `!p snip.rv = vim.eval("&foldmarker").split(",")[1]`""") - keys = "fold" + EX + "hi" - wanted = "# hi {{{\n\n# End: hi }}}" -class Fold_DeleteMiddleLine_ECR(_VimTest): - snippets = ("fold", -"""# ${1:Description} `!p snip.rv = vim.eval("&foldmarker").split(",")[0]` - - -# End: $1 `!p snip.rv = vim.eval("&foldmarker").split(",")[1]`""") - keys = "fold" + EX + "hi" + ESC + "jdd" - wanted = "# hi {{{\n\n# End: hi }}}" - -class PerlSyntaxFold(_VimTest): - def _options_on(self): - self.send(":set foldlevel=0\n") - self.send(":syntax enable\n") - self.send(":set foldmethod=syntax\n") - self.send(":let g:perl_fold = 1\n") - self.send(":so $VIMRUNTIME/syntax/perl.vim\n") - def _options_off(self): - self.send(":set foldmethod=manual\n") - self.send(":syntax clear\n") - - snippets = ("test", r"""package ${1:`!v printf('c%02d', 3)`}; -${0} -1;""") - keys = "test" + EX + JF + "sub junk {}" - wanted = "package c03;\nsub junk {}\n1;" -# End: Folding Interaction #}}} -# Trailing whitespace {{{# -class RemoveTrailingWhitespace(_VimTest): - snippets = ("test", """Hello\t ${1:default}\n$2""", "", "s") - wanted = """Hello\nGoodbye""" - keys = "test" + EX + BS + JF + "Goodbye" -class LeaveTrailingWhitespace(_VimTest): - snippets = ("test", """Hello \t ${1:default}\n$2""") - wanted = """Hello \t \nGoodbye""" - keys = "test" + EX + BS + JF + "Goodbye" -# End: Trailing whitespace #}}} - -# Cursor Movement {{{# -class CursorMovement_Multiline_ECR(_VimTest): - snippets = ("test", r"$1 ${1:a tab}") - keys = "test" + EX + "this is something\nvery nice\nnot" + JF + "more text" - wanted = "this is something\nvery nice\nnot " \ - "this is something\nvery nice\nnotmore text" -class CursorMovement_BS_InEditMode(_VimTest): - def _options_on(self): - self.send(":set backspace=eol,indent,start\n") - - def _options_off(self): - self.send(":set backspace=\n") - snippets = ("<trh", "<tr>\n\t<th>$1</th>\n\t$2\n</tr>\n$3") - keys = "<trh" + EX + "blah" + JF + BS + BS + JF + "end" - wanted = "<tr>\n\t<th>blah</th>\n</tr>\nend" -# End: Cursor Movement #}}} -# Insert Mode Moving {{{# -class IMMoving_CursorsKeys_ECR(_VimTest): - snippets = ("test", "${1:Some}") - keys = "test" + EX + "text" + 3*ARR_U + 6*ARR_D - wanted = "text" -class IMMoving_AcceptInputWhenMoved_ECR(_VimTest): - snippets = ("test", r"$1 ${1:a tab}") - keys = "test" + EX + "this" + 2*ARR_L + "hallo\nwelt" - wanted = "thhallo\nweltis thhallo\nweltis" -class IMMoving_NoExiting_ECR(_VimTest): - snippets = ("test", r"$1 ${2:a tab} ${1:Tab}") - keys = "hello test this" + ESC + "02f i" + EX + "tab" + 7*ARR_L + \ - JF + "hallo" - wanted = "hello tab hallo tab this" -class IMMoving_NoExitingEventAtEnd_ECR(_VimTest): - snippets = ("test", r"$1 ${2:a tab} ${1:Tab}") - keys = "hello test this" + ESC + "02f i" + EX + "tab" + JF + "hallo" - wanted = "hello tab hallo tab this" -class IMMoving_ExitWhenOutsideRight_ECR(_VimTest): - snippets = ("test", r"$1 ${2:blub} ${1:Tab}") - keys = "hello test this" + ESC + "02f i" + EX + "tab" + ARR_R + JF + "hallo" - wanted = "hello tab blub tab " + JF + "hallothis" -class IMMoving_NotExitingWhenBarelyOutsideLeft_ECR(_VimTest): - snippets = ("test", r"${1:Hi} ${2:blub}") - keys = "hello test this" + ESC + "02f i" + EX + "tab" + 3*ARR_L + \ - JF + "hallo" - wanted = "hello tab hallo this" -class IMMoving_ExitWhenOutsideLeft_ECR(_VimTest): - snippets = ("test", r"${1:Hi} ${2:blub}") - keys = "hello test this" + ESC + "02f i" + EX + "tab" + 4*ARR_L + \ - JF + "hallo" - wanted = "hello" + JF + "hallo tab blub this" -class IMMoving_ExitWhenOutsideAbove_ECR(_VimTest): - snippets = ("test", "${1:Hi}\n${2:blub}") - keys = "hello test this" + ESC + "02f i" + EX + "tab" + 1*ARR_U + "\n" + JF + \ - "hallo" - wanted = JF + "hallo\nhello tab\nblub this" -class IMMoving_ExitWhenOutsideBelow_ECR(_VimTest): - snippets = ("test", "${1:Hi}\n${2:blub}") - keys = "hello test this" + ESC + "02f i" + EX + "tab" + 2*ARR_D + JF + \ - "testhallo\n" - wanted = "hello tab\nblub this\n" + JF + "testhallo" -# End: Insert Mode Moving #}}} -# Undo of Snippet insertion {{{# -class Undo_RemoveMultilineSnippet(_VimTest): - snippets = ("test", "Hello\naaa ${1} bbb\nWorld") - keys = "test" + EX + ESC + "u" + "inothing" - wanted = "nothing" -class Undo_RemoveEditInTabstop(_VimTest): - snippets = ("test", "$1 Hello\naaa ${1} bbb\nWorld") - keys = "hello test" + EX + "upsi" + ESC + "hh" + "iabcdef" + ESC + "u" - wanted = "hello upsi Hello\naaa upsi bbb\nWorld" -class Undo_RemoveWholeSnippet(_VimTest): - snippets = ("test", "Hello\n${1:Hello}World") - keys = "first line\n\n\n\n\n\nthird line" + \ - ESC + "3k0itest" + EX + ESC + "uiupsy" - wanted = "first line\n\n\nupsy\n\n\nthird line" -class JumpForward_DefSnippet(_VimTest): - snippets = ("test", "${1}\n`!p snip.rv = '\\n'.join(t[1].split())`\n\n${0:pass}") - keys = "test" + EX + "a b c" + JF + "shallnot" - wanted = "a b c\na\nb\nc\n\nshallnot" -class DeleteSnippetInsertion0(_VimTest): - snippets = ("test", "${1:hello} $1") - keys = "test" + EX + ESC + "Vkx" + "i\nworld\n" - wanted = "world" -class DeleteSnippetInsertion1(_VimTest): - snippets = ("test", r"$1${1/(.*)/(?0::.)/}") - keys = "test" + EX + ESC + "u" + "i" + JF + "\t" - wanted = "\t" -# End: Undo of Snippet insertion #}}} -# Tab Completion of Words {{{# -class Completion_SimpleExample_ECR(_VimTest): - snippets = ("test", "$1 ${1:blah}") - keys = "superkallifragilistik\ntest" + EX + "sup" + COMPL_KW + \ - COMPL_ACCEPT + " some more" - wanted = "superkallifragilistik\nsuperkallifragilistik some more " \ - "superkallifragilistik some more" - -# We need >2 different words with identical starts to create the -# popup-menu: -COMPLETION_OPTIONS = "completion1\ncompletion2\n" - -class Completion_ForwardsJumpWithoutCOMPL_ACCEPT(_VimTest): - # completions should not be truncated when JF is activated without having - # pressed COMPL_ACCEPT (Bug #598903) - snippets = ("test", "$1 $2") - keys = COMPLETION_OPTIONS + "test" + EX + "com" + COMPL_KW + JF + "foo" - wanted = COMPLETION_OPTIONS + "completion1 foo" - -class Completion_BackwardsJumpWithoutCOMPL_ACCEPT(_VimTest): - # completions should not be truncated when JB is activated without having - # pressed COMPL_ACCEPT (Bug #598903) - snippets = ("test", "$1 $2") - keys = COMPLETION_OPTIONS + "test" + EX + "foo" + JF + "com" + COMPL_KW + \ - JB + "foo" - wanted = COMPLETION_OPTIONS + "foo completion1" -# End: Tab Completion of Words #}}} -# Pressing BS in TabStop {{{# -# Test for Bug #774917 -class Backspace_TabStop_Zero(_VimTest): - snippets = ("test", "A${1:C} ${0:DDD}", "This is Case 1") - keys = "test" + EX + "A" + JF + BS + "BBB" - wanted = "AA BBB" - -class Backspace_TabStop_NotZero(_VimTest): - snippets = ("test", "A${1:C} ${2:DDD}", "This is Case 1") - keys = "test" + EX + "A" + JF + BS + "BBB" - wanted = "AA BBB" -# End: Pressing BS in TabStop #}}} -# Newline in default text {{{# -# Tests for bug 616315 # -class TrailingNewline_TabStop_NLInsideStuffBehind(_VimTest): - snippets = ("test", r""" -x${1: -}<-behind1 -$2<-behind2""") - keys = "test" + EX + "j" + JF + "k" - wanted = """ -xj<-behind1 -k<-behind2""" - -class TrailingNewline_TabStop_JustNL(_VimTest): - snippets = ("test", r""" -x${1: -} -$2""") - keys = "test" + EX + "j" + JF + "k" - wanted = """ -xj -k""" - -class TrailingNewline_TabStop_EndNL(_VimTest): - snippets = ("test", r""" -x${1:a -} -$2""") - keys = "test" + EX + "j" + JF + "k" - wanted = """ -xj -k""" - -class TrailingNewline_TabStop_StartNL(_VimTest): - snippets = ("test", r""" -x${1: -a} -$2""") - keys = "test" + EX + "j" + JF + "k" - wanted = """ -xj -k""" - -class TrailingNewline_TabStop_EndStartNL(_VimTest): - snippets = ("test", r""" -x${1: -a -} -$2""") - keys = "test" + EX + "j" + JF + "k" - wanted = """ -xj -k""" - -class TrailingNewline_TabStop_NotEndStartNL(_VimTest): - snippets = ("test", r""" -x${1:a -a} -$2""") - keys = "test" + EX + "j" + JF + "k" - wanted = """ -xj -k""" - -class TrailingNewline_TabStop_ExtraNL_ECR(_VimTest): - snippets = ("test", r""" -x${1:a -a} -$2 -""") - keys = "test" + EX + "j" + JF + "k" - wanted = """ -xj -k -""" - -class _MultiLineDefault(_VimTest): - snippets = ("test", r""" -x${1:a -b -c -d -e -f} -$2""") - -class MultiLineDefault_Jump(_MultiLineDefault): - keys = "test" + EX + JF + "y" - wanted = """ -xa -b -c -d -e -f -y""" - -class MultiLineDefault_Type(_MultiLineDefault): - keys = "test" + EX + "z" + JF + "y" - wanted = """ -xz -y""" - -class MultiLineDefault_BS(_MultiLineDefault): - keys = "test" + EX + BS + JF + "y" - wanted = """ -x -y""" - - - -# End: Newline in default text #}}} -# Quotes in Snippets {{{# -# Test for Bug #774917 -def _snip_quote(qt): - return ( - ("te" + qt + "st", "Expand me" + qt + "!", "test: "+qt), - ("te", "Bad", ""), - ) - -class Snippet_With_SingleQuote(_VimTest): - snippets = _snip_quote("'") - keys = "te'st" + EX - wanted = "Expand me'!" - -class Snippet_With_SingleQuote_List(_VimTest): - snippets = _snip_quote("'") - keys = "te" + LS + "2\n" - wanted = "Expand me'!" - -class Snippet_With_DoubleQuote(_VimTest): - snippets = _snip_quote('"') - keys = 'te"st' + EX - wanted = "Expand me\"!" - -class Snippet_With_DoubleQuote_List(_VimTest): - snippets = _snip_quote('"') - keys = "te" + LS + "2\n" - wanted = "Expand me\"!" -# End: Quotes in Snippets #}}} -# Umlauts and Special Chars {{{# -class _UmlautsBase(_VimTest): - skip_if = lambda self: running_on_windows() # SendKeys can't send UTF characters - -class Snippet_With_Umlauts_List(_UmlautsBase): - snippets = _snip_quote('ü') - keys = 'te' + LS + "2\n" - wanted = "Expand meü!" - -class Snippet_With_Umlauts(_UmlautsBase): - snippets = _snip_quote('ü') - keys = 'teüst' + EX - wanted = "Expand meü!" - -class Snippet_With_Umlauts_TypeOn(_UmlautsBase): - snippets = ('ül', 'üüüüüßßßß') - keys = 'te ül' + EX + "more text" - wanted = "te üüüüüßßßßmore text" -class Snippet_With_Umlauts_OverwriteFirst(_UmlautsBase): - snippets = ('ül', 'üü ${1:world} üü ${2:hello}ßß\nüüüü') - keys = 'te ül' + EX + "more text" + JF + JF + "end" - wanted = "te üü more text üü helloßß\nüüüüend" -class Snippet_With_Umlauts_OverwriteSecond(_UmlautsBase): - snippets = ('ül', 'üü ${1:world} üü ${2:hello}ßß\nüüüü') - keys = 'te ül' + EX + JF + "more text" + JF + "end" - wanted = "te üü world üü more textßß\nüüüüend" -class Snippet_With_Umlauts_OverwriteNone(_UmlautsBase): - snippets = ('ül', 'üü ${1:world} üü ${2:hello}ßß\nüüüü') - keys = 'te ül' + EX + JF + JF + "end" - wanted = "te üü world üü helloßß\nüüüüend" -class Snippet_With_Umlauts_Mirrors(_UmlautsBase): - snippets = ('ül', 'üü ${1:world} üü $1') - keys = 'te ül' + EX + "hello" - wanted = "te üü hello üü hello" -class Snippet_With_Umlauts_Python(_UmlautsBase): - snippets = ('ül', 'üü ${1:world} üü `!p snip.rv = len(t[1])*"a"`') - keys = 'te ül' + EX + "hüüll" - wanted = "te üü hüüll üü aaaaa" -# End: Umlauts and Special Chars #}}} -# Exclusive Selection {{{# -class _ES_Base(_VimTest): - def _options_on(self): - self.send(":set selection=exclusive\n") - def _options_off(self): - self.send(":set selection=inclusive\n") - -class ExclusiveSelection_SimpleTabstop_Test(_ES_Base): - snippets = ("test", "h${1:blah}w $1") - keys = "test" + EX + "ui" + JF - wanted = "huiw ui" - -class ExclusiveSelection_RealWorldCase_Test(_ES_Base): - snippets = ("for", -"""for ($${1:i} = ${2:0}; $$1 < ${3:count}; $$1${4:++}) { - ${5:// code} -}""") - keys = "for" + EX + "k" + JF - wanted = """for ($k = 0; $k < count; $k++) { - // code -}""" -# End: Exclusive Selection #}}} -# Normal mode editing {{{# -# Test for bug #927844 -class DeleteLastTwoLinesInSnippet(_VimTest): - snippets = ("test", "$1hello\nnice\nworld") - keys = "test" + EX + ESC + "j2dd" - wanted = "hello" -class DeleteCurrentTabStop1_JumpBack(_VimTest): - snippets = ("test", "${1:hi}\nend") - keys = "test" + EX + ESC + "ddi" + JB - wanted = "end" -class DeleteCurrentTabStop2_JumpBack(_VimTest): - snippets = ("test", "${1:hi}\n${2:world}\nend") - keys = "test" + EX + JF + ESC + "ddi" + JB + "hello" - wanted = "hello\nend" -class DeleteCurrentTabStop3_JumpAround(_VimTest): - snippets = ("test", "${1:hi}\n${2:world}\nend") - keys = "test" + EX + JF + ESC + "ddkji" + JB + "hello" + JF + "world" - wanted = "hello\nendworld" - -# End: Normal mode editing #}}} - -# 1251994 {{{# -# Test for bug #1251994 -class Bug1251994(_VimTest): - snippets = ("test", "${2:#2} ${1:#1};$0") - keys = " test" + EX + "hello" + JF + "world" + JF + "blub" - wanted = " world hello;blub" -# End: 1251994 #}}} - -# Test for Github Pull Request #134 - Retain unnamed register {{{# -class RetainsTheUnnamedRegister(_VimTest): - snippets = ("test", "${1:hello} ${2:world} ${0}") - keys = "yank" + ESC + "by4lea test" + EX + "HELLO" + JF + JF + ESC + "p" - wanted = "yank HELLO world yank" -class RetainsTheUnnamedRegister_ButOnlyOnce(_VimTest): - snippets = ("test", "${1:hello} ${2:world} ${0}") - keys = "blahfasel" + ESC + "v" + 4*ARR_L + "xotest" + EX + ESC + ARR_U + "v0xo" + ESC + "p" - wanted = "\nblah\nhello world " -# End: Github Pull Request # 134 #}}} - -class VerifyVimDict1(_VimTest): - """check: - correct type (4 means vim dictionary) - correct length of dictionary (in this case we have on element if the use same prefix, dictionary should have 1 element) - correct description (including the apostrophe) - if the prefix is mismatched no resulting dict should have 0 elements - """ - - snippets = ('testâ', 'abc123ά', '123\'êabc') - keys = ('test=(type(UltiSnips#SnippetsInCurrentScope()) . len(UltiSnips#SnippetsInCurrentScope()) . ' + - 'UltiSnips#SnippetsInCurrentScope()["testâ"]' + ')\n' + - '=len(UltiSnips#SnippetsInCurrentScope())\n') - - wanted = 'test41123\'êabc0' - -class VerifyVimDict2(_VimTest): - """check: - can use " in trigger - """ - - snippets = ('te"stâ', 'abc123ά', '123êabc') - akey = "'te{}stâ'".format('"') - keys = ('te"=(UltiSnips#SnippetsInCurrentScope()[{}]'.format(akey) + ')\n') - wanted = 'te"123êabc' - -class VerifyVimDict3(_VimTest): - """check: - can use ' in trigger - """ - - snippets = ("te'stâ", 'abc123ά', '123êabc') - akey = '"te{}stâ"'.format("'") - keys = ("te'=(UltiSnips#SnippetsInCurrentScope()[{}]".format(akey) + ')\n') - wanted = "te'123êabc" - -########################################################################### -# END OF TEST # -########################################################################### - - -if __name__ == '__main__': - import sys - import optparse - - def parse_args(): - p = optparse.OptionParser("%prog [OPTIONS] <test case names to run>") - - p.set_defaults(session="vim", interrupt=False, - verbose=False, interface="screen", retries=4) - - p.add_option("-v", "--verbose", dest="verbose", action="store_true", - help="print name of tests as they are executed") - p.add_option("--interface", type=str, - help="interface to vim to use on Mac and or Linux [screen|tmux].") - p.add_option("-s", "--session", dest="session", metavar="SESSION", - help="session parameters for the terminal multiplexer SESSION [%default]") - p.add_option("-i", "--interrupt", dest="interrupt", - action="store_true", - help="Stop after defining the snippet. This allows the user " \ - "to interactively test the snippet in vim. You must give " \ - "exactly one test case on the cmdline. The test will always fail." - ) - p.add_option("-r", "--retries", dest="retries", type=int, - help="How often should each test be retried before it is " - "considered failed. Works around flakyness in the terminal " - "multiplexer and race conditions in writing to the file system.") - - o, args = p.parse_args() - if o.interface not in ("screen", "tmux"): - p.error("--interface must be [screen|tmux].") - - return o, args - - options,selected_tests = parse_args() - - # The next line doesn't work in python 2.3 - test_loader = unittest.TestLoader() - all_test_suites = test_loader.loadTestsFromModule(__import__("test")) - - if platform.system() == "Windows": - vim = VimInterfaceWindows() - else: - if options.interface == "screen": - vim = VimInterfaceScreen(options.session) - elif options.interface == "tmux": - vim = VimInterfaceTmux(options.session) - - vim.focus() - - vim.send(ESC) - - # Ensure we are not running in VI-compatible mode. - vim.send(""":set nocompatible\n""") - - # Do not mess with the X clipboard - vim.send(""":set clipboard=""\n""") - - # Set encoding and fileencodings - vim.send(""":set encoding=utf-8\n""") - vim.send(""":set fileencoding=utf-8\n""") - - # Tell vim not to complain about quitting without writing - vim.send(""":set buftype=nofile\n""") - - # Ensure runtimepath includes only Vim's own runtime files - # and those of the UltiSnips directory under test ('.'). - vim.send(""":set runtimepath=$VIMRUNTIME,.\n""") - - # Set the options - vim.send(""":let g:UltiSnipsExpandTrigger="<tab>"\n""") - vim.send(""":let g:UltiSnipsJumpForwardTrigger="?"\n""") - vim.send(""":let g:UltiSnipsJumpBackwardTrigger="+"\n""") - vim.send(""":let g:UltiSnipsListSnippets="@"\n""") - if sys.version_info >= (3,0): - vim.send(""":let g:UltiSnipsUsePythonVersion="3"\n""") - else: - vim.send(""":let g:UltiSnipsUsePythonVersion="2"\n""") - - # Now, source our runtime - vim.send(":so plugin/UltiSnips.vim\n") - time.sleep(2) # Parsing and initializing UltiSnips takes a while. - - # Inform all test case which screen session to use - suite = unittest.TestSuite() - for s in all_test_suites: - for test in s: - test.vim = vim - test.interrupt = options.interrupt - test.retries = options.retries - if len(selected_tests): - id = test.id().split('.')[1] - if not any([ id.startswith(t) for t in selected_tests ]): - continue - suite.addTest(test) - - if options.verbose: - v = 2 - else: - v = 1 - res = unittest.TextTestRunner(verbosity=v).run(suite) - -# vim:fileencoding=utf-8:foldmarker={{{#,#}}}: diff --git a/test/__init__.py b/test/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/test/constant.py b/test/constant.py new file mode 100644 index 0000000..0e795e0 --- /dev/null +++ b/test/constant.py @@ -0,0 +1,24 @@ +import sys + +# Some constants for better reading +BS = '\x7f' +ESC = '\x1b' +ARR_L = '\x1bOD' +ARR_R = '\x1bOC' +ARR_U = '\x1bOA' +ARR_D = '\x1bOB' + +# multi-key sequences generating a single key press +SEQUENCES = [ARR_L, ARR_R, ARR_U, ARR_D] + +# Defined Constants +JF = '?' # Jump forwards +JB = '+' # Jump backwards +LS = '@' # List snippets +EX = '\t' # EXPAND +EA = '#' # Expand anonymous + +COMPL_KW = chr(24) + chr(14) +COMPL_ACCEPT = chr(25) + +PYTHON3 = sys.version_info >= (3, 0) diff --git a/test/test_AnonymousExpansion.py b/test/test_AnonymousExpansion.py new file mode 100644 index 0000000..f74d3ff --- /dev/null +++ b/test/test_AnonymousExpansion.py @@ -0,0 +1,67 @@ +from test.vim_test_case import VimTestCase as _VimTest +from test.constant import * + +# Anonymous Expansion {{{# + + +class _AnonBase(_VimTest): + args = '' + + def _extra_vim_config(self, vim_config): + vim_config.append('inoremap <silent> %s <C-R>=UltiSnips#Anon(%s)<cr>' + % (EA, self.args)) + + +class Anon_NoTrigger_Simple(_AnonBase): + args = '"simple expand"' + keys = 'abc' + EA + wanted = 'abcsimple expand' + + +class Anon_NoTrigger_AfterSpace(_AnonBase): + args = '"simple expand"' + keys = 'abc ' + EA + wanted = 'abc simple expand' + + +class Anon_NoTrigger_BeginningOfLine(_AnonBase): + args = r"':latex:\`$1\`$0'" + keys = EA + 'Hello' + JF + 'World' + wanted = ':latex:`Hello`World' + + +class Anon_NoTrigger_FirstCharOfLine(_AnonBase): + args = r"':latex:\`$1\`$0'" + keys = ' ' + EA + 'Hello' + JF + 'World' + wanted = ' :latex:`Hello`World' + + +class Anon_NoTrigger_Multi(_AnonBase): + args = '"simple $1 expand $1 $0"' + keys = 'abc' + EA + '123' + JF + '456' + wanted = 'abcsimple 123 expand 123 456' + + +class Anon_Trigger_Multi(_AnonBase): + args = '"simple $1 expand $1 $0", "abc"' + keys = '123 abc' + EA + '123' + JF + '456' + wanted = '123 simple 123 expand 123 456' + + +class Anon_Trigger_Simple(_AnonBase): + args = '"simple expand", "abc"' + keys = 'abc' + EA + wanted = 'simple expand' + + +class Anon_Trigger_Twice(_AnonBase): + args = '"simple expand", "abc"' + keys = 'abc' + EA + '\nabc' + EX + wanted = 'simple expand\nabc' + EX + + +class Anon_Trigger_Opts(_AnonBase): + args = '"simple expand", ".*abc", "desc", "r"' + keys = 'blah blah abc' + EA + wanted = 'simple expand' +# End: Anonymous Expansion #}}} diff --git a/test/test_Autocommands.py b/test/test_Autocommands.py new file mode 100644 index 0000000..bcb6a56 --- /dev/null +++ b/test/test_Autocommands.py @@ -0,0 +1,31 @@ +# encoding: utf-8 +from test.vim_test_case import VimTestCase as _VimTest +from test.constant import * + +# Autocommands {{{# + +class Autocommands(_VimTest): + snippets = ('test', '[ ${1:foo} ]') + args = '' + keys = 'test' + EX + 'test' + EX + 'bar' + JF + JF + ' done ' + ESC + \ + ':execute "normal aM" . g:mapper_call_count . "\<Esc>"' + "\n" + \ + ':execute "normal aU" . g:unmapper_call_count . "\<Esc>"' + "\n" + wanted = '[ [ bar ] ] done M1U1' + + def _extra_vim_config(self, vim_config): + vim_config.append('let g:mapper_call_count = 0') + vim_config.append('function! CustomMapper()') + vim_config.append(' let g:mapper_call_count += 1') + vim_config.append('endfunction') + + vim_config.append('let g:unmapper_call_count = 0') + vim_config.append('function! CustomUnmapper()') + vim_config.append(' let g:unmapper_call_count += 1') + vim_config.append('endfunction') + + vim_config.append('autocmd! User UltiSnipsEnterFirstSnippet') + vim_config.append('autocmd User UltiSnipsEnterFirstSnippet call CustomMapper()') + vim_config.append('autocmd! User UltiSnipsExitLastSnippet') + vim_config.append('autocmd User UltiSnipsExitLastSnippet call CustomUnmapper()') + +# end: Autocommands #}}} diff --git a/test/test_Autotrigger.py b/test/test_Autotrigger.py new file mode 100644 index 0000000..8fd23b8 --- /dev/null +++ b/test/test_Autotrigger.py @@ -0,0 +1,74 @@ +from test.vim_test_case import VimTestCase as _VimTest +from test.constant import * + +def check_required_vim_version(test): + if test.vim_flavor == 'neovim': + return None + if not test.vim.has_patch(214): + return 'Vim newer than 7.4.214 is required' + else: + return None + + +class Autotrigger_CanMatchSimpleTrigger(_VimTest): + skip_if = check_required_vim_version + files = { 'us/all.snippets': r""" + snippet a "desc" A + autotriggered + endsnippet + """} + keys = 'a' + wanted = 'autotriggered' + + +class Autotrigger_CanMatchContext(_VimTest): + skip_if = check_required_vim_version + files = { 'us/all.snippets': r""" + snippet a "desc" "snip.line == 2" Ae + autotriggered + endsnippet + """} + keys = 'a\na' + wanted = 'autotriggered\na' + + +class Autotrigger_CanExpandOnTriggerWithLengthMoreThanOne(_VimTest): + skip_if = check_required_vim_version + files = { 'us/all.snippets': r""" + snippet abc "desc" A + autotriggered + endsnippet + """} + keys = 'abc' + wanted = 'autotriggered' + + +class Autotrigger_WillProduceNoExceptionWithVimLowerThan214(_VimTest): + skip_if = lambda self: 'Vim older than 7.4.214 is required' \ + if self.vim.has_patch(214) else None + + files = { 'us/all.snippets': r""" + snippet abc "desc" A + autotriggered + endsnippet + """} + keys = 'abc' + wanted = 'abc' + + +class Autotrigger_CanMatchPreviouslySelectedPlaceholder(_VimTest): + if not test.vim.has_patch(214): + return 'Vim newer than 7.4.214 is required' + else: + return None + + files = { 'us/all.snippets': r""" + snippet if "desc" + if ${1:var}: pass + endsnippet + snippet = "desc" "snip.last_placeholder" Ae + `!p snip.rv = snip.context.current_text` == nil + endsnippet + """} + keys = 'if' + EX + '=' + ESC + 'o=' + wanted = 'if var == nil: pass\n=' diff --git a/test/test_Chars.py b/test/test_Chars.py new file mode 100644 index 0000000..93d81ba --- /dev/null +++ b/test/test_Chars.py @@ -0,0 +1,254 @@ +# encoding: utf-8 +from test.vim_test_case import VimTestCase as _VimTest +from test.constant import * +from test.util import running_on_windows + +# Quotes in Snippets {{{# +# Test for Bug #774917 + + +def _snip_quote(qt): + return ( + ('te' + qt + 'st', 'Expand me' + qt + '!', 'test: ' + qt), + ('te', 'Bad', ''), + ) + + +class Snippet_With_SingleQuote(_VimTest): + snippets = _snip_quote("'") + keys = "te'st" + EX + wanted = "Expand me'!" + + +class Snippet_With_SingleQuote_List(_VimTest): + snippets = _snip_quote("'") + keys = 'te' + LS + '2\n' + wanted = "Expand me'!" + + +class Snippet_With_DoubleQuote(_VimTest): + snippets = _snip_quote('"') + keys = 'te"st' + EX + wanted = "Expand me\"!" + + +class Snippet_With_DoubleQuote_List(_VimTest): + snippets = _snip_quote('"') + keys = 'te' + LS + '2\n' + wanted = "Expand me\"!" + +# End: Quotes in Snippets #}}} + +# Trailing whitespace {{{# + + +class RemoveTrailingWhitespace(_VimTest): + snippets = ('test', """Hello\t ${1:default}\n$2""", '', 's') + wanted = """Hello\nGoodbye""" + keys = 'test' + EX + BS + JF + 'Goodbye' + +class TrimSpacesAtEndOfLines(_VimTest): + snippets = ('test', """next line\n\nshould be empty""", '', 'm') + wanted = """\tnext line\n\n\tshould be empty""" + keys = '\ttest' + EX + +class DoNotTrimSpacesAtEndOfLinesByDefault(_VimTest): + snippets = ('test', """next line\n\nshould be empty""", '', '') + wanted = """\tnext line\n\t\n\tshould be empty""" + keys = '\ttest' + EX + + +class LeaveTrailingWhitespace(_VimTest): + snippets = ('test', """Hello \t ${1:default}\n$2""") + wanted = """Hello \t \nGoodbye""" + keys = 'test' + EX + BS + JF + 'Goodbye' +# End: Trailing whitespace #}}} + +# Newline in default text {{{# +# Tests for bug 616315 # + + +class TrailingNewline_TabStop_NLInsideStuffBehind(_VimTest): + snippets = ('test', r""" +x${1: +}<-behind1 +$2<-behind2""") + keys = 'test' + EX + 'j' + JF + 'k' + wanted = """ +xj<-behind1 +k<-behind2""" + + +class TrailingNewline_TabStop_JustNL(_VimTest): + snippets = ('test', r""" +x${1: +} +$2""") + keys = 'test' + EX + 'j' + JF + 'k' + wanted = """ +xj +k""" + + +class TrailingNewline_TabStop_EndNL(_VimTest): + snippets = ('test', r""" +x${1:a +} +$2""") + keys = 'test' + EX + 'j' + JF + 'k' + wanted = """ +xj +k""" + + +class TrailingNewline_TabStop_StartNL(_VimTest): + snippets = ('test', r""" +x${1: +a} +$2""") + keys = 'test' + EX + 'j' + JF + 'k' + wanted = """ +xj +k""" + + +class TrailingNewline_TabStop_EndStartNL(_VimTest): + snippets = ('test', r""" +x${1: +a +} +$2""") + keys = 'test' + EX + 'j' + JF + 'k' + wanted = """ +xj +k""" + + +class TrailingNewline_TabStop_NotEndStartNL(_VimTest): + snippets = ('test', r""" +x${1:a +a} +$2""") + keys = 'test' + EX + 'j' + JF + 'k' + wanted = """ +xj +k""" + + +class TrailingNewline_TabStop_ExtraNL_ECR(_VimTest): + snippets = ('test', r""" +x${1:a +a} +$2 +""") + keys = 'test' + EX + 'j' + JF + 'k' + wanted = """ +xj +k +""" + + +class _MultiLineDefault(_VimTest): + snippets = ('test', r""" +x${1:a +b +c +d +e +f} +$2""") + + +class MultiLineDefault_Jump(_MultiLineDefault): + keys = 'test' + EX + JF + 'y' + wanted = """ +xa +b +c +d +e +f +y""" + + +class MultiLineDefault_Type(_MultiLineDefault): + keys = 'test' + EX + 'z' + JF + 'y' + wanted = """ +xz +y""" + + +class MultiLineDefault_BS(_MultiLineDefault): + keys = 'test' + EX + BS + JF + 'y' + wanted = """ +x +y""" + +# End: Newline in default text #}}} + +# Umlauts and Special Chars {{{# + + +class _UmlautsBase(_VimTest): + # SendKeys can't send UTF characters + skip_if = lambda self: running_on_windows() + + +class Snippet_With_Umlauts_List(_UmlautsBase): + snippets = _snip_quote('ü') + keys = 'te' + LS + '2\n' + wanted = 'Expand meü!' + + +class Snippet_With_Umlauts(_UmlautsBase): + snippets = _snip_quote('ü') + keys = 'teüst' + EX + wanted = 'Expand meü!' + + +class Snippet_With_Umlauts_TypeOn(_UmlautsBase): + snippets = ('ül', 'üüüüüßßßß') + keys = 'te ül' + EX + 'more text' + wanted = 'te üüüüüßßßßmore text' + + +class Snippet_With_Umlauts_OverwriteFirst(_UmlautsBase): + snippets = ('ül', 'üü ${1:world} üü ${2:hello}ßß\nüüüü') + keys = 'te ül' + EX + 'more text' + JF + JF + 'end' + wanted = 'te üü more text üü helloßß\nüüüüend' + + +class Snippet_With_Umlauts_OverwriteSecond(_UmlautsBase): + snippets = ('ül', 'üü ${1:world} üü ${2:hello}ßß\nüüüü') + keys = 'te ül' + EX + JF + 'more text' + JF + 'end' + wanted = 'te üü world üü more textßß\nüüüüend' + + +class Snippet_With_Umlauts_OverwriteNone(_UmlautsBase): + snippets = ('ül', 'üü ${1:world} üü ${2:hello}ßß\nüüüü') + keys = 'te ül' + EX + JF + JF + 'end' + wanted = 'te üü world üü helloßß\nüüüüend' + + +class Snippet_With_Umlauts_Mirrors(_UmlautsBase): + snippets = ('ül', 'üü ${1:world} üü $1') + keys = 'te ül' + EX + 'hello' + wanted = 'te üü hello üü hello' + + +class Snippet_With_Umlauts_Python(_UmlautsBase): + snippets = ('ül', 'üü ${1:world} üü `!p snip.rv = len(t[1])*"a"`') + keys = 'te ül' + EX + 'hüüll' + wanted = 'te üü hüüll üü aaaaa' + +class UmlautsBeforeTriggerAndCharsAfter(_UmlautsBase): + snippets = ('trig', 'success') + keys = 'ööuu trig b' + 2 * ARR_L + EX + wanted = 'ööuu success b' + +class NoUmlautsBeforeTriggerAndCharsAfter(_UmlautsBase): + snippets = ('trig', 'success') + keys = 'oouu trig b' + 2 * ARR_L + EX + wanted = 'oouu success b' + +# End: Umlauts and Special Chars #}}} diff --git a/test/test_Completion.py b/test/test_Completion.py new file mode 100644 index 0000000..0d95c61 --- /dev/null +++ b/test/test_Completion.py @@ -0,0 +1,34 @@ +from test.vim_test_case import VimTestCase as _VimTest +from test.constant import * + +# Tab Completion of Words {{{# + + +class Completion_SimpleExample_ECR(_VimTest): + snippets = ('test', '$1 ${1:blah}') + keys = 'superkallifragilistik\ntest' + EX + 'sup' + COMPL_KW + \ + COMPL_ACCEPT + ' some more' + wanted = 'superkallifragilistik\nsuperkallifragilistik some more ' \ + 'superkallifragilistik some more' + +# We need >2 different words with identical starts to create the +# popup-menu: +COMPLETION_OPTIONS = 'completion1\ncompletion2\n' + + +class Completion_ForwardsJumpWithoutCOMPL_ACCEPT(_VimTest): + # completions should not be truncated when JF is activated without having + # pressed COMPL_ACCEPT (Bug #598903) + snippets = ('test', '$1 $2') + keys = COMPLETION_OPTIONS + 'test' + EX + 'com' + COMPL_KW + JF + 'foo' + wanted = COMPLETION_OPTIONS + 'completion1 foo' + + +class Completion_BackwardsJumpWithoutCOMPL_ACCEPT(_VimTest): + # completions should not be truncated when JB is activated without having + # pressed COMPL_ACCEPT (Bug #598903) + snippets = ('test', '$1 $2') + keys = COMPLETION_OPTIONS + 'test' + EX + 'foo' + JF + 'com' + COMPL_KW + \ + JB + 'foo' + wanted = COMPLETION_OPTIONS + 'foo completion1' +# End: Tab Completion of Words #}}} diff --git a/test/test_ContextSnippets.py b/test/test_ContextSnippets.py new file mode 100644 index 0000000..14e048a --- /dev/null +++ b/test/test_ContextSnippets.py @@ -0,0 +1,166 @@ +from test.constant import * +from test.vim_test_case import VimTestCase as _VimTest + + +class ContextSnippets_SimpleSnippet(_VimTest): + files = { 'us/all.snippets': r""" + snippet a "desc" "True" e + abc + endsnippet + """} + keys = 'a' + EX + wanted = 'abc' + + +class ContextSnippets_ExpandOnTrue(_VimTest): + files = { 'us/all.snippets': r""" + global !p + def check_context(): + return True + endglobal + + snippet a "desc" "check_context()" e + abc + endsnippet + """} + keys = 'a' + EX + wanted = 'abc' + + +class ContextSnippets_DoNotExpandOnFalse(_VimTest): + files = { 'us/all.snippets': r""" + global !p + def check_context(): + return False + endglobal + + snippet a "desc" "check_context()" e + abc + endsnippet + """} + keys = 'a' + EX + wanted = keys + + +class ContextSnippets_UseContext(_VimTest): + files = { 'us/all.snippets': r""" + global !p + def wrap(ins): + return "< " + ins + " >" + endglobal + + snippet a "desc" "wrap(snip.buffer[snip.line])" e + { `!p snip.rv = context` } + endsnippet + """} + keys = 'a' + EX + wanted = '{ < a > }' + + +class ContextSnippets_SnippetPriority(_VimTest): + files = { 'us/all.snippets': r""" + snippet i "desc" "re.search('err :=', snip.buffer[snip.line-1])" e + if err != nil { + ${1:// pass} + } + endsnippet + + snippet i + if ${1:true} { + ${2:// pass} + } + endsnippet + """} + + keys = r""" + err := some_call() + i""" + EX + JF + """ + i""" + EX + wanted = r""" + err := some_call() + if err != nil { + // pass + } + if true { + // pass + }""" + + +class ContextSnippets_PriorityKeyword(_VimTest): + files = { 'us/all.snippets': r""" + snippet i "desc" "True" e + a + endsnippet + + priority 100 + snippet i + b + endsnippet + """} + + keys = 'i' + EX + wanted = 'b' + + +class ContextSnippets_ReportError(_VimTest): + files = { 'us/all.snippets': r""" + snippet e "desc" "Tru" e + error + endsnippet + """} + + keys = 'e' + EX + wanted = 'e' + EX + expected_error = r"NameError: name 'Tru' is not defined" + + +class ContextSnippets_ReportErrorOnIndexOutOfRange(_VimTest): + # Working around: https://github.com/neovim/python-client/issues/128. + skip_if = lambda self: 'Bug in Neovim.' \ + if self.vim_flavor == 'neovim' else None + files = { 'us/all.snippets': r""" + snippet e "desc" "snip.buffer[123]" e + error + endsnippet + """} + + keys = 'e' + EX + wanted = 'e' + EX + expected_error = r"IndexError: line number out of range" + + +class ContextSnippets_CursorIsZeroBased(_VimTest): + files = { 'us/all.snippets': r""" + snippet e "desc" "snip.cursor" e + `!p snip.rv = str(snip.context)` + endsnippet + """} + + keys = "e" + EX + wanted = "(2, 1)" + +class ContextSnippets_ContextIsClearedBeforeExpand(_VimTest): + files = { 'us/all.snippets': r""" + pre_expand "snip.context = 1 if snip.context is None else 2" + snippet e "desc" w + `!p snip.rv = str(snip.context)` + endsnippet + """} + + keys = "e" + EX + " " + "e" + EX + wanted = "1 1" + +class ContextSnippets_ContextHasAccessToVisual(_VimTest): + files = { 'us/all.snippets': r""" + snippet test "desc" "snip.visual_text == '123'" we + Yes + endsnippet + + snippet test "desc" w + No + endsnippet + """} + + keys = "123" + ESC + "vhh" + EX + "test" + EX + " zzz" + ESC + \ + "vhh" + EX + "test" + EX + wanted = "Yes No" diff --git a/test/test_Editing.py b/test/test_Editing.py new file mode 100644 index 0000000..e200f0b --- /dev/null +++ b/test/test_Editing.py @@ -0,0 +1,152 @@ +from test.vim_test_case import VimTestCase as _VimTest +from test.constant import * + + +def check_required_vim_version(test): + if test.vim_flavor == 'neovim': + return None + if not test.vim.has_patch(1): + return 'Vim newer than 7.4.1 is required' + else: + return None + + +# Undo of Snippet insertion {{{# + + +class Undo_RemoveMultilineSnippet(_VimTest): + snippets = ('test', 'Hello\naaa ${1} bbb\nWorld') + keys = 'test' + EX + ESC + 'u' + wanted = 'test' + + +class Undo_RemoveEditInTabstop(_VimTest): + snippets = ('test', '$1 Hello\naaa ${1} bbb\nWorld') + keys = 'hello test' + EX + 'upsi' + ESC + 'hh' + 'iabcdef' + ESC + 'u' + wanted = 'hello upsi Hello\naaa upsi bbb\nWorld' + + +class Undo_RemoveWholeSnippet(_VimTest): + snippets = ('test', 'Hello\n${1:Hello}World') + keys = 'first line\n\n\n\n\n\nthird line' + \ + ESC + '3k0itest' + EX + ESC + 'u6j' + wanted = 'first line\n\n\ntest\n\n\nthird line' + + +class Undo_RemoveOneSnippetByTime(_VimTest): + snippets = ('i', 'if:\n\t$1') + keys = 'i' + EX + 'i' + EX + ESC + 'u' + wanted = 'if:\n\ti' + + +class Undo_RemoveOneSnippetByTime2(_VimTest): + snippets = ('i', 'if:\n\t$1') + keys = 'i' + EX + 'i' + EX + ESC + 'uu' + wanted = 'if:\n\t' + + +class Undo_ChangesInPlaceholder(_VimTest): + snippets = ('i', 'if $1:\n\t$2') + keys = 'i' + EX + 'asd' + JF + ESC + 'u' + wanted = 'if :\n\t' + + +class Undo_CompletelyUndoSnippet(_VimTest): + snippets = ('i', 'if $1:\n\t$2') + # undo 'feh' + # undo 'asd' + # undo snippet expansion + # undo entering of 'i' + keys = 'i' + EX + 'asd' + JF + 'feh' + ESC + 'uuuu' + wanted = '' + + +class JumpForward_DefSnippet(_VimTest): + snippets = ( + 'test', + "${1}\n`!p snip.rv = '\\n'.join(t[1].split())`\n\n${0:pass}") + keys = 'test' + EX+ 'a b c' + JF + 'shallnot' + wanted = 'a b c\na\nb\nc\n\nshallnot' + + +class DeleteSnippetInsertion0(_VimTest): + snippets = ('test', '${1:hello} $1') + keys = 'test' + EX + ESC + 'Vkx' + 'i\nworld\n' + wanted = 'world' + + +class DeleteSnippetInsertion1(_VimTest): + snippets = ('test', r"$1${1/(.*)/(?0::.)/}") + keys = 'test' + EX + ESC + 'u' + wanted = 'test' + +class DoNotCrashOnUndoAndJumpInNestedSnippet(_VimTest): + snippets = ('test', r"if $1: $2") + keys = 'test' + EX + 'a' + JF + 'test' + EX + ESC + 'u' + JF + wanted = 'if a: test' +# End: Undo of Snippet insertion #}}} + +# Normal mode editing {{{# +# Test for bug #927844 + + +class DeleteLastTwoLinesInSnippet(_VimTest): + snippets = ('test', '$1hello\nnice\nworld') + keys = 'test' + EX + ESC + 'j2dd' + wanted = 'hello' + + +class DeleteCurrentTabStop1_JumpBack(_VimTest): + snippets = ('test', '${1:hi}\nend') + keys = 'test' + EX + ESC + 'ddi' + JB + wanted = 'end' + + +class DeleteCurrentTabStop2_JumpBack(_VimTest): + snippets = ('test', '${1:hi}\n${2:world}\nend') + keys = 'test' + EX + JF + ESC + 'ddi' + JB + 'hello' + wanted = 'hello\nend' + + +class DeleteCurrentTabStop3_JumpAround(_VimTest): + snippets = ('test', '${1:hi}\n${2:world}\nend') + keys = 'test' + EX + JF + ESC + 'ddkji' + JB + 'hello' + JF + 'world' + wanted = 'hello\nendworld' + +# End: Normal mode editing #}}} + +# Pressing BS in TabStop {{{# +# Test for Bug #774917 + + +class Backspace_TabStop_Zero(_VimTest): + snippets = ('test', 'A${1:C} ${0:DDD}', 'This is Case 1') + keys = 'test' + EX + 'A' + JF + BS + 'BBB' + wanted = 'AA BBB' + + +class Backspace_TabStop_NotZero(_VimTest): + snippets = ('test', 'A${1:C} ${2:DDD}', 'This is Case 1') + keys = 'test' + EX + 'A' + JF + BS + 'BBB' + wanted = 'AA BBB' +# End: Pressing BS in TabStop #}}} + +class UpdateModifiedSnippetWithoutCursorMove(_VimTest): + skip_if = check_required_vim_version + snippets = ('test', '${1:one}(${2:xxx})${3:three}') + keys = 'test' + EX + 'aaaaa' + JF + BS + JF + '3333' + wanted = 'aaaaa()3333' + +class UpdateModifiedSnippetWithoutCursorMove2(_VimTest): + skip_if = check_required_vim_version + snippets = ('test', '''\ +private function ${1:functionName}(${2:arguments}):${3:Void} +{ + ${VISUAL}$0 +}''') + keys = 'test' + EX + 'a' + JF + BS + JF + 'Int' + JF + 'body' + wanted = '''\ +private function a():Int +{ + body +}''' diff --git a/test/test_Expand.py b/test/test_Expand.py new file mode 100644 index 0000000..d231838 --- /dev/null +++ b/test/test_Expand.py @@ -0,0 +1,73 @@ +from test.vim_test_case import VimTestCase as _VimTest +from test.constant import * + +# Simple Expands {{{# + + +class _SimpleExpands(_VimTest): + snippets = ('hallo', 'Hallo Welt!') + + +class SimpleExpand_ExpectCorrectResult(_SimpleExpands): + keys = 'hallo' + EX + wanted = 'Hallo Welt!' + + +class SimpleExpandTwice_ExpectCorrectResult(_SimpleExpands): + keys = 'hallo' + EX + '\nhallo' + EX + wanted = 'Hallo Welt!\nHallo Welt!' + + +class SimpleExpandNewLineAndBackspae_ExpectCorrectResult(_SimpleExpands): + keys = 'hallo' + EX + '\nHallo Welt!\n\n\b\b\b\b\b' + wanted = 'Hallo Welt!\nHallo We' + + def _extra_vim_config(self, vim_config): + vim_config.append('set backspace=eol,start') + + +class SimpleExpandTypeAfterExpand_ExpectCorrectResult(_SimpleExpands): + keys = 'hallo' + EX + 'and again' + wanted = 'Hallo Welt!and again' + + +class SimpleExpandTypeAndDelete_ExpectCorrectResult(_SimpleExpands): + keys = 'na du hallo' + EX + 'and again\b\b\b\b\bblub' + wanted = 'na du Hallo Welt!and blub' + + +class DoNotExpandAfterSpace_ExpectCorrectResult(_SimpleExpands): + keys = 'hallo ' + EX + wanted = 'hallo ' + EX + + +class ExitSnippetModeAfterTabstopZero(_VimTest): + snippets = ('test', 'SimpleText') + keys = 'test' + EX + EX + wanted = 'SimpleText' + EX + + +class ExpandInTheMiddleOfLine_ExpectCorrectResult(_SimpleExpands): + keys = 'Wie hallo gehts' + ESC + 'bhi' + EX + wanted = 'Wie Hallo Welt! gehts' + + +class MultilineExpand_ExpectCorrectResult(_VimTest): + snippets = ('hallo', 'Hallo Welt!\nUnd Wie gehts') + keys = 'Wie hallo gehts' + ESC + 'bhi' + EX + wanted = 'Wie Hallo Welt!\nUnd Wie gehts gehts' + + +class MultilineExpandTestTyping_ExpectCorrectResult(_VimTest): + snippets = ('hallo', 'Hallo Welt!\nUnd Wie gehts') + wanted = 'Wie Hallo Welt!\nUnd Wie gehtsHuiui! gehts' + keys = 'Wie hallo gehts' + ESC + 'bhi' + EX + 'Huiui!' + + +class SimpleExpandEndingWithNewline_ExpectCorrectResult(_VimTest): + snippets = ('hallo', 'Hallo Welt\n') + keys = 'hallo' + EX + '\nAnd more' + wanted = 'Hallo Welt\n\nAnd more' + + +# End: Simple Expands #}}} diff --git a/test/test_Fixes.py b/test/test_Fixes.py new file mode 100644 index 0000000..5ceef5d --- /dev/null +++ b/test/test_Fixes.py @@ -0,0 +1,84 @@ +from test.vim_test_case import VimTestCase as _VimTest +from test.constant import * + +# Test for bug 1251994 {{{# + + +class Bug1251994(_VimTest): + snippets = ('test', '${2:#2} ${1:#1};$0') + keys = ' test' + EX + 'hello' + JF + 'world' + JF + 'blub' + wanted = ' world hello;blub' +# End: 1251994 #}}} + +# Test for https://github.com/SirVer/ultisnips/issues/157 (virtualedit) {{{# + + +class VirtualEdit(_VimTest): + snippets = ('pd', 'padding: ${1:0}px') + keys = '\t\t\tpd' + EX + '2' + wanted = '\t\t\tpadding: 2px' + + def _extra_vim_config(self, vim_config): + vim_config.append('set virtualedit=all') + vim_config.append('set noexpandtab') +# End: 1251994 #}}} + +# Test for Github Pull Request #134 - Retain unnamed register {{{# + + +class RetainsTheUnnamedRegister(_VimTest): + snippets = ('test', '${1:hello} ${2:world} ${0}') + keys = 'yank' + ESC + 'by4lea test' + EX + 'HELLO' + JF + JF + ESC + 'p' + wanted = 'yank HELLO world yank' + + +class RetainsTheUnnamedRegister_ButOnlyOnce(_VimTest): + snippets = ('test', '${1:hello} ${2:world} ${0}') + keys = 'blahfasel' + ESC + 'v' + 4 * ARR_L + \ + 'xotest' + EX + ESC + ARR_U + 'v0xo' + ESC + 'p' + wanted = '\nblah\nhello world ' +# End: Github Pull Request # 134 #}}} + +# Test to ensure that shiftwidth follows tabstop when it's set to zero post +# version 7.3.693. Prior to that version a shiftwidth of zero effectively +# removes tabs. + + +class ShiftWidthZero(_VimTest): + + def _extra_vim_config(self, vim_config): + vim_config += [ + "if exists('*shiftwidth')", + ' set shiftwidth=0', + 'endif', + ] + snippets = ('test', '\t${1}${0}') + keys = 'test' + EX + 'foo' + wanted = '\tfoo' + +# Test for https://github.com/SirVer/ultisnips/issues/171 {{{# +# Make sure that we don't crash when trying to save and restore the clipboard +# when it contains data that we can't coerce into Unicode. + + +class NonUnicodeDataInUnnamedRegister(_VimTest): + snippets = ('test', 'hello') + keys = 'test' + EX + ESC + \ + '\n'.join([':redir @a', + ':messages', + ':redir END', + (":if match(@a, 'Error') != -1 | " + + "call setline('.', 'error detected') | " + + '3put a | ' + + 'endif'), + '']) + wanted = 'hello' + + def _before_test(self): + # The string below was the one a user had on their clipboard when + # encountering the UnicodeDecodeError and could not be coerced into + # unicode. + self.vim.send_to_vim( + ':let @" = "\\x80kdI{\\x80@7 1},' + + '\\x80kh\\x80kh\\x80kd\\x80kdq\\x80kb\\x1b"\n') +# End: #171 #}}} diff --git a/test/test_Folding.py b/test/test_Folding.py new file mode 100644 index 0000000..3a31f77 --- /dev/null +++ b/test/test_Folding.py @@ -0,0 +1,51 @@ +from test.vim_test_case import VimTestCase as _VimTest +from test.constant import * + +# Folding Interaction {{{# + + +class FoldingEnabled_SnippetWithFold_ExpectNoFolding(_VimTest): + + def _extra_vim_config(self, vim_config): + vim_config.append('set foldlevel=0') + vim_config.append('set foldmethod=marker') + snippets = ('test', r"""Hello {{{ +${1:Welt} }}}""") + keys = 'test' + EX + 'Ball' + wanted = """Hello {{{ +Ball }}}""" + + +class FoldOverwrite_Simple_ECR(_VimTest): + snippets = ('fold', + """# ${1:Description} `!p snip.rv = vim.eval("&foldmarker").split(",")[0]` + +# End: $1 `!p snip.rv = vim.eval("&foldmarker").split(",")[1]`""") + keys = 'fold' + EX + 'hi' + wanted = '# hi {{{\n\n# End: hi }}}' + + +class Fold_DeleteMiddleLine_ECR(_VimTest): + snippets = ('fold', + """# ${1:Description} `!p snip.rv = vim.eval("&foldmarker").split(",")[0]` + + +# End: $1 `!p snip.rv = vim.eval("&foldmarker").split(",")[1]`""") + keys = 'fold' + EX + 'hi' + ESC + 'jdd' + wanted = '# hi {{{\n\n# End: hi }}}' + + +class PerlSyntaxFold(_VimTest): + + def _extra_vim_config(self, vim_config): + vim_config.append('set foldlevel=0') + vim_config.append('syntax enable') + vim_config.append('set foldmethod=syntax') + vim_config.append('let g:perl_fold = 1') + vim_config.append('so $VIMRUNTIME/syntax/perl.vim') + snippets = ('test', r"""package ${1:`!v printf('c%02d', 3)`}; +${0} +1;""") + keys = 'test' + EX + JF + 'sub junk {}' + wanted = 'package c03;\nsub junk {}\n1;' +# End: Folding Interaction #}}} diff --git a/test/test_Format.py b/test/test_Format.py new file mode 100644 index 0000000..905e77e --- /dev/null +++ b/test/test_Format.py @@ -0,0 +1,157 @@ +from test.vim_test_case import VimTestCase as _VimTest +from test.constant import * +from test.util import running_on_windows + +# ExpandTab {{{# + + +class _ExpandTabs(_VimTest): + + def _extra_vim_config(self, vim_config): + vim_config.append('set sw=3') + vim_config.append('set expandtab') + + +class RecTabStopsWithExpandtab_SimpleExample_ECR(_ExpandTabs): + snippets = ('m', '\tBlaahblah \t\t ') + keys = 'm' + EX + wanted = ' Blaahblah \t\t ' + + +class RecTabStopsWithExpandtab_SpecialIndentProblem_ECR(_ExpandTabs): + # Windows indents the Something line after pressing return, though it + # shouldn't because it contains a manual indent. All other vim versions do + # not do this. Windows vim does not interpret the changes made by :py as + # changes made 'manually', while the other vim version seem to do so. Since + # the fault is not with UltiSnips, we simply skip this test on windows + # completely. + skip_if = lambda self: running_on_windows() + snippets = ( + ('m1', 'Something'), + ('m', '\t$0'), + ) + keys = 'm' + EX + 'm1' + EX + '\nHallo' + wanted = ' Something\n Hallo' + + def _extra_vim_config(self, vim_config): + _ExpandTabs._extra_vim_config(self, vim_config) + vim_config.append('set indentkeys=o,O,*<Return>,<>>,{,}') + vim_config.append('set indentexpr=8') +# End: ExpandTab #}}} + +# Proper Indenting {{{# + + +class ProperIndenting_SimpleCase_ECR(_VimTest): + snippets = ('test', 'for\n blah') + keys = ' test' + EX + 'Hui' + wanted = ' for\n blahHui' + + +class ProperIndenting_SingleLineNoReindenting_ECR(_VimTest): + snippets = ('test', 'hui') + keys = ' test' + EX + 'blah' + wanted = ' huiblah' + + +class ProperIndenting_AutoIndentAndNewline_ECR(_VimTest): + snippets = ('test', 'hui') + keys = ' test' + EX + '\n' + 'blah' + wanted = ' hui\n blah' + + def _extra_vim_config(self, vim_config): + vim_config.append('set autoindent') +# Test for bug 1073816 + + +class ProperIndenting_FirstLineInFile_ECR(_VimTest): + text_before = '' + text_after = '' + files = { 'us/all.snippets': r""" +global !p +def complete(t, opts): + if t: + opts = [ m[len(t):] for m in opts if m.startswith(t) ] + if len(opts) == 1: + return opts[0] + elif len(opts) > 1: + return "(" + "|".join(opts) + ")" + else: + return "" +endglobal + +snippet '^#?inc' "#include <>" !r +#include <$1`!p snip.rv = complete(t[1], ['cassert', 'cstdio', 'cstdlib', 'cstring', 'fstream', 'iostream', 'sstream'])`> +endsnippet + """} + keys = 'inc' + EX + 'foo' + wanted = '#include <foo>' + + +class ProperIndenting_FirstLineInFileComplete_ECR( + ProperIndenting_FirstLineInFile_ECR): + keys = 'inc' + EX + 'cstdl' + wanted = '#include <cstdlib>' +# End: Proper Indenting #}}} + +# Format options tests {{{# + + +class _FormatoptionsBase(_VimTest): + + def _extra_vim_config(self, vim_config): + vim_config.append('set tw=20') + vim_config.append('set fo=lrqntc') + + +class FOSimple_Break_ExpectCorrectResult(_FormatoptionsBase): + snippets = ('test', '${1:longer expand}\n$1\n$0', '', 'f') + keys = 'test' + EX + \ + 'This is a longer text that should wrap as formatoptions are enabled' + \ + JF + 'end' + wanted = 'This is a longer\ntext that should\nwrap as\nformatoptions are\nenabled\n' + \ + 'This is a longer\ntext that should\nwrap as\nformatoptions are\nenabled\n' + \ + 'end' + + +class FOTextBeforeAndAfter_ExpectCorrectResult(_FormatoptionsBase): + snippets = ('test', 'Before${1:longer expand}After\nstart$1end') + keys = 'test' + EX + 'This is a longer text that should wrap' + wanted = \ + """BeforeThis is a +longer text that +should wrapAfter +startThis is a +longer text that +should wrapend""" + + +# Tests for https://bugs.launchpad.net/bugs/719998 +class FOTextAfter_ExpectCorrectResult(_FormatoptionsBase): + snippets = ('test', '${1:longer expand}after\nstart$1end') + keys = ('test' + EX + 'This is a longer snippet that should wrap properly ' + 'and the mirror below should work as well') + wanted = \ + """This is a longer +snippet that should +wrap properly and +the mirror below +should work as wellafter +startThis is a longer +snippet that should +wrap properly and +the mirror below +should work as wellend""" + + +class FOWrapOnLongWord_ExpectCorrectResult(_FormatoptionsBase): + snippets = ('test', '${1:longer expand}after\nstart$1end') + keys = ('test' + EX + 'This is a longersnippet that should wrap properly') + wanted = \ + """This is a +longersnippet that +should wrap properlyafter +startThis is a +longersnippet that +should wrap properlyend""" +# End: Format options tests #}}} diff --git a/test/test_Interpolation.py b/test/test_Interpolation.py new file mode 100644 index 0000000..f51935b --- /dev/null +++ b/test/test_Interpolation.py @@ -0,0 +1,491 @@ +# encoding: utf-8 +import os + +from test.vim_test_case import VimTestCase as _VimTest +from test.constant import EX, JF, ESC +from test.util import running_on_windows + +# ShellCode Interpolation {{{# + + +class TabStop_Shell_SimpleExample(_VimTest): + skip_if = lambda self: running_on_windows() + snippets = ('test', 'hi `echo hallo` you!') + keys = 'test' + EX + 'and more' + wanted = 'hi hallo you!and more' + + +class TabStop_Shell_WithUmlauts(_VimTest): + skip_if = lambda self: running_on_windows() + snippets = ('test', 'hi `echo höüäh` you!') + keys = 'test' + EX + 'and more' + wanted = 'hi höüäh you!and more' + + +class TabStop_Shell_TextInNextLine(_VimTest): + skip_if = lambda self: running_on_windows() + snippets = ('test', 'hi `echo hallo`\nWeiter') + keys = 'test' + EX + 'and more' + wanted = 'hi hallo\nWeiterand more' + + +class TabStop_Shell_InDefValue_Leave(_VimTest): + skip_if = lambda self: running_on_windows() + snippets = ('test', 'Hallo ${1:now `echo fromecho`} end') + keys = 'test' + EX + JF + 'and more' + wanted = 'Hallo now fromecho endand more' + + +class TabStop_Shell_InDefValue_Overwrite(_VimTest): + skip_if = lambda self: running_on_windows() + snippets = ('test', 'Hallo ${1:now `echo fromecho`} end') + keys = 'test' + EX + 'overwrite' + JF + 'and more' + wanted = 'Hallo overwrite endand more' + + +class TabStop_Shell_TestEscapedChars_Overwrite(_VimTest): + skip_if = lambda self: running_on_windows() + snippets = ('test', r"""`echo \`echo "\\$hi"\``""") + keys = 'test' + EX + wanted = '$hi' + + +class TabStop_Shell_TestEscapedCharsAndShellVars_Overwrite(_VimTest): + skip_if = lambda self: running_on_windows() + snippets = ('test', r"""`hi="blah"; echo \`echo "$hi"\``""") + keys = 'test' + EX + wanted = 'blah' + + +class TabStop_Shell_ShebangPython(_VimTest): + skip_if = lambda self: running_on_windows() + snippets = ('test', """Hallo ${1:now `#!/usr/bin/env %s +print "Hallo Welt" +`} end""" % (os.environ.get('PYTHON', 'python2'),)) + keys = 'test' + EX + JF + 'and more' + wanted = 'Hallo now Hallo Welt endand more' +# End: ShellCode Interpolation #}}} +# VimScript Interpolation {{{# + + +class TabStop_VimScriptInterpolation_SimpleExample(_VimTest): + snippets = ('test', """hi `!v indent(".")` End""") + keys = ' test' + EX + wanted = ' hi 4 End' +# End: VimScript Interpolation #}}} +# PythonCode Interpolation {{{# +# Deprecated Implementation {{{# + + +class PythonCodeOld_SimpleExample(_VimTest): + snippets = ('test', """hi `!p res = "Hallo"` End""") + keys = 'test' + EX + wanted = 'hi Hallo End' + + +class PythonCodeOld_ReferencePlaceholderAfter(_VimTest): + snippets = ('test', """${1:hi} `!p res = t[1]+".blah"` End""") + keys = 'test' + EX + 'ho' + wanted = 'ho ho.blah End' + + +class PythonCodeOld_ReferencePlaceholderBefore(_VimTest): + snippets = ('test', """`!p res = len(t[1])*"#"`\n${1:some text}""") + keys = 'test' + EX + 'Hallo Welt' + wanted = '##########\nHallo Welt' + + +class PythonCodeOld_TransformedBeforeMultiLine(_VimTest): + snippets = ('test', """${1/.+/egal/m} ${1:`!p +res = "Hallo"`} End""") + keys = 'test' + EX + wanted = 'egal Hallo End' + + +class PythonCodeOld_IndentedMultiline(_VimTest): + snippets = ('test', """start `!p a = 1 +b = 2 +if b > a: + res = "b isbigger a" +else: + res = "a isbigger b"` end""") + keys = ' test' + EX + wanted = ' start b isbigger a end' +# End: Deprecated Implementation #}}} +# New Implementation {{{# + + +class PythonCode_UseNewOverOld(_VimTest): + snippets = ('test', """hi `!p res = "Old" +snip.rv = "New"` End""") + keys = 'test' + EX + wanted = 'hi New End' + + +class PythonCode_SimpleExample(_VimTest): + snippets = ('test', """hi `!p snip.rv = "Hallo"` End""") + keys = 'test' + EX + wanted = 'hi Hallo End' + + +class PythonCode_SimpleExample_ReturnValueIsEmptyString(_VimTest): + snippets = ('test', """hi`!p snip.rv = ""`End""") + keys = 'test' + EX + wanted = 'hiEnd' + + +class PythonCode_ReferencePlaceholder(_VimTest): + snippets = ('test', """${1:hi} `!p snip.rv = t[1]+".blah"` End""") + keys = 'test' + EX + 'ho' + wanted = 'ho ho.blah End' + + +class PythonCode_ReferencePlaceholderBefore(_VimTest): + snippets = ('test', """`!p snip.rv = len(t[1])*"#"`\n${1:some text}""") + keys = 'test' + EX + 'Hallo Welt' + wanted = '##########\nHallo Welt' + + +class PythonCode_TransformedBeforeMultiLine(_VimTest): + snippets = ('test', """${1/.+/egal/m} ${1:`!p +snip.rv = "Hallo"`} End""") + keys = 'test' + EX + wanted = 'egal Hallo End' + + +class PythonCode_MultilineIndented(_VimTest): + snippets = ('test', """start `!p a = 1 +b = 2 +if b > a: + snip.rv = "b isbigger a" +else: + snip.rv = "a isbigger b"` end""") + keys = ' test' + EX + wanted = ' start b isbigger a end' + + +class PythonCode_SimpleAppend(_VimTest): + snippets = ('test', """hi `!p snip.rv = "Hallo1" +snip += "Hallo2"` End""") + keys = 'test' + EX + wanted = 'hi Hallo1\nHallo2 End' + + +class PythonCode_MultiAppend(_VimTest): + snippets = ('test', """hi `!p snip.rv = "Hallo1" +snip += "Hallo2" +snip += "Hallo3"` End""") + keys = 'test' + EX + wanted = 'hi Hallo1\nHallo2\nHallo3 End' + + +class PythonCode_MultiAppendSimpleIndent(_VimTest): + snippets = ('test', """hi +`!p snip.rv="Hallo1" +snip += "Hallo2" +snip += "Hallo3"` +End""") + keys = """ + test""" + EX + wanted = """ + hi + Hallo1 + Hallo2 + Hallo3 + End""" + + +class PythonCode_SimpleMkline(_VimTest): + snippets = ('test', r"""hi +`!p snip.rv="Hallo1\n" +snip.rv += snip.mkline("Hallo2") + "\n" +snip.rv += snip.mkline("Hallo3")` +End""") + keys = """ + test""" + EX + wanted = """ + hi + Hallo1 + Hallo2 + Hallo3 + End""" + + +class PythonCode_MultiAppendShift(_VimTest): + snippets = ('test', r"""hi +`!p snip.rv="i1" +snip += "i1" +snip >> 1 +snip += "i2" +snip << 2 +snip += "i0" +snip >> 3 +snip += "i3"` +End""") + keys = """ + test""" + EX + wanted = """ + hi + i1 + i1 + i2 +i0 + i3 + End""" + + +class PythonCode_MultiAppendShiftMethods(_VimTest): + snippets = ('test', r"""hi +`!p snip.rv="i1\n" +snip.rv += snip.mkline("i1\n") +snip.shift(1) +snip.rv += snip.mkline("i2\n") +snip.unshift(2) +snip.rv += snip.mkline("i0\n") +snip.shift(3) +snip.rv += snip.mkline("i3")` +End""") + keys = """ + test""" + EX + wanted = """ + hi + i1 + i1 + i2 +i0 + i3 + End""" + + +class PythonCode_ResetIndent(_VimTest): + snippets = ('test', r"""hi +`!p snip.rv="i1" +snip >> 1 +snip += "i2" +snip.reset_indent() +snip += "i1" +snip << 1 +snip += "i0" +snip.reset_indent() +snip += "i1"` +End""") + keys = """ + test""" + EX + wanted = """ + hi + i1 + i2 + i1 +i0 + i1 + End""" + + +class PythonCode_IndentEtSw(_VimTest): + + def _extra_vim_config(self, vim_config): + vim_config.append('set sw=3') + vim_config.append('set expandtab') + snippets = ('test', r"""hi +`!p snip.rv = "i1" +snip >> 1 +snip += "i2" +snip << 2 +snip += "i0" +snip >> 1 +snip += "i1" +` +End""") + keys = """ test""" + EX + wanted = """ hi + i1 + i2 +i0 + i1 + End""" + + +class PythonCode_IndentEtSwOffset(_VimTest): + + def _extra_vim_config(self, vim_config): + vim_config.append('set sw=3') + vim_config.append('set expandtab') + snippets = ('test', r"""hi +`!p snip.rv = "i1" +snip >> 1 +snip += "i2" +snip << 2 +snip += "i0" +snip >> 1 +snip += "i1" +` +End""") + keys = """ test""" + EX + wanted = """ hi + i1 + i2 + i0 + i1 + End""" + + +class PythonCode_IndentNoetSwTs(_VimTest): + + def _extra_vim_config(self, vim_config): + vim_config.append('set sw=3') + vim_config.append('set ts=4') + snippets = ('test', r"""hi +`!p snip.rv = "i1" +snip >> 1 +snip += "i2" +snip << 2 +snip += "i0" +snip >> 1 +snip += "i1" +` +End""") + keys = """ test""" + EX + wanted = """ hi + i1 +\t i2 +i0 + i1 + End""" + +# Test using 'opt' + + +class PythonCode_OptExists(_VimTest): + + def _extra_vim_config(self, vim_config): + vim_config.append('let g:UStest="yes"') + snippets = ( + 'test', + r"""hi `!p snip.rv = snip.opt("g:UStest") or "no"` End""") + keys = """test""" + EX + wanted = """hi yes End""" + + +class PythonCode_OptNoExists(_VimTest): + snippets = ( + 'test', + r"""hi `!p snip.rv = snip.opt("g:UStest") or "no"` End""") + keys = """test""" + EX + wanted = """hi no End""" + + +class PythonCode_IndentProblem(_VimTest): + # A test case which is likely related to bug 719649 + snippets = ('test', r"""hi `!p +snip.rv = "World" +` End""") + keys = ' ' * 8 + 'test' + EX # < 8 works. + wanted = """ hi World End""" + + +class PythonCode_TrickyReferences(_VimTest): + snippets = ( + 'test', + r"""${2:${1/.+/egal/}} ${1:$3} ${3:`!p snip.rv = "hi"`}""") + keys = 'ups test' + EX + wanted = 'ups egal hi hi' +# locals + + +class PythonCode_Locals(_VimTest): + snippets = ('test', r"""hi `!p a = "test" +snip.rv = "nothing"` `!p snip.rv = a +` End""") + keys = """test""" + EX + wanted = """hi nothing test End""" + + +class PythonCode_LongerTextThanSource_Chars(_VimTest): + snippets = ('test', r"""hi`!p snip.rv = "a" * 100`end""") + keys = """test""" + EX + 'ups' + wanted = 'hi' + 100 * 'a' + 'endups' + + +class PythonCode_LongerTextThanSource_MultiLine(_VimTest): + snippets = ( + 'test', + r"""hi`!p snip.rv = "a" * 100 + '\n'*100 + "a"*100`end""") + keys = """test""" + EX + 'ups' + wanted = 'hi' + 100 * 'a' + 100 * '\n' + 100 * 'a' + 'endups' + + +class PythonCode_AccessKilledTabstop_OverwriteSecond(_VimTest): + snippets = ( + 'test', + r"`!p snip.rv = t[2].upper()`${1:h${2:welt}o}`!p snip.rv = t[2].upper()`") + keys = 'test' + EX + JF + 'okay' + wanted = 'OKAYhokayoOKAY' + + +class PythonCode_AccessKilledTabstop_OverwriteFirst(_VimTest): + snippets = ( + 'test', + r"`!p snip.rv = t[2].upper()`${1:h${2:welt}o}`!p snip.rv = t[2].upper()`") + keys = 'test' + EX + 'aaa' + wanted = 'aaa' + +class PythonCode_CanOverwriteTabstop(_VimTest): + snippets = ( + 'test', + """$1`!p if len(t[1]) > 3 and len(t[2]) == 0: + t[2] = t[1][2:]; + t[1] = t[1][:2] + '-\\n\\t'; + vim.command('call feedkeys("\<End>", "n")'); + `$2""") + keys = 'test' + EX + 'blah' + ', bah' + wanted = "bl-\n\tah, bah" + + +class PythonVisual_NoVisualSelection_Ignore(_VimTest): + snippets = ('test', 'h`!p snip.rv = snip.v.mode + snip.v.text`b') + keys = 'test' + EX + 'abc' + wanted = 'hbabc' + + +class PythonVisual_SelectOneWord(_VimTest): + snippets = ('test', 'h`!p snip.rv = snip.v.mode + snip.v.text`b') + keys = 'blablub' + ESC + '0v6l' + EX + 'test' + EX + wanted = 'hvblablubb' + + +class PythonVisual_LineSelect_Simple(_VimTest): + snippets = ('test', 'h`!p snip.rv = snip.v.mode + snip.v.text`b') + keys = 'hello\nnice\nworld' + ESC + 'Vkk' + EX + 'test' + EX + wanted = 'hVhello\nnice\nworld\nb' + +class PythonVisual_HasAccessToSelectedPlaceholders(_VimTest): + snippets = ( + 'test', + """${1:first} ${2:second} (`!p +snip.rv = "placeholder: " + snip.p.current_text`)""" + ) + keys = 'test' + EX + ESC + "otest" + EX + JF + ESC + wanted = """first second (placeholder: first) +first second (placeholder: second)""" + +class PythonVisual_HasAccessToZeroPlaceholders(_VimTest): + snippets = ( + 'test', + """${1:first} ${2:second} (`!p +snip.rv = "placeholder: " + snip.p.current_text`)""" + ) + keys = 'test' + EX + ESC + "otest" + EX + JF + JF + JF + JF + wanted = """first second (placeholder: first second (placeholder: )) +first second (placeholder: )""" + +# Tests for https://bugs.launchpad.net/bugs/1259349 + + +class Python_WeirdScoping_Error(_VimTest): + snippets = ( + 'test', + "h`!p import re; snip.rv = '%i' % len([re.search for i in 'aiiia'])`b") + keys = 'test' + EX + wanted = 'h5b' +# End: New Implementation #}}} +# End: PythonCode Interpolation #}}} diff --git a/test/test_ListSnippets.py b/test/test_ListSnippets.py new file mode 100644 index 0000000..4b54631 --- /dev/null +++ b/test/test_ListSnippets.py @@ -0,0 +1,43 @@ +from test.vim_test_case import VimTestCase as _VimTest +from test.constant import * + +# List Snippets {{{# + + +class _ListAllSnippets(_VimTest): + snippets = (('testblah', 'BLAAH', 'Say BLAH'), + ('test', 'TEST ONE', 'Say tst one'), + ('aloha', 'OHEEEE', 'Say OHEE'), + ) + + +class ListAllAvailable_NothingTyped_ExpectCorrectResult(_ListAllSnippets): + keys = '' + LS + '3\n' + wanted = 'BLAAH' + + +class ListAllAvailable_SpaceInFront_ExpectCorrectResult(_ListAllSnippets): + keys = ' ' + LS + '3\n' + wanted = ' BLAAH' + + +class ListAllAvailable_BraceInFront_ExpectCorrectResult(_ListAllSnippets): + keys = '} ' + LS + '3\n' + wanted = '} BLAAH' + + +class ListAllAvailable_testtyped_ExpectCorrectResult(_ListAllSnippets): + keys = 'hallo test' + LS + '2\n' + wanted = 'hallo BLAAH' + + +class ListAllAvailable_testtypedSecondOpt_ExpectCorrectResult( + _ListAllSnippets): + keys = 'hallo test' + LS + '1\n' + wanted = 'hallo TEST ONE' + + +class ListAllAvailable_NonDefined_NoExpectionShouldBeRaised(_ListAllSnippets): + keys = 'hallo qualle' + LS + 'Hi' + wanted = 'hallo qualleHi' +# End: List Snippets #}}} diff --git a/test/test_Mirror.py b/test/test_Mirror.py new file mode 100644 index 0000000..a6076bf --- /dev/null +++ b/test/test_Mirror.py @@ -0,0 +1,272 @@ +from test.vim_test_case import VimTestCase as _VimTest +from test.constant import * + +# Mirrors {{{# + + +class TextTabStopTextAfterTab_ExpectCorrectResult(_VimTest): + snippets = ('test', '$1 Hinten\n$1') + keys = 'test' + EX + 'hallo' + wanted = 'hallo Hinten\nhallo' + + +class TextTabStopTextBeforeTab_ExpectCorrectResult(_VimTest): + snippets = ('test', 'Vorne $1\n$1') + keys = 'test' + EX + 'hallo' + wanted = 'Vorne hallo\nhallo' + + +class TextTabStopTextSurroundedTab_ExpectCorrectResult(_VimTest): + snippets = ('test', 'Vorne $1 Hinten\n$1') + keys = 'test' + EX + 'hallo test' + wanted = 'Vorne hallo test Hinten\nhallo test' + + +class TextTabStopTextBeforeMirror_ExpectCorrectResult(_VimTest): + snippets = ('test', '$1\nVorne $1') + keys = 'test' + EX + 'hallo' + wanted = 'hallo\nVorne hallo' + + +class TextTabStopAfterMirror_ExpectCorrectResult(_VimTest): + snippets = ('test', '$1\n$1 Hinten') + keys = 'test' + EX + 'hallo' + wanted = 'hallo\nhallo Hinten' + + +class TextTabStopSurroundMirror_ExpectCorrectResult(_VimTest): + snippets = ('test', '$1\nVorne $1 Hinten') + keys = 'test' + EX + 'hallo welt' + wanted = 'hallo welt\nVorne hallo welt Hinten' + + +class TextTabStopAllSurrounded_ExpectCorrectResult(_VimTest): + snippets = ('test', 'ObenVorne $1 ObenHinten\nVorne $1 Hinten') + keys = 'test' + EX + 'hallo welt' + wanted = 'ObenVorne hallo welt ObenHinten\nVorne hallo welt Hinten' + + +class MirrorBeforeTabstopLeave_ExpectCorrectResult(_VimTest): + snippets = ('test', '$1 ${1:this is it} $1') + keys = 'test' + EX + wanted = 'this is it this is it this is it' + + +class MirrorBeforeTabstopOverwrite_ExpectCorrectResult(_VimTest): + snippets = ('test', '$1 ${1:this is it} $1') + keys = 'test' + EX + 'a' + wanted = 'a a a' + + +class TextTabStopSimpleMirrorMultiline_ExpectCorrectResult(_VimTest): + snippets = ('test', '$1\n$1') + keys = 'test' + EX + 'hallo' + wanted = 'hallo\nhallo' + + +class SimpleMirrorMultilineMany_ExpectCorrectResult(_VimTest): + snippets = ('test', ' $1\n$1\na$1b\n$1\ntest $1 mich') + keys = 'test' + EX + 'hallo' + wanted = ' hallo\nhallo\nahallob\nhallo\ntest hallo mich' + + +class MultilineTabStopSimpleMirrorMultiline_ExpectCorrectResult(_VimTest): + snippets = ('test', '$1\n\n$1\n\n$1') + keys = 'test' + EX + 'hallo Du\nHi' + wanted = 'hallo Du\nHi\n\nhallo Du\nHi\n\nhallo Du\nHi' + + +class MultilineTabStopSimpleMirrorMultiline1_ExpectCorrectResult(_VimTest): + snippets = ('test', '$1\n$1\n$1') + keys = 'test' + EX + 'hallo Du\nHi' + wanted = 'hallo Du\nHi\nhallo Du\nHi\nhallo Du\nHi' + + +class MultilineTabStopSimpleMirrorDeleteInLine_ExpectCorrectResult(_VimTest): + snippets = ('test', '$1\n$1\n$1') + keys = 'test' + EX + 'hallo Du\nHi\b\bAch Blah' + wanted = 'hallo Du\nAch Blah\nhallo Du\nAch Blah\nhallo Du\nAch Blah' + + +class TextTabStopSimpleMirrorMultilineMirrorInFront_ECR(_VimTest): + snippets = ('test', '$1\n${1:sometext}') + keys = 'test' + EX + 'hallo\nagain' + wanted = 'hallo\nagain\nhallo\nagain' + + +class SimpleMirrorDelete_ExpectCorrectResult(_VimTest): + snippets = ('test', '$1\n$1') + keys = 'test' + EX + 'hallo\b\b' + wanted = 'hal\nhal' + + +class SimpleMirrorSameLine_ExpectCorrectResult(_VimTest): + snippets = ('test', '$1 $1') + keys = 'test' + EX + 'hallo' + wanted = 'hallo hallo' + + +class SimpleMirrorSameLine_InText_ExpectCorrectResult(_VimTest): + snippets = ('test', '$1 $1') + keys = 'ups test blah' + ESC + '02f i' + EX + 'hallo' + wanted = 'ups hallo hallo blah' + + +class SimpleMirrorSameLineBeforeTabDefVal_ECR(_VimTest): + snippets = ('test', '$1 ${1:replace me}') + keys = 'test' + EX + 'hallo foo' + wanted = 'hallo foo hallo foo' + + +class SimpleMirrorSameLineBeforeTabDefVal_DelB4Typing_ECR(_VimTest): + snippets = ('test', '$1 ${1:replace me}') + keys = 'test' + EX + BS + 'hallo foo' + wanted = 'hallo foo hallo foo' + + +class SimpleMirrorSameLineMany_ExpectCorrectResult(_VimTest): + snippets = ('test', '$1 $1 $1 $1') + keys = 'test' + EX + 'hallo du' + wanted = 'hallo du hallo du hallo du hallo du' + + +class SimpleMirrorSameLineManyMultiline_ExpectCorrectResult(_VimTest): + snippets = ('test', '$1 $1 $1 $1') + keys = 'test' + EX + 'hallo du\nwie gehts' + wanted = 'hallo du\nwie gehts hallo du\nwie gehts hallo du\nwie gehts' \ + ' hallo du\nwie gehts' + + +class SimpleMirrorDeleteSomeEnterSome_ExpectCorrectResult(_VimTest): + snippets = ('test', '$1\n$1') + keys = 'test' + EX + 'hallo\b\bhups' + wanted = 'halhups\nhalhups' + + +class SimpleTabstopWithDefaultSimpelType_ExpectCorrectResult(_VimTest): + snippets = ('test', 'ha ${1:defa}\n$1') + keys = 'test' + EX + 'world' + wanted = 'ha world\nworld' + + +class SimpleTabstopWithDefaultComplexType_ExpectCorrectResult(_VimTest): + snippets = ('test', 'ha ${1:default value} $1\nanother: $1 mirror') + keys = 'test' + EX + 'world' + wanted = 'ha world world\nanother: world mirror' + + +class SimpleTabstopWithDefaultSimpelKeep_ExpectCorrectResult(_VimTest): + snippets = ('test', 'ha ${1:defa}\n$1') + keys = 'test' + EX + wanted = 'ha defa\ndefa' + + +class SimpleTabstopWithDefaultComplexKeep_ExpectCorrectResult(_VimTest): + snippets = ('test', 'ha ${1:default value} $1\nanother: $1 mirror') + keys = 'test' + EX + wanted = 'ha default value default value\nanother: default value mirror' + + +class TabstopWithMirrorManyFromAll_ExpectCorrectResult(_VimTest): + snippets = ('test', 'ha $5 ${1:blub} $4 $0 ${2:$1.h} $1 $3 ${4:More}') + keys = 'test' + EX + 'hi' + JF + 'hu' + JF + 'hub' + JF + 'hulla' + \ + JF + 'blah' + JF + 'end' + wanted = 'ha blah hi hulla end hu hi hub hulla' + + +class TabstopWithMirrorInDefaultNoType_ExpectCorrectResult(_VimTest): + snippets = ('test', 'ha ${1:blub} ${2:$1.h}') + keys = 'test' + EX + wanted = 'ha blub blub.h' + + +class TabstopWithMirrorInDefaultNoType1_ExpectCorrectResult(_VimTest): + snippets = ('test', 'ha ${1:blub} ${2:$1}') + keys = 'test' + EX + wanted = 'ha blub blub' + + +class TabstopWithMirrorInDefaultTwiceAndExtra_ExpectCorrectResult(_VimTest): + snippets = ('test', 'ha $1 ${2:$1.h $1.c}\ntest $1') + keys = 'test' + EX + 'stdin' + wanted = 'ha stdin stdin.h stdin.c\ntest stdin' + + +class TabstopWithMirrorInDefaultMultipleLeave_ExpectCorrectResult(_VimTest): + snippets = ('test', 'ha $1 ${2:snip} ${3:$1.h $2}') + keys = 'test' + EX + 'stdin' + wanted = 'ha stdin snip stdin.h snip' + + +class TabstopWithMirrorInDefaultMultipleOverwrite_ExpectCorrectResult( + _VimTest): + snippets = ('test', 'ha $1 ${2:snip} ${3:$1.h $2}') + keys = 'test' + EX + 'stdin' + JF + 'do snap' + wanted = 'ha stdin do snap stdin.h do snap' + + +class TabstopWithMirrorInDefaultOverwrite_ExpectCorrectResult(_VimTest): + snippets = ('test', 'ha $1 ${2:$1.h}') + keys = 'test' + EX + 'stdin' + JF + 'overwritten' + wanted = 'ha stdin overwritten' + + +class TabstopWithMirrorInDefaultOverwrite1_ExpectCorrectResult(_VimTest): + snippets = ('test', 'ha $1 ${2:$1}') + keys = 'test' + EX + 'stdin' + JF + 'overwritten' + wanted = 'ha stdin overwritten' + + +class TabstopWithMirrorInDefaultNoOverwrite1_ExpectCorrectResult(_VimTest): + snippets = ('test', 'ha $1 ${2:$1}') + keys = 'test' + EX + 'stdin' + JF + JF + 'end' + wanted = 'ha stdin stdinend' + + +class MirrorRealLifeExample_ExpectCorrectResult(_VimTest): + snippets = ( + ('for', 'for(size_t ${2:i} = 0; $2 < ${1:count}; ${3:++$2})' + '\n{\n\t${0:/* code */}\n}'), + ) + keys = 'for' + EX + '100' + JF + 'avar\b\b\b\ba_variable' + JF + \ + 'a_variable *= 2' + JF + '// do nothing' + wanted = """for(size_t a_variable = 0; a_variable < 100; a_variable *= 2) +{ +\t// do nothing +}""" + + +class Mirror_TestKill_InsertBefore_NoKill(_VimTest): + snippets = 'test', '$1 $1_' + keys = 'hallo test' + EX + 'auch' + ESC + \ + 'wihi' + ESC + 'bb' + 'ino' + JF + 'end' + wanted = 'hallo noauch hinoauch_end' + + +class Mirror_TestKill_InsertAfter_NoKill(_VimTest): + snippets = 'test', '$1 $1_' + keys = 'hallo test' + EX + 'auch' + ESC + \ + 'eiab' + ESC + 'bb' + 'ino' + JF + 'end' + wanted = 'hallo noauch noauchab_end' + + +class Mirror_TestKill_InsertBeginning_Kill(_VimTest): + snippets = 'test', '$1 $1_' + keys = 'hallo test' + EX + 'auch' + ESC + \ + 'wahi' + ESC + 'bb' + 'ino' + JF + 'end' + wanted = 'hallo noauch ahiuch_end' + + +class Mirror_TestKill_InsertEnd_Kill(_VimTest): + snippets = 'test', '$1 $1_' + keys = 'hallo test' + EX + 'auch' + ESC + \ + 'ehihi' + ESC + 'bb' + 'ino' + JF + 'end' + wanted = 'hallo noauch auchih_end' + + +class Mirror_TestKillTabstop_Kill(_VimTest): + snippets = 'test', 'welt${1:welt${2:welt}welt} $2' + keys = 'hallo test' + EX + 'elt' + wanted = 'hallo weltelt ' + +# End: Mirrors #}}} diff --git a/test/test_Movement.py b/test/test_Movement.py new file mode 100644 index 0000000..51b0c10 --- /dev/null +++ b/test/test_Movement.py @@ -0,0 +1,83 @@ +from test.vim_test_case import VimTestCase as _VimTest +from test.constant import * + +# Cursor Movement {{{# + + +class CursorMovement_Multiline_ECR(_VimTest): + snippets = ('test', r"$1 ${1:a tab}") + keys = 'test' + EX + 'this is something\nvery nice\nnot' + JF + 'more text' + wanted = 'this is something\nvery nice\nnot ' \ + 'this is something\nvery nice\nnotmore text' + + +class CursorMovement_BS_InEditMode(_VimTest): + + def _extra_vim_config(self, vim_config): + vim_config.append('set backspace=eol,indent,start') + snippets = ('<trh', '<tr>\n\t<th>$1</th>\n\t$2\n</tr>\n$3') + keys = '<trh' + EX + 'blah' + JF + BS + BS + JF + 'end' + wanted = '<tr>\n\t<th>blah</th>\n</tr>\nend' +# End: Cursor Movement #}}} +# Insert Mode Moving {{{# + + +class IMMoving_CursorsKeys_ECR(_VimTest): + snippets = ('test', '${1:Some}') + keys = 'test' + EX + 'text' + 3 * ARR_U + 6 * ARR_D + wanted = 'text' + + +class IMMoving_AcceptInputWhenMoved_ECR(_VimTest): + snippets = ('test', r"$1 ${1:a tab}") + keys = 'test' + EX + 'this' + 2 * ARR_L + 'hallo\nwelt' + wanted = 'thhallo\nweltis thhallo\nweltis' + + +class IMMoving_NoExiting_ECR(_VimTest): + snippets = ('test', r"$1 ${2:a tab} ${1:Tab}") + keys = 'hello test this' + ESC + '02f i' + EX + 'tab' + 7 * ARR_L + \ + JF + 'hallo' + wanted = 'hello tab hallo tab this' + + +class IMMoving_NoExitingEventAtEnd_ECR(_VimTest): + snippets = ('test', r"$1 ${2:a tab} ${1:Tab}") + keys = 'hello test this' + ESC + '02f i' + EX + 'tab' + JF + 'hallo' + wanted = 'hello tab hallo tab this' + + +class IMMoving_ExitWhenOutsideRight_ECR(_VimTest): + snippets = ('test', r"$1 ${2:blub} ${1:Tab}") + keys = 'hello test this' + ESC + '02f i' + \ + EX + 'tab' + ARR_R + JF + 'hallo' + wanted = 'hello tab blub tab ' + JF + 'hallothis' + + +class IMMoving_NotExitingWhenBarelyOutsideLeft_ECR(_VimTest): + snippets = ('test', r"${1:Hi} ${2:blub}") + keys = 'hello test this' + ESC + '02f i' + EX + 'tab' + 3 * ARR_L + \ + JF + 'hallo' + wanted = 'hello tab hallo this' + + +class IMMoving_ExitWhenOutsideLeft_ECR(_VimTest): + snippets = ('test', r"${1:Hi} ${2:blub}") + keys = 'hello test this' + ESC + '02f i' + EX + 'tab' + 4 * ARR_L + \ + JF + 'hallo' + wanted = 'hello' + JF + 'hallo tab blub this' + + +class IMMoving_ExitWhenOutsideAbove_ECR(_VimTest): + snippets = ('test', '${1:Hi}\n${2:blub}') + keys = 'hello test this' + ESC + '02f i' + EX + 'tab' + 1 * ARR_U + '\n' + JF + \ + 'hallo' + wanted = JF + 'hallo\nhello tab\nblub this' + + +class IMMoving_ExitWhenOutsideBelow_ECR(_VimTest): + snippets = ('test', '${1:Hi}\n${2:blub}') + keys = 'hello test this' + ESC + '02f i' + EX + 'tab' + 2 * ARR_D + JF + \ + 'testhallo\n' + wanted = 'hello tab\nblub this\n' + JF + 'testhallo' +# End: Insert Mode Moving #}}} diff --git a/test/test_MultipleMatches.py b/test/test_MultipleMatches.py new file mode 100644 index 0000000..b38bc67 --- /dev/null +++ b/test/test_MultipleMatches.py @@ -0,0 +1,72 @@ +from test.vim_test_case import VimTestCase as _VimTest +from test.constant import * + +# Selecting Between Same Triggers {{{# + + +class _MultipleMatches(_VimTest): + snippets = (('test', 'Case1', 'This is Case 1'), + ('test', 'Case2', 'This is Case 2')) + + +class Multiple_SimpleCaseSelectFirst_ECR(_MultipleMatches): + keys = 'test' + EX + '1\n' + wanted = 'Case1' + + +class Multiple_SimpleCaseSelectSecond_ECR(_MultipleMatches): + keys = 'test' + EX + '2\n' + wanted = 'Case2' + + +class Multiple_SimpleCaseSelectTooHigh_ESelectLast(_MultipleMatches): + keys = 'test' + EX + '5\n' + wanted = 'Case2' + + +class Multiple_SimpleCaseSelectZero_EEscape(_MultipleMatches): + keys = 'test' + EX + '0\n' + 'hi' + wanted = 'testhi' + + +class Multiple_SimpleCaseEscapeOut_ECR(_MultipleMatches): + keys = 'test' + EX + ESC + 'hi' + wanted = 'testhi' + + +class Multiple_ManySnippetsOneTrigger_ECR(_VimTest): + # Snippet definition {{{# + snippets = ( + ('test', 'Case1', 'This is Case 1'), + ('test', 'Case2', 'This is Case 2'), + ('test', 'Case3', 'This is Case 3'), + ('test', 'Case4', 'This is Case 4'), + ('test', 'Case5', 'This is Case 5'), + ('test', 'Case6', 'This is Case 6'), + ('test', 'Case7', 'This is Case 7'), + ('test', 'Case8', 'This is Case 8'), + ('test', 'Case9', 'This is Case 9'), + ('test', 'Case10', 'This is Case 10'), + ('test', 'Case11', 'This is Case 11'), + ('test', 'Case12', 'This is Case 12'), + ('test', 'Case13', 'This is Case 13'), + ('test', 'Case14', 'This is Case 14'), + ('test', 'Case15', 'This is Case 15'), + ('test', 'Case16', 'This is Case 16'), + ('test', 'Case17', 'This is Case 17'), + ('test', 'Case18', 'This is Case 18'), + ('test', 'Case19', 'This is Case 19'), + ('test', 'Case20', 'This is Case 20'), + ('test', 'Case21', 'This is Case 21'), + ('test', 'Case22', 'This is Case 22'), + ('test', 'Case23', 'This is Case 23'), + ('test', 'Case24', 'This is Case 24'), + ('test', 'Case25', 'This is Case 25'), + ('test', 'Case26', 'This is Case 26'), + ('test', 'Case27', 'This is Case 27'), + ('test', 'Case28', 'This is Case 28'), + ('test', 'Case29', 'This is Case 29'), + ) # }}} + keys = 'test' + EX + ' ' + ESC + ESC + 'ahi' + wanted = 'testhi' +# End: Selecting Between Same Triggers #}}} diff --git a/test/test_ParseSnippets.py b/test/test_ParseSnippets.py new file mode 100644 index 0000000..f9b4d3b --- /dev/null +++ b/test/test_ParseSnippets.py @@ -0,0 +1,316 @@ +from test.vim_test_case import VimTestCase as _VimTest +from test.constant import * + + +class ParseSnippets_SimpleSnippet(_VimTest): + files = { 'us/all.snippets': r""" + snippet testsnip "Test Snippet" b! + This is a test snippet! + endsnippet + """} + keys = 'testsnip' + EX + wanted = 'This is a test snippet!' + + +class ParseSnippets_MissingEndSnippet(_VimTest): + files = { 'us/all.snippets': r""" + snippet testsnip "Test Snippet" b! + This is a test snippet! + """} + keys = 'testsnip' + EX + wanted = 'testsnip' + EX + expected_error = r"Missing 'endsnippet' for 'testsnip' in \S+:4" + + +class ParseSnippets_UnknownDirective(_VimTest): + files = { 'us/all.snippets': r""" + unknown directive + """} + keys = 'testsnip' + EX + wanted = 'testsnip' + EX + expected_error = r"Invalid line 'unknown directive' in \S+:2" + + +class ParseSnippets_InvalidPriorityLine(_VimTest): + files = { 'us/all.snippets': r""" + priority - 50 + """} + keys = 'testsnip' + EX + wanted = 'testsnip' + EX + expected_error = r"Invalid priority '- 50' in \S+:2" + + +class ParseSnippets_InvalidPriorityLine1(_VimTest): + files = { 'us/all.snippets': r""" + priority + """} + keys = 'testsnip' + EX + wanted = 'testsnip' + EX + expected_error = r"Invalid priority '' in \S+:2" + + +class ParseSnippets_ExtendsWithoutFiletype(_VimTest): + files = { 'us/all.snippets': r""" + extends + """} + keys = 'testsnip' + EX + wanted = 'testsnip' + EX + expected_error = r"'extends' without file types in \S+:2" + + +class ParseSnippets_ClearAll(_VimTest): + files = { 'us/all.snippets': r""" + snippet testsnip "Test snippet" + This is a test. + endsnippet + + clearsnippets + """} + keys = 'testsnip' + EX + wanted = 'testsnip' + EX + + +class ParseSnippets_ClearOne(_VimTest): + files = { 'us/all.snippets': r""" + clearsnippets toclear + + snippet testsnip "Test snippet" + This is a test. + endsnippet + + snippet toclear "Snippet to clear" + Do not expand. + endsnippet + """} + keys = 'toclear' + EX + '\n' + 'testsnip' + EX + wanted = 'toclear' + EX + '\n' + 'This is a test.' + + +class ParseSnippets_ClearTwo(_VimTest): + files = { 'us/all.snippets': r""" + clearsnippets testsnip toclear + + snippet testsnip "Test snippet" + This is a test. + endsnippet + + snippet toclear "Snippet to clear" + Do not expand. + endsnippet + """} + keys = 'toclear' + EX + '\n' + 'testsnip' + EX + wanted = 'toclear' + EX + '\n' + 'testsnip' + EX + + +class _ParseSnippets_MultiWord(_VimTest): + files = { 'us/all.snippets': r""" + snippet /test snip/ + This is a test. + endsnippet + + snippet !snip test! "Another snippet" + This is another test. + endsnippet + + snippet "snippet test" "Another snippet" b + This is yet another test. + endsnippet + """} + + +class ParseSnippets_MultiWord_Simple(_ParseSnippets_MultiWord): + keys = 'test snip' + EX + wanted = 'This is a test.' + + +class ParseSnippets_MultiWord_Description(_ParseSnippets_MultiWord): + keys = 'snip test' + EX + wanted = 'This is another test.' + + +class ParseSnippets_MultiWord_Description_Option(_ParseSnippets_MultiWord): + keys = 'snippet test' + EX + wanted = 'This is yet another test.' + + +class _ParseSnippets_MultiWord_RE(_VimTest): + files = { 'us/all.snippets': r""" + snippet /[d-f]+/ "" r + az test + endsnippet + + snippet !^(foo|bar)$! "" r + foo-bar test + endsnippet + + snippet "(test ?)+" "" r + re-test + endsnippet + """} + + +class ParseSnippets_MultiWord_RE1(_ParseSnippets_MultiWord_RE): + keys = 'abc def' + EX + wanted = 'abc az test' + + +class ParseSnippets_MultiWord_RE2(_ParseSnippets_MultiWord_RE): + keys = 'foo' + EX + ' bar' + EX + '\nbar' + EX + wanted = 'foo-bar test bar\t\nfoo-bar test' + + +class ParseSnippets_MultiWord_RE3(_ParseSnippets_MultiWord_RE): + keys = 'test test test' + EX + wanted = 're-test' + + +class ParseSnippets_MultiWord_Quotes(_VimTest): + files = { 'us/all.snippets': r""" + snippet "test snip" + This is a test. + endsnippet + """} + keys = 'test snip' + EX + wanted = 'This is a test.' + + +class ParseSnippets_MultiWord_WithQuotes(_VimTest): + files = { 'us/all.snippets': r""" + snippet !"test snip"! + This is a test. + endsnippet + """} + keys = '"test snip"' + EX + wanted = 'This is a test.' + + +class ParseSnippets_MultiWord_NoContainer(_VimTest): + files = { 'us/all.snippets': r""" + snippet test snip + This is a test. + endsnippet + """} + keys = 'test snip' + EX + wanted = keys + expected_error = "Invalid multiword trigger: 'test snip' in \S+:2" + + +class ParseSnippets_MultiWord_UnmatchedContainer(_VimTest): + files = { 'us/all.snippets': r""" + snippet !inv snip/ + This is a test. + endsnippet + """} + keys = 'inv snip' + EX + wanted = keys + expected_error = "Invalid multiword trigger: '!inv snip/' in \S+:2" + + +class ParseSnippets_Global_Python(_VimTest): + files = { 'us/all.snippets': r""" + global !p + def tex(ins): + return "a " + ins + " b" + endglobal + + snippet ab + x `!p snip.rv = tex("bob")` y + endsnippet + + snippet ac + x `!p snip.rv = tex("jon")` y + endsnippet + """} + keys = 'ab' + EX + '\nac' + EX + wanted = 'x a bob b y\nx a jon b y' + + +class ParseSnippets_Global_Local_Python(_VimTest): + files = { 'us/all.snippets': r""" +global !p +def tex(ins): + return "a " + ins + " b" +endglobal + +snippet ab +x `!p first = tex("bob") +snip.rv = "first"` `!p snip.rv = first` y +endsnippet + """} + keys = 'ab' + EX + wanted = 'x first a bob b y' + + +class ParseSnippets_PrintPythonStacktrace(_VimTest): + files = { 'us/all.snippets': r""" + snippet test + `!p abc()` + endsnippet + """} + keys = 'test' + EX + wanted = keys + expected_error = " > abc" + + +class ParseSnippets_PrintPythonStacktraceMultiline(_VimTest): + files = { 'us/all.snippets': r""" + snippet test + `!p if True: + qwe()` + endsnippet + """} + keys = 'test' + EX + wanted = keys + expected_error = " > \s+qwe" + + +class ParseSnippets_PrintErroneousSnippet(_VimTest): + files = { 'us/all.snippets': r""" + snippet test "asd()" e + endsnippet + """} + keys = 'test' + EX + wanted = keys + expected_error = "Trigger: test" + + +class ParseSnippets_PrintErroneousSnippetContext(_VimTest): + files = { 'us/all.snippets': r""" + snippet test "asd()" e + endsnippet + """} + keys = 'test' + EX + wanted = keys + expected_error = "Context: asd" + + +class ParseSnippets_PrintErroneousSnippetPreAction(_VimTest): + files = { 'us/all.snippets': r""" + pre_expand "asd()" + snippet test + endsnippet + """} + keys = 'test' + EX + wanted = keys + expected_error = "Pre-expand: asd" + + +class ParseSnippets_PrintErroneousSnippetPostAction(_VimTest): + files = { 'us/all.snippets': r""" + post_expand "asd()" + snippet test + endsnippet + """} + keys = 'test' + EX + wanted = keys + expected_error = "Post-expand: asd" + +class ParseSnippets_PrintErroneousSnippetLocation(_VimTest): + files = { 'us/all.snippets': r""" + post_expand "asd()" + snippet test + endsnippet + """} + keys = 'test' + EX + wanted = keys + expected_error = "Defined in: .*/all.snippets" diff --git a/test/test_Plugin.py b/test/test_Plugin.py new file mode 100644 index 0000000..a93478f --- /dev/null +++ b/test/test_Plugin.py @@ -0,0 +1,96 @@ +import sys + +from test.vim_test_case import VimTestCase as _VimTest +from test.constant import * + +PYTHON3 = sys.version_info >= (3, 0) + + +def python3(): + if PYTHON3: + return 'Test does not work on python3.' + +# Plugin: YouCompleteMe {{{# +# TODO(sirver): disabled because it fails right now. +# class Plugin_YouCompleteMe_IntegrationTest(_VimTest): + # def skip_if(self): + # r = python3() + # if r: + # return r + # if "7.4" not in self.version: + # return "Needs Vim 7.4." + # plugins = ["Valloric/YouCompleteMe"] + # snippets = ("superlongtrigger", "Hello") + # keys = "superlo\ty" + # wanted = "Hello" + + # def _extra_vim_config(self, vim_config): + # # Not sure why, but I need to make a new tab for this to work. + # vim_config.append('let g:UltiSnipsExpandTrigger="y"') + # vim_config.append('tabnew') + + # def _before_test(self): + # self.vim.send(":set ft=python\n") + # # Give ycm a chance to catch up. + # time.sleep(1) +# End: Plugin: YouCompleteMe #}}} +# Plugin: Neocomplete {{{# +# TODO(sirver): disabled because it fails right now. +# class Plugin_Neocomplete_BugTest(_VimTest): + # Test for https://github.com/SirVer/ultisnips/issues/228 + + # def skip_if(self): + # if '+lua' not in self.version: + # return 'Needs +lua' + # plugins = ['Shougo/neocomplete.vim'] + # snippets = ('t', 'Hello', '', 'w') + # keys = 'iab\\ t' + EX + # wanted = 'iab\\ Hello' + + # def _extra_vim_config(self, vim_config): + # vim_config.append(r'set iskeyword+=\\ ') + # vim_config.append('let g:neocomplete#enable_at_startup = 1') + # vim_config.append('let g:neocomplete#enable_smart_case = 1') + # vim_config.append('let g:neocomplete#enable_camel_case = 1') + # vim_config.append('let g:neocomplete#enable_auto_delimiter = 1') + # vim_config.append('let g:neocomplete#enable_refresh_always = 1') +# End: Plugin: Neocomplete #}}} +# Plugin: unite {{{# + +# TODO(sirver): Disable since it is flaky. +# class Plugin_unite_BugTest(_VimTest): + # plugins = ['Shougo/unite.vim'] + # snippets = ('t', 'Hello', '', 'w') + # keys = 'iab\\ t=UltiSnipsCallUnite()\n' + # wanted = 'iab\\ Hello ' + + # def _extra_vim_config(self, vim_config): + # vim_config.append(r'set iskeyword+=\\ ') + # vim_config.append('function! UltiSnipsCallUnite()') + # vim_config.append( + # ' Unite -start-insert -winheight=100 -immediately -no-empty ultisnips') + # vim_config.append(' return ""') + # vim_config.append('endfunction') +# End: Plugin: unite #}}} +# Plugin: Supertab {{{# + + +class Plugin_SuperTab_SimpleTest(_VimTest): + plugins = ['ervandew/supertab'] + snippets = ('long', 'Hello', '', 'w') + keys = ('longtextlongtext\n' + + 'longt' + EX + '\n' + # Should complete word + 'long' + EX) # Should expand + wanted = 'longtextlongtext\nlongtextlongtext\nHello' + + def _before_test(self): + # Make sure that UltiSnips has the keymap + self.vim.send_to_vim(':call UltiSnips#map_keys#MapKeys()\n') + + def _extra_vim_config(self, vim_config): + assert EX == '\t' # Otherwise this test needs changing. + vim_config.append('let g:SuperTabDefaultCompletionType = "<c-p>"') + vim_config.append('let g:SuperTabRetainCompletionDuration = "insert"') + vim_config.append('let g:SuperTabLongestHighlight = 1') + vim_config.append('let g:SuperTabCrMapping = 0') +# End: Plugin: Supertab #}}} diff --git a/test/test_Recursive.py b/test/test_Recursive.py new file mode 100644 index 0000000..5e93594 --- /dev/null +++ b/test/test_Recursive.py @@ -0,0 +1,265 @@ +from test.vim_test_case import VimTestCase as _VimTest +from test.constant import * + +# Recursive (Nested) Snippets {{{# + + +class RecTabStops_SimpleCase_ExpectCorrectResult(_VimTest): + snippets = ('m', '[ ${1:first} ${2:sec} ]') + keys = 'm' + EX + 'm' + EX + 'hello' + \ + JF + 'world' + JF + 'ups' + JF + 'end' + wanted = '[ [ hello world ]ups end ]' + + +class RecTabStops_SimpleCaseLeaveSecondSecond_ExpectCorrectResult(_VimTest): + snippets = ('m', '[ ${1:first} ${2:sec} ]') + keys = 'm' + EX + 'm' + EX + 'hello' + JF + 'world' + JF + JF + JF + 'end' + wanted = '[ [ hello world ] sec ]end' + + +class RecTabStops_SimpleCaseLeaveFirstSecond_ExpectCorrectResult(_VimTest): + snippets = ('m', '[ ${1:first} ${2:sec} ]') + keys = 'm' + EX + 'm' + EX + 'hello' + JF + JF + JF + 'world' + JF + 'end' + wanted = '[ [ hello sec ] world ]end' + + +class RecTabStops_InnerWOTabStop_ECR(_VimTest): + snippets = ( + ('m1', 'Just some Text'), + ('m', '[ ${1:first} ${2:sec} ]'), + ) + keys = 'm' + EX + 'm1' + EX + 'hi' + JF + 'two' + JF + 'end' + wanted = '[ Just some Texthi two ]end' + + +class RecTabStops_InnerWOTabStopTwiceDirectly_ECR(_VimTest): + snippets = ( + ('m1', 'JST'), + ('m', '[ ${1:first} ${2:sec} ]'), + ) + keys = 'm' + EX + 'm1' + EX + ' m1' + EX + 'hi' + JF + 'two' + JF + 'end' + wanted = '[ JST JSThi two ]end' + + +class RecTabStops_InnerWOTabStopTwice_ECR(_VimTest): + snippets = ( + ('m1', 'JST'), + ('m', '[ ${1:first} ${2:sec} ]'), + ) + keys = 'm' + EX + 'm1' + EX + JF + 'm1' + EX + 'hi' + JF + 'end' + wanted = '[ JST JSThi ]end' + + +class RecTabStops_OuterOnlyWithZeroTS_ECR(_VimTest): + snippets = ( + ('m', 'A $0 B'), + ('m1', 'C $1 D $0 E'), + ) + keys = 'm' + EX + 'm1' + EX + 'CD' + JF + 'DE' + wanted = 'A C CD D DE E B' + + +class RecTabStops_OuterOnlyWithZero_ECR(_VimTest): + snippets = ( + ('m', 'A $0 B'), + ('m1', 'C $1 D $0 E'), + ) + keys = 'm' + EX + 'm1' + EX + 'CD' + JF + 'DE' + wanted = 'A C CD D DE E B' + + +class RecTabStops_ExpandedInZeroTS_ECR(_VimTest): + snippets = ( + ('m', 'A $0 B $1'), + ('m1', 'C $1 D $0 E'), + ) + keys = 'm' + EX + 'hi' + JF + 'm1' + EX + 'CD' + JF + 'DE' + wanted = 'A C CD D DE E B hi' + + +class RecTabStops_ExpandedInZeroTSTwice_ECR(_VimTest): + snippets = ( + ('m', 'A $0 B $1'), + ('m1', 'C $1 D $0 E'), + ) + keys = 'm' + EX + 'hi' + JF + 'm' + EX + 'again' + JF + 'm1' + \ + EX + 'CD' + JF + 'DE' + wanted = 'A A C CD D DE E B again B hi' + + +class RecTabStops_ExpandedInZeroTSSecondTime_ECR(_VimTest): + snippets = ( + ('m', 'A $0 B $1'), + ('m1', 'C $1 D $0 E'), + ) + keys = 'm' + EX + 'hi' + JF + 'm' + EX + \ + 'm1' + EX + 'CD' + JF + 'DE' + JF + 'AB' + wanted = 'A A AB B C CD D DE E B hi' + + +class RecTabsStops_TypeInZero_ECR(_VimTest): + snippets = ( + ('v', r"\vec{$1}", 'Vector', 'w'), + ('frac', r"\frac{${1:one}}${0:zero}{${2:two}}", 'Fractio', 'w'), + ) + keys = 'v' + EX + 'frac' + EX + 'a' + JF + 'b' + JF + 'frac' + EX + 'aa' + JF + JF + 'cc' + JF + \ + 'hello frac' + EX + JF + JF + 'world' + wanted = r"\vec{\frac{a}\frac{aa}cc{two}{b}}hello \frac{one}world{two}" + + +class RecTabsStops_TypeInZero2_ECR(_VimTest): + snippets = ( + ('m', r"_${0:explicit zero}", 'snip', 'i'), + ) + keys = 'm' + EX + 'hello m' + EX + 'world m' + EX + 'end' + wanted = r"_hello _world _end" + + +class RecTabsStops_BackspaceZero_ECR(_VimTest): + snippets = ( + ('m', r"${1:one}${0:explicit zero}${2:two}", 'snip', 'i'), + ) + keys = 'm' + EX + JF + JF + BS + 'm' + EX + wanted = r"oneoneexplicit zerotwotwo" + + +class RecTabStops_MirrorInnerSnippet_ECR(_VimTest): + snippets = ( + ('m', '[ $1 $2 ] $1'), + ('m1', 'ASnip $1 ASnip $2 ASnip'), + ) + keys = 'm' + EX + 'm1' + EX + 'Hallo' + JF + 'Hi' + \ + JF + 'endone' + JF + 'two' + JF + 'totalend' + wanted = '[ ASnip Hallo ASnip Hi ASnipendone two ] ASnip Hallo ASnip Hi ASnipendonetotalend' + + +class RecTabStops_NotAtBeginningOfTS_ExpectCorrectResult(_VimTest): + snippets = ('m', '[ ${1:first} ${2:sec} ]') + keys = 'm' + EX + 'hello m' + EX + 'hi' + JF + 'two' + JF + 'ups' + JF + 'three' + \ + JF + 'end' + wanted = '[ hello [ hi two ]ups three ]end' + + +class RecTabStops_InNewlineInTabstop_ExpectCorrectResult(_VimTest): + snippets = ('m', '[ ${1:first} ${2:sec} ]') + keys = 'm' + EX + 'hello\nm' + EX + 'hi' + JF + 'two' + JF + 'ups' + JF + 'three' + \ + JF + 'end' + wanted = '[ hello\n[ hi two ]ups three ]end' + + +class RecTabStops_InNewlineInTabstopNotAtBeginOfLine_ECR(_VimTest): + snippets = ('m', '[ ${1:first} ${2:sec} ]') + keys = 'm' + EX + 'hello\nhello again m' + EX + 'hi' + JF + 'two' + \ + JF + 'ups' + JF + 'three' + JF + 'end' + wanted = '[ hello\nhello again [ hi two ]ups three ]end' + + +class RecTabStops_InNewlineMultiline_ECR(_VimTest): + snippets = ('m', 'M START\n$0\nM END') + keys = 'm' + EX + 'm' + EX + wanted = 'M START\nM START\n\nM END\nM END' + + +class RecTabStops_InNewlineManualIndent_ECR(_VimTest): + snippets = ('m', 'M START\n$0\nM END') + keys = 'm' + EX + ' m' + EX + 'hi' + wanted = 'M START\n M START\n hi\n M END\nM END' + + +class RecTabStops_InNewlineManualIndentTextInFront_ECR(_VimTest): + snippets = ('m', 'M START\n$0\nM END') + keys = 'm' + EX + ' hallo m' + EX + 'hi' + wanted = 'M START\n hallo M START\n hi\n M END\nM END' + + +class RecTabStops_InNewlineMultilineWithIndent_ECR(_VimTest): + snippets = ('m', 'M START\n $0\nM END') + keys = 'm' + EX + 'm' + EX + 'hi' + wanted = 'M START\n M START\n hi\n M END\nM END' + + +class RecTabStops_InNewlineMultilineWithNonZeroTS_ECR(_VimTest): + snippets = ('m', 'M START\n $1\nM END -> $0') + keys = 'm' + EX + 'm' + EX + 'hi' + JF + 'hallo' + JF + 'end' + wanted = 'M START\n M START\n hi\n M END -> hallo\n' \ + 'M END -> end' + + +class RecTabStops_BarelyNotLeavingInner_ECR(_VimTest): + snippets = ( + ('m', '[ ${1:first} ${2:sec} ]'), + ) + keys = 'm' + EX + 'm' + EX + 'a' + 3 * ARR_L + JF + 'hallo' + \ + JF + 'ups' + JF + 'world' + JF + 'end' + wanted = '[ [ a hallo ]ups world ]end' + + +class RecTabStops_LeavingInner_ECR(_VimTest): + snippets = ( + ('m', '[ ${1:first} ${2:sec} ]'), + ) + keys = 'm' + EX + 'm' + EX + 'a' + 4 * ARR_L + JF + 'hallo' + \ + JF + 'world' + wanted = '[ [ a sec ] hallo ]world' + + +class RecTabStops_LeavingInnerInner_ECR(_VimTest): + snippets = ( + ('m', '[ ${1:first} ${2:sec} ]'), + ) + keys = 'm' + EX + 'm' + EX + 'm' + EX + 'a' + 4 * ARR_L + JF + 'hallo' + \ + JF + 'ups' + JF + 'world' + JF + 'end' + wanted = '[ [ [ a sec ] hallo ]ups world ]end' + + +class RecTabStops_LeavingInnerInnerTwo_ECR(_VimTest): + snippets = ( + ('m', '[ ${1:first} ${2:sec} ]'), + ) + keys = 'm' + EX + 'm' + EX + 'm' + EX + 'a' + 6 * ARR_L + JF + 'hallo' + \ + JF + 'end' + wanted = '[ [ [ a sec ] sec ] hallo ]end' + + +class RecTabStops_ZeroTSisNothingSpecial_ECR(_VimTest): + snippets = ( + ('m1', '[ ${1:first} $0 ${2:sec} ]'), + ('m', '[ ${1:first} ${2:sec} ]'), + ) + keys = 'm' + EX + 'm1' + EX + 'one' + JF + 'two' + \ + JF + 'three' + JF + 'four' + JF + 'end' + wanted = '[ [ one three two ] four ]end' + + +class RecTabStops_MirroredZeroTS_ECR(_VimTest): + snippets = ( + ('m1', '[ ${1:first} ${0:Year, some default text} $0 ${2:sec} ]'), + ('m', '[ ${1:first} ${2:sec} ]'), + ) + keys = 'm' + EX + 'm1' + EX + 'one' + JF + 'two' + \ + JF + 'three' + JF + 'four' + JF + 'end' + wanted = '[ [ one three three two ] four ]end' + + +class RecTabStops_ChildTriggerContainsParentTextObjects(_VimTest): + # https://bugs.launchpad.net/bugs/1191617 + files = { 'us/all.snippets': r""" +global !p +def complete(t, opts): + if t: + opts = [ q[len(t):] for q in opts if q.startswith(t) ] + if len(opts) == 0: + return '' + return opts[0] if len(opts) == 1 else "(" + '|'.join(opts) + ')' +def autocomplete_options(t, string, attr=None): + return complete(t[1], [opt for opt in attr if opt not in string]) +endglobal +snippet /form_for(.*){([^|]*)/ "form_for html options" rw! +`!p +auto = autocomplete_options(t, match.group(2), attr=["id: ", "class: ", "title: "]) +snip.rv = "form_for" + match.group(1) + "{"`$1`!p if (snip.c != auto) : snip.rv=auto` +endsnippet +"""} + keys = 'form_for user, namespace: some_namespace, html: {i' + EX + 'i' + EX + wanted = 'form_for user, namespace: some_namespace, html: {(id: |class: |title: )d: ' +# End: Recursive (Nested) Snippets #}}} diff --git a/test/test_Selection.py b/test/test_Selection.py new file mode 100644 index 0000000..6eeb3a9 --- /dev/null +++ b/test/test_Selection.py @@ -0,0 +1,125 @@ +from test.vim_test_case import VimTestCase as _VimTest +from test.constant import * + +# Unmap SelectMode Mappings {{{# +# Test for bug 427298 # + + +class _SelectModeMappings(_VimTest): + snippets = ('test', '${1:World}') + keys = 'test' + EX + 'Hello' + wanted = 'Hello' + maps = ('', '') + buffer_maps = ('', '') + do_unmapping = True + ignores = [] + + def _extra_vim_config(self, vim_config): + vim_config.append( + ':let g:UltiSnipsRemoveSelectModeMappings=%i' % int( + self.do_unmapping)) + vim_config.append( + ':let g:UltiSnipsMappingsToIgnore=%s' % + repr( + self.ignores)) + + if not isinstance(self.maps[0], tuple): + self.maps = (self.maps,) + if not isinstance(self.buffer_maps[0], tuple): + self.buffer_maps = (self.buffer_maps,) + + for key, m in self.maps: + if not len(key): + continue + vim_config.append(':smap %s %s' % (key, m)) + for key, m in self.buffer_maps: + if not len(key): + continue + vim_config.append(':smap <buffer> %s %s' % (key, m)) + + +class SelectModeMappings_RemoveBeforeSelecting_ECR(_SelectModeMappings): + maps = ('H', 'x') + wanted = 'Hello' + + +class SelectModeMappings_DisableRemoveBeforeSelecting_ECR(_SelectModeMappings): + do_unmapping = False + maps = ('H', 'x') + wanted = 'xello' + + +class SelectModeMappings_IgnoreMappings_ECR(_SelectModeMappings): + ignores = ['e'] + maps = ('H', 'x'), ('e', 'l') + wanted = 'Hello' + + +class SelectModeMappings_IgnoreMappings1_ECR(_SelectModeMappings): + ignores = ['H'] + maps = ('H', 'x'), ('e', 'l') + wanted = 'xello' + + +class SelectModeMappings_IgnoreMappings2_ECR(_SelectModeMappings): + ignores = ['e', 'H'] + maps = ('e', 'l'), ('H', 'x') + wanted = 'xello' + + +class SelectModeMappings_BufferLocalMappings_ECR(_SelectModeMappings): + buffer_maps = ('H', 'blah') + wanted = 'Hello' +# End: Unmap SelectMode Mappings #}}} + +# Exclusive Selection {{{# + + +class _ES_Base(_VimTest): + + def _extra_vim_config(self, vim_config): + vim_config.append('set selection=exclusive') + + +class ExclusiveSelection_SimpleTabstop_Test(_ES_Base): + snippets = ('test', 'h${1:blah}w $1') + keys = 'test' + EX + 'ui' + JF + wanted = 'huiw ui' + + +class ExclusiveSelection_RealWorldCase_Test(_ES_Base): + snippets = ('for', + """for ($${1:i} = ${2:0}; $$1 < ${3:count}; $$1${4:++}) { + ${5:// code} +}""") + keys = 'for' + EX + 'k' + JF + wanted = """for ($k = 0; $k < count; $k++) { + // code +}""" +# End: Exclusive Selection #}}} + +# Old Selection {{{# + + +class _OS_Base(_VimTest): + + def _extra_vim_config(self, vim_config): + vim_config.append('set selection=old') + + +class OldSelection_SimpleTabstop_Test(_OS_Base): + snippets = ('test', 'h${1:blah}w $1') + keys = 'test' + EX + 'ui' + JF + wanted = 'huiw ui' + + +class OldSelection_RealWorldCase_Test(_OS_Base): + snippets = ('for', + """for ($${1:i} = ${2:0}; $$1 < ${3:count}; $$1${4:++}) { + ${5:// code} +}""") + keys = 'for' + EX + 'k' + JF + wanted = """for ($k = 0; $k < count; $k++) { + // code +}""" +# End: Old Selection #}}} diff --git a/test/test_SnipMate.py b/test/test_SnipMate.py new file mode 100644 index 0000000..c730354 --- /dev/null +++ b/test/test_SnipMate.py @@ -0,0 +1,191 @@ +# encoding: utf-8 +from test.vim_test_case import VimTestCase as _VimTest +from test.constant import * + +# snipMate support {{{# + + +class snipMate_SimpleSnippet(_VimTest): + files = { 'snippets/_.snippets': """ +snippet hello +\tThis is a test snippet +\t# With a comment"""} + keys = 'hello' + EX + wanted = 'This is a test snippet\n# With a comment' + +class snipMate_Disabled(_VimTest): + files = { 'snippets/_.snippets': """ +snippet hello +\tThis is a test snippet +\t# With a comment"""} + keys = 'hello' + EX + wanted = 'hello' + EX + + def _extra_vim_config(self, vim_config): + vim_config.append("let g:UltiSnipsEnableSnipMate=0"); + + +class snipMate_OtherFiletype(_VimTest): + files = { 'snippets/blubi.snippets': """ +snippet hello +\tworked"""} + keys = 'hello' + EX + ESC + ':set ft=blubi\nohello' + EX + wanted = 'hello' + EX + '\nworked' + + +class snipMate_MultiMatches(_VimTest): + files = { 'snippets/_.snippets': """ +snippet hello The first snippet." +\tone +snippet hello The second snippet. +\ttwo"""} + keys = 'hello' + EX + '2\n' + wanted = 'two' + + +class snipMate_SimpleSnippetSubDirectory(_VimTest): + files = { 'snippets/_/blub.snippets': """ +snippet hello +\tThis is a test snippet"""} + keys = 'hello' + EX + wanted = 'This is a test snippet' + + +class snipMate_SimpleSnippetInSnippetFile(_VimTest): + files = { + 'snippets/_/hello.snippet': """This is a stand alone snippet""", + 'snippets/_/hello1.snippet': """This is two stand alone snippet""", + 'snippets/_/hello2/this_is_my_cool_snippet.snippet': """Three""", + } + keys = 'hello' + EX + '\nhello1' + EX + '\nhello2' + EX + wanted = 'This is a stand alone snippet\nThis is two stand alone snippet\nThree' + + +class snipMate_Interpolation(_VimTest): + files = { 'snippets/_.snippets': """ +snippet test +\tla`printf('c%02d', 3)`lu"""} + keys = 'test' + EX + wanted = 'lac03lu' + + +class snipMate_InterpolationWithSystem(_VimTest): + files = { 'snippets/_.snippets': """ +snippet test +\tla`system('echo -ne öäü')`lu"""} + keys = 'test' + EX + wanted = 'laöäülu' + + +class snipMate_TestMirrors(_VimTest): + files = { 'snippets/_.snippets': """ +snippet for +\tfor (${2:i}; $2 < ${1:count}; $1++) { +\t\t${4} +\t}"""} + keys = 'for' + EX + 'blub' + JF + 'j' + JF + 'hi' + wanted = 'for (j; j < blub; blub++) {\n\thi\n}' + + +class snipMate_TestNoBraceTabstops(_VimTest): + files = { 'snippets/_.snippets': """ +snippet test +\t$1 is $2"""} + keys = 'test' + EX + 'blub' + JF + 'blah' + wanted = 'blub is blah' + + +class snipMate_TestNoBraceTabstopsAndMirrors(_VimTest): + files = { 'snippets/_.snippets': """ +snippet test +\t$1 is $1, $2 is ${2}"""} + keys = 'test' + EX + 'blub' + JF + 'blah' + wanted = 'blub is blub, blah is blah' + + +class snipMate_TestMirrorsInPlaceholders(_VimTest): + files = { 'snippets/_.snippets': """ +snippet opt +\t<option value="${1:option}">${2:$1}</option>"""} + keys = 'opt' + EX + 'some' + JF + JF + 'ende' + wanted = """<option value="some">some</option>ende""" + + +class snipMate_TestMirrorsInPlaceholders_Overwrite(_VimTest): + files = { 'snippets/_.snippets': """ +snippet opt +\t<option value="${1:option}">${2:$1}</option>"""} + keys = 'opt' + EX + 'some' + JF + 'not' + JF + 'ende' + wanted = """<option value="some">not</option>ende""" + + +class snipMate_Visual_Simple(_VimTest): + files = { 'snippets/_.snippets': """ +snippet v +\th${VISUAL}b"""} + keys = 'blablub' + ESC + '0v6l' + EX + 'v' + EX + wanted = 'hblablubb' + + +class snipMate_NoNestedTabstops(_VimTest): + files = { 'snippets/_.snippets': """ +snippet test +\th$${1:${2:blub}}$$"""} + keys = 'test' + EX + JF + 'hi' + wanted = 'h$${2:blub}$$hi' + + +class snipMate_Extends(_VimTest): + files = { 'snippets/a.snippets': """ +extends b +snippet test +\tblub""", 'snippets/b.snippets': """ +snippet test1 +\tblah""" + } + keys = ESC + ':set ft=a\n' + 'itest1' + EX + wanted = 'blah' + + +class snipMate_EmptyLinesContinueSnippets(_VimTest): + files = { 'snippets/_.snippets': """ +snippet test +\tblub + +\tblah + +snippet test1 +\ta""" + } + keys = 'test' + EX + wanted = 'blub\n\nblah\n' + + +class snipMate_OverwrittenByRegExpTrigger(_VimTest): + files = { 'snippets/_.snippets': """ +snippet def +\tsnipmate +""", + 'us/all.snippets': r""" +snippet "(de)?f" "blub" r +ultisnips +endsnippet +""" } + keys = 'def' + EX + wanted = 'ultisnips' +# End: snipMate support #}}} + +class snipMate_Issue658(_VimTest): + files = { 'snippets/_.snippets': """ +snippet /* +\t/* +\t * ${0} +\t */ +"""} + keys = ESC + ':set fo=r\n' + 'i/*' + EX + '1\n2' + wanted = """/* + * 1 + * 2 + */ +"""; +# End: snipMate support #}}} diff --git a/test/test_SnippetActions.py b/test/test_SnippetActions.py new file mode 100644 index 0000000..403e234 --- /dev/null +++ b/test/test_SnippetActions.py @@ -0,0 +1,370 @@ +from test.vim_test_case import VimTestCase as _VimTest +from test.constant import * + + +class SnippetActions_PreActionModifiesBuffer(_VimTest): + files = { 'us/all.snippets': r""" + pre_expand "snip.buffer[snip.line:snip.line] = ['\n']" + snippet a "desc" "True" e + abc + endsnippet + """} + keys = 'a' + EX + wanted = '\nabc' + + +class SnippetActions_PostActionModifiesBuffer(_VimTest): + files = { 'us/all.snippets': r""" + post_expand "snip.buffer[snip.line+1:snip.line+1] = ['\n']" + snippet a "desc" "True" e + abc + endsnippet + """} + keys = 'a' + EX + wanted = 'abc\n' + +class SnippetActions_ErrorOnBufferModificationThroughCommand(_VimTest): + files = { 'us/all.snippets': r""" + pre_expand "vim.command('normal O')" + snippet a "desc" "True" e + abc + endsnippet + """} + keys = 'a' + EX + expected_error = 'changes are untrackable' + + +class SnippetActions_ErrorOnModificationSnippetLine(_VimTest): + files = { 'us/all.snippets': r""" + post_expand "vim.command('normal dd')" + snippet i "desc" "True" e + if: + $1 + endsnippet + """} + keys = 'i' + EX + expected_error = 'line under the cursor was modified' + + +class SnippetActions_EnsureIndent(_VimTest): + files = { 'us/all.snippets': r""" + pre_expand "snip.buffer[snip.line] = ' '*4; snip.cursor[1] = 4" + snippet i "desc" "True" e + if: + $1 + endsnippet + """} + keys = '\ni' + EX + 'i' + EX + 'x' + wanted = """ + if: + if: + x""" + + +class SnippetActions_PostActionCanUseSnippetRange(_VimTest): + files = { 'us/all.snippets': r""" + global !p + def ensure_newlines(start, end): + snip.buffer[start[0]:start[0]] = ['\n'] * 2 + snip.buffer[end[0]+1:end[0]+1] = ['\n'] * 1 + endglobal + + post_expand "ensure_newlines(snip.snippet_start, snip.snippet_end)" + snippet i "desc" + if + $1 + else + $2 + end + endsnippet + """} + keys = '\ni' + EX + 'x' + JF + 'y' + wanted = """ + + +if + x +else + y +end +""" + + +class SnippetActions_CanModifyParentBody(_VimTest): + files = { 'us/all.snippets': r""" + global !p + def ensure_newlines(start, end): + snip.buffer[start[0]:start[0]] = ['\n'] * 2 + endglobal + + post_expand "ensure_newlines(snip.snippet_start, snip.snippet_end)" + snippet i "desc" + if + $1 + else + $2 + end + endsnippet + """} + keys = '\ni' + EX + 'i' + EX + 'x' + JF + 'y' + JF + JF + 'z' + wanted = """ + + +if + + + if + x + else + y + end +else + z +end""" + + +class SnippetActions_MoveParentSnippetFromChildInPreAction(_VimTest): + files = { 'us/all.snippets': r""" + global !p + def insert_import(): + snip.buffer[2:2] = ['import smthing', ''] + endglobal + + pre_expand "insert_import()" + snippet p "desc" + print(smthing.traceback()) + endsnippet + + snippet i "desc" + if + $1 + else + $2 + end + endsnippet + """} + keys = 'i' + EX + 'p' + EX + JF + 'z' + wanted = """import smthing + +if + print(smthing.traceback()) +else + z +end""" + + +class SnippetActions_CanExpandSnippetInDifferentPlace(_VimTest): + files = { 'us/all.snippets': r""" + global !p + def expand_after_if(snip): + snip.buffer[snip.line] = snip.buffer[snip.line][:snip.column] + \ + snip.buffer[snip.line][snip.column+1:] + snip.cursor[1] = snip.buffer[snip.line].index('if ')+3 + endglobal + + pre_expand "expand_after_if(snip)" + snippet n "append not to if" w + not $0 + endsnippet + + snippet i "if cond" w + if $1: $2 + endsnippet + """} + keys = 'i' + EX + 'blah' + JF + 'n' + EX + JF + 'pass' + wanted = """if not blah: pass""" + + +class SnippetActions_MoveVisual(_VimTest): + files = { 'us/all.snippets': r""" + global !p + def extract_method(snip): + del snip.buffer[snip.line] + snip.buffer[len(snip.buffer)-1:len(snip.buffer)-1] = [''] + snip.cursor.set(len(snip.buffer)-2, 0) + endglobal + + pre_expand "extract_method(snip)" + snippet n "append not to if" w + def $1: + ${VISUAL} + + endsnippet + """} + + keys = """ +def a: + x() + y() + z()""" + ESC + 'kVk' + EX + 'n' + EX + 'b' + + wanted = """ +def a: + z() + +def b: + x() + y()""" + + +class SnippetActions_CanMirrorTabStopsOutsideOfSnippet(_VimTest): + files = { 'us/all.snippets': r""" + post_jump "snip.buffer[2] = 'debug({})'.format(snip.tabstops[1].current_text)" + snippet i "desc" + if $1: + $2 + endsnippet + """} + keys = """ +--- +i""" + EX + "test(some(complex(cond(a))))" + JF + "x" + wanted = """debug(test(some(complex(cond(a))))) +--- +if test(some(complex(cond(a)))): + x""" + + +class SnippetActions_CanExpandAnonSnippetInJumpAction(_VimTest): + files = { 'us/all.snippets': r""" + global !p + def expand_anon(snip): + if snip.tabstop == 0: + snip.expand_anon("a($2, $1)") + endglobal + + post_jump "expand_anon(snip)" + snippet i "desc" + if ${1:cond}: + $0 + endsnippet + """} + keys = "i" + EX + "x" + JF + "1" + JF + "2" + JF + ";" + wanted = """if x: + a(2, 1);""" + + +class SnippetActions_CanExpandAnonSnippetInJumpActionWhileSelected(_VimTest): + files = { 'us/all.snippets': r""" + global !p + def expand_anon(snip): + if snip.tabstop == 0: + snip.expand_anon(" // a($2, $1)") + endglobal + + post_jump "expand_anon(snip)" + snippet i "desc" + if ${1:cond}: + ${2:pass} + endsnippet + """} + keys = "i" + EX + "x" + JF + JF + "1" + JF + "2" + JF + ";" + wanted = """if x: + pass // a(2, 1);""" + + +class SnippetActions_CanUseContextFromContextMatch(_VimTest): + files = { 'us/all.snippets': r""" + pre_expand "snip.buffer[snip.line:snip.line] = [snip.context]" + snippet i "desc" "'some context'" e + body + endsnippet + """} + keys = "i" + EX + wanted = """some context +body""" + +class SnippetActions_CanExpandAnonSnippetOnFirstJump(_VimTest): + files = { 'us/all.snippets': r""" + global !p + def expand_new_snippet_on_first_jump(snip): + if snip.tabstop == 1: + snip.expand_anon("some_check($1, $2, $3)") + endglobal + + post_jump "expand_new_snippet_on_first_jump(snip)" + snippet "test" "test new features" "True" bwre + if $1: $2 + endsnippet + """} + keys = "test" + EX + "1" + JF + "2" + JF + "3" + JF + " or 4" + JF + "5" + wanted = """if some_check(1, 2, 3) or 4: 5""" + +class SnippetActions_CanExpandAnonOnPreExpand(_VimTest): + files = { 'us/all.snippets': r""" + pre_expand "snip.buffer[snip.line] = ''; snip.expand_anon('totally_different($2, $1)')" + snippet test "test new features" wb + endsnippet + """} + keys = "test" + EX + "1" + JF + "2" + JF + "3" + wanted = """totally_different(2, 1)3""" + +class SnippetActions_CanEvenWrapSnippetInPreAction(_VimTest): + files = { 'us/all.snippets': r""" + pre_expand "snip.buffer[snip.line] = ''; snip.expand_anon('some_wrapper($1): $2')" + snippet test "test new features" wb + wrapme($2, $1) + endsnippet + """} + keys = "test" + EX + "1" + JF + "2" + JF + "3" + JF + "4" + wanted = """some_wrapper(wrapme(2, 1)3): 4""" + +class SnippetActions_CanVisuallySelectFirstPlaceholderInAnonSnippetInPre(_VimTest): + files = { 'us/all.snippets': r""" + pre_expand "snip.buffer[snip.line] = ''; snip.expand_anon('${1:asd}, ${2:blah}')" + snippet test "test new features" wb + endsnippet + """} + keys = "test" + EX + "1" + JF + "2" + wanted = """1, 2""" + +class SnippetActions_UseCorrectJumpActions(_VimTest): + files = { 'us/all.snippets': r""" + post_jump "snip.buffer[-2:-2]=['a' + str(snip.tabstop)]" + snippet a "a" wb + $1 { + $2 + } + endsnippet + + snippet b "b" wb + bbb + endsnippet + + post_jump "snip.buffer[-2:-2]=['c' + str(snip.tabstop)]" + snippet c "c" w + $1 : $2 : $3 + endsnippet + """} + keys = "a" + EX + "1" + JF + "b" + EX + " c" + EX + "2" + JF + "3" + JF + "4" + JF + JF + wanted = """1 { +bbb 2 : 3 : 4 +} +a1 +a2 +c1 +c2 +c3 +c0 +a0""" + +class SnippetActions_PostActionModifiesCharAfterSnippet(_VimTest): + files = { 'us/all.snippets': r""" + post_expand "snip.buffer[snip.snippet_end[0]] = snip.buffer[snip.snippet_end[0]][:-1]" + snippet a "desc" i + ($1) + endsnippet + """} + keys = '[]' + ARR_L + 'a' + EX + '1' + JF + '2' + wanted = '[(1)2' + + +class SnippetActions_PostActionModifiesLineAfterSnippet(_VimTest): + files = { 'us/all.snippets': r""" + post_expand "snip.buffer[snip.snippet_end[0]+1:snip.snippet_end[0]+2] = []" + snippet a "desc" + 1: $1 + $0 + endsnippet + """} + keys = '\n3' + ARR_U + 'a' + EX + '1' + JF + '2' + wanted = '1: 1\n2' diff --git a/test/test_SnippetOptions.py b/test/test_SnippetOptions.py new file mode 100644 index 0000000..cd18b6a --- /dev/null +++ b/test/test_SnippetOptions.py @@ -0,0 +1,357 @@ +# encoding: utf-8 +from test.vim_test_case import VimTestCase as _VimTest +from test.constant import * +from test.util import running_on_windows + +# Snippet Options {{{# + + +class SnippetOptions_OnlyExpandWhenWSInFront_Expand(_VimTest): + snippets = ('test', 'Expand me!', '', 'b') + keys = 'test' + EX + wanted = 'Expand me!' + + +class SnippetOptions_OnlyExpandWhenWSInFront_Expand2(_VimTest): + snippets = ('test', 'Expand me!', '', 'b') + keys = ' test' + EX + wanted = ' Expand me!' + + +class SnippetOptions_OnlyExpandWhenWSInFront_DontExpand(_VimTest): + snippets = ('test', 'Expand me!', '', 'b') + keys = 'a test' + EX + wanted = 'a test' + EX + + +class SnippetOptions_OnlyExpandWhenWSInFront_OneWithOneWO(_VimTest): + snippets = ( + ('test', 'Expand me!', '', 'b'), + ('test', 'not at beginning', '', ''), + ) + keys = 'a test' + EX + wanted = 'a not at beginning' + + +class SnippetOptions_OnlyExpandWhenWSInFront_OneWithOneWOChoose(_VimTest): + snippets = ( + ('test', 'Expand me!', '', 'b'), + ('test', 'not at beginning', '', ''), + ) + keys = ' test' + EX + '1\n' + wanted = ' Expand me!' + + +class SnippetOptions_ExpandInwordSnippets_SimpleExpand(_VimTest): + snippets = (('test', 'Expand me!', '', 'i'), ) + keys = 'atest' + EX + wanted = 'aExpand me!' + + +class SnippetOptions_ExpandInwordSnippets_ExpandSingle(_VimTest): + snippets = (('test', 'Expand me!', '', 'i'), ) + keys = 'test' + EX + wanted = 'Expand me!' + + +class SnippetOptions_ExpandInwordSnippetsWithOtherChars_Expand(_VimTest): + snippets = (('test', 'Expand me!', '', 'i'), ) + keys = '$test' + EX + wanted = '$Expand me!' + + +class SnippetOptions_ExpandInwordSnippetsWithOtherChars_Expand2(_VimTest): + snippets = (('test', 'Expand me!', '', 'i'), ) + keys = '-test' + EX + wanted = '-Expand me!' + + +class SnippetOptions_ExpandInwordSnippetsWithOtherChars_Expand3(_VimTest): + skip_if = lambda self: running_on_windows() + snippets = (('test', 'Expand me!', '', 'i'), ) + keys = 'ßßtest' + EX + wanted = 'ßßExpand me!' + + +class _SnippetOptions_ExpandWordSnippets(_VimTest): + snippets = (('test', 'Expand me!', '', 'w'), ) + + +class SnippetOptions_ExpandWordSnippets_NormalExpand( + _SnippetOptions_ExpandWordSnippets): + keys = 'test' + EX + wanted = 'Expand me!' + + +class SnippetOptions_ExpandWordSnippets_NoExpand( + _SnippetOptions_ExpandWordSnippets): + keys = 'atest' + EX + wanted = 'atest' + EX + + +class SnippetOptions_ExpandWordSnippets_ExpandSuffix( + _SnippetOptions_ExpandWordSnippets): + keys = 'a-test' + EX + wanted = 'a-Expand me!' + + +class SnippetOptions_ExpandWordSnippets_ExpandSuffix2( + _SnippetOptions_ExpandWordSnippets): + keys = 'a(test' + EX + wanted = 'a(Expand me!' + + +class SnippetOptions_ExpandWordSnippets_ExpandSuffix3( + _SnippetOptions_ExpandWordSnippets): + keys = '[[test' + EX + wanted = '[[Expand me!' + + +class _No_Tab_Expand(_VimTest): + snippets = ('test', '\t\tExpand\tme!\t', '', 't') + + +class No_Tab_Expand_Simple(_No_Tab_Expand): + keys = 'test' + EX + wanted = '\t\tExpand\tme!\t' + + +class No_Tab_Expand_Leading_Spaces(_No_Tab_Expand): + keys = ' test' + EX + wanted = ' \t\tExpand\tme!\t' + + +class No_Tab_Expand_Leading_Tabs(_No_Tab_Expand): + keys = '\ttest' + EX + wanted = '\t\t\tExpand\tme!\t' + + +class No_Tab_Expand_No_TS(_No_Tab_Expand): + + def _extra_vim_config(self, vim_config): + vim_config.append('set sw=3') + vim_config.append('set sts=3') + keys = 'test' + EX + wanted = '\t\tExpand\tme!\t' + + +class No_Tab_Expand_ET(_No_Tab_Expand): + + def _extra_vim_config(self, vim_config): + vim_config.append('set sw=3') + vim_config.append('set expandtab') + keys = 'test' + EX + wanted = '\t\tExpand\tme!\t' + + +class No_Tab_Expand_ET_Leading_Spaces(_No_Tab_Expand): + + def _extra_vim_config(self, vim_config): + vim_config.append('set sw=3') + vim_config.append('set expandtab') + keys = ' test' + EX + wanted = ' \t\tExpand\tme!\t' + + +class No_Tab_Expand_ET_SW(_No_Tab_Expand): + + def _extra_vim_config(self, vim_config): + vim_config.append('set sw=8') + vim_config.append('set expandtab') + keys = 'test' + EX + wanted = '\t\tExpand\tme!\t' + + +class No_Tab_Expand_ET_SW_TS(_No_Tab_Expand): + + def _extra_vim_config(self, vim_config): + vim_config.append('set sw=3') + vim_config.append('set sts=3') + vim_config.append('set ts=3') + vim_config.append('set expandtab') + keys = 'test' + EX + wanted = '\t\tExpand\tme!\t' + + +class _TabExpand_RealWorld(object): + snippets = ('hi', + r"""hi +`!p snip.rv="i1\n" +snip.rv += snip.mkline("i1\n") +snip.shift(1) +snip.rv += snip.mkline("i2\n") +snip.unshift(2) +snip.rv += snip.mkline("i0\n") +snip.shift(3) +snip.rv += snip.mkline("i3")` +snip.rv = repr(snip.rv) +End""") + + +class No_Tab_Expand_RealWorld(_TabExpand_RealWorld, _VimTest): + + def _extra_vim_config(self, vim_config): + vim_config.append('set noexpandtab') + keys = '\t\thi' + EX + wanted = """\t\thi +\t\ti1 +\t\ti1 +\t\t\ti2 +\ti0 +\t\t\t\ti3 +\t\tsnip.rv = repr(snip.rv) +\t\tEnd""" + + +class SnippetOptions_Regex_Expand(_VimTest): + snippets = ('(test)', 'Expand me!', '', 'r') + keys = 'test' + EX + wanted = 'Expand me!' + + +class SnippetOptions_Regex_WithSpace(_VimTest): + snippets = ('test ', 'Expand me!', '', 'r') + keys = 'test ' + EX + wanted = 'Expand me!' + + +class SnippetOptions_Regex_Multiple(_VimTest): + snippets = ('(test *)+', 'Expand me!', '', 'r') + keys = 'test test test' + EX + wanted = 'Expand me!' + + +class _Regex_Self(_VimTest): + snippets = ('((?<=\W)|^)(\.)', 'self.', '', 'r') + + +class SnippetOptions_Regex_Self_Start(_Regex_Self): + keys = '.' + EX + wanted = 'self.' + + +class SnippetOptions_Regex_Self_Space(_Regex_Self): + keys = ' .' + EX + wanted = ' self.' + + +class SnippetOptions_Regex_Self_TextAfter(_Regex_Self): + keys = ' .a' + EX + wanted = ' .a' + EX + + +class SnippetOptions_Regex_Self_TextBefore(_Regex_Self): + keys = 'a.' + EX + wanted = 'a.' + EX + + +class SnippetOptions_Regex_PythonBlockMatch(_VimTest): + snippets = (r"([abc]+)([def]+)", r"""`!p m = match +snip.rv += m.group(2) +snip.rv += m.group(1) +`""", '', 'r') + keys = 'test cabfed' + EX + wanted = 'test fedcab' + + +class SnippetOptions_Regex_PythonBlockNoMatch(_VimTest): + snippets = (r"cabfed", r"""`!p snip.rv = match or "No match"`""") + keys = 'test cabfed' + EX + wanted = 'test No match' +# Tests for Bug #691575 + + +class SnippetOptions_Regex_SameLine_Long_End(_VimTest): + snippets = ('(test.*)', 'Expand me!', '', 'r') + keys = 'test test abc' + EX + wanted = 'Expand me!' + + +class SnippetOptions_Regex_SameLine_Long_Start(_VimTest): + snippets = ('(.*test)', 'Expand me!', '', 'r') + keys = 'abc test test' + EX + wanted = 'Expand me!' + + +class SnippetOptions_Regex_SameLine_Simple(_VimTest): + snippets = ('(test)', 'Expand me!', '', 'r') + keys = 'abc test test' + EX + wanted = 'abc test Expand me!' + + +class MultiWordSnippet_Simple(_VimTest): + snippets = ('test me', 'Expand me!') + keys = 'test me' + EX + wanted = 'Expand me!' + + +class MultiWord_SnippetOptions_OnlyExpandWhenWSInFront_Expand(_VimTest): + snippets = ('test it', 'Expand me!', '', 'b') + keys = 'test it' + EX + wanted = 'Expand me!' + + +class MultiWord_SnippetOptions_OnlyExpandWhenWSInFront_Expand2(_VimTest): + snippets = ('test it', 'Expand me!', '', 'b') + keys = ' test it' + EX + wanted = ' Expand me!' + + +class MultiWord_SnippetOptions_OnlyExpandWhenWSInFront_DontExpand(_VimTest): + snippets = ('test it', 'Expand me!', '', 'b') + keys = 'a test it' + EX + wanted = 'a test it' + EX + + +class MultiWord_SnippetOptions_OnlyExpandWhenWSInFront_OneWithOneWO(_VimTest): + snippets = ( + ('test it', 'Expand me!', '', 'b'), + ('test it', 'not at beginning', '', ''), + ) + keys = 'a test it' + EX + wanted = 'a not at beginning' + + +class MultiWord_SnippetOptions_OnlyExpandWhenWSInFront_OneWithOneWOChoose( + _VimTest): + snippets = ( + ('test it', 'Expand me!', '', 'b'), + ('test it', 'not at beginning', '', ''), + ) + keys = ' test it' + EX + '1\n' + wanted = ' Expand me!' + + +class MultiWord_SnippetOptions_ExpandInwordSnippets_SimpleExpand(_VimTest): + snippets = (('test it', 'Expand me!', '', 'i'), ) + keys = 'atest it' + EX + wanted = 'aExpand me!' + + +class MultiWord_SnippetOptions_ExpandInwordSnippets_ExpandSingle(_VimTest): + snippets = (('test it', 'Expand me!', '', 'i'), ) + keys = 'test it' + EX + wanted = 'Expand me!' + + +class _MultiWord_SnippetOptions_ExpandWordSnippets(_VimTest): + snippets = (('test it', 'Expand me!', '', 'w'), ) + + +class MultiWord_SnippetOptions_ExpandWordSnippets_NormalExpand( + _MultiWord_SnippetOptions_ExpandWordSnippets): + keys = 'test it' + EX + wanted = 'Expand me!' + + +class MultiWord_SnippetOptions_ExpandWordSnippets_NoExpand( + _MultiWord_SnippetOptions_ExpandWordSnippets): + keys = 'atest it' + EX + wanted = 'atest it' + EX + + +class MultiWord_SnippetOptions_ExpandWordSnippets_ExpandSuffix( + _MultiWord_SnippetOptions_ExpandWordSnippets): + keys = 'a-test it' + EX + wanted = 'a-Expand me!' +# Snippet Options #}}} diff --git a/test/test_SnippetPriorities.py b/test/test_SnippetPriorities.py new file mode 100644 index 0000000..be595cc --- /dev/null +++ b/test/test_SnippetPriorities.py @@ -0,0 +1,158 @@ +from test.vim_test_case import VimTestCase as _VimTest +from test.constant import EX, ESC + +# Snippet Priority {{{# + + +class SnippetPriorities_MultiWordTriggerOverwriteExisting(_VimTest): + snippets = ( + ('test me', '${1:Hallo}', 'Types Hallo'), + ('test me', '${1:World}', 'Types World'), + ('test me', 'We overwrite', 'Overwrite the two', '', 1), + ) + keys = 'test me' + EX + wanted = 'We overwrite' + + +class SnippetPriorities_DoNotCareAboutNonMatchings(_VimTest): + snippets = ( + ('test1', 'Hallo', 'Types Hallo'), + ('test2', 'We overwrite', 'Overwrite the two', '', 1), + ) + keys = 'test1' + EX + wanted = 'Hallo' + + +class SnippetPriorities_OverwriteExisting(_VimTest): + snippets = ( + ('test', '${1:Hallo}', 'Types Hallo'), + ('test', '${1:World}', 'Types World'), + ('test', 'We overwrite', 'Overwrite the two', '', 1), + ) + keys = 'test' + EX + wanted = 'We overwrite' + + +class SnippetPriorities_OverwriteTwice_ECR(_VimTest): + snippets = ( + ('test', '${1:Hallo}', 'Types Hallo'), + ('test', '${1:World}', 'Types World'), + ('test', 'We overwrite', 'Overwrite the two', '', 1), + ('test', 'again', 'Overwrite again', '', 2), + ) + keys = 'test' + EX + wanted = 'again' + + +class SnippetPriorities_OverwriteThenChoose_ECR(_VimTest): + snippets = ( + ('test', '${1:Hallo}', 'Types Hallo'), + ('test', '${1:World}', 'Types World'), + ('test', 'We overwrite', 'Overwrite the two', '', 1), + ('test', 'No overwrite', 'Not overwritten', '', 1), + ) + keys = 'test' + EX + '1\n\n' + 'test' + EX + '2\n' + wanted = 'We overwrite\nNo overwrite' + + +class SnippetPriorities_AddedHasHigherThanFile(_VimTest): + files = { 'us/all.snippets': r""" + snippet test "Test Snippet" b + This is a test snippet + endsnippet + """} + snippets = ( + ('test', 'We overwrite', 'Overwrite the two', '', 1), + ) + keys = 'test' + EX + wanted = 'We overwrite' + + +class SnippetPriorities_FileHasHigherThanAdded(_VimTest): + files = { 'us/all.snippets': r""" + snippet test "Test Snippet" b + This is a test snippet + endsnippet + """} + snippets = ( + ('test', 'We do not overwrite', 'Overwrite the two', '', -1), + ) + keys = 'test' + EX + wanted = 'This is a test snippet' + + +class SnippetPriorities_FileHasHigherThanAdded_neg_prio(_VimTest): + files = { 'us/all.snippets': r""" + priority -3 + snippet test "Test Snippet" b + This is a test snippet + endsnippet + """} + snippets = ( + ('test', 'We overwrite', 'Overwrite the two', '', -5), + ) + keys = 'test' + EX + wanted = 'This is a test snippet' + + +class SnippetPriorities_SimpleClear(_VimTest): + files = { + 'us/all.snippets': r""" + priority 1 + clearsnippets + priority -1 + snippet test "Test Snippet" + Should not expand to this. + endsnippet + """ + } + keys = 'test' + EX + wanted = 'test' + EX + + +class SnippetPriorities_SimpleClear2(_VimTest): + files = { + 'us/all.snippets': r""" + clearsnippets + snippet test "Test snippet" + Should not expand to this. + endsnippet + """ + } + keys = 'test' + EX + wanted = 'test' + EX + + +class SnippetPriorities_ClearedByParent(_VimTest): + files = { + 'us/p.snippets': r""" + clearsnippets + """, + 'us/c.snippets': r""" + extends p + snippet test "Test snippets" + Should not expand to this. + endsnippet + """ + } + keys = ESC + ':set ft=c\n' + 'itest' + EX + wanted = 'test' + EX + + +class SnippetPriorities_ClearedByChild(_VimTest): + files = { + 'us/p.snippets': r""" + snippet test "Test snippets" + Should only expand in p. + endsnippet + """, + 'us/c.snippets': r""" + extends p + clearsnippets + """ + } + keys = (ESC + ':set ft=p\n' + 'itest' + EX + '\n' + + ESC + ':set ft=c\n' + 'itest' + EX + ESC + ':set ft=p') + wanted = 'Should only expand in p.\ntest' + EX + +# End: Snippet Priority #}}} diff --git a/test/test_TabStop.py b/test/test_TabStop.py new file mode 100644 index 0000000..c9e7648 --- /dev/null +++ b/test/test_TabStop.py @@ -0,0 +1,408 @@ +from test.vim_test_case import VimTestCase as _VimTest +from test.constant import * + + +class TabStopSimpleReplace_ExpectCorrectResult(_VimTest): + snippets = ('hallo', 'hallo ${0:End} ${1:Beginning}') + keys = 'hallo' + EX + 'na' + JF + 'Du Nase' + wanted = 'hallo Du Nase na' + + +class TabStopSimpleReplaceZeroLengthTabstops_ExpectCorrectResult(_VimTest): + snippets = ('test', r":latex:\`$1\`$0") + keys = 'test' + EX + 'Hello' + JF + 'World' + wanted = ':latex:`Hello`World' + + +class TabStopSimpleReplaceReversed_ExpectCorrectResult(_VimTest): + snippets = ('hallo', 'hallo ${1:End} ${0:Beginning}') + keys = 'hallo' + EX + 'na' + JF + 'Du Nase' + wanted = 'hallo na Du Nase' + + +class TabStopSimpleReplaceSurrounded_ExpectCorrectResult(_VimTest): + snippets = ('hallo', 'hallo ${0:End} a small feed') + keys = 'hallo' + EX + 'Nase' + wanted = 'hallo Nase a small feed' + + +class TabStopSimpleReplaceSurrounded1_ExpectCorrectResult(_VimTest): + snippets = ('hallo', 'hallo $0 a small feed') + keys = 'hallo' + EX + 'Nase' + wanted = 'hallo Nase a small feed' + + +class TabStop_Exit_ExpectCorrectResult(_VimTest): + snippets = ('echo', '$0 run') + keys = 'echo' + EX + 'test' + wanted = 'test run' + + +class TabStopNoReplace_ExpectCorrectResult(_VimTest): + snippets = ('echo', 'echo ${1:Hallo}') + keys = 'echo' + EX + wanted = 'echo Hallo' + + +class TabStop_EscapingCharsBackticks(_VimTest): + snippets = ('test', r"snip \` literal") + keys = 'test' + EX + wanted = 'snip ` literal' + + +class TabStop_EscapingCharsDollars(_VimTest): + snippets = ('test', r"snip \$0 $$0 end") + keys = 'test' + EX + 'hi' + wanted = 'snip $0 $hi end' + + +class TabStop_EscapingCharsDollars1(_VimTest): + snippets = ('test', r"a\${1:literal}") + keys = 'test' + EX + wanted = 'a${1:literal}' + + +class TabStop_EscapingCharsDollars_BeginningOfLine(_VimTest): + snippets = ('test', '\n\\${1:literal}') + keys = 'test' + EX + wanted = '\n${1:literal}' + + +class TabStop_EscapingCharsDollars_BeginningOfDefinitionText(_VimTest): + snippets = ('test', '\\${1:literal}') + keys = 'test' + EX + wanted = '${1:literal}' + + +class TabStop_EscapingChars_Backslash(_VimTest): + snippets = ('test', r"This \ is a backslash!") + keys = 'test' + EX + wanted = 'This \\ is a backslash!' + + +class TabStop_EscapingChars_Backslash2(_VimTest): + snippets = ('test', r"This is a backslash \\ done") + keys = 'test' + EX + wanted = r"This is a backslash \ done" + + +class TabStop_EscapingChars_Backslash3(_VimTest): + snippets = ('test', r"These are two backslashes \\\\ done") + keys = 'test' + EX + wanted = r"These are two backslashes \\ done" + + +class TabStop_EscapingChars_Backslash4(_VimTest): + # Test for bug 746446 + snippets = ('test', r"\\$1{$2}") + keys = 'test' + EX + 'hello' + JF + 'world' + wanted = r"\hello{world}" + + +class TabStop_EscapingChars_RealLife(_VimTest): + snippets = ('test', r"usage: \`basename \$0\` ${1:args}") + keys = 'test' + EX + '[ -u -v -d ]' + wanted = 'usage: `basename $0` [ -u -v -d ]' + + +class TabStopEscapingWhenSelected_ECR(_VimTest): + snippets = ('test', 'snip ${1:default}') + keys = 'test' + EX + ESC + '0ihi' + wanted = 'hisnip default' + + +class TabStopEscapingWhenSelectedSingleCharTS_ECR(_VimTest): + snippets = ('test', 'snip ${1:i}') + keys = 'test' + EX + ESC + '0ihi' + wanted = 'hisnip i' + + +class TabStopEscapingWhenSelectedNoCharTS_ECR(_VimTest): + snippets = ('test', 'snip $1') + keys = 'test' + EX + ESC + '0ihi' + wanted = 'hisnip ' + + +class TabStopWithOneChar_ExpectCorrectResult(_VimTest): + snippets = ('hallo', 'nothing ${1:i} hups') + keys = 'hallo' + EX + 'ship' + wanted = 'nothing ship hups' + + +class TabStopTestJumping_ExpectCorrectResult(_VimTest): + snippets = ('hallo', 'hallo ${2:End} mitte ${1:Beginning}') + keys = 'hallo' + EX + JF + 'Test' + JF + 'Hi' + wanted = 'hallo Test mitte BeginningHi' + + +class TabStopTestJumping2_ExpectCorrectResult(_VimTest): + snippets = ('hallo', 'hallo $2 $1') + keys = 'hallo' + EX + JF + 'Test' + JF + 'Hi' + wanted = 'hallo Test Hi' + + +class TabStopTestJumpingRLExampleWithZeroTab_ExpectCorrectResult(_VimTest): + snippets = ('test', 'each_byte { |${1:byte}| $0 }') + keys = 'test' + EX + JF + 'Blah' + wanted = 'each_byte { |byte| Blah }' + + +class TabStopTestJumpingDontJumpToEndIfThereIsTabZero_ExpectCorrectResult( + _VimTest): + snippets = ('hallo', 'hallo $0 $1') + keys = 'hallo' + EX + 'Test' + JF + 'Hi' + JF + JF + 'du' + wanted = 'hallo Hi' + 2 * JF + 'du Test' + + +class TabStopTestBackwardJumping_ExpectCorrectResult(_VimTest): + snippets = ('hallo', 'hallo ${2:End} mitte${1:Beginning}') + keys = 'hallo' + EX + 'Somelengthy Text' + JF + 'Hi' + JB + \ + 'Lets replace it again' + JF + 'Blah' + JF + JB * 2 + JF + wanted = 'hallo Blah mitteLets replace it again' + JB * 2 + JF + + +class TabStopTestBackwardJumping2_ExpectCorrectResult(_VimTest): + snippets = ('hallo', 'hallo $2 $1') + keys = 'hallo' + EX + 'Somelengthy Text' + JF + 'Hi' + JB + \ + 'Lets replace it again' + JF + 'Blah' + JF + JB * 2 + JF + wanted = 'hallo Blah Lets replace it again' + JB * 2 + JF + + +class TabStopTestMultilineExpand_ExpectCorrectResult(_VimTest): + snippets = ('hallo', 'hallo $0\nnice $1 work\n$3 $2\nSeem to work') + keys = 'test hallo World' + ESC + '02f i' + EX + 'world' + JF + 'try' + \ + JF + 'test' + JF + 'one more' + JF + wanted = 'test hallo one more' + JF + '\nnice world work\n' \ + 'test try\nSeem to work World' + + +class TabStop_TSInDefaultTextRLExample_OverwriteNone_ECR(_VimTest): + snippets = ('test', """<div${1: id="${2:some_id}"}>\n $0\n</div>""") + keys = 'test' + EX + wanted = """<div id="some_id">\n \n</div>""" + + +class TabStop_TSInDefaultTextRLExample_OverwriteFirst_NoJumpBack(_VimTest): + snippets = ('test', """<div${1: id="${2:some_id}"}>\n $0\n</div>""") + keys = 'test' + EX + ' blah' + JF + 'Hallo' + wanted = """<div blah>\n Hallo\n</div>""" + + +class TabStop_TSInDefaultTextRLExample_DeleteFirst(_VimTest): + snippets = ('test', """<div${1: id="${2:some_id}"}>\n $0\n</div>""") + keys = 'test' + EX + BS + JF + 'Hallo' + wanted = """<div>\n Hallo\n</div>""" + + +class TabStop_TSInDefaultTextRLExample_OverwriteFirstJumpBack(_VimTest): + snippets = ('test', """<div${1: id="${2:some_id}"}>\n $3 $0\n</div>""") + keys = 'test' + EX + 'Hi' + JF + 'Hallo' + JB + 'SomethingElse' + JF + \ + 'Nupl' + JF + 'Nox' + wanted = """<divSomethingElse>\n Nupl Nox\n</div>""" + + +class TabStop_TSInDefaultTextRLExample_OverwriteSecond(_VimTest): + snippets = ('test', """<div${1: id="${2:some_id}"}>\n $0\n</div>""") + keys = 'test' + EX + JF + 'no' + JF + 'End' + wanted = """<div id="no">\n End\n</div>""" + + +class TabStop_TSInDefaultTextRLExample_OverwriteSecondTabBack(_VimTest): + snippets = ('test', """<div${1: id="${2:some_id}"}>\n $3 $0\n</div>""") + keys = 'test' + EX + JF + 'no' + JF + 'End' + JB + 'yes' + JF + 'Begin' \ + + JF + 'Hi' + wanted = """<div id="yes">\n Begin Hi\n</div>""" + + +class TabStop_TSInDefaultTextRLExample_OverwriteSecondTabBackTwice(_VimTest): + snippets = ('test', """<div${1: id="${2:some_id}"}>\n $3 $0\n</div>""") + keys = 'test' + EX + JF + 'no' + JF + 'End' + JB + 'yes' + JB + \ + ' allaway' + JF + 'Third' + JF + 'Last' + wanted = """<div allaway>\n Third Last\n</div>""" + + +class TabStop_TSInDefaultText_ZeroLengthNested_OverwriteSecond(_VimTest): + snippets = ('test', """h${1:a$2b}l""") + keys = 'test' + EX + JF + 'ups' + JF + 'End' + wanted = """haupsblEnd""" + + +class TabStop_TSInDefaultText_ZeroLengthZerothTabstop(_VimTest): + snippets = ('test', """Test: ${1:snippet start\nNested tabstop: $0\nsnippet end}\nTrailing text""") + keys = 'test' + EX + JF + 'hello' + wanted = "Test: snippet start\nNested tabstop: hello\nsnippet end\nTrailing text" + +class TabStop_TSInDefaultText_ZeroLengthZerothTabstop_Override(_VimTest): + snippets = ('test', """Test: ${1:snippet start\nNested tabstop: $0\nsnippet end}\nTrailing text""") + keys = 'test' + EX + 'blub' + JF + 'hello' + wanted = "Test: blub\nTrailing texthello" + +class TabStop_TSInDefaultText_ZeroLengthNested_OverwriteFirst(_VimTest): + snippets = ('test', """h${1:a$2b}l""") + keys = 'test' + EX + 'ups' + JF + 'End' + wanted = """hupslEnd""" + + +class TabStop_TSInDefaultText_ZeroLengthNested_OverwriteSecondJumpBackOverwrite( + _VimTest): + snippets = ('test', """h${1:a$2b}l""") + keys = 'test' + EX + JF + 'longertext' + JB + 'overwrite' + JF + 'End' + wanted = """hoverwritelEnd""" + + +class TabStop_TSInDefaultText_ZeroLengthNested_OverwriteSecondJumpBackAndForward0( + _VimTest): + snippets = ('test', """h${1:a$2b}l""") + keys = 'test' + EX + JF + 'longertext' + JB + JF + 'overwrite' + JF + 'End' + wanted = """haoverwriteblEnd""" + + +class TabStop_TSInDefaultText_ZeroLengthNested_OverwriteSecondJumpBackAndForward1( + _VimTest): + snippets = ('test', """h${1:a$2b}l""") + keys = 'test' + EX + JF + 'longertext' + JB + JF + JF + 'End' + wanted = """halongertextblEnd""" + + +class TabStop_TSInDefaultNested_OverwriteOneJumpBackToOther(_VimTest): + snippets = ('test', 'hi ${1:this ${2:second ${3:third}}} $4') + keys = 'test' + EX + JF + 'Hallo' + JF + 'Ende' + wanted = 'hi this Hallo Ende' + + +class TabStop_TSInDefaultNested_OverwriteOneJumpToThird(_VimTest): + snippets = ('test', 'hi ${1:this ${2:second ${3:third}}} $4') + keys = 'test' + EX + JF + JF + 'Hallo' + JF + 'Ende' + wanted = 'hi this second Hallo Ende' + + +class TabStop_TSInDefaultNested_OverwriteOneJumpAround(_VimTest): + snippets = ('test', 'hi ${1:this ${2:second ${3:third}}} $4') + keys = 'test' + EX + JF + JF + 'Hallo' + JB + JB + 'Blah' + JF + 'Ende' + wanted = 'hi Blah Ende' + + +class TabStop_TSInDefault_MirrorsOutside_DoNothing(_VimTest): + snippets = ('test', 'hi ${1:this ${2:second}} $2') + keys = 'test' + EX + wanted = 'hi this second second' + + +class TabStop_TSInDefault_MirrorsOutside_OverwriteSecond(_VimTest): + snippets = ('test', 'hi ${1:this ${2:second}} $2') + keys = 'test' + EX + JF + 'Hallo' + wanted = 'hi this Hallo Hallo' + + +class TabStop_TSInDefault_MirrorsOutside_Overwrite0(_VimTest): + snippets = ('test', 'hi ${1:this ${2:second}} $2') + keys = 'test' + EX + 'Hallo' + wanted = 'hi Hallo ' + + +class TabStop_TSInDefault_MirrorsOutside_Overwrite1(_VimTest): + snippets = ('test', "$1: ${1:'${2:second}'} $2") + keys = 'test' + EX + 'Hallo' + wanted = 'Hallo: Hallo ' + + +class TabStop_TSInDefault_MirrorsOutside_OverwriteSecond1(_VimTest): + snippets = ('test', "$1: ${1:'${2:second}'} $2") + keys = 'test' + EX + JF + 'Hallo' + wanted = "'Hallo': 'Hallo' Hallo" + + +class TabStop_TSInDefault_MirrorsOutside_OverwriteFirstSwitchNumbers(_VimTest): + snippets = ('test', "$2: ${2:'${1:second}'} $1") + keys = 'test' + EX + 'Hallo' + wanted = "'Hallo': 'Hallo' Hallo" + + +class TabStop_TSInDefault_MirrorsOutside_OverwriteFirst_RLExample(_VimTest): + snippets = ( + 'test', + """`!p snip.rv = t[1].split('/')[-1].lower().strip("'")` = require(${1:'${2:sys}'})""") + keys = 'test' + EX + 'WORLD' + JF + 'End' + wanted = 'world = require(WORLD)End' + + +class TabStop_TSInDefault_MirrorsOutside_OverwriteSecond_RLExample(_VimTest): + snippets = ( + 'test', + """`!p snip.rv = t[1].split('/')[-1].lower().strip("'")` = require(${1:'${2:sys}'})""") + keys = 'test' + EX + JF + 'WORLD' + JF + 'End' + wanted = "world = require('WORLD')End" + + +class TabStop_Multiline_Leave(_VimTest): + snippets = ('test', 'hi ${1:first line\nsecond line} world') + keys = 'test' + EX + wanted = 'hi first line\nsecond line world' + + +class TabStop_Multiline_Overwrite(_VimTest): + snippets = ('test', 'hi ${1:first line\nsecond line} world') + keys = 'test' + EX + 'Nothing' + wanted = 'hi Nothing world' + + +class TabStop_Multiline_MirrorInFront_Leave(_VimTest): + snippets = ('test', 'hi $1 ${1:first line\nsecond line} world') + keys = 'test' + EX + wanted = 'hi first line\nsecond line first line\nsecond line world' + + +class TabStop_Multiline_MirrorInFront_Overwrite(_VimTest): + snippets = ('test', 'hi $1 ${1:first line\nsecond line} world') + keys = 'test' + EX + 'Nothing' + wanted = 'hi Nothing Nothing world' + + +class TabStop_Multiline_DelFirstOverwriteSecond_Overwrite(_VimTest): + snippets = ('test', 'hi $1 $2 ${1:first line\nsecond line} ${2:Hi} world') + keys = 'test' + EX + BS + JF + 'Nothing' + wanted = 'hi Nothing Nothing world' + + +class TabStopNavigatingInInsertModeSimple_ExpectCorrectResult(_VimTest): + snippets = ('hallo', 'Hallo ${1:WELT} ups') + keys = 'hallo' + EX + 'haselnut' + 2 * ARR_L + 'hips' + JF + 'end' + wanted = 'Hallo haselnhipsut upsend' + + +class TabStop_CROnlyOnSelectedNear(_VimTest): + snippets = ('test', 't$1t${2: }t{\n\t$0\n}') + keys = 'test' + EX + JF + '\n' + JF + 't' + wanted = 'tt\nt{\n\tt\n}' + + +class TabStop_AdjacentTabStopAddText_ExpectCorrectResult(_VimTest): + snippets = ('test', '[ $1$2 ] $1') + keys = 'test' + EX + 'Hello' + JF + 'World' + JF + wanted = '[ HelloWorld ] Hello' + + +class TabStop_KeepCorrectJumpListOnOverwriteOfPartOfSnippet(_VimTest): + files = { 'us/all.snippets': r""" + snippet i + ia$1: $2 + endsnippet + + snippet ia + ia($1, $2) + endsnippet"""} + keys = 'i' + EX + EX + '1' + JF + '2' + JF + ' after' + JF + '3' + wanted = 'ia(1, 2) after: 3' + + +class TabStop_KeepCorrectJumpListOnOverwriteOfPartOfSnippetRE(_VimTest): + files = { 'us/all.snippets': r""" + snippet i + ia$1: $2 + endsnippet + + snippet "^ia" "regexp" r + ia($1, $2) + endsnippet"""} + keys = 'i' + EX + EX + '1' + JF + '2' + JF + ' after' + JF + '3' + wanted = 'ia(1, 2) after: 3' diff --git a/test/test_Transformation.py b/test/test_Transformation.py new file mode 100644 index 0000000..433750e --- /dev/null +++ b/test/test_Transformation.py @@ -0,0 +1,269 @@ +# encoding: utf-8 +from test.vim_test_case import VimTestCase as _VimTest +from test.constant import * +from test.util import no_unidecode_available + +# Transformations {{{# + + +class Transformation_SimpleCase_ExpectCorrectResult(_VimTest): + snippets = ('test', '$1 ${1/foo/batzl/}') + keys = 'test' + EX + 'hallo foo boy' + wanted = 'hallo foo boy hallo batzl boy' + + +class Transformation_SimpleCaseNoTransform_ExpectCorrectResult(_VimTest): + snippets = ('test', '$1 ${1/foo/batzl/}') + keys = 'test' + EX + 'hallo' + wanted = 'hallo hallo' + + +class Transformation_SimpleCaseTransformInFront_ExpectCorrectResult(_VimTest): + snippets = ('test', '${1/foo/batzl/} $1') + keys = 'test' + EX + 'hallo foo' + wanted = 'hallo batzl hallo foo' + + +class Transformation_SimpleCaseTransformInFrontDefVal_ECR(_VimTest): + snippets = ('test', '${1/foo/batzl/} ${1:replace me}') + keys = 'test' + EX + 'hallo foo' + wanted = 'hallo batzl hallo foo' + + +class Transformation_MultipleTransformations_ECR(_VimTest): + snippets = ('test', '${1:Some Text}${1/.+/\\U$0\E/}\n${1/.+/\L$0\E/}') + keys = 'test' + EX + 'SomE tExt ' + wanted = 'SomE tExt SOME TEXT \nsome text ' + + +class Transformation_TabIsAtEndAndDeleted_ECR(_VimTest): + snippets = ('test', '${1/.+/is something/}${1:some}') + keys = 'hallo test' + EX + 'some\b\b\b\b\b' + wanted = 'hallo ' + + +class Transformation_TabIsAtEndAndDeleted1_ECR(_VimTest): + snippets = ('test', '${1/.+/is something/}${1:some}') + keys = 'hallo test' + EX + 'some\b\b\b\bmore' + wanted = 'hallo is somethingmore' + + +class Transformation_TabIsAtEndNoTextLeave_ECR(_VimTest): + snippets = ('test', '${1/.+/is something/}${1}') + keys = 'hallo test' + EX + wanted = 'hallo ' + + +class Transformation_TabIsAtEndNoTextType_ECR(_VimTest): + snippets = ('test', '${1/.+/is something/}${1}') + keys = 'hallo test' + EX + 'b' + wanted = 'hallo is somethingb' + + +class Transformation_InsideTabLeaveAtDefault_ECR(_VimTest): + snippets = ('test', r"$1 ${2:${1/.+/(?0:defined $0)/}}") + keys = 'test' + EX + 'sometext' + JF + wanted = 'sometext defined sometext' + + +class Transformation_InsideTabOvertype_ECR(_VimTest): + snippets = ('test', r"$1 ${2:${1/.+/(?0:defined $0)/}}") + keys = 'test' + EX + 'sometext' + JF + 'overwrite' + wanted = 'sometext overwrite' + + +class Transformation_Backreference_ExpectCorrectResult(_VimTest): + snippets = ('test', '$1 ${1/([ab])oo/$1ull/}') + keys = 'test' + EX + 'foo boo aoo' + wanted = 'foo boo aoo foo bull aoo' + + +class Transformation_BackreferenceTwice_ExpectCorrectResult(_VimTest): + snippets = ('test', r"$1 ${1/(dead) (par[^ ]*)/this $2 is a bit $1/}") + keys = 'test' + EX + 'dead parrot' + wanted = 'dead parrot this parrot is a bit dead' + + +class Transformation_CleverTransformUpercaseChar_ExpectCorrectResult(_VimTest): + snippets = ('test', '$1 ${1/(.)/\\u$1/}') + keys = 'test' + EX + 'hallo' + wanted = 'hallo Hallo' + + +class Transformation_CleverTransformLowercaseChar_ExpectCorrectResult( + _VimTest): + snippets = ('test', '$1 ${1/(.*)/\l$1/}') + keys = 'test' + EX + 'Hallo' + wanted = 'Hallo hallo' + + +class Transformation_CleverTransformLongUpper_ExpectCorrectResult(_VimTest): + snippets = ('test', '$1 ${1/(.*)/\\U$1\E/}') + keys = 'test' + EX + 'hallo' + wanted = 'hallo HALLO' + + +class Transformation_CleverTransformLongLower_ExpectCorrectResult(_VimTest): + snippets = ('test', '$1 ${1/(.*)/\L$1\E/}') + keys = 'test' + EX + 'HALLO' + wanted = 'HALLO hallo' + + +class Transformation_SimpleCaseAsciiResult(_VimTest): + skip_if = lambda self: no_unidecode_available() + snippets = ('ascii', '$1 ${1/(.*)/$1/a}') + keys = 'ascii' + EX + 'éèàçôïÉÈÀÇÔÏ€' + wanted = 'éèàçôïÉÈÀÇÔÏ€ eeacoiEEACOIEU' + + +class Transformation_LowerCaseAsciiResult(_VimTest): + skip_if = lambda self: no_unidecode_available() + snippets = ('ascii', '$1 ${1/(.*)/\L$1\E/a}') + keys = 'ascii' + EX + 'éèàçôïÉÈÀÇÔÏ€' + wanted = 'éèàçôïÉÈÀÇÔÏ€ eeacoieeacoieu' + + +class Transformation_ConditionalInsertionSimple_ExpectCorrectResult(_VimTest): + snippets = ('test', '$1 ${1/(^a).*/(?0:began with an a)/}') + keys = 'test' + EX + 'a some more text' + wanted = 'a some more text began with an a' + + +class Transformation_CIBothDefinedNegative_ExpectCorrectResult(_VimTest): + snippets = ('test', '$1 ${1/(?:(^a)|(^b)).*/(?1:yes:no)/}') + keys = 'test' + EX + 'b some' + wanted = 'b some no' + + +class Transformation_CIBothDefinedPositive_ExpectCorrectResult(_VimTest): + snippets = ('test', '$1 ${1/(?:(^a)|(^b)).*/(?1:yes:no)/}') + keys = 'test' + EX + 'a some' + wanted = 'a some yes' + + +class Transformation_ConditionalInsertRWEllipsis_ECR(_VimTest): + snippets = ('test', r"$1 ${1/(\w+(?:\W+\w+){,7})\W*(.+)?/$1(?2:...)/}") + keys = 'test' + EX + 'a b c d e f ghhh h oha' + wanted = 'a b c d e f ghhh h oha a b c d e f ghhh h...' + + +class Transformation_ConditionalInConditional_ECR(_VimTest): + snippets = ('test', r"$1 ${1/^.*?(-)?(>)?$/(?2::(?1:>:.))/}") + keys = 'test' + EX + 'hallo' + ESC + '$a\n' + \ + 'test' + EX + 'hallo-' + ESC + '$a\n' + \ + 'test' + EX + 'hallo->' + wanted = 'hallo .\nhallo- >\nhallo-> ' + + +class Transformation_CINewlines_ECR(_VimTest): + snippets = ('test', r"$1 ${1/, */\n/}") + keys = 'test' + EX + 'test, hallo' + wanted = 'test, hallo test\nhallo' + + +class Transformation_CITabstop_ECR(_VimTest): + snippets = ('test', r"$1 ${1/, */\t/}") + keys = 'test' + EX + 'test, hallo' + wanted = 'test, hallo test\thallo' + + +class Transformation_CIEscapedParensinReplace_ECR(_VimTest): + snippets = ('test', r"$1 ${1/hal((?:lo)|(?:ul))/(?1:ha\($1\))/}") + keys = 'test' + EX + 'test, halul' + wanted = 'test, halul test, ha(ul)' + + +class Transformation_OptionIgnoreCase_ECR(_VimTest): + snippets = ('test', r"$1 ${1/test/blah/i}") + keys = 'test' + EX + 'TEST' + wanted = 'TEST blah' + + +class Transformation_OptionMultiline_ECR(_VimTest): + snippets = ('test', r"${VISUAL/^/* /mg}") + keys = 'test\ntest\ntest' + ESC + 'V2k' + EX + 'test' + EX + wanted = '* test\n* test\n* test' + + +class Transformation_OptionReplaceGlobal_ECR(_VimTest): + snippets = ('test', r"$1 ${1/, */-/g}") + keys = 'test' + EX + 'a, nice, building' + wanted = 'a, nice, building a-nice-building' + + +class Transformation_OptionReplaceGlobalMatchInReplace_ECR(_VimTest): + snippets = ('test', r"$1 ${1/, */, /g}") + keys = 'test' + EX + 'a, nice, building' + wanted = 'a, nice, building a, nice, building' + + +class TransformationUsingBackspaceToDeleteDefaultValueInFirstTab_ECR(_VimTest): + snippets = ('test', 'snip ${1/.+/(?0:m1)/} ${2/.+/(?0:m2)/} ' + '${1:default} ${2:def}') + keys = 'test' + EX + BS + JF + 'hi' + wanted = 'snip m2 hi' + + +class TransformationUsingBackspaceToDeleteDefaultValueInSecondTab_ECR( + _VimTest): + snippets = ('test', 'snip ${1/.+/(?0:m1)/} ${2/.+/(?0:m2)/} ' + '${1:default} ${2:def}') + keys = 'test' + EX + 'hi' + JF + BS + wanted = 'snip m1 hi ' + + +class TransformationUsingBackspaceToDeleteDefaultValueTypeSomethingThen_ECR( + _VimTest): + snippets = ('test', 'snip ${1/.+/(?0:matched)/} ${1:default}') + keys = 'test' + EX + BS + 'hallo' + wanted = 'snip matched hallo' + + +class TransformationUsingBackspaceToDeleteDefaultValue_ECR(_VimTest): + snippets = ('test', 'snip ${1/.+/(?0:matched)/} ${1:default}') + keys = 'test' + EX + BS + wanted = 'snip ' + + +class Transformation_TestKill_InsertBefore_NoKill(_VimTest): + snippets = 'test', r"$1 ${1/.*/\L$0$0\E/}_" + keys = 'hallo test' + EX + 'AUCH' + ESC + \ + 'wihi' + ESC + 'bb' + 'ino' + JF + 'end' + wanted = 'hallo noAUCH hinoauchnoauch_end' + + +class Transformation_TestKill_InsertAfter_NoKill(_VimTest): + snippets = 'test', r"$1 ${1/.*/\L$0$0\E/}_" + keys = 'hallo test' + EX + 'AUCH' + ESC + \ + 'eiab' + ESC + 'bb' + 'ino' + JF + 'end' + wanted = 'hallo noAUCH noauchnoauchab_end' + + +class Transformation_TestKill_InsertBeginning_Kill(_VimTest): + snippets = 'test', r"$1 ${1/.*/\L$0$0\E/}_" + keys = 'hallo test' + EX + 'AUCH' + ESC + \ + 'wahi' + ESC + 'bb' + 'ino' + JF + 'end' + wanted = 'hallo noAUCH ahiuchauch_end' + + +class Transformation_TestKill_InsertEnd_Kill(_VimTest): + snippets = 'test', r"$1 ${1/.*/\L$0$0\E/}_" + keys = 'hallo test' + EX + 'AUCH' + ESC + \ + 'ehihi' + ESC + 'bb' + 'ino' + JF + 'end' + wanted = 'hallo noAUCH auchauchih_end' + +class Transformation_ConditionalWithEscapedDelimiter(_VimTest): + snippets = 'test', r"$1 ${1/(aa)|.*/(?1:yes\:no\))/}" + keys = 'test' + EX + 'aa' + wanted = 'aa yes:no)' + +class Transformation_ConditionalWithBackslashBeforeDelimiter(_VimTest): + snippets = 'test', r"$1 ${1/(aa)|.*/(?1:yes\\:no)/}" + keys = 'test' + EX + 'aa' + wanted = 'aa yes\\' + +class Transformation_ConditionalWithBackslashBeforeDelimiter1(_VimTest): + snippets = 'test', r"$1 ${1/(aa)|.*/(?1:yes:no\\)/}" + keys = 'test' + EX + 'ab' + wanted = 'ab no\\' +# End: Transformations #}}} diff --git a/test/test_UltiSnipFunc.py b/test/test_UltiSnipFunc.py new file mode 100644 index 0000000..fda3372 --- /dev/null +++ b/test/test_UltiSnipFunc.py @@ -0,0 +1,171 @@ +# encoding: utf-8 +from test.vim_test_case import VimTestCase as _VimTest +from test.constant import * +from test.util import running_on_windows + +# AddSnippet Function {{{# + + +class _AddFuncBase(_VimTest): + args = '' + + def _before_test(self): + self.vim.send_to_vim(':call UltiSnips#AddSnippetWithPriority(%s)\n' % self.args) + + +class AddFunc_Simple(_AddFuncBase): + args = '"test", "simple expand", "desc", "", "all", 0' + keys = 'abc test' + EX + wanted = 'abc simple expand' + + +class AddFunc_Opt(_AddFuncBase): + args = '".*test", "simple expand", "desc", "r", "all", 0' + keys = 'abc test' + EX + wanted = 'simple expand' +# End: AddSnippet Function #}}} + +# Langmap Handling {{{# +# Test for bug 501727 # + + +class TestNonEmptyLangmap_ExpectCorrectResult(_VimTest): + snippets = ('testme', + """my snipped ${1:some_default} +and a mirror: $1 +$2...$3 +$0""") + keys = 'testme' + EX + 'hi1' + JF + 'hi2' + JF + 'hi3' + JF + 'hi4' + wanted = """my snipped hi1 +and a mirror: hi1 +hi2...hi3 +hi4""" + + def _extra_vim_config(self, vim_config): + vim_config.append('set langmap=dj,rk,nl,ln,jd,kr,DJ,RK,NL,LN,JD,KR') + +# Test for https://bugs.launchpad.net/bugs/501727 # + + +class TestNonEmptyLangmapWithSemi_ExpectCorrectResult(_VimTest): + snippets = ('testme', + """my snipped ${1:some_default} +and a mirror: $1 +$2...$3 +$0""") + keys = 'testme' + EX + 'hi;' + JF + 'hi2' + \ + JF + 'hi3' + JF + 'hi4' + ESC + ';Hello' + wanted = """my snipped hi; +and a mirror: hi; +hi2...hi3 +hi4Hello""" + + def _before_test(self): + self.vim.send_to_vim(':set langmap=\\\\;;A\n') + +# Test for bug 871357 # + + +class TestLangmapWithUtf8_ExpectCorrectResult(_VimTest): + # SendKeys can't send UTF characters + skip_if = lambda self: running_on_windows() + snippets = ('testme', + """my snipped ${1:some_default} +and a mirror: $1 +$2...$3 +$0""") + keys = 'testme' + EX + 'hi1' + JF + 'hi2' + JF + 'hi3' + JF + 'hi4' + wanted = """my snipped hi1 +and a mirror: hi1 +hi2...hi3 +hi4""" + + def _before_test(self): + self.vim.send_to_vim( + ":set langmap=йq,цw,уe,кr,еt,нy,гu,шi,щo,зp,х[,ъ],фa,ыs,вd,аf,пg,рh,оj,лk,дl,ж\\;,э',яz,чx,сc,мv,иb,тn,ьm,ю.,ё',ЙQ,ЦW,УE,КR,ЕT,НY,ГU,ШI,ЩO,ЗP,Х\{,Ъ\},ФA,ЫS,ВD,АF,ПG,РH,ОJ,ЛK,ДL,Ж\:,Э\",ЯZ,ЧX,СC,МV,ИB,ТN,ЬM,Б\<,Ю\>\n") + +# End: Langmap Handling #}}} + +# SnippetsInCurrentScope {{{# + + +class VerifyVimDict1(_VimTest): + + """check: + correct type (4 means vim dictionary) + correct length of dictionary (in this case we have on element if the use same prefix, dictionary should have 1 element) + correct description (including the apostrophe) + if the prefix is mismatched no resulting dict should have 0 elements + """ + + snippets = ('testâ', 'abc123ά', '123\'êabc') + keys = ('test=(type(UltiSnips#SnippetsInCurrentScope()) . len(UltiSnips#SnippetsInCurrentScope()) . ' + + 'UltiSnips#SnippetsInCurrentScope()["testâ"]' + ')\n' + + '=len(UltiSnips#SnippetsInCurrentScope())\n') + + wanted = 'test41123\'êabc0' + + +class VerifyVimDict2(_VimTest): + + """check: + can use " in trigger + """ + + snippets = ('te"stâ', 'abc123ά', '123êabc') + akey = "'te{}stâ'".format('"') + keys = ( + 'te"=(UltiSnips#SnippetsInCurrentScope()[{}]'.format(akey) + ')\n') + wanted = 'te"123êabc' + + +class VerifyVimDict3(_VimTest): + + """check: + can use ' in trigger + """ + + snippets = ("te'stâ", 'abc123ά', '123êabc') + akey = '"te{}stâ"'.format("'") + keys = ( + "te'=(UltiSnips#SnippetsInCurrentScope()[{}]".format(akey) + ')\n') + wanted = "te'123êabc" +# End: SnippetsInCurrentScope #}}} + +# Snippet Source {{{# + + +class AddNewSnippetSource(_VimTest): + keys = ('blumba' + EX + ESC + + ':%(python)s UltiSnips_Manager.register_snippet_source(' + + "'temp', MySnippetSource())\n" + + 'oblumba' + EX + ESC + + ":%(python)s UltiSnips_Manager.unregister_snippet_source('temp')\n" + + 'oblumba' + EX) % {'python': 'py3' if PYTHON3 else 'py'} + wanted = ( + 'blumba' + EX + '\n' + + 'this is a dynamic snippet' + '\n' + + 'blumba' + EX + ) + + def _extra_vim_config(self, vim_config): + self._create_file('snippet_source.py', """ +from UltiSnips.snippet.source import SnippetSource +from UltiSnips.snippet.definition import UltiSnipsSnippetDefinition + +class MySnippetSource(SnippetSource): + def get_snippets(self, filetypes, before, possible, autotrigger_only, + visual_content): + if before.endswith('blumba') and autotrigger_only == False: + return [ + UltiSnipsSnippetDefinition( + -100, "blumba", "this is a dynamic snippet", "", "", {}, "blub", + None, {}) + ] + return [] +""") + pyfile = 'py3file' if PYTHON3 else 'pyfile' + vim_config.append( + '%s %s' % + (pyfile, self.name_temp('snippet_source.py'))) +# End: Snippet Source #}}} diff --git a/test/test_Visual.py b/test/test_Visual.py new file mode 100644 index 0000000..d6d9d8a --- /dev/null +++ b/test/test_Visual.py @@ -0,0 +1,204 @@ +from test.vim_test_case import VimTestCase as _VimTest +from test.constant import * + +# ${VISUAL} {{{# + + +class Visual_NoVisualSelection_Ignore(_VimTest): + snippets = ('test', 'h${VISUAL}b') + keys = 'test' + EX + 'abc' + wanted = 'hbabc' + + +class Visual_SelectOneWord(_VimTest): + snippets = ('test', 'h${VISUAL}b') + keys = 'blablub' + ESC + '0v6l' + EX + 'test' + EX + wanted = 'hblablubb' + + +class Visual_SelectOneWord_ProblemAfterTab(_VimTest): + snippets = ('test', 'h${VISUAL}b', '', 'i') + keys = '\tblablub' + ESC + '5hv3l' + EX + 'test' + EX + wanted = '\tbhlablbub' + + +class VisualWithDefault_ExpandWithoutVisual(_VimTest): + snippets = ('test', 'h${VISUAL:world}b') + keys = 'test' + EX + 'hi' + wanted = 'hworldbhi' + + +class VisualWithDefaultWithSlashes_ExpandWithoutVisual(_VimTest): + snippets = ('test', r"h${VISUAL:\/\/ body}b") + keys = 'test' + EX + 'hi' + wanted = 'h// bodybhi' + + +class VisualWithDefault_ExpandWithVisual(_VimTest): + snippets = ('test', 'h${VISUAL:world}b') + keys = 'blablub' + ESC + '0v6l' + EX + 'test' + EX + wanted = 'hblablubb' + + +class Visual_ExpandTwice(_VimTest): + snippets = ('test', 'h${VISUAL}b') + keys = 'blablub' + ESC + '0v6l' + EX + 'test' + EX + '\ntest' + EX + wanted = 'hblablubb\nhb' + + +class Visual_SelectOneWord_TwiceVisual(_VimTest): + snippets = ('test', 'h${VISUAL}b${VISUAL}a') + keys = 'blablub' + ESC + '0v6l' + EX + 'test' + EX + wanted = 'hblablubbblabluba' + + +class Visual_SelectOneWord_Inword(_VimTest): + snippets = ('test', 'h${VISUAL}b', 'Description', 'i') + keys = 'blablub' + ESC + '0lv4l' + EX + 'test' + EX + wanted = 'bhlablubb' + + +class Visual_SelectOneWord_TillEndOfLine(_VimTest): + snippets = ('test', 'h${VISUAL}b', 'Description', 'i') + keys = 'blablub' + ESC + '0v$' + EX + 'test' + EX + ESC + 'o' + wanted = 'hblablub\nb' + + +class Visual_SelectOneWordWithTabstop_TillEndOfLine(_VimTest): + snippets = ('test', 'h${2:ahh}${VISUAL}${1:ups}b', 'Description', 'i') + keys = 'blablub' + ESC + '0v$' + EX + 'test' + \ + EX + 'mmm' + JF + 'n' + JF + 'done' + ESC + 'o' + wanted = 'hnblablub\nmmmbdone' + + +class Visual_InDefaultText_SelectOneWord_NoOverwrite(_VimTest): + snippets = ('test', 'h${1:${VISUAL}}b') + keys = 'blablub' + ESC + '0v6l' + EX + 'test' + EX + JF + 'hello' + wanted = 'hblablubbhello' + + +class Visual_InDefaultText_SelectOneWord(_VimTest): + snippets = ('test', 'h${1:${VISUAL}}b') + keys = 'blablub' + ESC + '0v6l' + EX + 'test' + EX + 'hello' + wanted = 'hhellob' + + +class Visual_CrossOneLine(_VimTest): + snippets = ('test', 'h${VISUAL}b') + keys = 'bla blub\n helloi' + ESC + '0k4lvjll' + EX + 'test' + EX + wanted = 'bla hblub\n hellobi' + + +class Visual_LineSelect_Simple(_VimTest): + snippets = ('test', 'h${VISUAL}b') + keys = 'hello\nnice\nworld' + ESC + 'Vkk' + EX + 'test' + EX + wanted = 'hhello\n nice\n worldb' + + +class Visual_InDefaultText_LineSelect_NoOverwrite(_VimTest): + snippets = ('test', 'h${1:bef${VISUAL}aft}b') + keys = 'hello\nnice\nworld' + ESC + 'Vkk' + EX + 'test' + EX + JF + 'hi' + wanted = 'hbefhello\n nice\n worldaftbhi' + + +class Visual_InDefaultText_LineSelect_Overwrite(_VimTest): + snippets = ('test', 'h${1:bef${VISUAL}aft}b') + keys = 'hello\nnice\nworld' + ESC + 'Vkk' + \ + EX + 'test' + EX + 'jup' + JF + 'hi' + wanted = 'hjupbhi' + + +class Visual_LineSelect_CheckIndentSimple(_VimTest): + snippets = ('test', 'beg\n\t${VISUAL}\nend') + keys = 'hello\nnice\nworld' + ESC + 'Vkk' + EX + 'test' + EX + wanted = 'beg\n\thello\n\tnice\n\tworld\nend' + + +class Visual_LineSelect_CheckIndentTwice(_VimTest): + snippets = ('test', 'beg\n\t${VISUAL}\nend') + keys = ' hello\n nice\n\tworld' + ESC + 'Vkk' + EX + 'test' + EX + wanted = 'beg\n\t hello\n\t nice\n\t\tworld\nend' + + +class Visual_InDefaultText_IndentSpacesToTabstop_NoOverwrite(_VimTest): + snippets = ('test', 'h${1:beforea${VISUAL}aft}b') + keys = 'hello\nnice\nworld' + ESC + 'Vkk' + EX + 'test' + EX + JF + 'hi' + wanted = 'hbeforeahello\n\tnice\n\tworldaftbhi' + + +class Visual_InDefaultText_IndentSpacesToTabstop_Overwrite(_VimTest): + snippets = ('test', 'h${1:beforea${VISUAL}aft}b') + keys = 'hello\nnice\nworld' + ESC + 'Vkk' + \ + EX + 'test' + EX + 'ups' + JF + 'hi' + wanted = 'hupsbhi' + + +class Visual_InDefaultText_IndentSpacesToTabstop_NoOverwrite1(_VimTest): + snippets = ('test', 'h${1:beforeaaa${VISUAL}aft}b') + keys = 'hello\nnice\nworld' + ESC + 'Vkk' + EX + 'test' + EX + JF + 'hi' + wanted = 'hbeforeaaahello\n\t nice\n\t worldaftbhi' + + +class Visual_InDefaultText_IndentBeforeTabstop_NoOverwrite(_VimTest): + snippets = ('test', 'hello\n\t ${1:${VISUAL}}\nend') + keys = 'hello\nnice\nworld' + ESC + 'Vkk' + EX + 'test' + EX + JF + 'hi' + wanted = 'hello\n\t hello\n\t nice\n\t world\nendhi' + + +class Visual_LineSelect_WithTabStop(_VimTest): + snippets = ('test', 'beg\n\t${VISUAL}\n\t${1:here_we_go}\nend') + keys = 'hello\nnice\nworld' + ESC + 'Vkk' + \ + EX + 'test' + EX + 'super' + JF + 'done' + wanted = 'beg\n\thello\n\tnice\n\tworld\n\tsuper\nenddone' + + +class Visual_LineSelect_CheckIndentWithTS_NoOverwrite(_VimTest): + snippets = ('test', 'beg\n\t${0:${VISUAL}}\nend') + keys = 'hello\nnice\nworld' + ESC + 'Vkk' + EX + 'test' + EX + wanted = 'beg\n\thello\n\tnice\n\tworld\nend' + + +class Visual_LineSelect_DedentLine(_VimTest): + snippets = ('if', 'if {\n\t${VISUAL}$0\n}') + keys = 'if' + EX + 'one\n\ttwo\n\tthree' + ESC + \ + ARR_U * 2 + 'V' + ARR_D + EX + '\tif' + EX + wanted = 'if {\n\tif {\n\t\tone\n\t\ttwo\n\t}\n\tthree\n}' + + +class VisualTransformation_SelectOneWord(_VimTest): + snippets = ('test', r"h${VISUAL/./\U$0\E/g}b") + keys = 'blablub' + ESC + '0v6l' + EX + 'test' + EX + wanted = 'hBLABLUBb' + + +class VisualTransformationWithDefault_ExpandWithoutVisual(_VimTest): + snippets = ('test', r"h${VISUAL:world/./\U$0\E/g}b") + keys = 'test' + EX + 'hi' + wanted = 'hWORLDbhi' + + +class VisualTransformationWithDefault_ExpandWithVisual(_VimTest): + snippets = ('test', r"h${VISUAL:world/./\U$0\E/g}b") + keys = 'blablub' + ESC + '0v6l' + EX + 'test' + EX + wanted = 'hBLABLUBb' + + +class VisualTransformation_LineSelect_Simple(_VimTest): + snippets = ('test', r"h${VISUAL/./\U$0\E/g}b") + keys = 'hello\nnice\nworld' + ESC + 'Vkk' + EX + 'test' + EX + wanted = 'hHELLO\n NICE\n WORLDb' + + +class VisualTransformation_InDefaultText_LineSelect_NoOverwrite(_VimTest): + snippets = ('test', r"h${1:bef${VISUAL/./\U$0\E/g}aft}b") + keys = 'hello\nnice\nworld' + ESC + 'Vkk' + EX + 'test' + EX + JF + 'hi' + wanted = 'hbefHELLO\n NICE\n WORLDaftbhi' + + +class VisualTransformation_InDefaultText_LineSelect_Overwrite(_VimTest): + snippets = ('test', r"h${1:bef${VISUAL/./\U$0\E/g}aft}b") + keys = 'hello\nnice\nworld' + ESC + 'Vkk' + \ + EX + 'test' + EX + 'jup' + JF + 'hi' + wanted = 'hjupbhi' + +# End: ${VISUAL} #}}} diff --git a/test/util.py b/test/util.py new file mode 100644 index 0000000..74d8d5b --- /dev/null +++ b/test/util.py @@ -0,0 +1,17 @@ +import platform + +try: + import unidecode + UNIDECODE_IMPORTED = True +except ImportError: + UNIDECODE_IMPORTED = False + + +def running_on_windows(): + if platform.system() == 'Windows': + return 'Does not work on Windows.' + + +def no_unidecode_available(): + if not UNIDECODE_IMPORTED: + return 'unidecode is not available.' diff --git a/test/vim_interface.py b/test/vim_interface.py new file mode 100644 index 0000000..3c3c35a --- /dev/null +++ b/test/vim_interface.py @@ -0,0 +1,278 @@ +# encoding: utf-8 + +import os +import re +import shutil +import subprocess +import tempfile +import textwrap +import time + +from test.constant import (ARR_D, ARR_L, ARR_R, ARR_U, BS, ESC, PYTHON3, + SEQUENCES) + + +def wait_until_file_exists(file_path, times=None, interval=0.01): + while times is None or times: + if os.path.exists(file_path): + return True + time.sleep(interval) + if times is not None: + times -= 1 + return False + + +def read_text_file(filename): + """Reads the contens of a text file.""" + if PYTHON3: + return open(filename, 'r', encoding='utf-8').read() + else: + return open(filename, 'r').read() + + +def is_process_running(pid): + """Returns true if a process with pid is running, false otherwise.""" + # from + # http://stackoverflow.com/questions/568271/how-to-check-if-there-exists-a-process-with-a-given-pid + try: + os.kill(pid, 0) + except OSError: + return False + else: + return True + + +def silent_call(cmd): + """Calls 'cmd' and returns the exit value.""" + return subprocess.call(cmd, stderr=subprocess.PIPE, stdout=subprocess.PIPE) + + +def create_directory(dirname): + """Creates 'dirname' and its parents if it does not exist.""" + try: + os.makedirs(dirname) + except OSError: + pass + + +class TempFileManager(object): + + def __init__(self, name=''): + self._temp_dir = tempfile.mkdtemp(prefix='UltiSnipsTest_' + name) + + def name_temp(self, file_path): + return os.path.join(self._temp_dir, file_path) + + def write_temp(self, file_path, content): + abs_path = self.name_temp(file_path) + create_directory(os.path.dirname(abs_path)) + if PYTHON3: + with open(abs_path, 'w', encoding='utf-8') as f: + f.write(content) + else: + with open(abs_path, 'w') as f: + f.write(content) + return abs_path + + def unique_name_temp(self, suffix='', prefix=''): + file_handler, abspath = tempfile.mkstemp( + suffix, prefix, self._temp_dir) + os.close(file_handler) + os.remove(abspath) + return abspath + + def clear_temp(self): + shutil.rmtree(self._temp_dir) + create_directory(self._temp_dir) + + +class VimInterface(TempFileManager): + + def __init__(self, vim_executable, name): + TempFileManager.__init__(self, name) + self._vim_executable = vim_executable + self._patch_version = None + + def has_patch(self, version): + if self._patch_version is None: + output = subprocess.check_output([ + self._vim_executable, "--version" + ]) + + self._patch_version = 0 + for line in output.decode('utf-8').split("\n"): + if line.startswith("Included patches:"): + self._patch_version = line.split('-')[1] + + return int(self._patch_version) >= version + + def get_buffer_data(self): + buffer_path = self.unique_name_temp(prefix='buffer_') + self.send_to_vim(ESC + ':w! %s\n' % buffer_path) + if wait_until_file_exists(buffer_path, 50): + return read_text_file(buffer_path)[:-1] + + def send_to_terminal(self, s): + """Types 's' into the terminal.""" + raise NotImplementedError() + + def send_to_vim(self, s): + """Types 's' into the vim instance under test.""" + raise NotImplementedError() + + def launch(self, config=[]): + """Returns the python version in Vim as a string, e.g. '2.7'""" + pid_file = self.name_temp('vim.pid') + done_file = self.name_temp('loading_done') + if os.path.exists(done_file): + os.remove(done_file) + + post_config = [] + post_config.append('%s << EOF' % ('py3' if PYTHON3 else 'py')) + post_config.append('import vim, sys') + post_config.append( + "with open('%s', 'w') as pid_file: pid_file.write(vim.eval('getpid()'))" % + pid_file) + post_config.append("with open('%s', 'w') as done_file:" % done_file) + post_config.append(" done_file.write('%i.%i.%i' % sys.version_info[:3])") + post_config.append('EOF') + + config_path = self.write_temp('vim_config.vim', + textwrap.dedent(os.linesep.join(config + post_config) + '\n')) + + # Note the space to exclude it from shell history. Also we always set + # NVIM_LISTEN_ADDRESS, even when running vanilla Vim, because it will + # just not care. + self.send_to_terminal(""" NVIM_LISTEN_ADDRESS=/tmp/nvim %s -u %s\r\n""" % ( + self._vim_executable, config_path)) + wait_until_file_exists(done_file) + self._vim_pid = int(read_text_file(pid_file)) + return read_text_file(done_file).strip() + + def leave_with_wait(self): + self.send_to_vim(3 * ESC + ':qa!\n') + while is_process_running(self._vim_pid): + time.sleep(.2) + + +class VimInterfaceTmux(VimInterface): + + def __init__(self, vim_executable, session): + VimInterface.__init__(self, vim_executable, 'Tmux') + self.session = session + self._check_version() + + def _send(self, s): + # I did not find any documentation on what needs escaping when sending + # to tmux, but it seems like this is all that is needed for now. + s = s.replace(';', r'\;') + + if PYTHON3: + s = s.encode('utf-8') + silent_call(['tmux', 'send-keys', '-t', self.session, '-l', s]) + + def send_to_terminal(self, s): + return self._send(s) + + def send_to_vim(self, s): + return self._send(s) + + def _check_version(self): + stdout, _ = subprocess.Popen(['tmux', '-V'], + stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate() + if PYTHON3: + stdout = stdout.decode('utf-8') + m = re.match(r"tmux (\d+).(\d+)", stdout) + if not m or not (int(m.group(1)), int(m.group(2))) >= (1, 8): + raise RuntimeError( + 'Need at least tmux 1.8, you have %s.' % + stdout.strip()) + +class VimInterfaceTmuxNeovim(VimInterfaceTmux): + + def __init__(self, vim_executable, session): + VimInterfaceTmux.__init__(self, vim_executable, session) + self._nvim = None + + def send_to_vim(self, s): + if s == ARR_L: + s = "<Left>" + elif s == ARR_R: + s = "<Right>" + elif s == ARR_U: + s = "<Up>" + elif s == ARR_D: + s = "<Down>" + elif s == BS: + s = "<bs>" + elif s == ESC: + s = "<esc>" + elif s == "<": + s = "<lt>" + self._nvim.input(s) + + def launch(self, config=[]): + import neovim + rv = VimInterfaceTmux.launch(self, config) + self._nvim = neovim.attach('socket', path='/tmp/nvim') + return rv + +class VimInterfaceWindows(VimInterface): + BRACES = re.compile('([}{])') + WIN_ESCAPES = ['+', '^', '%', '~', '[', ']', '<', '>', '(', ')'] + WIN_REPLACES = [ + (BS, '{BS}'), + (ARR_L, '{LEFT}'), + (ARR_R, '{RIGHT}'), + (ARR_U, '{UP}'), + (ARR_D, '{DOWN}'), + ('\t', '{TAB}'), + ('\n', '~'), + (ESC, '{ESC}'), + + # On my system ` waits for a second keystroke, so `+SPACE = "`". On + # most systems, `+Space = "` ". I work around this, by sending the host + # ` as `+_+BS. Awkward, but the only way I found to get this working. + ('`', '`_{BS}'), + ('´', '´_{BS}'), + ('{^}', '{^}_{BS}'), + ] + + def __init__(self): + # import windows specific modules + import win32com.client + import win32gui + self.win32gui = win32gui + self.shell = win32com.client.Dispatch('WScript.Shell') + + def is_focused(self, title=None): + cur_title = self.win32gui.GetWindowText( + self.win32gui.GetForegroundWindow()) + if (title or '- GVIM') in cur_title: + return True + return False + + def focus(self, title=None): + if not self.shell.AppActivate(title or '- GVIM'): + raise Exception('Failed to switch to GVim window') + time.sleep(1) + + def convert_keys(self, keys): + keys = self.BRACES.sub(r"{\1}", keys) + for k in self.WIN_ESCAPES: + keys = keys.replace(k, '{%s}' % k) + for f, r in self.WIN_REPLACES: + keys = keys.replace(f, r) + return keys + + def send(self, keys): + keys = self.convert_keys(keys) + + if not self.is_focused(): + time.sleep(2) + self.focus() + if not self.is_focused(): + # This is the only way I can find to stop test execution + raise KeyboardInterrupt('Failed to focus GVIM') + + self.shell.SendKeys(keys) diff --git a/test/vim_test_case.py b/test/vim_test_case.py new file mode 100644 index 0000000..f3a6e08 --- /dev/null +++ b/test/vim_test_case.py @@ -0,0 +1,208 @@ +# encoding: utf-8 + +# pylint: skip-file + +import os +import subprocess +import tempfile +import textwrap +import time +import unittest + +from test.constant import PYTHON3, SEQUENCES, EX +from test.vim_interface import create_directory, TempFileManager + + +def plugin_cache_dir(): + """The directory that we check out our bundles to.""" + return os.path.join(tempfile.gettempdir(), 'UltiSnips_test_vim_plugins') + + +class VimTestCase(unittest.TestCase, TempFileManager): + snippets = () + files = {} + text_before = ' --- some text before --- \n\n' + text_after = '\n\n --- some text after --- ' + expected_error = '' + wanted = '' + keys = '' + sleeptime = 0.00 + output = '' + plugins = [] + # Skip this test for the given reason or None for not skipping it. + skip_if = lambda self: None + version = None # Will be set to vim --version output + maxDiff = None # Show all diff output, always. + vim_flavor = None # will be 'vim' or 'neovim'. + expected_python_version = None # If set, we need to check that our Vim is running this python version. + + def __init__(self, *args, **kwargs): + unittest.TestCase.__init__(self, *args, **kwargs) + TempFileManager.__init__(self, 'Case') + + def runTest(self): + if self.expected_python_version: + self.assertEqual(self.in_vim_python_version, self.expected_python_version) + + # Only checks the output. All work is done in setUp(). + wanted = self.text_before + self.wanted + self.text_after + for i in range(self.retries): + if self.output and self.expected_error: + self.assertRegexpMatches(self.output, self.expected_error) + return + if self.output != wanted or self.output is None: + # Redo this, but slower + self.sleeptime += 0.15 + self.tearDown() + self.setUp() + self.assertMultiLineEqual(self.output, wanted) + + def _extra_vim_config(self, vim_config): + """Adds extra lines to the vim_config list.""" + + def _before_test(self): + """Send these keys before the test runs. + + Used for buffer local variables and other options. + + """ + + def _create_file(self, file_path, content): + """Creates a file in the runtimepath that is created for this test. + + Returns the absolute path to the file. + + """ + return self.write_temp(file_path, textwrap.dedent(content + '\n')) + + def _link_file(self, source, relative_destination): + """Creates a link from 'source' to the 'relative_destination' in our + temp dir.""" + absdir = self.name_temp(relative_destination) + create_directory(absdir) + os.symlink(source, os.path.join(absdir, os.path.basename(source))) + + def setUp(self): + # TODO(sirver): this uses 'vim', but must use --vim from the commandline. + if not VimTestCase.version: + VimTestCase.version, _ = subprocess.Popen(['vim', '--version'], + stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate() + if PYTHON3: + VimTestCase.version = VimTestCase.version.decode('utf-8') + + if self.plugins and not self.test_plugins: + return self.skipTest('Not testing integration with other plugins.') + reason_for_skipping = self.skip_if() + if reason_for_skipping is not None: + return self.skipTest(reason_for_skipping) + + vim_config = [] + vim_config.append('set nocompatible') + vim_config.append('set runtimepath=$VIMRUNTIME,%s,%s' % ( + os.path.dirname(os.path.dirname(__file__)), self._temp_dir)) + + if self.plugins: + self._link_file( + os.path.join( + plugin_cache_dir(), + 'vim-pathogen', + 'autoload'), + '.') + for plugin in self.plugins: + self._link_file( + os.path.join( + plugin_cache_dir(), + os.path.basename(plugin)), + 'bundle') + vim_config.append('execute pathogen#infect()') + + # Some configurations are unnecessary for vanilla Vim, but Neovim + # defines some defaults differently. + vim_config.append('syntax on') + vim_config.append('filetype plugin indent on') + vim_config.append('set nosmarttab') + vim_config.append('set noautoindent') + vim_config.append('set backspace=""') + vim_config.append('set clipboard=""') + vim_config.append('set encoding=utf-8') + vim_config.append('set fileencoding=utf-8') + vim_config.append('set buftype=nofile') + vim_config.append('set shortmess=at') + vim_config.append('let @" = ""') + assert EX == "\t" # Otherwise you need to change the next line + vim_config.append('let g:UltiSnipsExpandTrigger="<tab>"') + vim_config.append('let g:UltiSnipsJumpForwardTrigger="?"') + vim_config.append('let g:UltiSnipsJumpBackwardTrigger="+"') + vim_config.append('let g:UltiSnipsListSnippets="@"') + vim_config.append( + 'let g:UltiSnipsUsePythonVersion="%i"' % + (3 if PYTHON3 else 2)) + vim_config.append('let g:UltiSnipsSnippetDirectories=["us"]') + if self.python_host_prog: + vim_config.append('let g:python_host_prog="%s"' % self.python_host_prog) + if self.python3_host_prog: + vim_config.append('let g:python3_host_prog="%s"' % self.python3_host_prog) + + self._extra_vim_config(vim_config) + + # Finally, add the snippets and some configuration for the test. + vim_config.append('%s << EOF' % ('py3' if PYTHON3 else 'py')) + vim_config.append('from UltiSnips import UltiSnips_Manager\n') + + if len(self.snippets) and not isinstance(self.snippets[0], tuple): + self.snippets = (self.snippets, ) + for s in self.snippets: + sv, content = s[:2] + description = '' + options = '' + priority = 0 + if len(s) > 2: + description = s[2] + if len(s) > 3: + options = s[3] + if len(s) > 4: + priority = s[4] + vim_config.append('UltiSnips_Manager.add_snippet(%r, %r, %r, %r, priority=%i)' % ( + sv, content, description, options, priority)) + + # fill buffer with default text and place cursor in between. + prefilled_text = (self.text_before + self.text_after).splitlines() + vim_config.append('import vim\n') + vim_config.append('vim.current.buffer[:] = %r\n' % prefilled_text) + vim_config.append( + 'vim.current.window.cursor = (max(len(vim.current.buffer)//2, 1), 0)') + + # End of python stuff. + vim_config.append('EOF') + + for name, content in self.files.items(): + self._create_file(name, content) + + self.in_vim_python_version = self.vim.launch(vim_config) + + self._before_test() + + if not self.interrupt: + # Go into insert mode and type the keys but leave Vim some time to + # react. + text = 'i' + self.keys + while text: + to_send = None + for seq in SEQUENCES: + if text.startswith(seq): + to_send = seq + break + to_send = to_send or text[0] + self.vim.send_to_vim(to_send) + time.sleep(self.sleeptime) + text = text[len(to_send):] + self.output = self.vim.get_buffer_data() + + def tearDown(self): + if self.interrupt: + print('Working directory: %s' % (self._temp_dir)) + return + self.vim.leave_with_wait() + self.clear_temp() + +# vim:fileencoding=utf-8:foldmarker={{{#,#}}}: diff --git a/test_all.py b/test_all.py new file mode 100755 index 0000000..7819e02 --- /dev/null +++ b/test_all.py @@ -0,0 +1,185 @@ +#!/usr/bin/env python +# encoding: utf-8 +# +# To execute this test requires two terminals, one for running Vim and one +# for executing the test script. Both terminals should have their current +# working directories set to this directory (the one containing this +# test_all.py script). +# +# In one terminal, launch a tmux session named ``vim``: +# $ tmux new -s vim +# +# Now, from another terminal, launch the testsuite: +# $ ./test_all.py +# +# Note: if you want to use Vim against the Python 3 bindings, you must launch the +# test suite using Python 3. For example: +# $ python3 ./test_all.py +# +# For each test, the test_all.py script will launch vim with a vimrc, run the +# test, compare the output and exit vim again. The keys are send using tmux send-keys. +# +# To limit the tests that are executed, specify a pattern to be used to match +# the beginning of the test name. For instance, the following will execute all +# tests that start with "SimpleExpand": +# $ ./test_all.py SimpleExpand +# +# NOTE: The test suite is not working under Windows right now as I have no +# access to a windows system for fixing it. Volunteers welcome. Here are some +# comments from the last time I got the test suite running under windows. +# +# Under windows, COM's SendKeys is used to send keystrokes to the gvim window. +# Note that Gvim must use english keyboard input (choose in windows registry) +# for this to work properly as SendKeys is a piece of chunk. (i.e. it sends +# <F13> when you send a | symbol while using german key mappings) + +# pylint: skip-file + +import os +import platform +import subprocess +import unittest +from test.vim_interface import ( + create_directory, tempfile, VimInterfaceTmux, VimInterfaceTmuxNeovim) + + +def plugin_cache_dir(): + """The directory that we check out our bundles to.""" + return os.path.join(tempfile.gettempdir(), 'UltiSnips_test_vim_plugins') + + +def clone_plugin(plugin): + """Clone the given plugin into our plugin directory.""" + dirname = os.path.join(plugin_cache_dir(), os.path.basename(plugin)) + print('Cloning %s -> %s' % (plugin, dirname)) + if os.path.exists(dirname): + print('Skip cloning of %s. Already there.' % plugin) + return + create_directory(dirname) + subprocess.call(['git', 'clone', '--recursive', + '--depth', '1', 'https://github.com/%s' % plugin, dirname]) + + if plugin == 'Valloric/YouCompleteMe': + # CLUTCH: this plugin needs something extra. + subprocess.call(os.path.join(dirname, './install.sh'), cwd=dirname) + + +def setup_other_plugins(all_plugins): + """Creates /tmp/UltiSnips_test_vim_plugins and clones all plugins into + this.""" + clone_plugin('tpope/vim-pathogen') + for plugin in all_plugins: + clone_plugin(plugin) + +if __name__ == '__main__': + import optparse + import sys + + def parse_args(): + p = optparse.OptionParser('%prog [OPTIONS] <test case names to run>') + + p.set_defaults(session='vim', interrupt=False, + verbose=False, retries=4, plugins=False) + + p.add_option('-v', '--verbose', dest='verbose', action='store_true', + help='print name of tests as they are executed') + p.add_option('--clone-plugins', action='store_true', + help='Only clones dependant plugins and exits the test runner.') + p.add_option('--plugins', action='store_true', + help='Run integration tests with other Vim plugins.') + p.add_option('-s', '--session', dest='session', metavar='SESSION', + help='session parameters for the terminal multiplexer SESSION [%default]') + p.add_option('-i', '--interrupt', dest='interrupt', + action='store_true', + help='Stop after defining the snippet. This allows the user ' + 'to interactively test the snippet in vim. You must give ' + 'exactly one test case on the cmdline. The test will always fail.' + ) + p.add_option('-r', '--retries', dest='retries', type=int, + help='How often should each test be retried before it is ' + 'considered failed. Works around flakyness in the terminal ' + 'multiplexer and race conditions in writing to the file system.') + p.add_option('-x', '--exitfirst', dest='exitfirst', action='store_true', + help='exit instantly on first error or failed test.') + p.add_option('--vim', dest='vim', type=str, default='vim', + help='executable to run when launching vim.') + p.add_option('--interface', dest='interface', type=str, default='tmux', + help="Interface to use. Use 'tmux' with vanilla Vim and 'tmux_nvim' " + 'with Neovim.') + p.add_option('--python-host-prog', dest='python_host_prog', type=str, default='', + help='Neovim needs a variable to tell it which python interpretor to use for ' + 'py blocks. This needs to be set to point to the correct python interpretor. ' + 'It is ignored for vanilla Vim.') + p.add_option('--python3-host-prog', dest='python3_host_prog', type=str, default='', + help='See --python-host-prog.') + p.add_option('--expected-python-version', dest='expected_python_version', type=str, default='', + help='If set, each test will check sys.version inside of vim to ' + 'verify we are testing against the expected Python version.') + + o, args = p.parse_args() + return o, args + + def flatten_test_suite(suite): + flatten = unittest.TestSuite() + for test in suite: + if isinstance(test, unittest.TestSuite): + flatten.addTests(flatten_test_suite(test)) + else: + flatten.addTest(test) + return flatten + + def main(): + options, selected_tests = parse_args() + + all_test_suites = unittest.defaultTestLoader.discover(start_dir='test') + + vim = None + vim_flavor = 'vim' + if options.interface == 'tmux': + vim = VimInterfaceTmux(options.vim, options.session) + vim_flavor = 'vim' + else: + vim = VimInterfaceTmuxNeovim(options.vim, options.session) + vim_flavor = 'neovim' + + if not options.clone_plugins and platform.system() == 'Windows': + raise RuntimeError( + 'TODO: TestSuite is broken under windows. Volunteers wanted!.') + # vim = VimInterfaceWindows() + # vim.focus() + + all_other_plugins = set() + + tests = set() + suite = unittest.TestSuite() + + for test in flatten_test_suite(all_test_suites): + test.interrupt = options.interrupt + test.retries = options.retries + test.test_plugins = options.plugins + test.python_host_prog = options.python_host_prog + test.python3_host_prog = options.python3_host_prog + test.expected_python_version = options.expected_python_version + test.vim = vim + test.vim_flavor = vim_flavor + all_other_plugins.update(test.plugins) + + if len(selected_tests): + id = test.id().split('.')[1] + if not any([id.startswith(t) for t in selected_tests]): + continue + tests.add(test) + suite.addTests(tests) + + if options.plugins or options.clone_plugins: + setup_other_plugins(all_other_plugins) + if options.clone_plugins: + return + + v = 2 if options.verbose else 1 + successfull = unittest.TextTestRunner(verbosity=v, + failfast=options.exitfirst).run(suite).wasSuccessful() + return 0 if successfull else 1 + sys.exit(main()) + +# vim:fileencoding=utf-8:foldmarker={{{#,#}}}: diff --git a/travis_install.sh b/travis_install.sh new file mode 100755 index 0000000..d0db077 --- /dev/null +++ b/travis_install.sh @@ -0,0 +1,68 @@ +#!/usr/bin/env bash + +# Installs a known version of vim in the travis test runner. + +set -ex + +PYTHON="python${TRAVIS_PYTHON_VERSION}" + +build_vanilla_vim () { + mkdir ~/vim_build + pushd ~/vim_build + + if [[ $VIM_VERSION == "74" ]]; then + until curl ftp://ftp.vim.org/pub/vim/unix/vim-7.4.tar.bz2 -o vim.tar.bz2; do sleep 10; done + tar xjf vim.tar.bz2 + cd vim${VIM_VERSION} + elif [[ $VIM_VERSION == "mercurial" ]]; then + hg clone https://vim.googlecode.com/hg/ vim + cd vim + fi + + local PYTHON_CONFIG_DIR=$(dirname $(find $($PYTHON-config --prefix)/lib -iname 'config.c') | grep $TRAVIS_PYTHON_VERSION) + local PYTHON_BUILD_CONFIG="" + if [[ $TRAVIS_PYTHON_VERSION =~ ^2\. ]]; then + PYTHON_BUILD_CONFIG="--enable-pythoninterp --with-python-config-dir=${PYTHON_CONFIG_DIR}" + else + PYTHON_BUILD_CONFIG="--enable-python3interp --with-python3-config-dir=${PYTHON_CONFIG_DIR}" + fi + export LDFLAGS="$($PYTHON-config --ldflags) -L$($PYTHON-config --prefix)/lib" + export CFLAGS="$($PYTHON-config --cflags)" + + # This is needed so that vim finds the shared libraries it was build against + # - they are not on the regular path. + export LD_LIBRARY_PATH="$($PYTHON-config --prefix)/lib" + + echo $LDFLAGS + echo $CFLAGS + ./configure \ + --prefix=${HOME} \ + --disable-nls \ + --disable-sysmouse \ + --disable-gpm \ + --enable-gui=no \ + --enable-multibyte \ + --with-features=huge \ + --with-tlib=ncurses \ + --without-x \ + ${PYTHON_BUILD_CONFIG} || cat $(find . -name 'config.log') + + make install + popd + + rm -rf vim_build +} + +if [[ $VIM_VERSION = "74" || $VIM_VERSION = "mercurial" ]]; then + build_vanilla_vim +elif [[ $VIM_VERSION == "NEOVIM" ]]; then + PIP=$(which pip) + $PIP install neovim +else + echo "Unknown VIM_VERSION: $VIM_VERSION" + exit 1 +fi + +# Clone the dependent plugins we want to use. +PYTHON_CMD="$(which $PYTHON)" +$PYTHON_CMD ./test_all.py --clone-plugins diff --git a/travis_test.sh b/travis_test.sh new file mode 100755 index 0000000..1a6a24a --- /dev/null +++ b/travis_test.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env bash + +set -ex + +PYTHON="python${TRAVIS_PYTHON_VERSION}" +PYTHON_CMD="$(which ${PYTHON})" + +if [[ $VIM_VERSION = "74" || $VIM_VERSION = "mercurial" ]]; then + INTERFACE="--interface tmux" + VIM="${HOME}/bin/vim" + # This is needed so that vim finds the shared libraries it was build against - + # they are not on the regular path. + export LD_LIBRARY_PATH="$($PYTHON-config --prefix)/lib" + +elif [[ $VIM_VERSION == "NEOVIM" ]]; then + VIM="$(which nvim)" + if [[ $TRAVIS_PYTHON_VERSION =~ ^2\. ]]; then + INTERFACE="--interface tmux_nvim --python-host-prog=$PYTHON_CMD" + else + INTERFACE="--interface tmux_nvim --python3-host-prog=$PYTHON_CMD" + fi +else + echo "Unknown VIM_VERSION: $VIM_VERSION" + exit 1 +fi + +PYTHON_VERSION=$($PYTHON_CMD -c 'import sys;print(sys.version.split()[0])') +echo "Using python from: $PYTHON_CMD Version: $PYTHON_VERSION" +echo "Using vim from: $VIM. Version: $($VIMn)" + +tmux new -d -s vim + +$PYTHON_CMD ./test_all.py \ + -v \ + --plugins \ + --session vim \ + --vim $VIM \ + $INTERFACE \ + --expected-python-version $PYTHON_VERSION diff --git a/utils/convert_snipmate_snippets.py b/utils/convert_snipmate_snippets.py deleted file mode 100755 index 2d31558..0000000 --- a/utils/convert_snipmate_snippets.py +++ /dev/null @@ -1,108 +0,0 @@ -#!/usr/bin/env python -# encoding: utf-8 -""" -Convert snipmate compatible snippets to UltiSnips compatible snippets -by Phillip Berndt -""" -import sys -import re -import os -import argparse - -def convert_snippet_contents(content): - " If the snippet contains snipmate style substitutions, convert them to ultisnips style " - content = re.sub("`([^`]+`)", "`!v \g<1>", content) - return content - -def convert_snippet_file(source): - " One file per filetype " - retval = "" - state = 0 - for line in open(source).readlines(): - # Ignore empty lines - if line.strip() == "": - continue - # The rest of the handling is stateful - if state == 0: - # Find snippet start. Keep comments. - if line[:8] == "snippet ": - snippet_info = re.match("(\S+)\s*(.*)", line[8:]) - if not snippet_info: - print >> sys.stderr, "Warning: Malformed snippet\n %s\n" % line - continue - retval += 'snippet %s "%s"' % (snippet_info.group(1), snippet_info.group(2) if snippet_info.group(2) else snippet_info.group(1)) + "\n" - state = 1 - snippet = "" - elif line[:1] == "#": - retval += line - state = 0 - elif state == 1: - # First line of snippet: Get indentation - whitespace = re.search("^\s+", line) - if not whitespace: - print >> sys.stderr, "Warning: Malformed snippet, content not indented.\n" - retval += "endsnippet\n\n" - state = 0 - else: - whitespace = whitespace.group(0) - snippet += line[len(whitespace):] - state = 2 - elif state == 2: - # In snippet: If indentation level is the same, add to snippet. Else end snippet. - if line[:len(whitespace)] == whitespace: - snippet += line[len(whitespace):] - else: - retval += convert_snippet_contents(snippet) + "endsnippet\n\n" - #Copy-paste the section from state=0 so that we don't skip every other snippet - if line[:8] == "snippet ": - snippet_info = re.match("(\S+)\s*(.*)", line[8:]) - if not snippet_info: - print >> sys.stderr, "Warning: Malformed snippet\n %s\n" % line - continue - retval += 'snippet %s "%s"' % (snippet_info.group(1), snippet_info.group(2) if snippet_info.group(2) else snippet_info.group(1)) + "\n" - state = 1 - snippet = "" - elif line[:1] == "#": - retval += line - state = 0 - if state == 2: - retval += convert_snippet_contents(snippet) + "endsnippet\n\n" - return retval - -def convert_snippet(source): - " One file per snippet " - name = os.path.basename(source)[:-8] - return 'snippet %s "%s"' % (name, name) + "\n" + \ - convert_snippet_contents(open(source).read()) + \ - "\nendsnippet\n" - -def convert_snippets(source): - if os.path.isdir(source): - return "\n".join((convert_snippet(os.path.join(source, x)) for x in os.listdir(source) if x[-8:] == ".snippet")) - else: - return convert_snippet_file(source) - -if __name__ == '__main__': - # Parse command line - argsp = argparse.ArgumentParser(description="Convert snipmate compatible snippets to UltiSnips' file format", - epilog="example:\n %s drupal/ drupal.snippets\n will convert all drupal specific snippets from snipmate into one file drupal.snippets" % sys.argv[0], - formatter_class=argparse.RawDescriptionHelpFormatter) - argsp.add_argument("source", help="Source directory for one filetype or a snippets file") - argsp.add_argument("target", help="File to write the resulting snippets into. If omitted, the snippets will be written to stdout.", nargs="?", default="-") - args = argsp.parse_args() - - source_file_name = args.source - tmp_file_name = ''.join([args.target,'.tmp']) - try: - tmp = sys.stdout if args.target == "-" else open(tmp_file_name, "w") - except IOError: - print >> sys.stderr, "Error: Failed to open output file %s for writing" % tmp_file_name - sys.exit(1) - - snippets = convert_snippets(source_file_name) - print >> tmp, snippets - - if args.target != "-": - if os.access(args.target, os.F_OK): - os.remove(args.target) - os.rename(tmp_file_name, args.target) diff --git a/utils/get_tm_snippets.py b/utils/get_tm_snippets.py index 3684001..eb2481d 100755 --- a/utils/get_tm_snippets.py +++ b/utils/get_tm_snippets.py @@ -11,28 +11,37 @@ import glob _UNESCAPE = re.compile(ur'&\w+?;', re.UNICODE) + + def unescape(s): if s is None: - return "" + return '' + def fixup(m): ent = m.group(0)[1:-1] return unichr(htmlentitydefs.name2codepoint[ent]) try: - return _UNESCAPE.sub(fixup,s) + return _UNESCAPE.sub(fixup, s) except: - print "unescape failed: %s" % repr(s) + print 'unescape failed: %s' % repr(s) raise + class UnknownVariable(Exception): pass + class UnsupportedVariableExpression(Exception): pass + def replace_vars(m): - """ Replace vars in 'content' portion. + """Replace vars in 'content' portion. + :m: match object - :returns: string""" + :returns: string + + """ var = m.group(1) default = m.group(2) @@ -40,10 +49,10 @@ def replace_vars(m): raise UnsupportedVariableExpression(var) translate_vars = { - 'TM_PHP_OPEN_TAG_WITH_ECHO': 'g:UltiSnipsOpenTagWithEcho', - 'TM_PHP_OPEN_TAG': 'g:UltiSnipsOpenTag', - 'PHPDOC_AUTHOR': 'g:snips_author', - } + 'TM_PHP_OPEN_TAG_WITH_ECHO': 'g:UltiSnipsOpenTagWithEcho', + 'TM_PHP_OPEN_TAG': 'g:UltiSnipsOpenTag', + 'PHPDOC_AUTHOR': 'g:snips_author', + } # TODO: TM_SELECTED_TEXT/([\t ]*).*/$1/m if var in translate_vars: @@ -54,44 +63,48 @@ def replace_vars(m): return "`!v exists('%s') ? %s : '%s'`" % (newvar, newvar, default) + def parse_content(c): try: data = ElementTree.fromstring(c)[0] rv = {} - for k,v in zip(data[::2], data[1::2]): + for k, v in zip(data[::2], data[1::2]): rv[k.text] = unescape(v.text) - if re.search( r'\$\{\D', rv["content"] ): - rv["content"] = re.sub(r'\$\{([^\d}][^}:]*)(?::([^}]*))?\}', replace_vars, rv["content"]) + if re.search(r'\$\{\D', rv['content']): + rv['content'] = re.sub( + r'\$\{([^\d}][^}:]*)(?::([^}]*))?\}', + replace_vars, + rv['content']) return rv except (ExpatError, ElementTree.ParseError) as detail: - print " Syntax Error: %s" % (detail,) + print ' Syntax Error: %s' % (detail,) print c return None except UnknownVariable as detail: - print " Unknown variable: %s" % (detail,) + print ' Unknown variable: %s' % (detail,) return None except UnsupportedVariableExpression as detail: - print " Unsupported variable expression: %s" % (detail,) + print ' Unsupported variable expression: %s' % (detail,) return None + def fetch_snippets_from_svn(name): - base_url = "http://svn.textmate.org/trunk/Bundles/" + name + ".tmbundle/" - snippet_idx = base_url + "Snippets/" + base_url = 'http://svn.textmate.org/trunk/Bundles/' + name + '.tmbundle/' + snippet_idx = base_url + 'Snippets/' idx_list = urllib.urlopen(snippet_idx).read() - rv = [] - for link in re.findall("<li>(.*?)</li>", idx_list): + for link in re.findall('<li>(.*?)</li>', idx_list): m = re.match(r'<a\s*href="(.*)"\s*>(.*)</a>', link) link, name = m.groups() - if name == "..": + if name == '..': continue - name = unescape(name.rsplit('.', 1)[0]) # remove Extension + name = unescape(name.rsplit('.', 1)[0]) # remove Extension print "Fetching data for Snippet '%s'" % name content = urllib.urlopen(snippet_idx + link).read() @@ -101,12 +114,13 @@ def fetch_snippets_from_svn(name): return rv + def fetch_snippets_from_dir(path): - """ Fetch snippets from a given path""" + """Fetch snippets from a given path.""" rv = [] for filename in glob.glob(os.path.join(path, '*.tmSnippet')): - print "Reading file %s" % filename + print 'Reading file %s' % filename f = open(filename) content = f.read() @@ -116,20 +130,20 @@ def fetch_snippets_from_dir(path): rv.append((name, cont)) return rv + def write_snippets(snip_descr, f): for name, d in snip_descr: - if "tabTrigger" not in d: + if 'tabTrigger' not in d: continue - if "content" not in d or d["content"] is None: - print "SKIP: %s (no content)" % (d,) + if 'content' not in d or d['content'] is None: + print 'SKIP: %s (no content)' % (d,) continue - f.write('snippet %s "%s"\n' % (d["tabTrigger"], name)) - f.write(d["content"].encode("utf-8") + "\n") - f.write("endsnippet\n\n") - + f.write('snippet %s "%s"\n' % (d['tabTrigger'], name)) + f.write(d['content'].encode('utf-8') + '\n') + f.write('endsnippet\n\n') if __name__ == '__main__': @@ -144,5 +158,4 @@ if __name__ == '__main__': rv = fetch_snippets_from_svn(bundle) name = bundle.lower() - write_snippets(rv, open("tm_" + name + ".snippets","w")) - + write_snippets(rv, open('tm_' + name + '.snippets', 'w'))

    CPyt?U&val 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]v@KT1u_*9ATc5zJ+UI|(z7xGG!Vv-J(eNXQPYG7JC0!AVoHT3V6D zY!{-nIf%>crXCdQF*Dzp>XgI91dbJKs?HhoL*D=EX;BR`e*+CB6msQ^Vap~8XIh&q zmW|nm_?JfpUCO-Q3%Ur2o4u89dt<#Ls99*Sq{7tJQhERN*dTmB@F$>DakGT-xQlHHF|0Z_F zeHCzIoL&A96f6R$*9QRBV{tg~r z5Q;>s`9(=XIjKI=`DT^HyX(qi%|^ggI1&<^w82m2>Vw5AMf`w#=F6Q?XqDID0#PPE zmxhW41JfGuP>f3Pe9lH-Rk*^TgKZB*|G$9d9_#_s{A#$$2GCIQ7T_XdM(TTc!BTpI zfB|heVb2%*I)Qfk8nbfiL@q>t?gElvh7y2Lw#@sVFZR?F{&ZiPw7j@_ZKp-^Zj<;y zND_mn%dXacOWqv-PC@To?YnthdV_(SZbHt9uVm&v1hw|RPq5ih!oV2dkxxpvyre%EBlSz|1SQ~dSgt;h19%}