From c4fbfe8aa877c8b595bc515ec241217c3744a589 Mon Sep 17 00:00:00 2001 From: amix Date: Sat, 1 Apr 2017 14:29:02 +0200 Subject: [PATCH] Fixed https://github.com/amix/vimrc/issues/246 --- README.md | 10 +- sources_non_forked/ack.vim/.gitignore | 1 + sources_non_forked/ack.vim/LICENSE | 89 +++++ sources_non_forked/ack.vim/README.md | 161 +++++++++ sources_non_forked/ack.vim/autoload/ack.vim | 246 ++++++++++++++ sources_non_forked/ack.vim/doc/ack.txt | 315 ++++++++++++++++++ .../ack.vim/doc/ack_quick_help.txt | 15 + sources_non_forked/ack.vim/ftplugin/qf.vim | 9 + sources_non_forked/ack.vim/plugin/ack.vim | 83 +++++ sources_non_forked/ag.vim/.gitignore | 2 - sources_non_forked/ag.vim/README.md | 81 ----- sources_non_forked/ag.vim/Rakefile | 3 - sources_non_forked/ag.vim/autoload/ag.vim | 234 ------------- sources_non_forked/ag.vim/doc/ag.txt | 174 ---------- sources_non_forked/ag.vim/plugin/ag.vim | 11 - .../vim-snipmate/autoload/snipMate.vim | 8 +- .../vim-snipmate/plugin/snipMate.vim | 3 +- update_plugins.py | 2 +- vimrcs/basic.vim | 63 +--- vimrcs/extended.vim | 60 ++++ 20 files changed, 993 insertions(+), 577 deletions(-) create mode 100644 sources_non_forked/ack.vim/.gitignore create mode 100644 sources_non_forked/ack.vim/LICENSE create mode 100644 sources_non_forked/ack.vim/README.md create mode 100644 sources_non_forked/ack.vim/autoload/ack.vim create mode 100644 sources_non_forked/ack.vim/doc/ack.txt create mode 100644 sources_non_forked/ack.vim/doc/ack_quick_help.txt create mode 100644 sources_non_forked/ack.vim/ftplugin/qf.vim create mode 100644 sources_non_forked/ack.vim/plugin/ack.vim delete mode 100644 sources_non_forked/ag.vim/.gitignore delete mode 100644 sources_non_forked/ag.vim/README.md delete mode 100644 sources_non_forked/ag.vim/Rakefile delete mode 100644 sources_non_forked/ag.vim/autoload/ag.vim delete mode 100644 sources_non_forked/ag.vim/doc/ag.txt delete mode 100644 sources_non_forked/ag.vim/plugin/ag.vim diff --git a/README.md b/README.md index 638a5f4e..52efaaaa 100644 --- a/README.md +++ b/README.md @@ -66,7 +66,7 @@ Distraction free mode using [goyo.vim](https://github.com/junegunn/goyo.vim) and I recommend reading the docs of these plugins to understand them better. Each plugin provides a much better Vim experience! -* [ag.vim](https://github.com/rking/ag.vim): Vim plugin for `the_silver_searcher` (ag) -- a wicked fast grep +* [ack.vim](https://github.com/mileszs/ack.vim): Vim plugin for `the_silver_searcher` (ag) or ack -- a wicked fast grep * [bufexplorer.zip](https://github.com/vim-scripts/bufexplorer.zip): Quickly and easily switch between buffers. This plugin can be opened with `` * [ctrlp.vim](https://github.com/ctrlpvim/ctrlp.vim): Fuzzy file, buffer, mru and tag finder. It's mapped to `` * [goyo.vim](https://github.com/junegunn/goyo.vim) and [vim-zenroom2](https://github.com/amix/vim-zenroom2): @@ -195,9 +195,9 @@ Switch [CWD](http://vim.wikia.com/wiki/Set_working_directory_to_the_current_file map cd :cd %:p:h:pwd -Open `ag.vim` for fast search: +Open `ack.vim` for fast search: - map g :Ag + map g :Ack Quickly open a buffer for scripbble: @@ -215,7 +215,7 @@ Visual mode pressing `*` or `#` searches for the current selection: vnoremap * :call VisualSelection('f') vnoremap # :call VisualSelection('b') -When you press gv you `ag.vim` after the selected text: +When you press gv you `Ack.vim` after the selected text: vnoremap gv :call VisualSelection('gv', '') @@ -286,7 +286,7 @@ Shortcuts using `` instead of special characters: ### Cope Query `:help cope` if you are unsure what cope is. It's super useful! -When you search with `ag.vim`, display your results in cope by doing: +When you search with `Ack.vim`, display your results in cope by doing: `cc` To go to the next search result do: diff --git a/sources_non_forked/ack.vim/.gitignore b/sources_non_forked/ack.vim/.gitignore new file mode 100644 index 00000000..6e92f57d --- /dev/null +++ b/sources_non_forked/ack.vim/.gitignore @@ -0,0 +1 @@ +tags diff --git a/sources_non_forked/ack.vim/LICENSE b/sources_non_forked/ack.vim/LICENSE new file mode 100644 index 00000000..056ea36c --- /dev/null +++ b/sources_non_forked/ack.vim/LICENSE @@ -0,0 +1,89 @@ +ack.vim is distributed under the same license terms as Vim itself, which you +can find in full with `:help license` within Vim, or copied in full herein. + +Copyright (c) 2007-2015 Antoine Imbert + and contributors. + +Maintainers may be contacted via GitHub Issues at: + + https://github.com/mileszs/ack.vim/issues + + +VIM LICENSE + +I) There are no restrictions on distributing unmodified copies of Vim except + that they must include this license text. You can also distribute + unmodified parts of Vim, likewise unrestricted except that they must + include this license text. You are also allowed to include executables + that you made from the unmodified Vim sources, plus your own usage + examples and Vim scripts. + +II) It is allowed to distribute a modified (or extended) version of Vim, + including executables and/or source code, when the following four + conditions are met: + 1) This license text must be included unmodified. + 2) The modified Vim must be distributed in one of the following five ways: + a) If you make changes to Vim yourself, you must clearly describe in + the distribution how to contact you. When the maintainer asks you + (in any way) for a copy of the modified Vim you distributed, you + must make your changes, including source code, available to the + maintainer without fee. The maintainer reserves the right to + include your changes in the official version of Vim. What the + maintainer will do with your changes and under what license they + will be distributed is negotiable. If there has been no negotiation + then this license, or a later version, also applies to your changes. + The current maintainer is Bram Moolenaar . If this + changes it will be announced in appropriate places (most likely + vim.sf.net, www.vim.org and/or comp.editors). When it is completely + impossible to contact the maintainer, the obligation to send him + your changes ceases. Once the maintainer has confirmed that he has + received your changes they will not have to be sent again. + b) If you have received a modified Vim that was distributed as + mentioned under a) you are allowed to further distribute it + unmodified, as mentioned at I). If you make additional changes the + text under a) applies to those changes. + c) Provide all the changes, including source code, with every copy of + the modified Vim you distribute. This may be done in the form of a + context diff. You can choose what license to use for new code you + add. The changes and their license must not restrict others from + making their own changes to the official version of Vim. + d) When you have a modified Vim which includes changes as mentioned + under c), you can distribute it without the source code for the + changes if the following three conditions are met: + - The license that applies to the changes permits you to distribute + the changes to the Vim maintainer without fee or restriction, and + permits the Vim maintainer to include the changes in the official + version of Vim without fee or restriction. + - You keep the changes for at least three years after last + distributing the corresponding modified Vim. When the maintainer + or someone who you distributed the modified Vim to asks you (in + any way) for the changes within this period, you must make them + available to him. + - You clearly describe in the distribution how to contact you. This + contact information must remain valid for at least three years + after last distributing the corresponding modified Vim, or as long + as possible. + e) When the GNU General Public License (GPL) applies to the changes, + you can distribute the modified Vim under the GNU GPL version 2 or + any later version. + 3) A message must be added, at least in the output of the ":version" + command and in the intro screen, such that the user of the modified Vim + is able to see that it was modified. When distributing as mentioned + under 2)e) adding the message is only required for as far as this does + not conflict with the license used for the changes. + 4) The contact information as required under 2)a) and 2)d) must not be + removed or changed, except that the person himself can make + corrections. + +III) If you distribute a modified version of Vim, you are encouraged to use + the Vim license for your changes and make them available to the + maintainer, including the source code. The preferred way to do this is + by e-mail or by uploading the files to a server and e-mailing the URL. + If the number of changes is small (e.g., a modified Makefile) e-mailing a + context diff will do. The e-mail address to be used is + + +IV) It is not allowed to remove this license from the distribution of the Vim + sources, parts of it or from a modified version. You may use this + license for previous Vim releases instead of the license that they came + with, at your option. diff --git a/sources_non_forked/ack.vim/README.md b/sources_non_forked/ack.vim/README.md new file mode 100644 index 00000000..af8f522d --- /dev/null +++ b/sources_non_forked/ack.vim/README.md @@ -0,0 +1,161 @@ +# ack.vim + +Run your favorite search tool from Vim, with an enhanced results list. + +This plugin was designed as a Vim frontend for the Perl module [App::Ack]. Ack +can be used as a replacement for 99% of the uses of _grep_. The plugin allows +you to run ack from Vim, and shows the results in a split window. + +But here's a little secret for the Vim-seasoned: it's just a light wrapper for +Vim's [grepprg] and the [quickfix] window for match results. This makes it easy +to integrate with your own Vim configuration and use existing knowledge of core +features. It also means the plugin is flexible to use with other search tools. + +[App::Ack]: http://search.cpan.org/~petdance/ack/ack +[grepprg]: http://vimdoc.sourceforge.net/htmldoc/options.html#'grepprg' +[quickfix]: http://vimdoc.sourceforge.net/htmldoc/quickfix.html#quickfix + +## Installation + +### Ack + +You will need ack (>= 2.0), of course. To install it follow the +[manual](http://beyondgrep.com/install/). + +### The Plugin + +It is recommended to use one of the popular plugin managers for Vim. There are +many and you probably already have a preferred one, but a few examples for your +copy-and-paste convenience: + +#### Pathogen + + $ git clone https://github.com/mileszs/ack.vim.git ~/.vim/bundle/ack.vim + +#### Vundle + +```vim +Plugin 'mileszs/ack.vim' +``` + +#### NeoBundle + +```vim +NeoBundle 'mileszs/ack.vim' +``` + +#### Manual (not recommended) + +[Download][releases] the plugin and extract it in `~/.vim/` (or +`%PROGRAMFILES%/Vim/vimfiles` on Windows). + +[zipball]: https://github.com/mileszs/ack.vim/archive/master.zip + +## Usage + + :Ack [options] {pattern} [{directories}] + +Search recursively in `{directories}` (which defaults to the current directory) +for the `{pattern}`. + +Files containing the search term will be listed in the quickfix window, along +with the line number of the occurrence, once for each occurrence. `` on +a line in this window will open the file, and place the cursor on the matching +line. + +Just like where you use `:grep`, `:grepadd`, `:lgrep`, and :`lgrepadd`, you can +use `:Ack`, `:AckAdd`, `:LAck`, and `:LAckAdd` respectively. (See `:help Ack` +after installing, or [`doc/ack.txt`][doc] in the repo, for more information.) + +For more ack help see [ack documentation](http://beyondgrep.com/documentation/). + +[doc]: https://github.com/mileszs/ack.vim/blob/master/doc/ack.txt + +### Keyboard Shortcuts + +The quickfix results window is augmented with these convenience mappings: + + ? a quick summary of these keys, repeat to close + o to open (same as Enter) + O to open and close the quickfix window + go to preview file, open but maintain focus on ack.vim results + t to open in new tab + T to open in new tab without moving to it + h to open in horizontal split + H to open in horizontal split, keeping focus on the results + v to open in vertical split + gv to open in vertical split, keeping focus on the results + q to close the quickfix window + +### Gotchas + +Some characters have special meaning, and need to be escaped in your search +pattern. For instance, `#`. You need to escape it with `:Ack '\\\#define +foo'` to search for '#define foo'. See [issue #5]. + +[issue #5]: https://github.com/mileszs/ack.vim/issues/5 + +## Possibly FAQ + +#### Can I use `ag` ([The Silver Searcher]) with this? + +Absolutely, and probably other tools if their output is similar or you can +write a pattern match for it--just set `g:ackprg`. If you like, you can fall +back to Ack in case you use your vimrc on a system without Ag available: + +```vim +if executable('ag') + let g:ackprg = 'ag --vimgrep' +endif +``` + +Since Ack is quite portable you might check a copy of it into your dotfiles +repository in `~/bin` so you'll nearly always have it available. + +#### What's the difference from ag.vim? + +Well... not a lot really. + +Present maintainer, yours truly, [kind of wishes they never forked][sadface], +contributes to both, and wouldn't mind seeing them merged again. ag.vim got a +nice code clean-up (which ack.vim is now hopefully getting), and ack.vim picked +up a few features that haven't made their way to ag.vim, like `:AckWindow`, +optional background search execution with [vim-dispatch], and auto-previewing. + +#### I don't want to jump to the first result automatically. #### + +Use `:Ack!`, with bang. If you want this behavior most of the time, you might +like an abbreviation or mapping in your personal config, something like these: + +```vim +cnoreabbrev Ack Ack! +nnoremap a :Ack! +``` + +Most of the `:[L]Ack*` commands support this. Note that this behavior follows +the convention of Vim's built-in `:grep` and `:make` commands. + +[The Silver Searcher]: https://github.com/ggreer/the_silver_searcher +[sadface]: https://github.com/mileszs/ack.vim/commit/d97090fb502d40229e6976dfec0e06636ba227d5#commitcomment-5771145 + +## Changelog + +Please see [the Github releases page][releases]. + +## Credits + +This plugin is derived from Antoine Imbert's blog post [Ack and Vim +Integration][] (in particular, the function in the update to the post). [Miles +Sterrett][mileszs] packaged it up as a plugin and documented it in Vim's help +format, and since then [many contributors][contributors] have submitted +enhancements and fixes. + +And of course, where would we be without [Ack]. And, you know, Vim. + +[Ack and Vim Integration]: http://blog.ant0ine.com/typepad/2007/03/ack-and-vim-integration.html +[mileszs]: https://github.com/mileszs +[contributors]: https://github.com/mileszs/ack.vim/graphs/contributors +[Ack]: http://beyondgrep.com/ + +[vim-dispatch]: https://github.com/tpope/vim-dispatch +[releases]: https://github.com/mileszs/ack.vim/releases diff --git a/sources_non_forked/ack.vim/autoload/ack.vim b/sources_non_forked/ack.vim/autoload/ack.vim new file mode 100644 index 00000000..dbf84572 --- /dev/null +++ b/sources_non_forked/ack.vim/autoload/ack.vim @@ -0,0 +1,246 @@ +if exists('g:autoloaded_ack') || &cp + finish +endif + +if exists('g:ack_use_dispatch') + if g:ack_use_dispatch && !exists(':Dispatch') + call s:Warn('Dispatch not loaded! Falling back to g:ack_use_dispatch = 0.') + let g:ack_use_dispatch = 0 + endif +else + let g:ack_use_dispatch = 0 +endif + +"----------------------------------------------------------------------------- +" Public API +"----------------------------------------------------------------------------- + +function! ack#Ack(cmd, args) "{{{ + call s:Init(a:cmd) + redraw + + " Local values that we'll temporarily set as options when searching + let l:grepprg = g:ackprg + let l:grepformat = '%f:%l:%c:%m,%f:%l:%m' " Include column number + + " Strip some options that are meaningless for path search and set match + " format accordingly. + if s:SearchingFilepaths() + let l:grepprg = substitute(l:grepprg, '-H\|--column', '', 'g') + let l:grepformat = '%f' + endif + + " Check user policy for blank searches + if empty(a:args) + if !g:ack_use_cword_for_empty_search + echo "No regular expression found." + return + endif + endif + + " If no pattern is provided, search for the word under the cursor + let l:grepargs = empty(a:args) ? expand("") : a:args . join(a:000, ' ') + + "Bypass search if cursor is on blank string + if l:grepargs == "" + echo "No regular expression found." + return + endif + + " NOTE: we escape special chars, but not everything using shellescape to + " allow for passing arguments etc + let l:escaped_args = escape(l:grepargs, '|#%') + + echo "Searching ..." + + if g:ack_use_dispatch + call s:SearchWithDispatch(l:grepprg, l:escaped_args, l:grepformat) + else + call s:SearchWithGrep(a:cmd, l:grepprg, l:escaped_args, l:grepformat) + endif + + " Dispatch has no callback mechanism currently, we just have to display the + " list window early and wait for it to populate :-/ + call ack#ShowResults() + call s:Highlight(l:grepargs) +endfunction "}}} + +function! ack#AckFromSearch(cmd, args) "{{{ + let search = getreg('/') + " translate vim regular expression to perl regular expression. + let search = substitute(search, '\(\\<\|\\>\)', '\\b', 'g') + call ack#Ack(a:cmd, '"' . search . '" ' . a:args) +endfunction "}}} + +function! ack#AckHelp(cmd, args) "{{{ + let args = a:args . ' ' . s:GetDocLocations() + call ack#Ack(a:cmd, args) +endfunction "}}} + +function! ack#AckWindow(cmd, args) "{{{ + let files = tabpagebuflist() + + " remove duplicated filenames (files appearing in more than one window) + let files = filter(copy(sort(files)), 'index(files,v:val,v:key+1)==-1') + call map(files, "bufname(v:val)") + + " remove unnamed buffers as quickfix (empty strings before shellescape) + call filter(files, 'v:val != ""') + + " expand to full path (avoid problems with cd/lcd in au QuickFixCmdPre) + let files = map(files, "shellescape(fnamemodify(v:val, ':p'))") + let args = a:args . ' ' . join(files) + + call ack#Ack(a:cmd, args) +endfunction "}}} + +function! ack#ShowResults() "{{{ + let l:handler = s:UsingLocList() ? g:ack_lhandler : g:ack_qhandler + execute l:handler + call s:ApplyMappings() + redraw! +endfunction "}}} + +"----------------------------------------------------------------------------- +" Private API +"----------------------------------------------------------------------------- + +function! s:ApplyMappings() "{{{ + if !s:UsingListMappings() || &filetype != 'qf' + return + endif + + let l:wintype = s:UsingLocList() ? 'l' : 'c' + let l:closemap = ':' . l:wintype . 'close' + let g:ack_mappings.q = l:closemap + + nnoremap ? :call QuickHelp() + + if g:ack_autoclose + " We just map the 'go' and 'gv' mappings to close on autoclose, wtf? + for key_map in items(g:ack_mappings) + execute printf("nnoremap %s %s", get(key_map, 0), get(key_map, 1) . l:closemap) + endfor + + execute "nnoremap " . l:closemap + else + for key_map in items(g:ack_mappings) + execute printf("nnoremap %s %s", get(key_map, 0), get(key_map, 1)) + endfor + endif + + if exists("g:ackpreview") " if auto preview in on, remap j and k keys + nnoremap j j + nnoremap k k + nmap j + nmap k + endif +endfunction "}}} + +function! s:GetDocLocations() "{{{ + let dp = '' + for p in split(&rtp, ',') + let p = p . '/doc/' + if isdirectory(p) + let dp = p . '*.txt ' . dp + endif + endfor + + return dp +endfunction "}}} + +function! s:Highlight(args) "{{{ + if !g:ackhighlight + return + endif + + let @/ = matchstr(a:args, "\\v(-)\@", "n") +endfunction "}}} + +" Initialize state for an :Ack* or :LAck* search +function! s:Init(cmd) "{{{ + let s:searching_filepaths = (a:cmd =~# '-g$') ? 1 : 0 + let s:using_loclist = (a:cmd =~# '^l') ? 1 : 0 + + if g:ack_use_dispatch && s:using_loclist + call s:Warn('Dispatch does not support location lists! Proceeding with quickfix...') + let s:using_loclist = 0 + endif +endfunction "}}} + +function! s:QuickHelp() "{{{ + execute 'edit' globpath(&rtp, 'doc/ack_quick_help.txt') + + silent normal gg + setlocal buftype=nofile bufhidden=hide nobuflisted + setlocal nomodifiable noswapfile + setlocal filetype=help + setlocal nonumber norelativenumber nowrap + setlocal foldmethod=diff foldlevel=20 + + nnoremap ? :q!:call ack#ShowResults() +endfunction "}}} + +function! s:SearchWithDispatch(grepprg, grepargs, grepformat) "{{{ + let l:makeprg_bak = &l:makeprg + let l:errorformat_bak = &l:errorformat + + " We don't execute a :grep command for Dispatch, so add -g here instead + if s:SearchingFilepaths() + let l:grepprg = a:grepprg . ' -g' + else + let l:grepprg = a:grepprg + endif + + try + let &l:makeprg = l:grepprg . ' ' . a:grepargs + let &l:errorformat = a:grepformat + + Make + finally + let &l:makeprg = l:makeprg_bak + let &l:errorformat = l:errorformat_bak + endtry +endfunction "}}} + +function! s:SearchWithGrep(grepcmd, grepprg, grepargs, grepformat) "{{{ + let l:grepprg_bak = &l:grepprg + let l:grepformat_bak = &grepformat + + try + let &l:grepprg = a:grepprg + let &grepformat = a:grepformat + + silent execute a:grepcmd a:grepargs + finally + let &l:grepprg = l:grepprg_bak + let &grepformat = l:grepformat_bak + endtry +endfunction "}}} + +" Are we finding matching files, not lines? (the -g option -- :AckFile) +function! s:SearchingFilepaths() "{{{ + return get(s:, 'searching_filepaths', 0) +endfunction "}}} + +" Predicate for whether mappings are enabled for list type of current search. +function! s:UsingListMappings() "{{{ + if s:UsingLocList() + return g:ack_apply_lmappings + else + return g:ack_apply_qmappings + endif +endfunction "}}} + +" Were we invoked with a :LAck command? +function! s:UsingLocList() "{{{ + return get(s:, 'using_loclist', 0) +endfunction "}}} + +function! s:Warn(msg) "{{{ + echohl WarningMsg | echomsg 'Ack: ' . a:msg | echohl None +endf "}}} + +let g:autoloaded_ack = 1 +" vim:set et sw=2 ts=2 tw=78 fdm=marker diff --git a/sources_non_forked/ack.vim/doc/ack.txt b/sources_non_forked/ack.vim/doc/ack.txt new file mode 100644 index 00000000..22e884bc --- /dev/null +++ b/sources_non_forked/ack.vim/doc/ack.txt @@ -0,0 +1,315 @@ +*ack.txt* Plugin that integrates ack with Vim + +============================================================================== +Author: Antoine Imbert *ack-author* +License: Same terms as Vim itself (see |license|) + +This plugin is only available if 'compatible' is not set. + +{Vi does not have any of this} + +============================================================================== +INTRODUCTION *ack* + +This plugin is a front for the Perl module App::Ack. Ack can be used as a +replacement for grep. This plugin will allow you to run ack from vim, and +shows the results in a split window. + +:Ack[!] [options] {pattern} [{directory}] *:Ack* + + Search recursively in {directory} (which defaults to the current + directory) for the {pattern}. Behaves just like the |:grep| command, but + will open the |Quickfix| window for you. If [!] is not given the first + occurrence is jumped to. + +:AckAdd [options] {pattern} [{directory}] *:AckAdd* + + Just like |:Ack|, but instead of making a new list, the matches are + appended to the current |quickfix| list. + +:AckFromSearch [{directory}] *:AckFromSearch* + + Just like |:Ack| but the pattern is from previous search. + +:LAck [options] {pattern} [{directory}] *:LAck* + + Just like |:Ack| but instead of the |quickfix| list, matches are placed in + the current |location-list|. + +:LAckAdd [options] {pattern} [{directory}] *:LAckAdd* + + Just like |:AckAdd| but instead of the |quickfix| list, matches are added + to the current |location-list| + +:AckFile [options] {pattern} [{directory}] *:AckFile* + + Search recursively in {directory} (which defaults to the current + directory) for filenames matching the {pattern}. Behaves just like the + |:grep| command, but will open the |Quickfix| window for you. + +:AckHelp[!] [options] {pattern} *:AckHelp* + + Search vim documentation files for the {pattern}. Behaves just like the + |:Ack| command, but searches only vim documentation .txt files + +:LAckHelp [options] {pattern} *:LAckHelp* + + Just like |:AckHelp| but instead of the |quickfix| list, matches are placed + in the current |location-list|. + +:AckWindow[!] [options] {pattern} *:AckWindow* + + Search all buffers visible in the screen (current tab page only) files for + the {pattern}. + +:LAckWindow [options] {pattern} *:LAckWindow* + + Just like |:AckWindow| but instead of the |quickfix| list, matches are + placed in the current |location-list|. + +Files containing the search term will be listed in the split window, along +with the line number of the occurrence, once for each occurrence. on +a line in this window will open the file, and place the cursor on the matching +line. + +Note that if you are using Dispatch.vim with |g:ack_use_dispatch|, location +lists are not supported, because Dispatch does not support them at this time. +`:LAck` versions of commands above will give a warning and proceed to use the +quickfix list instead. + +See http://beyondgrep.com/ for more information on searching with ack. + + +============================================================================== +CONFIGURATION *ack-configuration* + + *g:ackprg* +g:ackprg +Default for ubuntu: "ack-grep" +Default for other systems: "ack" + +Use this option to specify the search command and its default arguments. + +Example: +> + let g:ackprg = "ag --vimgrep" +< + *g:ack_default_options* +g:ack_default_options +Default: " -s -H --nocolor --nogroup --column" + +Use this option to specify the default arguments given to `ack`. This is only +used if |g:ackprg| has not been customized from the default--if you are using +a custom search program instead of Ack, set your preferred options in +|g:ackprg|. + +NOTE: This option may be deprecated in the future. ~ + +Example: +> + let g:ack_default_options = + \ " -s -H --nocolor --nogroup --column --smart-case --follow" +< + *g:ack_apply_qmappings* +g:ack_apply_qmappings +Default: 1 + +This option enables mappings on the |quickfix| window. + + *g:ack_apply_lmappings* +g:ack_apply_lmappings +Default: 1 + +This option enables mappings on |location-list| windows. + + *g:ack_mappings* +g:ack_mappings +Default: { + \ "t": "T", + \ "T": "TgTj", + \ "o": "", + \ "O": ":ccl", + \ "go": "j", + \ "h": "K", + \ "H": "Kb", + \ "v": "HbJt", + \ "gv": "HbJ" } + +This option list all maps create on quickfix/Location list window. + +Example, if you want to open the result in the middle of the screen: +> + let g:ack_mappings = { "o": "zz" } +< + *g:ack_qhandler* +g:ack_qhandler +Default: "botright copen" + +Command to open the quickview window. + +If you want to open a quickview window with 30 lines you can do: +> + let g:ack_qhandler = "botright copen 30" +< + *g:ack_lhandler* +g:ack_lhandler +Default: "botright lopen" + +Command to open the Location list window. + +If you want to open a Location list window with 30 lines you can do: +> + let g:ack_lhandler = "botright lopen 30" +< + *g:ackhighlight* +g:ackhighlight +Default: 0 + +Use this option to highlight the searched term. + +Example: +> + let g:ackhighlight = 1 +< + *g:ack_autoclose* +g:ack_autoclose +Default: 0 + +Use this option to specify whether to close the quickfix window after +using any of the shortcuts. + +Example: +> + let g:ack_autoclose = 1 +< + *g:ack_autofold_results* +g:ack_autofold_results +Default: 0 + +Use this option to fold the results in quickfix by file name. Only the current +fold will be open by default and while you press 'j' and 'k' to move between the +results if you hit other fold the last one will be closed and the current will +be open. + +Example: +> + let g:ack_autofold_results = 1 +< + *g:ackpreview* +g:ackpreview +Default: 0 + +Use this option to automagically open the file with 'j' or 'k'. + +Example: +> + let g:ackpreview = 1 +< + *g:ack_use_dispatch* +g:ack_use_dispatch +Default: 0 + +Use this option to use vim-dispatch to run searches in the background, with a +variety of execution backends for different systems. + +Due to limitations in Dispatch at this time, location lists are unsupported +and result windows will appear before results are ready. Still, these may be +acceptable tradeoffs for very large projects where searches are slow. + +Example: +> + let g:ack_use_dispatch = 1 +< + *g:ack_use_cword_for_empty_search* +g:ack_use_cword_for_empty_search +Default: 1 + +Use this option to enable blank searches to run against the word under the +cursor. When this option is not set, blank searches will only output an error +message. + +Example: +> + let g:ack_use_cword_for_empty_search = 0 +< +============================================================================== +MAPPINGS *ack-mappings* + +The following keyboard shortcuts are available in the |quickfix| and +|location-list| windows: + +? display a quick summary of these mappings. + +o open file (same as Enter). + +O open file and close the quickfix window. + +go preview file (open but maintain focus on ack.vim results). + +t open in a new tab. + +T open in new tab without moving to it. + +h open in horizontal split. + +H open in horizontal split, keeping focus on the results. + +v open in vertical split. + +gv open in vertical split, keeping focus on the results. + +q close the quickfix window. + +To adjust these, see |g:ack_mappings|. + +============================================================================== +Ignoring files *ack-ignore* + +If you're using this plugin with ag, The Silver Searcher, bear in mind that: + + - It ignores file patterns from your .gitignore and .hgignore. + + - If there are other files in your source repository you don't wish to + search, you can add their patterns to an .agignore file. + +============================================================================== +ISSUES AND FAQ *ack-issues-and-faq* + +I don't want to jump to the first result automatically.~ + + Use `:Ack!`, with bang. If you want this behavior most of the time, you + might like an abbreviation or mapping in your personal config, something + like these: +> + cnoreabbrev Ack Ack! + nnoremap a :Ack! +< + Most of the `:[L]Ack*` commands support this. Note that this behavior + follows the convention of Vim's built-in |:grep| and |:make| commands. + +I use NERDTree and opening ack.vim results in a vertical split displacing it.~ + + You are probably using NERDTree with its default alignment at the left + side of the window. Set these custom mappings in your vimrc to work around + this: +> + let g:ack_mappings = { + \ 'v': 'LpJp', + \ 'gv': 'LpJ' } +< + This solution will be improved in the future. + +Results show a mix of relative and absolute paths, making them hard to read.~ + + This is a quirk of Vim that can happen with plain |:vimgrep| too. You can + try this in your vimrc to work around it: +> + autocmd BufAdd * exe "cd" fnameescape(getcwd()) +< + but for some users this may be disruptive to their Vim workflow. For more + details, see: + + http://vi.stackexchange.com/a/4816/7174 + https://github.com/mileszs/ack.vim/issues/143 + +vim:set et sw=4 ts=4 tw=78: diff --git a/sources_non_forked/ack.vim/doc/ack_quick_help.txt b/sources_non_forked/ack.vim/doc/ack_quick_help.txt new file mode 100644 index 00000000..94306a0e --- /dev/null +++ b/sources_non_forked/ack.vim/doc/ack_quick_help.txt @@ -0,0 +1,15 @@ +==== ack.vim quick help =============== + + *?:* a quick summary of these keys, repeat to close + *o:* to open (same as Enter) + *O:* to open and close the quickfix window + *go:* to preview file, open but maintain focus on ack.vim results + *t:* to open in new tab + *T:* to open in new tab without moving to it + *h:* to open in horizontal split + *H:* to open in horizontal split, keeping focus on the results + *v:* to open in vertical split + *gv:* to open in vertical split, keeping focus on the results + *q:* to close the quickfix window + +======================================== diff --git a/sources_non_forked/ack.vim/ftplugin/qf.vim b/sources_non_forked/ack.vim/ftplugin/qf.vim new file mode 100644 index 00000000..27564fa7 --- /dev/null +++ b/sources_non_forked/ack.vim/ftplugin/qf.vim @@ -0,0 +1,9 @@ +if exists("g:ack_autofold_results") && g:ack_autofold_results + setlocal foldlevel=0 + setlocal foldmethod=expr + setlocal foldexpr=matchstr(getline(v:lnum),'^[^\|]\\+')==#matchstr(getline(v:lnum+1),'^[^\|]\\+')?1:'<1' + setlocal foldenable + setlocal foldclose=all + setlocal foldopen=all + nnoremap j jzz +endif diff --git a/sources_non_forked/ack.vim/plugin/ack.vim b/sources_non_forked/ack.vim/plugin/ack.vim new file mode 100644 index 00000000..202ae2ea --- /dev/null +++ b/sources_non_forked/ack.vim/plugin/ack.vim @@ -0,0 +1,83 @@ +if exists('g:loaded_ack') || &cp + finish +endif + +if !exists("g:ack_default_options") + let g:ack_default_options = " -s -H --nopager --nocolor --nogroup --column" +endif + +" Location of the ack utility +if !exists("g:ackprg") + if executable('ack-grep') + let g:ackprg = "ack-grep" + elseif executable('ack') + let g:ackprg = "ack" + else + finish + endif + let g:ackprg .= g:ack_default_options +endif + +if !exists("g:ack_apply_qmappings") + let g:ack_apply_qmappings = !exists("g:ack_qhandler") +endif + +if !exists("g:ack_apply_lmappings") + let g:ack_apply_lmappings = !exists("g:ack_lhandler") +endif + +let s:ack_mappings = { + \ "t": "T", + \ "T": "TgTj", + \ "o": "", + \ "O": "pc", + \ "go": "p", + \ "h": "K", + \ "H": "Kb", + \ "v": "HbJt", + \ "gv": "HbJ" } + +if exists("g:ack_mappings") + let g:ack_mappings = extend(s:ack_mappings, g:ack_mappings) +else + let g:ack_mappings = s:ack_mappings +endif + +if !exists("g:ack_qhandler") + let g:ack_qhandler = "botright copen" +endif + +if !exists("g:ack_lhandler") + let g:ack_lhandler = "botright lopen" +endif + +if !exists("g:ackhighlight") + let g:ackhighlight = 0 +endif + +if !exists("g:ack_autoclose") + let g:ack_autoclose = 0 +endif + +if !exists("g:ack_autofold_results") + let g:ack_autofold_results = 0 +endif + +if !exists("g:ack_use_cword_for_empty_search") + let g:ack_use_cword_for_empty_search = 1 +endif + +command! -bang -nargs=* -complete=file Ack call ack#Ack('grep', ) +command! -bang -nargs=* -complete=file AckAdd call ack#Ack('grepadd', ) +command! -bang -nargs=* -complete=file AckFromSearch call ack#AckFromSearch('grep', ) +command! -bang -nargs=* -complete=file LAck call ack#Ack('lgrep', ) +command! -bang -nargs=* -complete=file LAckAdd call ack#Ack('lgrepadd', ) +command! -bang -nargs=* -complete=file AckFile call ack#Ack('grep -g', ) +command! -bang -nargs=* -complete=help AckHelp call ack#AckHelp('grep', ) +command! -bang -nargs=* -complete=help LAckHelp call ack#AckHelp('lgrep', ) +command! -bang -nargs=* AckWindow call ack#AckWindow('grep', ) +command! -bang -nargs=* LAckWindow call ack#AckWindow('lgrep', ) + +let g:loaded_ack = 1 + +" vim:set et sw=2 ts=2 tw=78 fdm=marker diff --git a/sources_non_forked/ag.vim/.gitignore b/sources_non_forked/ag.vim/.gitignore deleted file mode 100644 index e350eccf..00000000 --- a/sources_non_forked/ag.vim/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -tags -ag-vim.tgz diff --git a/sources_non_forked/ag.vim/README.md b/sources_non_forked/ag.vim/README.md deleted file mode 100644 index e02a4d3e..00000000 --- a/sources_non_forked/ag.vim/README.md +++ /dev/null @@ -1,81 +0,0 @@ -# ag.vim # - -## Deprecated: See [this comment](https://github.com/rking/ag.vim/issues/124#issuecomment-227038003) for more info. Maybe try [ack.vim](https://github.com/mileszs/ack.vim#can-i-use-ag-the-silver-searcher-with-this) as an alternative. ## - -This plugin is a front for ag, A.K.A. -[the_silver_searcher](https://github.com/ggreer/the_silver_searcher). Ag can -be used as a replacement for 153% of the uses of `ack`. This plugin will allow -you to run ag from vim, and shows the results in a split window. - -## Installation ## - -See [the_silver_searcher's README](https://github.com/ggreer/the_silver_searcher#installing) for its installation instructions (if you haven't installed it already). - -You have to first install [ag](https://github.com/ggreer/the_silver_searcher), itself. On Mac+Homebrew, Gentoo Linux, several others, there's package named `the_silver_searcher`, but if your OS/distro don't have one, the GitHub repo installs fine: - -Vim has various ways of installing plugins, the standard way is in [the documentation](http://vimdoc.sourceforge.net/htmldoc/usr_05.html#plugin), but most people use a plugin to manage their plugins. If you don't already have a preferred plugin manager plugin, why not try one of the following? -- [vim-plug](https://github.com/junegunn/vim-plug#readme) -- [vim-pathogen](https://github.com/tpope/vim-pathogen#readme) -- [Vundle.vim](https://github.com/gmarik/Vundle.vim#readme) -- Or, if you don't use any sort of Vim plugin management: - - ```sh - cd ~/.vim/bundle && git clone https://github.com/rking/ag.vim ag && echo "set runtimepath^=~/.vim/bundle/ag" >> ~/.vimrc - ``` - - Then open vim and run `:helptags ~/.vim/bundle/ag/doc`. - -### Configuration ### - -You can specify a custom ag name and path in your .vimrc like so: - - let g:ag_prg=" --vimgrep" - -You can configure ag.vim to always start searching from your project root -instead of the cwd - - let g:ag_working_path_mode="r" - -## Usage ## - - :Ag [options] {pattern} [{directory}] - -Search recursively in {directory} (which defaults to the current directory) for the {pattern}. - -Files containing the search term will be listed in the split window, along with -the line number of the occurrence, once for each occurrence. [Enter] on a line -in this window will open the file, and place the cursor on the matching line. - -Just like where you use :grep, :grepadd, :lgrep, and :lgrepadd, you can use `:Ag`, `:AgAdd`, `:LAg`, and `:LAgAdd` respectively. (See `doc/ag.txt`, or install and `:h Ag` for more information.) - -### Gotchas ### - -Some characters have special meaning, and need to be escaped your search pattern. For instance, '#'. You have to escape it like this `:Ag '\\\#define foo'` to search for `#define foo`. (From [blueyed in issue #5](https://github.com/mileszs/ack.vim/issues/5).) - -Sometimes `git grep` is even faster, though in my experience it's not noticeably so. - -### Keyboard Shortcuts ### - -In the quickfix window, you can use: - - e to open file and close the quickfix window - o to open (same as enter) - go to preview file (open but maintain focus on ag.vim results) - t to open in new tab - T to open in new tab silently - h to open in horizontal split - H to open in horizontal split silently - v to open in vertical split - gv to open in vertical split silently - q to close the quickfix window - -### Related Plugin ### -[vim-ag-anything](https://github.com/Chun-Yang/vim-ag-anything) adds an 'ga' action to search any text object. - -### Acknowledgements ### - -This Vim plugin is derived (and by derived, I mean copied, almost entirely) -from [milesz's ack.vim](https://github.com/mileszs/ack.vim), which I also -recommend installing since you might be in a situation where you have ack but -not ag, and don't want to stop to install ag. Also, ack supports `--type`, and -a few other features. diff --git a/sources_non_forked/ag.vim/Rakefile b/sources_non_forked/ag.vim/Rakefile deleted file mode 100644 index e6bb6da7..00000000 --- a/sources_non_forked/ag.vim/Rakefile +++ /dev/null @@ -1,3 +0,0 @@ -task :tgz do - sh 'cd ..; tar czvf ag/ag-vim.tgz ag/{plugin,autoload,doc}' -end diff --git a/sources_non_forked/ag.vim/autoload/ag.vim b/sources_non_forked/ag.vim/autoload/ag.vim deleted file mode 100644 index 432ef444..00000000 --- a/sources_non_forked/ag.vim/autoload/ag.vim +++ /dev/null @@ -1,234 +0,0 @@ -" NOTE: You must, of course, install ag / the_silver_searcher - -" FIXME: Delete deprecated options below on or after 2016-4 (6 months from when the deprecation warning was added) {{{ - -if exists("g:agprg") - let g:ag_prg = g:agprg - echohl WarningMsg - call input('g:agprg is deprecated and will be removed. Please use g:ag_prg') - echohl None -endif - -if exists("g:aghighlight") - let g:ag_highlight = g:aghighlight - echohl WarningMsg - call input('g:aghighlight is deprecated and will be removed. Please use g:ag_highlight') - echohl None -endif - -if exists("g:agformat") - let g:ag_format = g:agformat - echohl WarningMsg - call input('g:agformat is deprecated and will be removed. Please use g:ag_format') - echohl None -endif - -" }}} FIXME: Delete the deprecated options above on or after 15-7 (6 months from when they were changed) - -" Location of the ag utility -if !exists("g:ag_prg") - " --vimgrep (consistent output we can parse) is available from version 0.25.0+ - if split(system("ag --version"), "[ \n\r\t]")[2] =~ '\d\+.\(\(2[5-9]\)\|\([3-9][0-9]\)\)\(.\d\+\)\?' - let g:ag_prg="ag --vimgrep" - else - " --noheading seems odd here, but see https://github.com/ggreer/the_silver_searcher/issues/361 - let g:ag_prg="ag --column --nogroup --noheading" - endif -endif - -if !exists("g:ag_apply_qmappings") - let g:ag_apply_qmappings=1 -endif - -if !exists("g:ag_apply_lmappings") - let g:ag_apply_lmappings=1 -endif - -if !exists("g:ag_qhandler") - let g:ag_qhandler="botright copen" -endif - -if !exists("g:ag_lhandler") - let g:ag_lhandler="botright lopen" -endif - -if !exists("g:ag_mapping_message") - let g:ag_mapping_message=1 -endif - -if !exists("g:ag_working_path_mode") - let g:ag_working_path_mode = 'c' -endif - -function! ag#AgBuffer(cmd, args) - let l:bufs = filter(range(1, bufnr('$')), 'buflisted(v:val)') - let l:files = [] - for buf in l:bufs - let l:file = fnamemodify(bufname(buf), ':p') - if !isdirectory(l:file) - call add(l:files, l:file) - endif - endfor - call ag#Ag(a:cmd, a:args . ' ' . join(l:files, ' ')) -endfunction - -function! ag#Ag(cmd, args) - let l:ag_executable = get(split(g:ag_prg, " "), 0) - - " Ensure that `ag` is installed - if !executable(l:ag_executable) - echoe "Ag command '" . l:ag_executable . "' was not found. Is the silver searcher installed and on your $PATH?" - return - endif - - " If no pattern is provided, search for the word under the cursor - if empty(a:args) - let l:grepargs = expand("") - else - let l:grepargs = a:args . join(a:000, ' ') - end - - if empty(l:grepargs) - echo "Usage: ':Ag {pattern}' (or just :Ag to search for the word under the cursor). See ':help :Ag' for more information." - return - endif - - " Format, used to manage column jump - if a:cmd =~# '-g$' - let s:ag_format_backup=g:ag_format - let g:ag_format="%f" - elseif exists("s:ag_format_backup") - let g:ag_format=s:ag_format_backup - elseif !exists("g:ag_format") - let g:ag_format="%f:%l:%c:%m" - endif - - let l:grepprg_bak=&grepprg - let l:grepformat_bak=&grepformat - let l:t_ti_bak=&t_ti - let l:t_te_bak=&t_te - try - let &grepprg=g:ag_prg - let &grepformat=g:ag_format - set t_ti= - set t_te= - if g:ag_working_path_mode ==? 'r' " Try to find the projectroot for current buffer - let l:cwd_back = getcwd() - let l:cwd = s:guessProjectRoot() - try - exe "lcd ".l:cwd - catch - echom 'Failed to change directory to:'.l:cwd - finally - silent! execute a:cmd . " " . escape(l:grepargs, '|') - exe "lcd ".l:cwd_back - endtry - else " Someone chose an undefined value or 'c' so we revert to the default - silent! execute a:cmd . " " . escape(l:grepargs, '|') - endif - finally - let &grepprg=l:grepprg_bak - let &grepformat=l:grepformat_bak - let &t_ti=l:t_ti_bak - let &t_te=l:t_te_bak - endtry - - if a:cmd =~# '^l' - let l:match_count = len(getloclist(winnr())) - else - let l:match_count = len(getqflist()) - endif - - if a:cmd =~# '^l' && l:match_count - exe g:ag_lhandler - let l:apply_mappings = g:ag_apply_lmappings - let l:matches_window_prefix = 'l' " we're using the location list - elseif l:match_count - exe g:ag_qhandler - let l:apply_mappings = g:ag_apply_qmappings - let l:matches_window_prefix = 'c' " we're using the quickfix window - endif - - " If highlighting is on, highlight the search keyword. - if exists('g:ag_highlight') - let @/ = matchstr(a:args, "\\v(-)\@", 'n') - end - - redraw! - - if l:match_count - if l:apply_mappings - nnoremap h K - nnoremap H Kb - nnoremap o - nnoremap t T - nnoremap T TgT - nnoremap v HbJt - - exe 'nnoremap e :' . l:matches_window_prefix .'close' - exe 'nnoremap go :' . l:matches_window_prefix . 'open' - exe 'nnoremap q :' . l:matches_window_prefix . 'close' - - exe 'nnoremap gv :let b:height=winheight(0)H:' . l:matches_window_prefix . 'openJ:exe printf(":normal %d\c-w>_", b:height)' - " Interpretation: - " :let b:height=winheight(0) Get the height of the quickfix/location list window - " Open the current item in a new split - " H Slam the newly opened window against the left edge - " :copen -or- :lopen Open either the quickfix window or the location list (whichever we were using) - " J Slam the quickfix/location list window against the bottom edge - " :exe printf(":normal %d\c-w>_", b:height) Restore the quickfix/location list window's height from before we opened the match - - if g:ag_mapping_message && l:apply_mappings - echom "ag.vim keys: q=quit /e/t/h/v=enter/edit/tab/split/vsplit go/T/H/gv=preview versions of same" - endif - endif - else " Close the split window automatically: - cclose - lclose - echohl WarningMsg - echom 'No matches for "'.a:args.'"' - echohl None - endif -endfunction - -function! ag#AgFromSearch(cmd, args) - let search = getreg('/') - " translate vim regular expression to perl regular expression. - let search = substitute(search,'\(\\<\|\\>\)','\\b','g') - call ag#Ag(a:cmd, '"' . search .'" '. a:args) -endfunction - -function! ag#GetDocLocations() - let dp = '' - for p in split(&runtimepath,',') - let p = p.'doc/' - if isdirectory(p) - let dp = p.'*.txt '.dp - endif - endfor - return dp -endfunction - -function! ag#AgHelp(cmd,args) - let args = a:args.' '.ag#GetDocLocations() - call ag#Ag(a:cmd,args) -endfunction - -function! s:guessProjectRoot() - let l:splitsearchdir = split(getcwd(), "/") - - while len(l:splitsearchdir) > 2 - let l:searchdir = '/'.join(l:splitsearchdir, '/').'/' - for l:marker in ['.rootdir', '.git', '.hg', '.svn', 'bzr', '_darcs', 'build.xml'] - " found it! Return the dir - if filereadable(l:searchdir.l:marker) || isdirectory(l:searchdir.l:marker) - return l:searchdir - endif - endfor - let l:splitsearchdir = l:splitsearchdir[0:-2] " Splice the list to get rid of the tail directory - endwhile - - " Nothing found, fallback to current working dir - return getcwd() -endfunction diff --git a/sources_non_forked/ag.vim/doc/ag.txt b/sources_non_forked/ag.vim/doc/ag.txt deleted file mode 100644 index e702c291..00000000 --- a/sources_non_forked/ag.vim/doc/ag.txt +++ /dev/null @@ -1,174 +0,0 @@ -*ag.txt* Plugin that integrates ag with Vim - -============================================================================== -INTRODUCTION *ag* - -This plugin is a front for the_silver_searcher: ag. Ag can be used as a -replacement for ack. This plugin will allow you to run ag from vim, and shows -the results in a split window. - -:Ag[!] [options] {pattern} [{directory}] *:Ag* - - Search recursively in {directory} (which defaults to the current - directory) for the {pattern}. Behaves just like the |:grep| command, but - will open the |Quickfix| window for you. If [!] is not given the first - error is jumped to. - -:AgBuffer[!] [options] {pattern} *:AgBuffer* - - Search for {pattern} in all open buffers. Behaves just like the |:grep| - command, but will open the |Quickfix| window for you. If [!] is not given - the first error is jumped to. - - Note: this will not find changes in modified buffers, since ag can only - find what is on disk! You can save buffers automatically when searching - with the 'autowrite' option. A buffer will be ignored if it is a directory - (an explorer, like netrw). - -:AgAdd [options] {pattern} [{directory}] *:AgAdd* - - Just like |:Ag|, but instead of making a new list, the matches are - appended to the current |quickfix| list. - -:AgFromSearch [{directory}] *:AgFromSearch* - - Just like |:Ag| but the pattern is from previous search. - -:LAg [options] {pattern} [{directory}] *:LAg* - - Just like |:Ag| but instead of the |quickfix| list, matches are placed in - the current |location-list|. - -:LAgBuffer [options] {pattern} *:LAgBuffer* - - Just like |:AgBuffer| but instead of the |quickfix| list, matches are - placed in the current |location-list|. - -:LAgAdd [options] {pattern} [{directory}] *:LAgAdd* - - Just like |:AgAdd| but instead of the |quickfix| list, matches are added - to the current |location-list| - -:AgFile [options] {pattern} [{directory}] *:AgFile* - - Search recursively in {directory} (which defaults to the current - directory) for filenames matching the {pattern}. Behaves just like the - |:grep| command, but will open the |Quickfix| window for you. - -:AgHelp[!] [options] {pattern} *:AgHelp* - - Search vim documentation files for the {pattern}. Behaves just like the - |:Ag| command, but searches only vim documentation .txt files - -:LAgHelp [options] {pattern} *:LAgHelp* - - Just like |:AgHelp| but instead of the |quickfix| list, matches are placed - in the current |location-list|. - -Files containing the search term will be listed in the split window, along -with the line number of the occurrence, once for each occurrence. on a -line in this window will open the file, and place the cursor on the matching -line. - -See http://geoff.greer.fm/2011/12/27/the-silver-searcher-better-than-ack/ for -more information. - -============================================================================== -OPTIONS *ag-options* - - *g:ag_prg* -The location of the Ag program, and any options you want passed to it before -searching. Default: "ag --vimgrep" (for parsable output). Example: > - let g:ag_prg="ag --vimgrep --smart-case" -< -Note: the `--vimgrep` option was added in Ag 0.25.0. If ag.vim detects that -you're using a lower version, the following default will be used instead: > - let g:ag_prg="ag --column --nogroup --noheading" -< -This works around inconsistent behaviors in earlier Ag versions, but it is -recommended that you upgrade if possible for a better experience. `--vimgrep` -supports multiple matches on the same line of text, for example. - -For background, see: https://github.com/rking/ag.vim/pull/88 - - *g:ag_working_path_mode* -A mapping that describes where ag will be run. Default is the current working -directory. Specifying 'r' as the argument will tell it to run from the project -rootdirectory. For now any other mapping will result to the default. -Example: - let g:ag_working_path_mode='r' - - *g:ag_highlight* -If 1, highlight the search terms after searching. Default: 0. Example: > - let g:ag_highlight=1 -< - - *g:ag_format* -Format to recognize the matches. See 'errorformat' for more info. Default: -"%f" when searching for files, "%f:%l:%c:%m" if not otherwise set. For -example, if your `g:ag_prg` is set to just "ag" (no column numbers in the -output, so when you jump to a match your cursor will be on the start of the -line): > - let g:ag_format="%f:%l:%m" -< - - *g:ag_apply_lmappings* -Whether or not to add custom mappings to location list windows opened by this -plugin. Only applies if you're using the location list. Default 1. Example: > - let g:ag_apply_lmappings=0 -< - - *g:ag_apply_qmappings* -Whether or not to add custom mappings to quickfix windows opened by this -plugin. Only applies if you're using the error list. Default 1. Example: > - let g:ag_apply_qmappings=0 -< - - *g:ag_lhandler* -A custom command used to open the location list after it's populated. -Default: "botright lopen". You might want to set this to change where the -location list is opened, or what size it is. Example: > - let g:ag_lhandler="topleft lopen" -< - - *g:ag_qhandler* -A custom command used to open the error list after it's populated. Default: -"botright copen". You might want to set this to change where the quickfix -window is opened, or what size it is. Example: > - let g:ag_qhandler="copen 20" -< - - *g:ag_mapping_message* -Whether or not to show the message explaining the extra mappings that are -added to the results list this plugin populates. This message is not shown if -the mappings are not applied (see |g:ag_apply_qmappings| and -|g:ag_apply_lmappings| for more info. Default 1. Example: > - let g:ag_mapping_message=0 -< - -============================================================================== -MAPPINGS *ag-mappings* - -The following keyboard shortcuts are available in the quickfix window: - -e open file and close the quickfix window. - -o open file (same as enter). - -go preview file (open but maintain focus on ag.vim results). - -t open in a new tab. - -T open in new tab silently. - -h open in horizontal split. - -H open in horizontal split silently. - -v open in vertical split. - -gv open in vertical split silently. - -q close the quickfix window. - - vim:tw=78:fo=tcq2:ft=help:norl: diff --git a/sources_non_forked/ag.vim/plugin/ag.vim b/sources_non_forked/ag.vim/plugin/ag.vim deleted file mode 100644 index 053f213c..00000000 --- a/sources_non_forked/ag.vim/plugin/ag.vim +++ /dev/null @@ -1,11 +0,0 @@ -" NOTE: You must, of course, install ag / the_silver_searcher -command! -bang -nargs=* -complete=file Ag call ag#Ag('grep',) -command! -bang -nargs=* -complete=file AgBuffer call ag#AgBuffer('grep',) -command! -bang -nargs=* -complete=file AgAdd call ag#Ag('grepadd', ) -command! -bang -nargs=* -complete=file AgFromSearch call ag#AgFromSearch('grep', ) -command! -bang -nargs=* -complete=file LAg call ag#Ag('lgrep', ) -command! -bang -nargs=* -complete=file LAgBuffer call ag#AgBuffer('lgrep',) -command! -bang -nargs=* -complete=file LAgAdd call ag#Ag('lgrepadd', ) -command! -bang -nargs=* -complete=file AgFile call ag#Ag('grep -g', ) -command! -bang -nargs=* -complete=help AgHelp call ag#AgHelp('grep',) -command! -bang -nargs=* -complete=help LAgHelp call ag#AgHelp('lgrep',) diff --git a/sources_non_forked/vim-snipmate/autoload/snipMate.vim b/sources_non_forked/vim-snipmate/autoload/snipMate.vim index 407ee869..9d1786ab 100644 --- a/sources_non_forked/vim-snipmate/autoload/snipMate.vim +++ b/sources_non_forked/vim-snipmate/autoload/snipMate.vim @@ -384,7 +384,7 @@ function! snipMate#DefaultPool(scopes, trigger, result) abort let s:lookup_state.extends = [] for expr in s:snippet_filenames(scope, escape(a:trigger, "*[]?{}`'$|#%")) - for path in g:snipMate.snippet_dirs + for path in s:snippet_dirs() for file in s:Glob(path, expr) source `=file` endfor @@ -416,6 +416,10 @@ fun! snipMate#GetSnippets(scopes, trigger) abort return result endf +function! s:snippet_dirs() abort + return get(g:snipMate, 'snippet_dirs', split(&rtp, ',')) +endfunction + function! snipMate#OpenSnippetFiles() abort let files = [] let scopes_done = [] @@ -425,7 +429,7 @@ function! snipMate#OpenSnippetFiles() abort let files += s:snippet_filenames(scope, '') endfor call filter(files, "v:val !~# '\\*'") - for path in g:snipMate.snippet_dirs + for path in s:snippet_dirs() let fullpaths = map(copy(files), 'printf("%s/%s", path, v:val)') let exists += filter(copy(fullpaths), 'filereadable(v:val)') let notexists += map(filter(copy(fullpaths), diff --git a/sources_non_forked/vim-snipmate/plugin/snipMate.vim b/sources_non_forked/vim-snipmate/plugin/snipMate.vim index 837f0dcc..75e74aab 100644 --- a/sources_non_forked/vim-snipmate/plugin/snipMate.vim +++ b/sources_non_forked/vim-snipmate/plugin/snipMate.vim @@ -93,8 +93,7 @@ endif let g:snipMate['get_snippets'] = get(g:snipMate, 'get_snippets', funcref#Function("snipMate#GetSnippets")) " List of paths where snippets/ dirs are located -let g:snipMate['snippet_dirs'] = get(g:snipMate, 'snippet_dirs', split(&rtp, ',')) -if type(g:snipMate['snippet_dirs']) != type([]) +if exists('g:snipMate.snippet_dirs') && type(g:snipMate['snippet_dirs']) != type([]) echohl WarningMsg echom "g:snipMate['snippet_dirs'] must be a List" echohl None diff --git a/update_plugins.py b/update_plugins.py index 9b364de9..00c3ec03 100644 --- a/update_plugins.py +++ b/update_plugins.py @@ -16,7 +16,7 @@ from os import path #--- Globals ---------------------------------------------- PLUGINS = """ -ag.vim https://github.com/rking/ag.vim +ack.vim https://github.com/mileszs/ack.vim bufexplorer https://github.com/corntrace/bufexplorer ctrlp.vim https://github.com/ctrlpvim/ctrlp.vim mayansmoke https://github.com/vim-scripts/mayansmoke diff --git a/vimrcs/basic.vim b/vimrcs/basic.vim index b783aef3..c45c3bce 100644 --- a/vimrcs/basic.vim +++ b/vimrcs/basic.vim @@ -4,7 +4,7 @@ " http://amix.dk - amix@amix.dk " " Version: -" 5.0 - 29/05/12 15:43:36 +" 6.0 - 01/04/17 14:24:34 " " Blog_post: " http://amix.dk/blog/post/19691#The-ultimate-Vim-configuration-on-Github @@ -313,36 +313,6 @@ if has("autocmd") endif -""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -" => Ag searching and cope displaying -" requires ag.vim - it's much better than vimgrep/grep -""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -" When you press gv you Ag after the selected text -vnoremap gv :call VisualSelection('gv', '') - -" Open Ag and put the cursor in the right position -map g :Ag - -" When you press r you can search and replace the selected text -vnoremap r :call VisualSelection('replace', '') - -" Do :help cope if you are unsure what cope is. It's super useful! -" -" When you search with Ag, display your results in cope by doing: -" cc -" -" To go to the next search result do: -" n -" -" To go to the previous search results do: -" p -" -map cc :botright cope -map co ggVGy:tabnew:set syntax=qfpgg -map n :cn -map p :cp - - """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " => Spell checking """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" @@ -372,35 +342,9 @@ map x :e ~/buffer.md map pp :setlocal paste! - - """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " => Helper functions """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -function! CmdLine(str) - exe "menu Foo.Bar :" . a:str - emenu Foo.Bar - unmenu Foo -endfunction - -function! VisualSelection(direction, extra_filter) range - let l:saved_reg = @" - execute "normal! vgvy" - - let l:pattern = escape(@", "\\/.*'$^~[]") - let l:pattern = substitute(l:pattern, "\n$", "", "") - - if a:direction == 'gv' - call CmdLine("Ag '" . l:pattern . "' " ) - elseif a:direction == 'replace' - call CmdLine("%s" . '/'. l:pattern . '/') - endif - - let @/ = l:pattern - let @" = l:saved_reg -endfunction - - " Returns true if paste mode is enabled function! HasPaste() if &paste @@ -429,8 +373,3 @@ function! BufcloseCloseIt() execute("bdelete! ".l:currentBufNum) endif endfunction - -" Make VIM remember position in file after reopen -" if has("autocmd") -" au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif -"endif diff --git a/vimrcs/extended.vim b/vimrcs/extended.vim index 7d5bf3f9..f6b5cfb0 100644 --- a/vimrcs/extended.vim +++ b/vimrcs/extended.vim @@ -108,6 +108,41 @@ iab xdate =strftime("%d/%m/%y %H:%M:%S") autocmd FileType css set omnifunc=csscomplete#CompleteCSS +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" => Ack searching and cope displaying +" requires ack.vim - it's much better than vimgrep/grep +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" Use the the_silver_searcher if possible (much faster than Ack) +if executable('ag') + let g:ackprg = 'ag --vimgrep --smart-case' +endif + +" When you press gv you Ack after the selected text +vnoremap gv :call VisualSelection('gv', '') + +" Open Ack and put the cursor in the right position +map g :Ack + +" When you press r you can search and replace the selected text +vnoremap r :call VisualSelection('replace', '') + +" Do :help cope if you are unsure what cope is. It's super useful! +" +" When you search with Ack, display your results in cope by doing: +" cc +" +" To go to the next search result do: +" n +" +" To go to the previous search results do: +" p +" +map cc :botright cope +map co ggVGy:tabnew:set syntax=qfpgg +map n :cn +map p :cp + + """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " => Helper functions @@ -135,3 +170,28 @@ endfunc func! CurrentFileDir(cmd) return a:cmd . " " . expand("%:p:h") . "/" endfunc + +function! CmdLine(str) + exe "menu Foo.Bar :" . a:str + emenu Foo.Bar + unmenu Foo +endfunction + +function! VisualSelection(direction, extra_filter) range + let l:saved_reg = @" + execute "normal! vgvy" + + let l:pattern = escape(@", "\\/.*'$^~[]") + let l:pattern = substitute(l:pattern, "\n$", "", "") + + if a:direction == 'gv' + call CmdLine("Ack '" . l:pattern . "' " ) + elseif a:direction == 'replace' + call CmdLine("%s" . '/'. l:pattern . '/') + endif + + let @/ = l:pattern + let @" = l:saved_reg +endfunction + +