Commits (29)
  • Josh Seba's avatar
    Update C++ concept keywords · 708767b6
    Josh Seba authored
    As of P1754, all concepts will become snake_case, consistent with the
    rest of the standard library. This change adds support for the new names
    by using the value of g:cpp_concepts_highlight to select the concept
    naming convention.
    This new section includes all concepts currently defined in the working
    draft and their names from P1754.
  • Josh Seba's avatar
    Add more C++20 types and functions · 4bc7d8cb
    Josh Seba authored
    Also corrects iterators to remove types that don't exist in the
  • Cataldo's avatar
    Add missing socket related functions · 3dd038b7
    Cataldo authored
  • Cataldo's avatar
    Add missing sendto function · 991f2964
    Cataldo authored
  • Cataldo's avatar
    Create user-controllable variable for POSIX functions · ae7a8517
    Cataldo authored
    When the option cpp_posix_standard is enabled, POSIX
    functions are highlighted
  • Cataldo's avatar
    Include cpp_posix_standard to README · 27e0ffc2
    Cataldo authored
  • Dustin L. Howett's avatar
    Squashed 'pack/3rdparty/start/vim-go/' changes from 7eda25c97b..d4a9cc7246 · b726b2bd
    Dustin L. Howett authored
    d4a9cc7246 update CHANGELOG.md for #2599
    002a5deaa1 Merge pull request #2599 from mattn/fix-octal
    583e2cc977 Fix syntax for octal error
    6d9cabbfa2 update CHANGELOG.md for #2597
    5f2d445544 Merge pull request #2597 from k33nice/master
    ede5a4488b syntax(fix): goOctalError regex for slicing
    7fadfcc134 update CHANGELOG.md for #2584
    9a3808d12f Merge pull request #2584 from k33nice/master
    de681fd117 Merge pull request #2594 from bhcleek/syntax/numeric-highlight-slice-tests
    f994591e20 syntax: add tests for multidimensional indexes
    cc540409d0 syntax: Add testing case to ensure overrdies works
    fc8cef8337 syntax:Get rid of test cases that don't give value
    cf661f5915 syntax: Simplify hexadecimal, decimal error regexp
    fe6429588f Merge pull request #2593 from bhcleek/syntax/numeric-highlight-slice-tests
    2c6b985b3a syntax: fix and simplify goOctalErro regexp, test
    67e76b8e65 syntax: Simplify goBinaryError regexp
    7c41adfd6b syntax: add tests for 0 numeric literals
    f6ed8b647c syntax: Fix goOctalError and test cases for it
    fb643bfe39 syntax: Change decimal error to not match octal error
    b30bb2da0d Remove redundant test cases, fix type on test name
    3a23084fd6 syntax: Support "_" after prefix or first char
    c5ad44345c syntax: Fix nubmers hilightings add more tests
    7a7a5df097 syntax: fix highlight for hex and bin and octal
    3da87d650f Fix goOctalError syntax match regexp
    eb587eb0e2 syntax: Fix hex and octal int and errors highlight
    58ddb1d95e update CHANGELOG.md for #2589
    6fffa13cbb Merge pull request #2589 from bhcleek/syntax/highlight/0
    0809130502 syntax: highlight a lone zero as goDecimalInt
    b7c7109c03 update CHANGELOG.md for #2587
    1413793d0c Merge pull request #2587 from bhcleek/syntax/numeric-highlight-tests
    69d5dad3a3 syntax: do not match [0] as goOctalError
    99fc4d221f syntax: add tests for numeric highlighting
    10d8f9d5e3 Merge pull request #2583 from bhcleek/tests/cleanup
    6e12e9eb27 update CHANGELOG.md for #2574
    e385a2ed64 Merge pull request #2574 from georgijd/fix-debug-struct-regex
    fb161dcb1d tests: delete temporary files
    32f87164ba update CHANGELOG.md for #2577
    56edf0c53d Merge pull request #2577 from bhcleek/rename/gopls
    12ebd0f5c5 rename: add support for gopls rename
    5716c1d768 Merge pull request #2578 from bhcleek/help/gocode
    bb66bcf18e update CHANGELOG.md for #2579
    d4115c5ea1 Merge pull request #2579 from bhcleek/lsp/diagnostic/exception
    944df703be lsp: check highlight group exists before using
    4f565001c9 edit help
    b9aba71090 Fix regex for structs when expanding vars in debug
    19d4be6f32 update CHANGELOG.md for #2572
    ace68f7c95 Merge pull request #2572 from 110y/decls-fzf-highlight
    f39fd1bc60 add highlight for GoDecls fzf
    517b754417 update CHANGELOG.md for #2569
    fe59c42be8 Merge pull request #2569 from bhcleek/diagnostics
    bb3dc01646 update CHANGELOG.md for #2571
    569cdf6616 Merge pull request #2571 from bhcleek/numbers/highlight-errors
    3801697fad syntax: improve highlighting of erroneous numerics
    4670a39e7a update CHANGELOG.md for #2557
    1659822ebe Merge pull request #2557 from romeovs/patch-1
    17d97ddc26 lsp: highlight text ranges reported in diagnostics
    ab2ca9c8aa refactor same id highlighting to be more efficient
    b541c9b55e update CHANGELOG.md for #2568
    f9a5d7b3c2 Merge pull request #2568 from bhcleek/gopls/options/json-bools
    9550a2328d lsp: use correct values for boolean json encoding
    0d9775b8c9 update CHANGELOG.md for #2567
    67794e5676 Merge pull request #2567 from bhcleek/lsp/options
    91b28a12f8 add options to configure gopls
    21d2e8e0b4 update CHANGELOG.md for #2566
    abb1d79e32 Merge pull request #2566 from bhcleek/references/choice
    ac1b780ffe sort references
    ebffc2c5de resolve :GoReferrers errors
    cae1a264e9 add g:go_referrers_mode
    dfa71c9128 update CHANGELOG.md for #2545
    12dc780b3c Merge pull request #2545 from bhcleek/binaries/modules
    c0bff0c9cd update CHANGELOG.md for #2556
    d0527ded8e Merge pull request #2556 from drewbailey/b-fix-pwd-after-test
    4b85e2df2e Add syntax support for binary literals
    7277ff0499 add another @ early return
    5f0868200b revert back to original pwd after GoTestFunc!
    bbbf77153a update CHANGELOG.md for #2549
    27b38e932d Merge pull request #2549 from jcordasc/fix-filechange-handling
    abf14a9e68 Register a FileChangedShellPost autocmd instead
    2f7a00e9f2 update CHANGELOG.md for #2547
    cb903e94d8 Merge pull request #2547 from kevinburkemeter/fix-doc
    966d14a114 doc: fix variable naming
    932791159f plugin: install tools in module aware mode
    cd8b8ad35c plugin: handle build flags in module aware mode
    54a0a3cd14 plugin: restore GOBIN
    2aa7c9d00a update CHANGELOG.md for #2529
    e65fc4ea8a Merge pull request #2529 from delphinus/feature/use-own-interval
    17c53d38f1 Merge pull request #2543 from abitrolly/patch-1
    5838b68001 Fix typos in CHANGELOG.md
    1c909814a4 Merge pull request #2542 from bhcleek/lsp/docs
    a65aed83a1 update CHANGELOG.md and fix help for #2541
    9eccc7fb01 Merge pull request #2541 from Felixoid/doc_addtags_transform
    392058851b update docs for :GoReferrers and :GoSameIds
    51940d350f update CHANGELOG.md for #2535
    94a266b8e6 Merge pull request #2535 from bhcleek/lsp/referrers
    c8263b0fc4 Update go_addtags_transform documentation according to gomodifytags
    8082ef34c8 Fix errors reported by vimhelplint
    7baedaa817 Update doc
    d9bfec3513 Use &updatetime when g:go_updatetime == 0
    8708dd26e4 use lsp for :GoReferrers
    4f1d11dbcc Do not restart timer redundantly
    1a5ff26f1d Define augroup's effectively
    1b6a7ddadf Revert "Use buffer-specific timer_id"
    3b576be367 Do not call here because BufEnter events does
    bb1d4605d2 Use the same augroup name
    93ac77b0f5 Disable warnings from vint
    3e0feddfa5 Fix warnings from vimlint
    987fdaed88 Start in entering another buffer
    8d7474cf40 Start immediately when toggle commands is called
    ddb96ce640 Use buffer-specific timer_id
    02eb439cbe Define autocmd's on demand
    68b0c6f3be fix go#lsp#SameIDs documentation
    1df81617fb update CHANGELOG.md for #2526
    e491863548 Merge pull request #2526 from bhcleek/debug/windows-errors
    052a610e10 update CHANGELOG.md for #2527
    60cd18a970 Merge pull request #2527 from bhcleek/debug/close-goroutines
    c33809c472 Use united config function to get updatetime
    d064d59657 Use own interval to call AutoTypeInfo/AutoSameids
    c70e03cc10 debug: close the goroutines window
    2836ad509e debug: handle empty results
    e50c57536b update CHANGELOG.md for #2519
    592269a979 Merge pull request #2519 from bhcleek/lsp/sameids
    e98fef8898 update CHANGELOG.md for #2523
    90abe595b6 Merge pull request #2523 from bhcleek/unlet-safely
    6a43d38a13 update CHANGELOG.md for #2522
    a9cdd26e20 Merge pull request #2522 from bhcleek/lsp/fail-better
    62f8df8908 update CHANGELOG.md for #2518
    0d7a08d2e4 Merge pull request #2518 from bhcleek/def/already-swap
    0d591fa44b Handle unset in Vim 8.0.1831 and below
    80109a449d lsp: handle missing gopls better
    f5759fba49 sameids: use gopls instead of guru to find same ids
    3497921a10 def: wrap switching buffers in a try/catch
    a7b5edc187 update CHANGELOG.md for #2512 and #2516
    393087b103 Merge pull request #2516 from bhcleek/lsp/debug-hover
    961d87af2a Merge pull request #2512 from delphinus/feature/use-minimal-style-for-godoc
    c42345e8a8 lsp: write the the debug window asynchronously
    893ae5f63e update CHANGELOG.md for #2515
    ef9c496335 Merge pull request #2515 from bhcleek/lsp/hover-swallow-errors
    ffee7a7fa0 lsp: swallow errors in the hover handler
    e62b7405c5 spell g:go_doc_popup_window correctly
    eeab03908e Use `minimal` style for GoDoc popup windows
    1bb46522d5 update CHANGELOG.md for #2451
    84b9440deb Merge pull request #2451 from georgijd/nvim-godoc-popup
    8ced9edbbf update CHANGELOG.md for #2506
    80e475965e Merge pull request #2506 from ian-howell/doc/doc-popup
    d6f29b9ca0 Use the go_doc_max_height setting to limit popup height
    70b36a73bc Use filetype=godoc instead of syntax=go
    3f6669022a Add documentation for go_doc_popup_window
    824e18c495 update CHANGELOG.md for #2508
    6bf75c2d99 Merge pull request #2508 from bhcleek/term
    12ccdfe373 term: change to originating window earlier
    7ea44f72a9 update CHANGELOG.md for #2507
    4c1f24b039 Merge pull request #2507 from bhcleek/lsp/fix-clean
    21e4524a64 travis: pin the covimerage version
    cea9c9419a lsp: fix CleanWorkspaces
    01a538fe25 lsp: exit gopls after each test
    6904ded741 Merge pull request #2449 from bhcleek/lsp/build-tags/test
    dfd52c9137 config: add test for setting build tags
    031b81cd04 update CHANGELOG.md and README.md for #2497
    25905d22f2 Merge pull request #2497 from bhcleek/require-vim8.0.1453
    53cf73ed9e require vim >= 8.0.1453
    194613112b update CHANGELOG.md
    75fa6fe70c Merge pull request #2463 from xbsura/feat/multi-goroutine-debug
    938241937b Merge pull request #2458 from bhcleek/consistent-echo
    13a50d863c Merge pull request #2494 from rbisewski/rbisewski/vim-go/2489-drop-gometalinter-support
    5ab8b73f91 Merge pull request #2495 from rbisewski/rbisewski/vim-go/2488-drop-vim-7.4-support
    b1826c7e2e reverting functionality checks but simplifying comments since Vim 7.4 is no longer relevant
    385da049a3 restore the Test_GometaGolangciLint() tests
    250f621188 restore tests now that gometalinter is removed and adjust documentation to assume a default of golangci-lint as the primary supported linter
    9f562bc1a4 removing logic needed to support Vim 7.4 as it has been dropped
    7abceaf24b removing major references to the depreciated gometalinter tool
    041ca9669b update CHANGELOG.md for #2473
    72619cf6ac fix inconsistent PR link
    6cc3de6226 Merge pull request #2473 from carnott-snap/go-hi
    ffd5d67ca6 add date to the v1.21 release
    8baba37054 update CHANGELOG.md for v1.21 release
    f5c4760126 debug: fix tests
    a52bbb1c28 debug: refactor goroutine UX
    0341ff3de3 debug: call s:logger directly
    0c62e81067 handle command response correctly when NextInProgress is set
    13128e5f30 Merge pull request #2486 from bhcleek/lint/no-go-tool-vet
    cd82a5d941 lint: do not call go tool vet
    3407b33be5 update CHANGELOG.md for #2485
    c36f49ccf7 Merge pull request #2485 from bhcleek/go1.13/errorformat
    9415683d6f prefix local variables with l:
    7c8d5a94d2 adjust default errorformat
    925d29a73d update CHANGELOG.md (and help file) for #2480
    67d53f1108 Merge pull request #2480 from bhcleek/config/debug-log-output
    b9be3e7832 config: remove space in g:go_debug_log_output default value
    65d4655f28 Merge pull request #2479 from bhcleek/go1.13/ci
    2254e6d842 update Dockerfile and .travis.yml to test with Go 1.13
    91c6224d77 update CHANGELOG.md for #2478
    f4b2b504f7 Merge pull request #2478 from bhcleek/metalinter/default/golangci-lint
    c33c211c76 update CHANGELOG.md for #2475
    c65d51daa3 Merge pull request #2477 from bhcleek/go1.13/gometalinter
    e8b87cbdce config: default g:go_metalinter_comand to golangci-lint
    4d7fef34c6 lint: handle go vet's changed output in Go 1.13
    dc371c5431 update CHANGELOG.md for #2472
    856f042328 Merge pull request #2472 from Rican7/bugfix/job-cwd-spaces
    d78122557f verify paths with spaces are handled correctly
    d07958af80 feat: remove go#debug#goroutines command, add one window to show/swicth between goroutines
    1de27e4baf feat: remove go#debug#goroutines command, add one window to show/swicth between goroutines
    a48de2b77a syntax: highlight go directive and version
    a40ff80e2a Fixing an over-eager escaping of a file-path in `go#job#Options` that caused paths with certain characters and spaces to fail (silently) to be able to execute a job
    f93692b457 fix: change echom to go#util#Echo*
    c6273c5ca6 update CHANGELOG.md for #2464
    0ebb6dee68 Merge pull request #2464 from xbsura/fix/typo-of-stepout
    6ca32505e5 Set nvim popup style and syntax highlighting
    0b8f078398 docs: try restart ci, last time failed but maybe not because code
    89260af1c7 fix: stepOut typo to stepout
    830d7871de fix: remove 99999 continue limit, user can user ctrl-c if it cost too much time
    ed6bd2ad75 fix: a log typo
    d421261715 feat: support debug multi goroutine
    635b9e7f27 update CHANGELOG.md for #2433
    5d8b9be589 Merge pull request #2433 from bhcleek/syntax/w-format-specifier
    4f22b838c9 cmd: set statusline for commands (mostly Vim 7.4)
    2d701db83a path: use go#util#EchoInfo instead of echon
    0f13e4340f lint: use go#util#EchoSuccess instead of echon
    bec49a8c24 cmd: replace echon with go#util#Echo* functions
    6da4163ccf plugin: use go#util#Echo* functions
    ca0aea7843 play: use go#util#Echo* instead of echom or echo
    df7fdc4c21 package: use go#util#EchoError instead of echomsg
    1fc13e19f5 fmt: remove unneeded echomsg statement
    cabbe40978 debug: use go#util#EchoInfo for debugging message
    8b41855b04 complete: remove debugging message
    8cecefd77a update CHANGELOG.md for #2457
    7731fe63a3 Merge pull request #2457 from bhcleek/plugin/once-more
    4f058a51df plugin: reset more while installing binaries
    edb47f1106 update CHANGELOG.md for #2453
    94883ff5f4 Merge pull request #2453 from bhcleek/gopls/update/restart
    7649c3e923 lsp: restart when gopls is updated
    007b69c27b Merge pull request #2454 from bhcleek/prep-for-release
    df3844f1a8 prepare for release
    b0098a6d80 Check for the correct nvim function for floating windows
    2f5347eae0 Add support for DocPopupWindow in Neovim
    ed63c87496 Merge pull request #2439 from kazukazuinaina/master
    696967fb0f Merge pull request #2446 from bhcleek/lsp/godoc/strip
    29913c12c7 lsp: do not strip godoc from hover content
    febbace3a1 update CHANGELOG.md for #2442
    e667f38c9a Merge pull request #2442 from bhcleek/fmt/autosave-other-file
    72d1ac6825 autocmd: don't format when saving to a different file
    c987d3fda9 fix typo
    02f1fcd65a update popup exist judgement
    974fd4367c update CHANGELOG.md for #2438
    fbd9346dd8 Merge pull request #2438 from fatih/revert-snippets
    621c6d7985 snippets: revert #2358
    e96189998c update CHANGELOG for #2436
    02cc7b681c Merge pull request #2436 from bhcleek/lsp/debug/browser
    b0ec0807ea lsp: add :GoLSPDebugBrowser
    f903354df1 update CHANGELOG.md for #2434
    c05179c675 Merge pull request #2434 from bhcleek/pr-2099
    a60b00110e template: remove g:go_template_test_suffix and simplify go#template#create
    0bbcfe6708 Add test covering new config behaviour
    f853935629 Silly, remove duplicates
    15525a8d6a Add config to enable _test suffix in existing packages, update docs
    0b84e048f9 silly typo
    b1e402bdc6 Support absolute paths for go_template(_test)_file vars (instead of using go_template_dir)
    68126af794 syntax: add support for Go 1.13's new %w format specifier
    87b41a7f88 update CHANGELOG.md for #2409
    af622d93bc Merge pull request #2409 from ldelossa/term-close-option
    a91db54a12 Merge pull request #2432 from itchyny/simplify-util-is-win
    c57ae4b2c8 simplify go#util#IsWin: has('win32') is enough
    8e9293f729 Merge pull request #2430 from bhcleek/lsp/dynamic-config
    7c997ecd62 lsp: register for dynamic configuration
    244072a5f3 update CHANGELOG.md for #2429
    3a373cfee2 Merge pull request #2429 from bhcleek/lsp/build-tags
    28a3099065 lsp: reset workspaces when build flags are changed
    ae77be7e57 lsp: add support for configuration client capability
    33eaa1659b lsp: refactor managing workspace directories
    d01dc96670 lsp: fix response handling
    6705b52fbc godef: make directory name match the package name
    09247acd82 Merge pull request #2428 from bhcleek/def/position-tests
    991dcdc65a def: use distinct packages for each position test
    5ba9fb9d52 Merge pull request #2427 from bhcleek/lsp/definition/off-by-one
    eb994821d4 lsp: fix off by one error in position calculation
    9c3b10e4c7 lsp: add tests to check boundary conditions of position calculations
    045eec36fe Merge pull request #2426 from bhcleek/lsp/initialized/send
    36f39b34d8 lsp: send initialized notification
    505d6d0707 term: refactor g:go_term_exit
    33234dab70 update CHANGELOG.md for #2422
    24b81e8e4b Merge pull request #2422 from bhcleek/lsp/statusline/initialization
    18d846cabc lsp: call textDocument/didOpen less often
    39b7d70494 lsp: refactor notifications about initialization
    1cc6392ae9 statusline: support initialization messages
    f05f4e39fb Merge pull request #2420 from bhcleek/lsp/tests
    76c0f00391 def: add tests for gopls mode
    4c3b517f35 def: prefix local variables with l: in tests
    5ab27cdb1b use unique directory prefixes for lsp tests
    e9ab697f9a lint: refactor Test_Vet to use gotest#load_fixture
    c7dac81847 write file after removing cursor position
    77a47d5bf6 use reltime() for for uniqueness
    1c8737d7b8 add test fixtures to gopls workspace
    0d4131d704 reposition messages from tests for clarity
    0574df152c Merge pull request #2418 from jinleileiking/patch-1
    b4f46723bc Change GoInfo default using gocode to gopls
    5b7fa872c5 update CHANGELOG.md for #2415
    16139d5752 Merge pull request #2415 from bhcleek/lsp/add-workspace
    706d421e3a lsp: correct typo in go#lsp#AddWorkspace
    63315760aa add config, close conditional, and toggle
    043984a511 Merge pull request #2407 from bhcleek/lsp/off-by-one-insert
    22b4439908 completion: fix off by one error in request
    d42c9586ce Merge pull request #2404 from bhcleek/lsp/completion/off-by-one
    52e6435cc7 lsp: fix off by one in go#complete#Complete
    git-subtree-dir: pack/3rdparty/start/vim-go
    git-subtree-split: d4a9cc72469927202fadf14600253a35240c993e
  • Dustin L. Howett's avatar
    Merge commit 'b726b2bd' · ab0fc3ae
    Dustin L. Howett authored
  • Dustin L. Howett's avatar
    Squashed 'pack/3rdparty/start/tagbar/' changes from 387bbadda9..a0f51bd5a6 · 234939d4
    Dustin L. Howett authored
    a0f51bd5a6 Arrange (u)ctag argument order to not clobber others (#560)
    ede158656a Merge pull request #557 from alerque/master
    d7f6ec1f8e Use --headless for Neovim test, install from universe
    f5a4932ed8 Add badge for CI check workflow
    c62eaf944b Test for basic functionality in (n)vim using CI job
    dcd5f446c3 Clarify ctag version compatibility, closes #556
    e718c189e6 Merge pull request #555 from alerque/master
    7e619b5f1c Add status badge for lint job, encourage good behavior
    750b779ca3 Fix variable scope issues revealed by vint
    b607006c56 Fix syntax issues that are lint warnings
    3c63890ce0 Setup GitHub Actions to lint vimscript
    61bee90638 Add note to README so it is explicit this works with Neovim
    0642b84cd4 Cleanup maintainer notice from README, closes #549
    4b51aa490e Use different argument for ctags vs. uctags, closes #552
    cf6eb2d9f7 Merge pull request #544 from aymanbagabas/aymanbagabas/markdown
    22f8084a2a Merge pull request #537 from preslavmihaylov/master
    10209ffd3f Merge pull request #531 from rtyler/patch-1
    e471e57ea6 Merge pull request #530 from hupfdule/manpage-support
    b9e7f0a291 Revert emergency fix, not actually broken; closes #550
    70b691efe1 Fix syntax bug introduced in merged PR #476 and emergency backtrack
    b7766a1693 Merge pull request #529 from hupfdule/asciidoc-support
    bd810fd1a6 Merge pull request #502 from chocoladisco/master
    a8e050f448 Merge pull request #493 from fievel/master
    6dfe6afacc Merge pull request #481 from blueyed/allow-reload
    3b7d19e0a1 Merge pull request #476 from goerz/ctags_options
    a0526a6d5a Fix issue where --regex based file types can output duplicate lines when --sort=no (#471)
    23f148225b Merge pull request #470 from blueyed/add-StopAutoUpdate
    15431176a8 Merge pull request #423 from jolan78/master
    0c943cc1f1 Add note about looking for maintainers
    231428ebcd Add uctags markdown support
    1998a45805 added support for golang for exuberant ctags
    5acba55275 Discover the universal-ctags binary
    7e53921d4d Add support for manpages
    a91422aae3 Add asciidoc support
    db1b710289 fixed the deprecated --extra to --extras
    44f114a7cb Add map to allow pausing/unpausing tagbar
    877515b0d8 Merge remote-tracking branch 'upstream/master'
    42d2750c9a Use function! to allow for reloading
    9c60e7f6c6 Accept a list, allowing 'NONE' to avoid duplicates
    df960e8b9c Add g:tagbar_ctags_options
    b8065cfee4 Add tagbar#StopAutoUpdate
    b7890e27ca compatibility with phpctags
    73cb823d09 Add note about Universal ctags
    git-subtree-dir: pack/3rdparty/start/tagbar
    git-subtree-split: a0f51bd5a6514632bf3d2df1b001df27361892bd
  • Dustin L. Howett's avatar
    Merge commit '234939d4' · 45a58c55
    Dustin L. Howett authored
  • Dustin L. Howett's avatar
    Squashed 'pack/3rdparty/start/ultisnips/' changes from 1a99766b73..c309637e02 · 012dfdd6
    Dustin L. Howett authored
    c309637e02  Use $MYVIMRC as heuristic to find ~/.vim. (#1146)
    82d65569d9 Use ~/.vim/vimrc instead of ~/.vimrc. (#1145)
    f7b9b3b110 Fixes :UltiSnipsAddFiletypes no longer working as advertised (#1140)
    298f4c255d Fundamentally changes how snippets are found. (#1138)
    16c4e4affe Make sure the content of snip.rv is casted to a str. (#1137)
    74dae03d02 Choose python 3.6 as version for repro image (#1133)
    84c84d5e64 Fix deoplete source (#1130)
    d2f42d6b43 Remove support for Python2 (#1129)
    7dc30c55e5 Update ChangeLog for release.
    d894f794fc Add mypy configuration & tweak pylint configuration. (#1128)
    a909dee82b Use vim.buf.cursor abstraction everywhere (#1127)
    44a73c1df2 Remove dead code & fold markers. (#1123)
    9b0d5fa4f7 Test python 3.6, 3.7 and 3.8. (#1118)
    8ff301c651 Fix snippets breaking when opening preview window (#1055)
    1d6b74d901 Add au TextChangedP to make autotrigger work with completion windows open (#986)
    303d8da0f4 Markdown is hard.
    3d86b471fe Restructured README.
    2bf373a97b Define the 'kind' property for completion items. (#1043)
    bac9f17bac Use blackhole register for select-mode deletion (#1050)
    88809a80ae Allow users to disable UltiSnipsListSnippets  (#1001)
    b12e8341b7 Remove get_tm_snippets.py
    0f7c18d0bd  Pipenv & run black over the code base. (#1113)
    38b60d8e14 If UltiSnipsSnippetDirectories only contains a single directory, expand `~` (#1085)
    f7e34aeccc Fix typo thinks -> things (#1079)
    f77183fe47 Text objects (iS/aS) for snippets files (#1106)
    1be02679df Rename files to not start with _. (#1111)
    3ee49fbdaa Make patch detection more resilient (#1110).
    86f195f0b2 Fix test suite on Vim git version (#1109)
    9f240ec51b Add vim8.1 into Travis configuration. (#1108)
    83e421c757 waffle.io is defunct.
    git-subtree-dir: pack/3rdparty/start/ultisnips
    git-subtree-split: c309637e0243b71f7e3265ebe3cffdfe9674cfbc
  • Dustin L. Howett's avatar
    Merge commit '012dfdd6' · 8a63d38d
    Dustin L. Howett authored
  • Dustin L. Howett's avatar
    Squashed 'pack/3rdparty/start/vim-snippets/' changes from d693695ae9..5d259617f5 · 46436715
    Dustin L. Howett authored
    5d259617f5 Fix deff for python (Issue #961, Issue #1133); Fix uuid
    efecc996d4 Regex match lorem[num], works for all
    6f92e631db Remove unnecessary modules import; Move has_cjk, display_width to vimsnippets.py for common use
    7a84368823 Update table for markdown
    c059abfbd2 refine rst snippets
    7b6991e17e deal with exception of complete function
    8a0dd8ea4a refactor complete function to allow 'fuzzy' match
    0e5c36c4fe Respect puppet style guide
    9ccd2ac190 extend javascript snippets.
    b8261628b5 Update freemarker snippets
    36dcd28410 Golang syntax error
    987d4d8a3f Extend freemarker snippets
    5ee6d319bb Fix 'async function' snippet alias so it doesn't colide with 'function' snippet alias.
    c965ce0710 Add vim filename snippet in the snippets folder
    9e323311e5 added some basic typescript snippets
    d92a3fd7a0 fix typo into sass/css.snippets jc:st = strech not space-evenly
    be577b7aa9 Remove redundant whitespaces from comment format
    666e9a8d65 Revert "Adding some generic parentheses snippets."
    eb76bee6e7 Adding some generic parentheses snippets.
    67f5455440 snippets for vue-i18n
    db67e54d59 Add go table test
    2221222df8 add blank lines to match master branch
    2eb49231b7 Remove UltiSnips snippet (format is compatible to all plugins)
    489c641618 tex: add tsub and tsup for textsubscript and textsuperscript
    55b29ff83e Rust Rc, unimplemented!()
    5dc42dbc6c Add eelixir snippet descriptions
    14664576b1 Add eelixir render snippet
    3396967c33 Add eelixir password input snippet
    2ff7fc4c30 Add eelixir label snippet
    dd31e2eee7 Add eelixir text input snippet
    271ef5cb3c Add eelixir error tag snippet
    99c28869f4 Add eelixir unless snippet
    955997ec9d Add eelixir cond snippet
    2bea5ff4c4 Add eelixir comment
    bcdc3a6e3d Remove the space between caption and label
    08118139b7 Remove space between caption and label in figure
    fdce2f1df1 Unify shabang in ultisnips
    84ab7e118c Remove overly common trigger go snippet
    d83f4ee6dc Add html phone URL snippet
    23869ac61c Remove overly common trigger go snippet
    73b9e21ac6 Added CSS grid support.
    git-subtree-dir: pack/3rdparty/start/vim-snippets
    git-subtree-split: 5d259617f5198e511a759ccf4fb3000921abae21
  • Dustin L. Howett's avatar
    Merge commit '46436715' · 3adcebcc
    Dustin L. Howett authored
  • Dustin L. Howett's avatar
    Squashed 'pack/3rdparty/start/vim-fugitive/' changes from 4da9fb8f43..13fdeb5fa7 · 755f065e
    Dustin L. Howett authored
    13fdeb5fa7 Don't show bogus unstaged changes in bare repository
    3936a74584 Reset scrollbind/cursorbind after reblaming
    a2d76c4583 Fix completion of stash@\{<Tab>
    fd029d83bf Add built-in package management installation way
    0004f585fd Don't use arrow notation for unstaged modifications
    b24f98fbb1 Cache fugitive#Head() to minimize statusline IO
    8c84ea6fdb Replace --no-patch with -s for Git < 1.8.4
    1e57d678ba Add PayPal donation link
    f6acae50ea Improve robustness of status --porcelain=v1 parsing
    0356edf6b8 Optimize away log calls in :Gstatus if no upstream changes
    e8c5b604db Improve robustness of status --porcelain=v2 parsing
    b09c5d2523 Resolve symlinks in configured work tree
    395d947644 Force --no-edit on squash maps
    0a77016ef5 Disable signcolumn during Gblame (#1379)
    06e34204af Fix error message on blank buffer with no Git dir
    427ac52d7d fugitive.vim 3.1
    8c29bf1bb9 Tab complete > arguments
    ea818f1fab Include PowerShell in check for win32 shell
    698065596c Fix incorrect script id (part 2)
    28abadcb84 Fix incorrect script id from nested function call
    a3ba0ca67f Fix status diffs broken by missing sub attribute
    973d814e26 Rudimentary support for diff maps for submodules in status
    a21ca7e86e Support X for submodules
    f779b90fbd Add --porcelain=v2 status parser
    80aa8a9aea Fix reverse blame jump for the boundary edge case
    c9cf1b3cb2 Make remaining buffer commands global
    cfdfc1ba14 Clearer error message on attempt to delete directory
    5eeb7625df Expand status file lookup into nested structure
    4f0905e963 Preserve line number on :Gedit with no or > argument
    f72ca2e6c1 Improve ++opt +cmd handling for :Gedit/:Gread
    621ffb087a Fix :'<,'>Gclog on some Vim versions
    24b463b5b3 Support REVERT_HEAD and CHERRY_PICK_HEAD
    eedfd2a570 Don't show tags warning when editing commit message
    ab26e9fdb3 Trigger User FugitiveChanged on events that change repository
    fee14c149c Don't reload status on non-Fugitive ShellCmdPost
    540d8024c2 Force status reload on commands likely to change it
    9c91766118 Vim's `redraw` can change v:shell_error
    6eb5d8e4b2 Fix buffer local commands
    0cf70ab9fc List pagure plugin
    80ef19665a Fix typo
    18893e8ca7 Use more conventional quickfix event type for :Ggrep
    1b292303c2 Encapsulate doautocmd <nomodeline>
    c1244ea7d0 Default to left, not right split for empty :Gdiffsplit filename
    eec184e8b0 Fix blame help maps
    417b3bb818 Fix off by 2 error staging multiple files
    edd054f76f Fix visual mode exclusion for staging on section header
    37088aaf65 Fix X on removed file
    1d8c0a38b2 Show first parent diff for merge commits
    f5a94cbc81 Reload status after Vim :terminal command
    dc413818a6 Fire ShellCmdPost after :Gpush
    2cf584f97d Remove redundant jump when opening :Gstatus
    26f6037de6 Reveal folds when using jump maps in commits
    35f1095f9b Expose completion helpers for subcommands
    f5fc469c0c Ignore blank buffers in fugitive#Statusline()
    cb66611f03 Remove blank buffer FAQ entry
    49287b6e87 Remove redundant autocommands
    ec918b9a79 Support blank buffers
    ff0eeac045 Document disabling global maps
    eb04d8bcc0 Standardize on "maps", not "mappings"
    2d0df5842a Fix `:Glog`
    1937bc3cd9 Experimental support for blank buffers
    d2837b103c Add sponsor button
    10c54dfc93 Set b:git_dir for :terminal buffers
    40bc5aff18 Make universal maps global
    68da9a2be3 Make :Glog and :Ggrep global
    804957a3e6 Make :Gbrowse global
    cf88ce96c9 Make :Gmove and :Gremove global
    2464b0c29a Make :Gcd global
    77a732c97c Explicitly document :Git subcommands
    64d106dfdd Remove fugitive- prefix from command help topics
    c9d4ea7900 Always use Git style path for <C-R><C-G>
    99ad1a89fa Relocate 'path' adjustment
    2eb6aac0c4 Adjust warning wording
    c80ffaf073 Don't override user :Gr
    63a05a6935 Remove 'tags' support
    522d3d3c1e Make edit commands global
    b8c33aa0a1 Enable edit commands to work without git dir
    39f9e2d722 Move IO functions with rest of API
    a45e2c6d57 Provide :Gr as alias for :Gread
    5042fd965d Tweak :Gedit > semantics
    251eda7eb6 Reduce fugitive#buffer() to stub object
    c212d854d5 Accommodate git-blame revision ignoring features
    082a9b99e7 Remove double word in docs
    c13e0e1afd Don't browse to blob for empty buffer
    b97a9abe29 Provide global :Git and :G
    410e17129d Use :Git not :G for visible maps
    3a01f4b819 Remove toggling behavior of :Gblame
    f04a2275db Remove feedkeys() contortions in :Gdiffsplit
    b714adbc51 Fix q deprecation message
    9abe962c9d fugitive.vim 3.0
    b6bbb17e3f Expose IO functions as object
    9dcf1d7d81 Document important API functions
    a510b3aadf Deprecate :Gstatus q
    c63fd1b71b Support a...b as notation for merge base
    e768806266 Remove obsolete Git object examples
    f29298880f Provide FugitiveGitPath()
    2b6199594a Use FugitiveVimPath() to normalize directories during detection
    fd7b5d8a1e Rename s:PlatformSlash() to FugitiveVimPath()
    e759a85486 Provide separate highlight groups for file sections
    85ffe4754e Remove dead code
    c242cb6369 Provide maps to find similar diff lines
    ff058bf5b7 Fix diff after :Gwrite
    ed6f4256fc Change work tree buffer on :Gwrite exactly once
    1c22b69652 Remove dp map in blobs
    52f71a3154 Follow renames on :0Gclog
    fdbcad0624 Allow expanding merge conflict in :Gstatus
    bbd9afe790 Provide map to close diff buffers
    f2ca0e43a1 Give s:MapEx() more intention revealing name
    25581bf775 Support discarding multiple changes in visual mode
    e69a3ea21a Add nested to reload status autocommands
    442d56e23c Fix :Glog
    cb613ca05d Fix :Gdiffsplit with diffopt+=vertical
    d6f7eaf16c Compensate for 'noequalalways' in merge diff
    b6dbe402e8 Fix :Glog with diff.noprefix set
    86c276d629 Fix version check for doautocmd <nomodeline>
    22e9b26075 doc: prefer https url
    2518ef9a02 Map double click to jump to file
    bb82255490 Add :help reference to README
    a8163625f8 Vim automatically sets cursorbind for diff buffers
    7079d0c7e2 Convert all FugitivePrepare() int arguments to buffer names
    4f51d99f44 Encapsulate shell escaping user arguments
    c972b2a065 Fix :Ghdiffsplit with diffopt=vertical
    cf9ef7377f Don't process modelines after :Gwrite
    45ca1eab83 Use platform slashes for :Gcd
    a80b965d0d Remove legacy support for /relative/path
    03361373b1 Fix :Gstatus U map
    6a04e875f8 Provide diff maps in blobs
    557cc74141 Fix syntax error
    b887de5ce2 Don't reuse blame buffers for Gstatus edits
    6cc52a1aab Fix extra bang in diff maps
    faa895239b Clean up gitdir file parsing
    6eb885c017 Always diff against parents in :Gdiffsplit!
    308e4bf241 Fix temp file gq shadowing blame gq
    7d484eaf52 Use s:Map() for nearly all maps
    34bfcd471b Fix error generating command for :'<,'>Gblame
    1d2821f91e Clarify :Gstatus p behavior
    53e5e61afa Emphasize :Glog behavior change
    1359d620eb Force <nowait> for all generated maps
    5defa72b81 Provide count on blob blame maps for --reverse
    c21736dde7 Jump to file not diff for boundary commit in :Gblame
    11691b38bb Allow :Gblame ^boundary to use scrollbind
    69bf0e3469 Accept commit.. :Gblame argument as commit not filename
    e7c2563288 Remove bang variant of :Git from README
    c0ce201c3b Remove :Git --paginate from docs
    49b777ae44 Use rev-list in lieu of log with raw format
    f33a53bceb Remove debug
    16bfd4fa92 Fix offset jumping to patch on :Gblame --reverse
    8038ee60a9 Fix -1 effectively canceling --reverse
    08a9a45dbc Support :rightbelow Gblame and other <mods>
    0a7ffc5d67 Use descendant when jumping to patch for :Gblame --reverse
    0392f64a93 Make :Gblame a proper subcommand
    d1033e756e Cleaner error on -z command failure
    79b1f16a7a Delegate :Git grep to :Ggrep
    03710a877a Use same window for commit message on :0Gcommit
    b4d40abb10 Use lower case for subcommand declarations
    3ca888470b Expand diffs on :Gcommit --patch
    4460aeffdd Use temp buffer with man filetype for :Git help
    078210c718 Use temp buffer for :Git show and :Git stash show
    d417fd3199 Move blame buffer settings to FileType event
    4daa0c558c Support nearly all git-blame flags
    7686b7dc5c Support blame.blankBoundary with Ignore highlight
    68f0cb87a9 Don't require <mods> for vertical/tab blame culprit maps
    9ca6e0c633 Remove q from :Gblame documentation
    97e993611e Highlight blame --score-debug and blame -c
    54f155218a Remove duplicate b:fugitive_status initialization
    c7e3df5283 Provide some commit --reset-author maps
    bc3d36e559 Remove 'guioptions' workaround
    8227503714 Open :Gstatus for :Gcommit -i and :Gcommit -p
    f0acf3e883 Show dirty submodules in Unstaged section
    a09e49d2bb Support :Gblame --reverse
    cce9ca0933 Move select temp file configuration to BufReadPre
    0a536ed5af Don't unnecessarily change ":verbose set scrollbind?"
    9420d05ddd Eliminate b:fugitive_blamed_bufnr
    6db7120c9a Don't double set temp options on blame buffer
    4a42d4e21c Encapsulate retrieval of blamed bufnr
    206b54a147 Retool :Gblame close map
    1260de3b7d Fix :Gread blobhash
    9d36dc2d74 Check for built-ins with .exe extension on Windows
    0db4ceb980 Restore press enter prompt in :Ggrep in GUI
    95c1f1525d Fix accidental utility invocation on `:Git complete`
    cfca94c723 Expand simple aliases in :Git
    edae34e02f Fix count with jump to commit section
    d7172882b7 Add default core.askPass to :Gpull
    511e32114b Swap gu and gU
    0cc3beeae9 Tweak commit for u rebase map
    0484c03c6b Allow :Grevert --abort/continue/quit
    9d77fd566c Add Git dir presence guard to all commands
    35d7590354 Provide s/u mappings on commits
    c4d4986f1e Delegate :G command to :Gcommand for 8 commands
    fb9acc6831 Add a FAQ entry about remote passwords
    81eec879a4 Update :Gstatus description in README
    14effe7bfb Mention :Gpull and related commands in README
    15fe543508 :Glog isn't that exciting
    bd70719f54 Provide :Grevert and :Gmerge mappings
    0f08b0cbbb Provide separate file/hunk jump maps
    35cf80dd3b Fix :Gbrowse with range and blame.coloring enabled
    dffa56c4ea Retool section jump maps
    9ac6a258d6 Fall back to "commit" line for file hunk jump maps
    e5a6a8c525 Support jump maps in visual mode
    875a58c2e1 Document :Git --paginate
    3f417d7ad1 Enable fixup/squash maps in :Git log
    2b757e87d5 Disable modelines in temp files
    5af58f9da1 Fix a typo in the docs
    4c0dbb66eb Always use temp file for :Git diff and :Git log
    9118ed27c3 Add -addr= declarations
    291cf5d1bc :0Ggrep calls :Glgrep
    928e1e71e7 Document :Git --no-pager
    b9c47cec52 Add command dispatcher
    21991bcbaf Eliminate redundant :G and :Git implementations
    665cec73d9 Provide :Grevert
    d54e98bedb Remove overlooked 40 character limits
    0ab2d9709c Preserve cursor position after staging last untracked file
    7df9f07e1f Compensate for blame.coloring
    fb3c603ce6 Always use temp file for :Git --no-pager
    44ade58ed5 Always use :terminal for :Git --paginate
    881d72f1af Preserve index on cza and czp
    f3dde245b3 Map I to :Git add --intent-to-add
    a3ab24f681 Fire synthetic QuickFix events on :Ggrep
    bd89fd440b Fix error message for rev-parse
    3c4ad5ff72 Avoid unnecessary diffing in :Gstatus
    fff24e29e6 Add czA and czP aliases for cza and czp
    0810dcc805 Fix typo
    3b0f68180f Compensate for bad 'shellredir'
    49f3f92fd5 Guard against inadvertent :| invocation
    645406f592 Use :Gdiffsplit! for diff maps
    7bfce97480 Provide misc :Git mappings
    3e9ef9349d Remove error guards for old object syntax
    881ad1ed0b Guard against missing output on :Gcommit success
    ebc3f35575 Require bang to :Gwrite from index
    79566b5ddd Don't override alt buffer on :Gwrite from index
    d90e912e46 Provide ignoring maps
    2bfb6e9889 Reverse inline diff mappings
    b92de0138d Provide rudimentary stash mappings
    d95cc5f8c2 Remove :Gedit HEAD and :Gedit refs/... special cases
    55cb58cd5f Add :Git add --intent-to-add to :Gstatus P
    ce283cbdbf Remove i special behavior on section heading
    994d1b518f Remove --intend-to-add from :Gstatus i
    d88a0f8465 Fix :Gstatus X in visual patch selection
    54bc4ab9dd Improve error handling on :Gstatus X
    15df3f8959 Do what the user means for LANG= in g:fugitive_git_executable
    1fe6202848 Fix :Gbrowse assuming range
    a152894a55 Don't rely on exception message for :Gbrowse - error
    8a693fb7bc Restore :Gdiffsplit :n
    80996c2e2c Map c? and r? to show commit and rebase help
    238a5d8aaf Map U as :Git reset -q
    76bd7d6cb4 Map gr to jump to rebasing section
    ac97fa3781 Use terminal for :Git fetch/pull/push
    6e2310a154 :Gstatus called from status window forces reload
    387cb5c2a0 Clean up error reporting on :Gwrite in diff
    8d584c199a Fix escaping for :Ggrep '#'
    adba9c6345 Provide core.askPass default
    d68efa32e8 Document parentheses movement maps
    b0de6c2811 Fix :0Glog another/path
    e25a214f78 Add an error about LANG= in g:fugitive_git_executable
    ea26a94bde Consistently position cursor on :Gstatus
    3d305c75a0 Don't print current line on :G|chainedcommand
    68b999bfd0 Remove <C-W>C map
    58b2b85c9e Only check bdelete mapping in normal mode
    07661dc102 Provide additional commit maps
    2992275d8e Don't load first quickfix result into status buffer
    d8acfc35c7 Clarify in error message that :Gbrowse handlers are user installed
    0ee0498b88 Filter out warning on :Gedit master@{2.years.ago}
    469a73f3d9 Speed up :Ggrep
    a1b78969f5 Decouple :Glog from :grep
    158ffdbb14 Extract function to create titled quickfix list
    f83072703b Remove debugging variable
    4c650c699d Don't require shell quoting for colons
    dafb994c92 Remove unused function
    8c80cb63e2 Fix E211 handling in :Gmerge/:Grebase
    dbdc947533 Fix <CR> as :Gblame map
    git-subtree-dir: pack/3rdparty/start/vim-fugitive
    git-subtree-split: 13fdeb5fa7f464266163f405f42322e6fb0d3067
  • Dustin L. Howett's avatar
    Merge commit '755f065e' · 42abd905
    Dustin L. Howett authored
  • Dustin L. Howett's avatar
    Squashed 'pack/3rdparty/start/vim-repeat/' changes from 0b9b5e742f..c947ad2b6a · 07b21eab
    Dustin L. Howett authored
    c947ad2b6a Add sponsor button
    ae361bea99 Add vim-radical in the plugins list
    git-subtree-dir: pack/3rdparty/start/vim-repeat
    git-subtree-split: c947ad2b6a16983724a0153bdf7f66d7a80a32ca
  • Dustin L. Howett's avatar
    Merge commit '07b21eab' · b580c146
    Dustin L. Howett authored
  • Dustin L. Howett's avatar
    Squashed 'pack/3rdparty/start/vim-surround/' changes from ca58a2d886..e4c4cc0f81 · e7863ce8
    Dustin L. Howett authored
    e4c4cc0f81 Add sponsor button
    fab8621670 Fix for "all" and "insert" "virtualedit" in Insert mode
    git-subtree-dir: pack/3rdparty/start/vim-surround
    git-subtree-split: e4c4cc0f816515fbb7e87076a988604b2d163daa
  • Dustin L. Howett's avatar
    Merge commit 'e7863ce8' · 29c6b37d
    Dustin L. Howett authored
  • Dustin L. Howett's avatar
    Squashed 'pack/3rdparty/start/vim-abolish/' changes from b95463a1cf..7e4da6e780 · 06a78761
    Dustin L. Howett authored
    7e4da6e780 Remove debugging variables
    468af51458 Add sponsor button
    3c7f939bbc Fix invalid sid expression
    git-subtree-dir: pack/3rdparty/start/vim-abolish
    git-subtree-split: 7e4da6e78002344d499af9b6d8d5d6fcd7c92125
  • Dustin L. Howett's avatar
    Merge commit '06a78761' · 3663066c
    Dustin L. Howett authored
  • Dustin L. Howett's avatar
    Squashed 'pack/3rdparty/start/vim-speeddating/' changes from ce2f1aae9f..fe98cfaa7e · ca44adf3
    Dustin L. Howett authored
    fe98cfaa7e Change vmaps to xmaps
    da8253ba5a Add sponsor button
    git-subtree-dir: pack/3rdparty/start/vim-speeddating
    git-subtree-split: fe98cfaa7ea9c4b838d42a6830437c919eb55b4e
  • Dustin L. Howett's avatar
    Merge commit 'ca44adf3' · 43ceba63
    Dustin L. Howett authored
  • Dustin L. Howett's avatar
    Squashed 'pack/3rdparty/start/ctrlp/' changes from 2e773fd8c7..44c8e24956 · 7426961a
    Dustin L. Howett authored
    44c8e24956 Merge pull request #526 from paulodiovani/bug/arrow-key-tc
    44640a578a Fix arrow keys when using true color config
    6bca8770a0 Merge pull request #516 from ishitaku5522/master
    0628989df5 fix error when F5 is double pressed
    fead770c40 Merge branch 'master' of https://github.com/ishitaku5522/ctrlp.vim
    4e662c9814 fix typo
    1d34ecd34f remove comment out for debug
    8559967e3e update for neovim
    30dd01a21d fix g:ctrlp_user_command_async
    git-subtree-dir: pack/3rdparty/start/ctrlp
    git-subtree-split: 44c8e24956d7dcfee3ee6083a0573fed31d136ed
  • Dustin L. Howett's avatar
    Merge commit '7426961a' · 68d06a8b
    Dustin L. Howett authored
  • Dustin L. Howett's avatar
    Merge commit '27e0ffc2' · ff636904
    Dustin L. Howett authored
  • Dustin L. Howett's avatar
    Squashed 'pack/3rdparty/start/vim-sneak/' changes from 5b670df362..24e6c3f4cd · 305c079a
    Dustin L. Howett authored
    24e6c3f4cd label-mode: disable third-party conceal chars #244
    27cc3ce0fd doc: None instead of Normal for disable highlighting #241
    git-subtree-dir: pack/3rdparty/start/vim-sneak
    git-subtree-split: 24e6c3f4cd6004e2b44e4022dee0260aba6132aa
  • Dustin L. Howett's avatar
    Merge commit '305c079a' · fa535b28
    Dustin L. Howett authored
......@@ -330,6 +330,7 @@ fu! s:Open()
fu! s:Close()
cal s:async_glob_abort()
cal s:buffunc(0)
if winnr('$') == 1
......@@ -434,9 +435,62 @@ fu! s:GlobPath(dirs, depth)
fu! ctrlp#addfile(ch, file)
call add(g:ctrlp_allfiles, a:file)
cal s:BuildPrompt(1)
fu! s:async_glob_update_progress(timer)
let s:must_wait = 0
if exists('s:focus') && get(s:, 'setlines_post_ended', 0)
cal s:ForceUpdate()
if exists('s:timer')
sil! cal ctrlp#statusline()
if !exists('s:job')
call s:stop_timer_if_exists()
fu! s:async_glob_on_stdout(job, data, ...)
if type(a:data) ==# type([])
call extend(g:ctrlp_allfiles, filter(a:data, 'v:val !=# ""'))
call add(g:ctrlp_allfiles, a:data)
fu! s:async_glob_on_exit(...)
let s:must_wait = 0
if exists('s:job')
unlet s:job
cal s:stop_timer_if_exists()
if exists('s:focus') && get(s:, 'setlines_post_ended', 0)
sil! cal ctrlp#statusline()
cal s:ForceUpdate()
fu! s:async_glob_abort()
cal s:stop_job_if_exists()
cal s:stop_timer_if_exists()
cal s:ForceUpdate()
fu! s:stop_timer_if_exists()
if exists('s:timer')
call timer_stop(s:timer)
unlet s:timer
fu! s:stop_job_if_exists()
if exists('s:job')
if !has('nvim')
cal job_stop(s:job)
cal jobstop(s:job)
unlet s:job
fu! s:safe_printf(format, ...)
......@@ -462,12 +516,26 @@ fu! s:UserCmd(lscmd)
if (has('win32') || has('win64')) && match(&shell, 'sh') != -1
let path = tr(path, '\', '/')
if s:usrcmdasync && v:version >= 800 && exists('*job_start')
if exists('s:job')
call job_stop(s:job)
if s:usrcmdasync && (v:version >= 800 || has('nvim')) && (exists('*job_start') || exists('*jobstart'))
cal s:stop_job_if_exists()
let g:ctrlp_allfiles = []
let s:job = job_start([&shell, &shellcmdflag, printf(lscmd, path)], {'callback': 'ctrlp#addfile'})
let s:must_wait = 1
let argv = [&shell, &shellcmdflag, printf(lscmd, path)]
if !has('nvim')
let s:job = job_start(argv, {
\ 'out_cb': function('s:async_glob_on_stdout'),
\ 'exit_cb': function('s:async_glob_on_exit')
\ })
let s:job = jobstart(argv, {
\ 'on_stdout': function('s:async_glob_on_stdout'),
\ 'on_exit': function('s:async_glob_on_exit')
\ })
let s:timer = timer_start(250, function('s:async_glob_update_progress'), {'repeat': -1})
while s:must_wait
sleep 50m
elsei has('patch-7.4-597') && !(has('win32') || has('win64'))
let g:ctrlp_allfiles = systemlist(s:safe_printf(lscmd, path))
......@@ -997,7 +1065,7 @@ fu! s:MapSpecs()
if !( exists('s:smapped') && s:smapped == s:bufnr )
" Correct arrow keys in terminal
if ( has('termresponse') && v:termresponse =~ "\<ESC>" )
\ || &term =~? '\vxterm|<k?vt|gnome|screen|linux|ansi|tmux|st(-[-a-z0-9]*)?$'
\ || &term =~? '\vxterm|<k?vt|gnome|screen|linux|ansi|tmux|st(-[-a-z0-9]*)?(\:tc)?$'
for each in ['\A <up>','\B <down>','\C <right>','\D <left>']
exe s:lcmap.' <esc>['.each
......@@ -1054,6 +1122,7 @@ fu! s:ToggleByFname()
fu! s:ToggleType(dir)
cal s:async_glob_abort()
let max = len(g:ctrlp_ext_vars) + len(s:coretypes) - 1
let next = s:walker(max, s:itemtype, a:dir)
cal ctrlp#setlines(next)
......@@ -1563,6 +1632,9 @@ fu! ctrlp#statusline()
let slider = ' <'.prv.'>={'.item.'}=<'.nxt.'>'
let dir = ' %=%<%#CtrlPMode2# %{getcwd()} %*'
let &l:stl = focus.byfname.regex.slider.marked.dir
if exists('s:timer')
let &l:stl = '%#CtrlPStats# '.len(g:ctrlp_allfiles).' '.&l:stl
......@@ -2571,6 +2643,7 @@ endf
fu! s:setlines_pre(...)
if a:0 | let s:itemtype = a:1 | en
cal s:modevar()
let s:setlines_post_ended = 0
let g:ctrlp_lines = []
......@@ -2581,6 +2654,7 @@ fu! s:setlines_post()
cal map(copy(g:ctrlp_ext_vars), 'add(types, v:val["init"])')
let g:ctrlp_lines = eval(types[s:itemtype])
let s:setlines_post_ended = 1
fu! ctrlp#setlines(...)
......@@ -1439,7 +1439,7 @@ Before 2016/11/28~
+ 新命令: |YankLine()| 来复制整个文件。
+ 新选项: |g:ctrlp_types| 来选择內建类型。
+ 新特性: 异步在新线程中调用 |g:ctrlp_user_command| 。 设置
|g:user_command_async| 为1来启用。
|g:ctrlp_user_command_async| 为1来启用。
+ 为 delphi, rust 和 golang提供buffertag支持。
+ 新选项: |g:ctrlp_brief_prompt|,
......@@ -1505,7 +1505,7 @@ Before 2016/11/28~
+ New command: |YankLine()| to yank current line.
+ New option: |g:ctrlp_types| to select builtin modes.
+ New feature: asynchronized spawn of |g:ctrlp_user_command|. This enable
with set |g:user_command_async| to 1.
with set |g:ctrlp_user_command_async| to 1.
+ Support buffertag for delphi, rust and golang.
+ New option: |g:ctrlp_brief_prompt|,
name: Check
on: [push, pull_request]
fail-fast: false
vimFlavor: ["vim", "nvim"]
tagsProvider: ["exuberant-ctags", "universal-tags"]
runs-on: ubuntu-latest
- name: Checkout
uses: actions/checkout@master
- name: Install ${{ matrix.tagsProvider }}
run: |
case ${{ matrix.tagsProvider }} in
exuberant-*) sudo apt-get install ctags ;;
universal-*) sudo snap install universal-ctags ;;
- name: Install ${{ matrix.vimFlavor }}
if: matrix.vimFlavor == 'nvim'
run: |
sudo add-apt-repository universe
sudo apt-get update
sudo apt-get install neovim
- name: Review ctags version
run: ctags --version
- name: Review ${{ matrix.vimFlavor }} version
run: ${{ matrix.vimFlavor }} --version
- name: "Try tagbar#OpenWindow()"
run: |
${{ matrix.tagsProvider == 'nvim' && 'nvim -i NONE -u /dev/null --headless' || 'vim -i NONE' }} "+set rtp+=$(pwd)" "+call tagbar#OpenWindow() | q" "+cq" plugin/tagbar.vim
name: Vint
on: [push, pull_request]
fail-fast: false
runs-on: ubuntu-latest
- name: Checkout
uses: actions/checkout@master
- name: Set up Python
uses: actions/setup-python@v1
python-version: 3.7
- name: Setup dependencies
run: pip install vim-vint
- name: Run Vimscript Linter
run: vint .
severity: style_problem
color: true
neovim: false
# Tagbar: a class outline viewer for Vim
## What Tagbar is
Tagbar is a Vim plugin that provides an easy way to browse the tags of the
......@@ -17,10 +20,16 @@ creates the tags it needs on-the-fly in-memory without creating any files.
## Dependencies
[Vim 7.3.1058](http://www.vim.org/)
[Exuberant Ctags 5.5](http://ctags.sourceforge.net/) or
[Universal Ctags](https://ctags.io) (recommended), a maintained fork of
Exuberant Ctags.
* [Vim](http://www.vim.org/) >= 7.3.1058
or any version of [NeoVim](https://neovim.io/).
* [Exuberant Ctags](http://ctags.sourceforge.net/) >= 5.5,
or (**highly recommended**) any version of [Universal
Ctags](https://ctags.io) which is a currently maintained fork of Exuberant
Ctags with many bugfixes, support for many more formats, and proper Unicode
support. Some additional formats can also be handled by other providers such
as [jsctags](https://github.com/sergioramos/jsctags),
[phpctags](https://github.com/vim-php/phpctags), or others.
## Installation
......@@ -227,7 +227,7 @@ endfunction
" s:add_snr() {{{1
function! s:add_snr(funcname) abort
if !exists("s:snr")
if !exists('s:snr')
let s:snr = matchstr(expand('<sfile>'), '<SNR>\d\+_\zeget_snr$')
return s:snr . a:funcname
......@@ -136,7 +136,7 @@ endfunction
" s:add_snr() {{{1
function! s:add_snr(funcname) abort
if !exists("s:snr")
if !exists('s:snr')
let s:snr = matchstr(expand('<sfile>'), '<SNR>\d\+_\zeget_snr$')
return s:snr . a:funcname
......@@ -51,7 +51,7 @@ endfunction
" s:add_snr() {{{1
function! s:add_snr(funcname) abort
if !exists("s:snr")
if !exists('s:snr')
let s:snr = matchstr(expand('<sfile>'), '<SNR>\d\+_\zeget_snr$')
return s:snr . a:funcname
......@@ -30,7 +30,7 @@ endfunction
" s:str() {{{1
function! s:str(longsig, full) abort dict
if a:full && self.path != ''
if a:full && self.path !=# ''
let str = self.path . self.typeinfo.sro . self.name
let str = self.name
......@@ -49,7 +49,7 @@ endfunction
" s:getPrototype() {{{1
function! s:getPrototype(short) abort dict
if self.prototype != ''
if self.prototype !=# ''
let prototype = self.prototype
let bufnr = self.fileinfo.bufnr
......@@ -109,7 +109,7 @@ endfunction
" s:add_snr() {{{1
function! s:add_snr(funcname) abort
if !exists("s:snr")
if !exists('s:snr')
let s:snr = matchstr(expand('<sfile>'), '<SNR>\d\+_\zeget_snr$')
return s:snr . a:funcname
......@@ -26,7 +26,7 @@ endfunction
" s:add_snr() {{{1
function! s:add_snr(funcname) abort
if !exists("s:snr")
if !exists('s:snr')
let s:snr = matchstr(expand('<sfile>'), '<SNR>\d\+_\zeget_snr$')
return s:snr . a:funcname
......@@ -16,7 +16,7 @@ function! s:isSplitTag() abort dict
function! s:add_snr(funcname) abort
if !exists("s:snr")
if !exists('s:snr')
let s:snr = matchstr(expand('<sfile>'), '<SNR>\d\+_\zeget_snr$')
return s:snr . a:funcname
......@@ -32,7 +32,7 @@ endfunction
" s:add_snr() {{{1
function! s:add_snr(funcname) abort
if !exists("s:snr")
if !exists('s:snr')
let s:snr = matchstr(expand('<sfile>'), '<SNR>\d\+_\zeget_snr$')
return s:snr . a:funcname
......@@ -6,7 +6,7 @@ function! tagbar#sorting#sort(tags, compareby, compare_typeinfo) abort
let s:compare_typeinfo = a:compare_typeinfo
let comparemethod =
\ a:compareby == 'kind' ? 's:compare_by_kind' : 's:compare_by_line'
\ a:compareby ==# 'kind' ? 's:compare_by_kind' : 's:compare_by_line'
call sort(a:tags, comparemethod)
......@@ -292,6 +292,27 @@ function! tagbar#types#ctags#init(supported_types) abort
\ 'subroutine' : 's'
\ }
let types.fortran = type_fortran
" Go {{{1
let type_go = tagbar#prototypes#typeinfo#new()
let type_go.ctagstype = 'go'
let type_go.kinds = [
\ {'short' : 'p', 'long' : 'packages', 'fold' : 0, 'stl' : 0},
\ {'short' : 'i', 'long' : 'interfaces', 'fold' : 0, 'stl' : 0},
\ {'short' : 'c', 'long' : 'constants', 'fold' : 0, 'stl' : 0},
\ {'short' : 's', 'long' : 'structs', 'fold' : 0, 'stl' : 1},
\ {'short' : 'm', 'long' : 'struct members', 'fold' : 0, 'stl' : 0},
\ {'short' : 't', 'long' : 'types', 'fold' : 0, 'stl' : 1},
\ {'short' : 'f', 'long' : 'functions', 'fold' : 0, 'stl' : 1},
\ {'short' : 'v', 'long' : 'variables', 'fold' : 0, 'stl' : 0}
\ ]
let type_go.sro = '.'
let type_go.kind2scope = {
\ 's' : 'struct'
\ }
let type_go.scope2kind = {
\ 'struct' : 's'
\ }
let types.go = type_go
" HTML {{{1
let type_html = tagbar#prototypes#typeinfo#new()
let type_html.ctagstype = 'html'
......@@ -47,6 +47,37 @@ function! tagbar#types#uctags#init(supported_types) abort
\ {'short' : 't', 'long' : 'targets', 'fold' : 0, 'stl' : 1}
\ ]
let types.ant = type_ant
" Asciidoc {{{1
let type_asciidoc = tagbar#prototypes#typeinfo#new()
let type_asciidoc.ctagstype = 'asciidoc'
let type_asciidoc.kinds = [
\ {'short' : 'c', 'long' : 'chapter', 'fold' : 0, 'stl' : 1},
\ {'short' : 's', 'long' : 'section', 'fold' : 0, 'stl' : 1},
\ {'short' : 'S', 'long' : 'subsection', 'fold' : 0, 'stl' : 1},
\ {'short' : 't', 'long' : 'subsubsection', 'fold' : 0, 'stl' : 1},
\ {'short' : 'T', 'long' : 'paragraph', 'fold' : 0, 'stl' : 1},
\ {'short' : 'u', 'long' : 'subparagraph', 'fold' : 0, 'stl' : 1},
\ {'short' : 'a', 'long' : 'anchor', 'fold' : 0, 'stl' : 0}
\ ]
let type_asciidoc.sro = '""'
let type_asciidoc.kind2scope = {
\ 'c' : 'chapter',
\ 's' : 'section',
\ 'S' : 'subsection',
\ 't' : 'subsubsection',
\ 'T' : 'l4subsection',
\ 'u' : 'l5subsection'
\ }
let type_asciidoc.scope2kind = {
\ 'chapter' : 'c',
\ 'section' : 's',
\ 'subsection' : 'S',
\ 'subsubsection' : 't',
\ 'l4subsection' : 'T',
\ 'l5subsection' : 'u'
\ }
let type_asciidoc.sort = 0
let types.asciidoc = type_asciidoc
" Asm {{{1
let type_asm = tagbar#prototypes#typeinfo#new()
let type_asm.ctagstype = 'asm'
......@@ -575,6 +606,18 @@ function! tagbar#types#uctags#init(supported_types) abort
\ {'short' : 't', 'long' : 'targets', 'fold' : 0, 'stl' : 1}
\ ]
let types.make = type_make
" Markdown {{{1
let type_markdown = tagbar#prototypes#typeinfo#new()
let type_markdown.ctagstype = 'markdown'
let type_markdown.kinds = [
\ {'short' : 'c', 'long' : 'h1', 'fold' : 0, 'stl' : 0},
\ {'short' : 's', 'long' : 'h2', 'fold' : 0, 'stl' : 0},
\ {'short' : 'S', 'long' : 'h3', 'fold' : 0, 'stl' : 0},
\ {'short' : 't', 'long' : 'h4', 'fold' : 0, 'stl' : 0},
\ {'short' : 'T', 'long' : 'h5', 'fold' : 0, 'stl' : 0},
\ {'short' : 'u', 'long' : 'h6', 'fold' : 0, 'stl' : 0},
\ ]
let types.markdown = type_markdown
" Matlab {{{1
let type_matlab = tagbar#prototypes#typeinfo#new()
let type_matlab.ctagstype = 'matlab'
......@@ -583,6 +626,23 @@ function! tagbar#types#uctags#init(supported_types) abort
\ {'short' : 'v', 'long' : 'variables', 'fold' : 0, 'stl' : 0}
\ ]
let types.matlab = type_matlab
" NRoff {{{1
let type_nroff = tagbar#prototypes#typeinfo#new()
let type_nroff.ctagstype = 'nroff'
let type_nroff.kinds = [
\ {'short' : 't', 'long' : 'titles', 'fold' : 0, 'stl' : 1},
\ {'short' : 's', 'long' : 'sections', 'fold' : 0, 'stl' : 1}
\ ]
let type_nroff.sro = '.'
let type_nroff.kind2scope = {
\ 't' : 'title',
\ 's' : 'section'
\ }
let type_nroff.scope2kind = {
\ 'section' : 't',
\ 'title' : 's'
\ }
let types.nroff = type_nroff
" ObjectiveC {{{1
let type_objc = tagbar#prototypes#typeinfo#new()
let type_objc.ctagstype = 'objectivec'
......@@ -306,6 +306,15 @@ COMMANDS *tagbar-commands*
:TagbarDebugEnd *:TagbarDebugEnd*
End debug mode, debug messages will no longer be written to the logfile.
FUNCTIONS *tagbar-functions*
Remove autocommands that might have been installed to automatically
update tag information. This should be called after you have used
|tagbar#currenttag| manually.
KEY MAPPINGS *tagbar-keys*
......@@ -360,6 +369,8 @@ s Toggle sort order between name and file order.
Map option: tagbar_map_togglesort
c Toggle the |g:tagbar_autoclose| option.
Map option: tagbar_map_toggleautoclose
t Toggle the pause (like :TagbarTogglePause)
Map option: tagbar_map_togglepause
x Toggle zooming the window.
Map option: tagbar_map_zoomwin
q Close the Tagbar window.
......@@ -390,6 +401,26 @@ Example:
let g:tagbar_ctags_bin = 'C:\Ctags5.8\ctags.exe'
Default: undefined
Use this option to specify a list of filenames to pass to ctags with the
'--options' flag. This is similar to the deffile key for tagbar type
extensions, see |tagbar-extend|, but acts globally. The special value 'NONE'
as the first entry disables reading of the default configuration files (e.g.
~/.ctags). Without this, if ~/.ctags and other files listed in
g:tagbar_ctags_options include some of the same patterns, tagbar might show
duplicate entries.
let g:tagbar_ctags_options = ['NONE', split(&rtp,",")[0].'/ctags.cnf']
This causes ctags to use settings from ~/.vim/ctags.cnf, ignoring other
configuration files.
Default: 0
......@@ -867,6 +898,10 @@ Note that if there is an error when processing the current file no error
message will be shown in order to not disrupt the statusline. If the function
doesn't seem to work right open the Tagbar window to see any error messages.
Note you should call |tagbar#StopAutoUpdate| manually in case you do not want
to display the current tag anymore. Otherwise the autocommands to update the
state are being executed all the time still.
......@@ -962,7 +997,7 @@ kind2scope: A dictionary describing the mapping of tag kinds (in their
int var;
< We then run ctags in the following way: >
ctags -f - --format=2 --excmd=pattern --extra= --fields=nksaSmt test.cpp
ctags -f - --format=2 --excmd=pattern --extras= --fields=nksaSmt test.cpp
< Then the output for the variable "var" would look like this: >
var tmp.cpp /^ int var;$/;" kind:m line:11 class:Foo access:private
< This shows that the scope name for an entry in a C++ class is
......@@ -1266,10 +1301,12 @@ try running ctags manually to see whether ctags reports the wrong information
or whether that information is correct and Tagbar does something wrong. To run
ctags manually execute the following command in a terminal:
ctags -f - --format=2 --excmd=pattern --extra= --fields=nksaSmt myfile
ctags -f - --format=2 --excmd=pattern --extras= --fields=nksaSmt myfile
If you set the |g:tagbar_ctags_bin| variable you probably have to use the same
value here instead of simply "ctags".
value here instead of simply "ctags". Also, if you use
|:tagbar_ctags_options|, you should include the equivalent --options flag in
the call to ctags.
If something more fundamental isn't working right then try running the
|:messages| command to see if Tagbar printed any error messages that might
......@@ -20,7 +20,7 @@
scriptencoding utf-8
if &cp || exists('g:loaded_tagbar')
if &compatible || exists('g:loaded_tagbar')
......@@ -85,8 +85,8 @@ endfunction
call s:setup_options()
if !exists('g:tagbar_iconchars')
if has('multi_byte') && has('unix') && &encoding == 'utf-8' &&
\ (empty(&termencoding) || &termencoding == 'utf-8')
if has('multi_byte') && has('unix') && &encoding ==# 'utf-8' &&
\ (empty(&termencoding) || &termencoding ==# 'utf-8')
let g:tagbar_iconchars = ['▶', '▼']
let g:tagbar_iconchars = ['+', '-']
......@@ -116,6 +116,7 @@ function! s:setup_keymaps() abort
\ ['togglesort', 's'],
\ ['togglecaseinsensitive', 'i'],
\ ['toggleautoclose', 'c'],
\ ['togglepause', 't'],
\ ['zoomwin', 'x'],
\ ['close', 'q'],
\ ['help', ['<F1>', '?']],
......@@ -7,7 +7,7 @@
scriptencoding utf-8
if exists("b:current_syntax")
if exists('b:current_syntax')
......@@ -59,6 +59,6 @@ highlight default link TagbarVisibilityPublic TagbarAccessPublic
highlight default link TagbarVisibilityProtected TagbarAccessProtected
highlight default link TagbarVisibilityPrivate TagbarAccessPrivate
let b:current_syntax = "tagbar"
let b:current_syntax = 'tagbar'
" vim: ts=8 sw=4 sts=4 et foldenable foldmethod=marker foldcolumn=1
......@@ -2,12 +2,14 @@ sudo: required
services: docker
- VIM_VERSION="7.4" PYTHON_IMAGE=2.7-stretch TAG=vim_74_py2
- VIM_VERSION="8.0" PYTHON_IMAGE=2.7-stretch TAG=vim_80_py2
- VIM_VERSION="git" PYTHON_IMAGE=2.7-stretch TAG=vim_git_py2
- VIM_VERSION="7.4" PYTHON_IMAGE=3.6-stretch TAG=vim_74_py3
- VIM_VERSION="8.0" PYTHON_IMAGE=3.6-stretch TAG=vim_80_py3
- VIM_VERSION="git" PYTHON_IMAGE=3.6-stretch TAG=vim_git_py3
- VIM_VERSION="7.4" PYTHON_IMAGE=3.6-stretch TAG=vim_74_py36
- VIM_VERSION="8.0" PYTHON_IMAGE=3.6-stretch TAG=vim_80_py36
- VIM_VERSION="8.1" PYTHON_IMAGE=3.6-stretch TAG=vim_81_py36
- VIM_VERSION="git" PYTHON_IMAGE=3.6-stretch TAG=vim_git_py36
- VIM_VERSION="8.1" PYTHON_IMAGE=3.7-stretch TAG=vim_81_py37
- VIM_VERSION="git" PYTHON_IMAGE=3.7-stretch TAG=vim_git_py37
- VIM_VERSION="8.1" PYTHON_IMAGE=3.8-buster TAG=vim_81_py38
- VIM_VERSION="git" PYTHON_IMAGE=3.8-buster TAG=vim_git_py38
- docker build -t ultisnips:${TAG} --build-arg PYTHON_IMAGE=${PYTHON_IMAGE} --build-arg VIM_VERSION=${VIM_VERSION} .
version 3.2 (05-Nov-2019):
- This is the first release done again by @SirVer. And this is also posted
on vim.org again. `¯\_(ツ)_/¯`
- This is the last version to support Python 2.
- Syntax highlighting improvements: a new one for unite & tweaks to others.
- Support for transformations on multiple lines.
- Python interpolation got more powerful, for example tabstops can now be
modified in python interpolation, you can access the last changed
placeholder text and more.
- Support for deoplete.
- Snippet files are no longer watched for changes. This increases
performance, but also means that if you change your snippet files outside
of Vim, UltiSnips will not know about it. You need to run `:call
UltiSnips#RefreshSnippets()` or restart Vim.
- Text objects for selecting snippets in visual mode: iS, aS
version 3.1 (07-Dec-2015):
- This is the last release done by @SirVer. The new maintainer of UltiSnips
is @seletskiy. The repository remains https://github.com/SirVer/ultisnips,
......@@ -5,7 +5,7 @@ FROM ultisnips:${BASE_IMAGE}
RUN curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
ADD docker/docker_vimrc.vim /root/.vimrc
ADD docker/docker_vimrc.vim /root/.vim/vimrc
RUN vim -c 'PlugInstall | qa'
ADD docker/snippets /root/.vim/UltiSnips
......@@ -2,20 +2,25 @@ MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
# Test images as run on CI.
docker build -t ultisnips:$@ --build-arg PYTHON_IMAGE=2.7-stretch --build-arg VIM_VERSION=7.4 .
docker build -t ultisnips:$@ --build-arg PYTHON_IMAGE=2.7-stretch --build-arg VIM_VERSION=8.0 .
docker build -t ultisnips:$@ --build-arg PYTHON_IMAGE=2.7-stretch --build-arg VIM_VERSION=git .
docker build -t ultisnips:$@ --build-arg PYTHON_IMAGE=3.6-stretch --build-arg VIM_VERSION=7.4 .
docker build -t ultisnips:$@ --build-arg PYTHON_IMAGE=3.6-stretch --build-arg VIM_VERSION=8.0 .
docker build -t ultisnips:$@ --build-arg PYTHON_IMAGE=3.6-stretch --build-arg VIM_VERSION=8.1 .
docker build -t ultisnips:$@ --build-arg PYTHON_IMAGE=3.6-stretch --build-arg VIM_VERSION=git .
# 74 and 80 do not build with py37 and py38. The build errors out with "Require native threads".
docker build -t ultisnips:$@ --build-arg PYTHON_IMAGE=3.7-stretch --build-arg VIM_VERSION=8.1 .
docker build -t ultisnips:$@ --build-arg PYTHON_IMAGE=3.7-stretch --build-arg VIM_VERSION=git .
docker build -t ultisnips:$@ --build-arg PYTHON_IMAGE=3.8-buster --build-arg VIM_VERSION=8.1 .
docker build -t ultisnips:$@ --build-arg PYTHON_IMAGE=3.8-buster --build-arg VIM_VERSION=git .
image_repro: image_vim_80_py3
image_repro: image_vim_80_py36
docker build -t ultisnips:repro --build-arg BASE_IMAGE=$< -f Dockerfile.repro .
# A reproduction image that drops you into a naked environment,
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true
black = "*"
mypy = "*"
pylint = "*"
mypy = "*"
python_version = "3.7"
allow_prereleases = true
This diff is collapsed.
[![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)
UltiSnips is the ultimate solution for snippets in Vim. It has tons of features
and is very fast.
UltiSnips is the ultimate solution for snippets in Vim. It has many features,
speed being one of them.
![GIF Demo](https://raw.github.com/SirVer/ultisnips/master/doc/demo.gif)
......@@ -27,15 +26,11 @@ The official home of UltiSnips is at <https://github.com/sirver/ultisnips>.
Please add pull requests and issues there.
UltiSnips was started in Jun 2009 by @SirVer. In Dec 2015, maintenance was
handed over to [@seletskiy](https://github.com/seletskiy).
handed over to [@seletskiy](https://github.com/seletskiy) who ran out of time
in early 2017. Since Jun 2019, @SirVer is maintaining UltiSnips again on a
very constraint time budget. If you can help triaging issues it would be
greatly appreciated.
What can you do with UltiSnips?
1. Advanced snippets:
* [Snippets Aliases](doc/examples/snippets-aliasing/README.md)
* [Dynamic Tabstops/Tabstop Generation](doc/examples/tabstop-generation/README.md)
Quick Start
......@@ -61,6 +56,11 @@ UltiSnips comes with comprehensive
As there are more options and tons of features I suggest you at least skim it.
There are example uses for some power user features here:
* [Snippets Aliases](doc/examples/snippets-aliasing/README.md)
* [Dynamic Tabstops/Tabstop Generation](doc/examples/tabstop-generation/README.md)
" Called after everything else to reclaim keys (Needed for Supertab)
if exists("b:did_after_plugin_ultisnips_after") || !exists("g:_uspy")
if exists("b:did_after_plugin_ultisnips_after")
let b:did_after_plugin_ultisnips_after = 1
if exists("b:did_autoload_ultisnips") || !exists("g:_uspy")
if exists("b:did_autoload_ultisnips")
let b:did_autoload_ultisnips = 1
" 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"
py3 import vim
py3 from UltiSnips import UltiSnips_Manager
function! s:compensate_for_pum() abort
""" The CursorMovedI event is not triggered while the popup-menu is visible,
......@@ -13,7 +13,7 @@ function! s:compensate_for_pum() abort
""" to explicitly check for the presence of the popup menu, and update
""" the vim-state accordingly.
if pumvisible()
exec g:_uspy "UltiSnips_Manager._cursor_moved()"
py3 UltiSnips_Manager._cursor_moved()
......@@ -23,7 +23,7 @@ function! UltiSnips#Edit(bang, ...) abort
let type = ""
exec g:_uspy "vim.command(\"let file = '%s'\" % UltiSnips_Manager._file_to_edit(vim.eval(\"type\"), vim.eval('a:bang')))"
py3 vim.command("let file = '%s'" % UltiSnips_Manager._file_to_edit(vim.eval("type"), vim.eval('a:bang')))
if !len(file)
......@@ -48,7 +48,7 @@ function! UltiSnips#Edit(bang, ...) abort
function! UltiSnips#AddFiletypes(filetypes) abort
exec g:_uspy "UltiSnips_Manager.add_buffer_filetypes('" . a:filetypes . "')"
py3 UltiSnips_Manager.add_buffer_filetypes(vim.eval("a:filetypes"))
return ""
......@@ -69,18 +69,18 @@ function! UltiSnips#FileTypeComplete(arglead, cmdline, cursorpos) abort
function! UltiSnips#ExpandSnippet() abort
exec g:_uspy "UltiSnips_Manager.expand()"
py3 UltiSnips_Manager.expand()
return ""
function! UltiSnips#ExpandSnippetOrJump() abort
call s:compensate_for_pum()
exec g:_uspy "UltiSnips_Manager.expand_or_jump()"
py3 UltiSnips_Manager.expand_or_jump()
return ""
function! UltiSnips#ListSnippets() abort
exec g:_uspy "UltiSnips_Manager.list_snippets()"
py3 UltiSnips_Manager.list_snippets()
return ""
......@@ -90,64 +90,69 @@ function! UltiSnips#SnippetsInCurrentScope(...) abort
if all
let g:current_ulti_dict_info = {}
exec g:_uspy "UltiSnips_Manager.snippets_in_current_scope(" . all . ")"
py3 UltiSnips_Manager.snippets_in_current_scope(int(vim.eval("all")))
return g:current_ulti_dict
function! UltiSnips#SaveLastVisualSelection() range abort
exec g:_uspy "UltiSnips_Manager._save_last_visual_selection()"
py3 UltiSnips_Manager._save_last_visual_selection()
return ""
function! UltiSnips#JumpBackwards() abort
call s:compensate_for_pum()
exec g:_uspy "UltiSnips_Manager.jump_backwards()"
py3 UltiSnips_Manager.jump_backwards()
return ""
function! UltiSnips#JumpForwards() abort
call s:compensate_for_pum()
exec g:_uspy "UltiSnips_Manager.jump_forwards()"
py3 UltiSnips_Manager.jump_forwards()
return ""
function! UltiSnips#AddSnippetWithPriority(trigger, value, description, options, filetype, priority) abort
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 "filetype = vim.eval(\"a:filetype\")"
exec g:_uspy "priority = vim.eval(\"a:priority\")"
exec g:_uspy "UltiSnips_Manager.add_snippet(trigger, value, description, options, filetype, priority)"
py3 trigger = vim.eval("a:trigger")
py3 value = vim.eval("a:value")
py3 description = vim.eval("a:description")
py3 options = vim.eval("a:options")
py3 filetype = vim.eval("a:filetype")
py3 priority = vim.eval("a:priority")
py3 UltiSnips_Manager.add_snippet(trigger, value, description, options, filetype, priority)
return ""
function! UltiSnips#Anon(value, ...) abort
" Takes the same arguments as SnippetManager.expand_anon:
" (value, trigger="", description="", options="")
exec g:_uspy "args = vim.eval(\"a:000\")"
exec g:_uspy "value = vim.eval(\"a:value\")"
exec g:_uspy "UltiSnips_Manager.expand_anon(value, *args)"
py3 args = vim.eval("a:000")
py3 value = vim.eval("a:value")
py3 UltiSnips_Manager.expand_anon(value, *args)
return ""
function! UltiSnips#CursorMoved() abort
exec g:_uspy "UltiSnips_Manager._cursor_moved()"
py3 UltiSnips_Manager._cursor_moved()
function! UltiSnips#LeavingBuffer() abort
exec g:_uspy "UltiSnips_Manager._leaving_buffer()"
let from_preview = getwinvar(winnr('#'), '&previewwindow')
let to_preview = getwinvar(winnr(), '&previewwindow')
if !(from_preview || to_preview)
py3 UltiSnips_Manager._leaving_buffer()
function! UltiSnips#LeavingInsertMode() abort
exec g:_uspy "UltiSnips_Manager._leaving_insert_mode()"
py3 UltiSnips_Manager._leaving_insert_mode()
function! UltiSnips#TrackChange() abort
exec g:_uspy "UltiSnips_Manager._track_change()"
py3 UltiSnips_Manager._track_change()
function! UltiSnips#RefreshSnippets() abort
exec g:_uspy "UltiSnips_Manager._refresh_snippets()"
py3 UltiSnips_Manager._refresh_snippets()
" }}}
if exists("b:did_autoload_ultisnips_map_keys") || !exists("g:_uspy")
if exists("b:did_autoload_ultisnips_map_keys")
let b:did_autoload_ultisnips_map_keys = 1
......@@ -10,7 +10,7 @@ if !exists("g:UltiSnipsExpandTrigger")
" The trigger used to display all triggers that could possible
" match in the current position.
" match in the current position. Use empty to disable.
if !exists("g:UltiSnipsListSnippets")
let g:UltiSnipsListSnippets = "<c-tab>"
......@@ -62,11 +62,13 @@ function! UltiSnips#map_keys#MapKeys() abort
exec "snoremap <silent> " . g:UltiSnipsExpandTrigger . " <Esc>:call UltiSnips#ExpandSnippet()<cr>"
exec "xnoremap <silent> " . g:UltiSnipsExpandTrigger. " :call UltiSnips#SaveLastVisualSelection()<cr>gvs"
exec "inoremap <silent> " . g:UltiSnipsListSnippets . " <C-R>=UltiSnips#ListSnippets()<cr>"
exec "snoremap <silent> " . g:UltiSnipsListSnippets . " <Esc>:call UltiSnips#ListSnippets()<cr>"
if len(g:UltiSnipsListSnippets) > 0
exec "inoremap <silent> " . g:UltiSnipsListSnippets . " <C-R>=UltiSnips#ListSnippets()<cr>"
exec "snoremap <silent> " . g:UltiSnipsListSnippets . " <Esc>:call UltiSnips#ListSnippets()<cr>"
snoremap <silent> <BS> <c-g>c
snoremap <silent> <DEL> <c-g>c
snoremap <silent> <c-h> <c-g>c
snoremap <silent> <BS> <c-g>"_c
snoremap <silent> <DEL> <c-g>"_c
snoremap <silent> <c-h> <c-g>"_c
snoremap <c-r> <c-g>"_c<c-r>
......@@ -18,7 +18,8 @@ function! s:source.gather_candidates(context) abort
let description = get(snippets, trigger)
call add(suggestions, {
\ 'word' : trigger,
\ 'menu' : self.mark . ' '. description
\ 'menu' : self.mark . ' '. description,
\ 'kind' : 'snippet'
\ })
return suggestions
......@@ -67,6 +67,7 @@ function! s:unite_source.gather_candidates(args, context) abort
let curr_val = copy(default_val)
let curr_val['word'] = printf('%-*s', max_len, snip[0]) . " " . snip[1]
let curr_val['trigger'] = snip[0]
let curr_val['kind'] = 'snippet'
call add(canditates, curr_val)
return canditates
......@@ -29,6 +29,7 @@ UltiSnips *snippet* *snippets* *UltiSnips*
4.1.2 Basic syntax |UltiSnips-basic-syntax|
4.1.3 Snippet Options |UltiSnips-snippet-options|
4.1.4 Character Escaping |UltiSnips-character-escaping|
4.1.5 Snippets text-objects |UltiSnips-snippet-text-objects|
4.2 Plaintext Snippets |UltiSnips-plaintext-snippets|
4.3 Visual Placeholder |UltiSnips-visual-placeholder|
4.4 Interpolation |UltiSnips-interpolation|
......@@ -57,7 +58,7 @@ UltiSnips *snippet* *snippets* *UltiSnips*
This plugin only works if 'compatible' is not set.
{Vi does not have any of these features}
{only available when |+python| or |+python3| have been enabled at compile time}
{only available when |+python3| has been enabled at compile time}
......@@ -88,22 +89,14 @@ http://vimcasts.org/episodes/ultisnips-visual-placeholder/
1.1 Requirements *UltiSnips-requirements*
This plugin works with Vim version 7.4 or later. It only works if the
'compatible' setting is not set.
This plugin works with Vim version 7.4 or later with Python 3 support enabled.
It only works if the 'compatible' setting is not set.
This plugin is tested against Python 2.7 and 3.6 in Vim 7.4 and 8. All other
combinations 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.
The Python 3.x interface must be available. In other words, Vim
must be compiled with the |+python3| feature.
The following commands show how to test if you have python compiled in Vim.
They print '1' if the python version is compiled in, '0' if not.
Test if Vim is compiled with python version 2.x: >
:echo has("python")
The python version Vim is linked against can be found with: >
:py import sys; print(sys.version)
Test if Vim is compiled with python version 3.x: >
:echo has("python3")
The python version Vim is linked against can be found with: >
......@@ -112,17 +105,6 @@ The python version Vim is linked against can be found with: >
Note that Vim is maybe not using your system-wide installed python version, so
make sure to check the Python version inside of Vim.
UltiSnips attempts to auto-detect which python version is compiled into Vim.
Unfortunately, in some versions of Vim this detection does not work.
In that case you have to explicitly tell UltiSnips which version to use using
the 'UltiSnipsUsePythonVersion' global variable.
To use python version 2.x: >
let g:UltiSnipsUsePythonVersion = 2
To use python version 3.x: >
let g:UltiSnipsUsePythonVersion = 3
1.2 Acknowledgments *UltiSnips-acknowledgments*
......@@ -183,7 +165,7 @@ found here: https://github.com/honza/vim-snippets
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
UltiSnipsEdit! all public snippet files that exist 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.
......@@ -198,34 +180,13 @@ g:UltiSnipsEditSplit Defines how the edit window is opened. Possible
|context| Splits the window vertically or
horizontally depending on context.
Defines the directory where private snippet
definition files are placed in in.
As example, if the current 'filetype' is "cpp" the
:UltiSnipsEdit command looks for a file to edit in
this order:
1. An existing
g:UltiSnipsSnippetsDir."/cpp.snippets" file
2. Find a matching "cpp" snippets file in
3. Create a new
g:UltiSnipsSnippetsDir."/cpp.snippets" file
Note that directories named "snippets" are
reserved for snipMate snippets and cannot be used.
Also, this setting does not affect where snippets
are searched for, so it is possible to change this
to opening files that are then not found by
UltiSnips. See |UltiSnips-how-snippets-are-loaded|
for details.
Configures the directories that are searched for
snippets. Do not mix up this variable with the
previous one. See |UltiSnips-how-snippets-are-loaded|.
An array of relative directory names OR an array
with a single absolute path. Defaults to [
"UltiSnips" ]. No entry in this list must be
"snippets". Please read
|UltiSnips-how-snippets-are-loaded| for details.
......@@ -734,6 +695,14 @@ meaning. If you want to insert one of these characters literally, escape them
with a backslash, '\'.
4.1.5 Snippets text-objects *UltiSnips-snippet-text-objects*
Inside a snippets buffer, the following text objects are available:
iS inside snippet
aS around snippet (including empty lines that follow)
4.2 Plaintext Snippets *UltiSnips-plaintext-snippets*
......@@ -5,22 +5,19 @@ set -o verbose
cd /src/vim
if [[ $PYTHON_VERSION =~ ^2\. ]]; then
export CFLAGS="$(python-config --cflags)"
echo $CFLAGS
./configure \
--disable-gpm \
--disable-nls \
--disable-sysmouse \
--disable-gpm \
--enable-gui=no \
--enable-multibyte \
--enable-python3interp \
--with-features=huge \
--with-tlib=ncurses \
--without-x \
$PYTHON_BUILD_CONFIG || cat $(find . -name 'config.log')
|| cat $(find . -name 'config.log')
make install
call plug#begin('~/.vim/plugged')
call plug#begin('~/.vim_plugged')
Plug '/src/UltiSnips'
Plug 'honza/vim-snippets'
......@@ -52,5 +52,43 @@ let b:undo_ftplugin = "
" snippet text object:
" iS: inside snippet
" aS: around snippet (including empty lines that follow)
fun! s:UltiSnippetTextObj(inner) abort
normal! 0
let start = search('^snippet', 'nbcW')
let end = search('^endsnippet', 'ncW')
let prev = search('^endsnippet', 'nbW')